트랜스퓨터

트랜스퓨터(transputer)는 1980년대에 병렬 컴퓨팅을 위해 고안된 선구적인 마이크로프로세서 시리즈이다. 이를 지원하기 위해 각 트랜스퓨터는 자체 통합 메모리와 다른 트랜스퓨터와 데이터를 교환하기 위한 직렬 통신 링크를 가지고 있었다. 이들은 영국 브리스틀에 본사를 둔 반도체 회사인 인모스에 의해 설계 및 생산되었다.[1]
1980년대 후반 한동안 많은 사람들은[2] 트랜스퓨터를 컴퓨팅 미래를 위한 다음의 위대한 디자인으로 여겼다. 트랜스퓨터가 이러한 기대를 충족시키지는 못했지만, 트랜스퓨터 아키텍처는 컴퓨터 구조에 대한 새로운 아이디어를 불러일으키는 데 매우 큰 영향을 미쳤으며, 이 중 일부는 현대 시스템에서 다른 형태로 다시 나타났다.[3]
배경
[편집]1980년대 초, 기존의 중앙 처리 장치(CPU)는 성능 한계에 도달한 것처럼 보였다. 그때까지 제조의 어려움으로 인해 칩에 넣을 수 있는 회로의 양이 제한되었다. 제조 공정의 지속적인 개선으로 이러한 제약은 대부분 사라졌다. 10년 안에 칩은 설계자가 어떻게 사용해야 할지 모르는 더 많은 회로를 담을 수 있게 되었다. 전통적인 복잡 명령어 집합 컴퓨터(CISC) 설계는 성능 정체에 도달했고, 이를 극복할 수 있을지 불분명했다.[4]
앞으로 나아갈 유일한 방법은 병렬성의 사용을 늘리는 것, 즉 여러 CPU가 동시에 여러 작업을 해결하기 위해 함께 작동하는 것이었다. 이는 이러한 기계가 여러 작업을 동시에 실행할 수 있는지에 달려 있었으며, 이 과정을 다중작업이라고 불렀다. 이것은 일반적으로 이전 마이크로프로세서 설계에서는 너무 어려웠지만, 최근 설계에서는 효과적으로 달성할 수 있었다. 미래에는 이것이 모든 운영체제(OS)의 특징이 될 것이 분명했다.
대부분의 다중작업 설계의 부수 효과는 물리적으로 다른 CPU에서 프로세스를 실행할 수 있다는 것이며, 이 경우 이를 다중 처리라고 한다. 다중 처리를 위해 저렴한 CPU를 제작하면 더 빠른 CPU 설계를 사용하는 것보다 잠재적으로 훨씬 저렴하게 더 많은 CPU를 추가하여 기계의 속도를 높일 수 있었다.
최초의 트랜스퓨터 설계는 컴퓨터 과학자 데이비드 메이와 통신 컨설턴트 로버트 밀른이 담당했다. 1990년, 메이는 사우샘프턴 대학교에서 명예 이학박사 학위를 받았고, 이어서 1991년 왕립학회 회원으로 선출되었으며 1992년에는 영국 물리학회 패터슨 메달을 수상했다. 당시 인모스의 선임 엔지니어였던 토니 퍼지는 T414 트랜스퓨터에 대한 공로로 1987년 필립 공 디자이너상을 수상했다.[5]
설계
[편집]트랜스퓨터는 병렬 컴퓨팅 시스템에서 사용되도록 특별히 설계된 최초의 범용 마이크로프로세서였다. 목표는 전력과 비용 면에서 다양한 칩 패밀리를 생산하여 완전한 병렬 컴퓨터를 구성할 수 있도록 연결하는 것이었다. 이름은 "트랜지스터(transistor)"와 "컴퓨터(computer)"에서 따왔는데,[6] 이는 개별 트랜스퓨터가 수행할 역할을 나타내기 위해 선택되었다. 초기 설계에서 트랜지스터가 사용되었듯이, 더 큰 통합 시스템에서 기본 구성 요소로 사용될 것이었다.
원래 계획은 트랜스퓨터의 단가가 몇 달러에 불과하게 만드는 것이었다. 인모스는 트랜스퓨터가 컴퓨터의 주 CPU로 작동하는 것부터 같은 기계의 디스크 드라이브용 채널 컨트롤러로 작동하는 것까지 실질적으로 모든 곳에 사용될 것으로 보았다. 예를 들어, 전통적인 기계에서는 디스크가 액세스되지 않을 때 디스크 컨트롤러의 처리 능력이 유휴 상태였다. 대조적으로 트랜스퓨터 시스템에서는 이러한 트랜스퓨터의 여유 사이클을 다른 작업에 사용할 수 있어 기계의 전체 성능을 크게 향상시킬 수 있었다.
트랜스퓨터는 온칩 메모리가 커서 본질적으로 메모리 내 프로세서였다. 단일 트랜스퓨터라도 자체적으로 작동하는 데 필요한 모든 회로를 가지고 있었는데, 이는 마이크로컨트롤러에서 더 흔히 볼 수 있는 기능이었다. 의도는 트랜스퓨터를 가능한 한 쉽게 연결할 수 있도록 하는 것이었으며, 복잡한 버스나 메인보드가 필요 없었다. 전력과 간단한 클럭 신호만 공급하면 되었고, 그 외에는 거의 필요 없었다. 랜덤 액세스 메모리(RAM), RAM 컨트롤러, 버스 지원, 심지어 실시간 운영체제(RTOS)까지 모두 내장되어 있었다. 이런 방식으로, 마지막 트랜스퓨터는 당시 떠오르는 SoC 시장에서 단일 재사용 가능한 마이크로 코어(RMC)였다.
구조
[편집]초기 트랜스퓨터는 작은 면적에서 높은 성능을 달성하기 위해 매우 간단하고 다소 특이한 아키텍처를 사용했다. 마이크로코드를 데이터 경로를 제어하는 주요 방법으로 사용했지만, 당시의 다른 설계와 달리 많은 명령이 실행하는 데 단일 사이클만 소요되었다. 명령어 명령 코드는 마이크로코드 고정 기억 장치(ROM)의 진입점으로 사용되었으며, ROM의 출력은 데이터 경로에 직접 전달되었다. 다중 사이클 명령의 경우, 데이터 경로가 첫 번째 사이클을 수행하는 동안 마이크로코드는 두 번째 사이클에 대한 네 가지 가능한 옵션을 디코딩했다. 이 옵션 중 어느 것이 실제로 사용될지에 대한 결정은 첫 번째 사이클이 끝날 무렵에 이루어질 수 있었다. 이로 인해 아키텍처를 일반적으로 유지하면서도 매우 빠른 작동이 가능했다.[7]
20 MHz의 클럭 속도는 그 시대에 상당히 높았고, 설계자들은 그렇게 빠른 클럭 신호를 보드에 분배하는 실용성에 대해 매우 우려했다. 5 MHz의 더 느린 외부 클럭이 사용되었고, 이는 위상동기회로(PLL)를 사용하여 필요한 내부 주파수로 곱해졌다. 내부 클럭은 실제로 네 개의 겹치지 않는 위상을 가졌으며, 설계자들은 원하는 어떤 조합이든 자유롭게 사용할 수 있었으므로, 트랜스퓨터가 실제로는 80 MHz로 작동했다고 주장할 수도 있다. 동적 논리는 면적을 줄이고 속도를 높이기 위해 설계의 여러 부분에서 사용되었다. 안타깝게도 이러한 방법은 자동 시험 패턴 생성 스캔 테스트와 결합하기 어려워 이후 설계에서는 선호되지 않게 되었다.
프렌티스 홀은 트랜스퓨터의 일반적인 원리에 관한 책을 출판했다.[8]
링크
[편집]트랜스퓨터의 기본 설계에는 "os-link"로 알려진 직렬 통신이 포함되어 있었는데[9][10] 이를 통해 최대 4개의 다른 트랜스퓨터와 각각 5, 10 또는 20 Mbit/s로 통신할 수 있었으며, 이는 1980년대에는 매우 빠른 속도였다. 어떤 수의 트랜스퓨터도 링크(수십 미터까지 연결 가능)를 통해 연결되어 하나의 컴퓨팅 팜을 형성할 수 있었다. 가상의 데스크톱 기계는 "저가형" 트랜스퓨터 두 개가 직렬 라인의 일부에서 입출력(I/O) 작업을 처리하고 (적절한 하드웨어에 연결됨) 다른 라인에서는 CPU 역할을 하는 더 큰 사촌과 통신할 수 있었다.
이러한 방식으로 구축될 수 있는 시스템의 크기에는 제한이 있었다. 각 트랜스퓨터가 고정된 지점 대 지점 레이아웃으로 다른 트랜스퓨터에 연결되어 있었기 때문에, 더 먼 트랜스퓨터로 메시지를 보내려면 라인의 각 칩이 메시지를 중계해야 했다. 이는 링크를 통한 각 "홉"마다 지연을 유발하여 대규모 네트워크에서 긴 지연을 초래했다. 이 문제를 해결하기 위해 인모스는 최대 32개의 트랜스퓨터(또는 스위치)를 훨씬 더 큰 네트워크로 연결하는 제로 지연 스위치를 제공했다.
부팅
[편집]트랜스퓨터는 대부분의 컴퓨터처럼 메모리에서 부팅할 수 있었지만, 네트워크 링크를 통해서도 부팅할 수 있었다. 칩의 특수 핀인 BootFromROM은 어떤 방법을 사용해야 하는지를 나타냈다. 칩이 재설정될 때 BootFromROM이 활성화되면 메모리 상단에서 2바이트 떨어진 명령부터 처리를 시작했는데, 이는 일반적으로 부팅 코드로 역방향 점프를 수행하는 데 사용되었다. 이 핀이 활성화되지 않으면 칩은 대신 어떤 네트워크 링크에서든 바이트가 수신되기를 기다렸다. 수신되는 첫 번째 바이트는 뒤따를 코드의 길이를 나타냈다. 다음 바이트들은 낮은 메모리에 복사된 다음 해당 바이트 수가 수신되면 점프되었다.
이 시스템의 일반적인 개념은 하나의 트랜스퓨터가 연결된 여러 트랜스퓨터를 포함하는 시스템을 부팅하는 중앙 권한 역할을 하는 것이었다. 선택된 트랜스퓨터는 BootFromROM이 영구적으로 활성화되어 시작 시 ROM에서 부팅 프로세스를 실행하기 시작했다. 다른 트랜스퓨터는 BootFromROM이 낮게 연결되어 단순히 기다렸다. 로더는 중앙 트랜스퓨터를 부팅한 다음, 네트워크의 다른 트랜스퓨터로 부팅 코드를 보내기 시작했으며, 각 트랜스퓨터로 보내는 코드를 사용자 정의할 수 있었다. 예를 들어, 하드 드라이브에 연결된 트랜스퓨터로 장치 드라이버를 보낼 수 있었다.
이 시스템에는 PEEK과 POKE를 위해 예약된 0과 1이라는 '특수' 코드 길이도 포함되어 있었다. 이를 통해 부팅되지 않은 트랜스퓨터의 RAM을 검사하고 변경할 수 있었다. 엿보기를 수행한 후 메모리 주소 또는 주소와 단일 데이터 워드를 사용하여 포크를 수행한 후, 트랜스퓨터는 부트스트랩을 기다리는 상태로 돌아갔다. 이 메커니즘은 일반적으로 디버깅에 사용되었다.
스케줄러
[편집]추가 회로가 링크를 통한 트래픽을 스케줄링했다. 통신을 기다리는 프로세스는 네트워킹 회로가 읽기 또는 쓰기를 완료하는 동안 자동으로 일시 중지되었다. 그러면 트랜스퓨터에서 실행 중인 다른 프로세스에 해당 처리 시간이 주어졌다. 실시간 및 다중 처리 작업을 개선하기 위해 두 가지 우선순위 수준이 포함되었다. 동일한 논리 시스템이 하나의 트랜스퓨터에서 실행되는 프로그램 간의 통신에 사용되었으며, 메모리의 가상 네트워크 링크로 구현되었다. 따라서 모든 입출력을 요청하는 프로그램은 작업이 완료되는 동안 자동으로 일시 중지되었는데, 이는 일반적으로 하드웨어의 중재자 역할을 하는 운영체제가 처리해야 하는 작업이었다. 트랜스퓨터의 운영체제는 스케줄링을 처리할 필요가 없었다. 칩 자체에 운영체제가 내장되어 있다고 볼 수 있었다.
명령어 집합
[편집]이 모든 기능을 하나의 칩에 포함하기 위해 트랜스퓨터의 코어 논리는 대부분의 CPU보다 간단했다. 일부 사람들은 그 희박한 특성과 당시 바람직한 마케팅 버즈워드였기 때문에 축소 명령어 집합 컴퓨터(RISC)라고 불렀지만, 이는 마이크로코드로 심하게 구성되어 있었고, 제한된 레지스터 세트와 복잡한 메모리 대 메모리 명령어를 가지고 있었으며, 이 모든 것이 이를 확고히 CISC 진영에 놓이게 했다. 레지스터가 많은 로드/스토어 RISC CPU와 달리 트랜스퓨터는 스택처럼 작동하는 3개의 데이터 레지스터만 가지고 있었다. 또한 작업 공간 포인터는 Load Local 및 Store Local 명령어를 통해 쉽게 접근할 수 있는 일반적인 메모리 스택을 가리켰다. 이는 작업 공간 포인터를 다른 프로세스가 사용하는 메모리로 단순히 변경함으로써 매우 빠른 문맥 교환을 가능하게 했다 (이는 TMS9900과 같은 여러 동시대 설계에서 사용된 방법이다). 3개의 레지스터 스택 내용은 트랜스퓨터가 문맥 전환을 수행할 수 있을 때, Jump와 같은 특정 명령어를 지나서도 보존되지 않았다.
트랜스퓨터 명령어 세트는 명령 코드와 피연산자니블로 구성된 8비트 명령어로 이루어져 있었다. 상위 니블은 가능한 16개의 주요 명령어 코드를 포함하여, 상업화된 최소 명령어 집합 컴퓨터 중 하나였다. 하위 니블은 하나의 즉시 상수 피연산자를 포함했으며, 일반적으로 작업 공간(메모리 스택) 포인터에 대한 오프셋으로 사용되었다. 두 개의 접두어 명령어는 뒤따르는 명령어의 피연산자에 하위 니블을 접두어로 붙여 더 큰 상수를 구성할 수 있게 했다. 추가 명령어는 명령어 코드 Operate(Opr)를 통해 지원되었는데, 이는 상수 피연산자를 확장된 0-피연산자 명령 코드로 디코딩하여, 트랜스퓨터의 새로운 구현이 도입됨에 따라 거의 무한하고 쉬운 명령어 세트 확장을 제공했다.
16개의 '기본' 단일 피연산자 명령은 다음과 같다.
| 니모닉 | 설명 |
|---|---|
| J | Jump – 즉시 피연산자를 명령어 포인터에 더한다 |
| LDLP | Load local pointer – 작업 공간 상대 포인터를 레지스터 스택의 맨 위에 로드한다 |
| PFIX | Prefix – 다음 주요 명령어의 하위 니블을 증가시키는 일반적인 방법 |
| LDNL | Load non-local – 스택 상단의 주소에서 오프셋된 값을 로드한다 |
| LDC | Load constant – 상수 피연산자를 레지스터 스택의 맨 위에 로드한다 |
| LDNLP | Load non-local pointer – 스택 상단에서 오프셋된 주소를 로드한다 |
| NFIX | Negative prefix – 하위 니블을 부정(및possibly 증가)시키는 일반적인 방법 |
| LDL | Load local – 작업 공간에서 오프셋된 값을 로드한다 |
| ADC | Add constant – 상수 피연산자를 레지스터 스택의 맨 위에 더한다 |
| CALL | Subroutine call – 명령어 포인터를 푸시하고 점프한다 |
| CJ | Conditional jump – 레지스터 스택의 맨 위 값에 따라 조건부 점프 |
| AJW | Adjust workspace – 작업 공간 포인터에 피연산자를 더한다 |
| EQC | Equals constant – 레지스터 스택의 맨 위 값이 상수 피연산자와 같은지 테스트한다 |
| STL | Store local – 작업 공간에서 상수 오프셋에 저장한다 |
| STNL | Store non-local – 스택 상단에서 오프셋된 주소에 저장한다 |
| OPR | Operate – 명령어 집합을 확장하는 일반적인 방법 |
이 모든 명령어는 오프셋 또는 산술 상수를 나타내는 상수를 취한다. 이 상수가 16보다 작으면 이 모든 명령어가 1바이트로 코딩된다.
OPR 기본 명령어를 사용하는 첫 번째 16개의 '보조' 0-피연산자 명령어는 다음과 같다.
| 니모닉 | 설명 |
|---|---|
| REV | Reverse – 레지스터 스택의 상위 두 항목을 바꾼다 |
| LB | Load byte |
| BSUB | Byte subscript |
| ENDP | End process |
| DIFF | Difference |
| ADD | Add |
| GCALL | General call – 스택 상단과 명령어 포인터를 바꾼다 |
| IN | Input – 메시지 수신 |
| PROD | Product |
| GT | Greater than – 유일한 비교 명령어 |
| WSUB | Word subscript |
| OUT | Output – 메시지 전송 |
| SUB | Subtract |
| STARTP | Start process |
| OUTBYTE | Output byte – 1바이트 메시지 전송 |
| OUTWORD | Output word – 1단어 메시지 전송 |
개발
[편집]

다중 트랜스퓨터 시스템의 프로토타이핑, 구축 및 구성을 용이하게 하기 위해 인모스는 1987년 TRAM(TRAnsputer Module) 표준을 도입했다. TRAM은 본질적으로 트랜스퓨터와 선택적으로 외부 메모리 및 주변 장치로 구성된 빌딩 블록 도터보드였으며, 전원, 트랜스퓨터 링크, 클럭 및 시스템 신호를 제공하는 간단하고 표준화된 커넥터를 갖추고 있었다. 기본 Size 1 TRAM(3.66 x 1.05인치)부터 Size 8(3.66 x 8.75인치)까지 다양한 크기의 TRAM이 정의되었다. 인모스는 ISA 버스(ISA), 마이크로채널 또는 VME버스와 같은 다양한 호스트 버스용 TRAM 메인보드를 생산했다. TRAM 링크는 10 Mbit/s 또는 20 Mbit/s로 작동한다.[11]
소프트웨어
[편집]트랜스퓨터는 커뮤니케이팅 시퀜셜 프로세스(CSP) 프로세스 계산에 기반한 프로그래밍 언어인 Occam을 사용하여 프로그래밍하도록 설계되었다.[12] 트랜스퓨터는 파스칼이나 C와 같은 언어를 실행하도록 만들어진 현대의 CISC 설계보다 Occam을 실행하도록 특별히 만들어졌다. Occam은 병행성과 채널 기반의 프로세스 간 또는 프로세서 간 통신을 언어의 기본적인 부분으로 지원했다. 칩과 언어가 직접 상호 작용하는 병렬 처리 및 통신이 내장되어 있었기 때문에 장치 컨트롤러와 같은 코드를 작성하는 것이 사소한 일이 되었다. 가장 기본적인 코드조차도 I/O를 위해 직렬 포트를 감시할 수 있었고, 데이터가 없을 때는 자동으로 절전 모드로 전환되었다.
트랜스퓨터를 위한 초기 Occam 개발 환경은 인모스 D700 트랜스퓨터 개발 시스템(TDS)이었다. 이는 편집기, 컴파일러, 링커 및 (사후) 디버거를 통합한 비정통적인 통합 개발 환경이었다. TDS는 Occam으로 작성된 트랜스퓨터 애플리케이션이었다. TDS 텍스트 편집기는 코드 블록을 숨기거나 보이게 하여 코드의 구조를 더 명확하게 만들 수 있는 폴딩 편집기라는 점이 특징이었다. 불행히도, 낯선 프로그래밍 언어와 마찬가지로 낯선 개발 환경의 조합은 트랜스퓨터의 초기 인기에 아무런 도움이 되지 않았다. 나중에 인모스는 보다 전통적인 Occam 크로스 컴파일러인 Occam 2 툴셋을 출시했다.
C, 포트란, 에이다, 포스, 파스칼과 같은 더 주류적인 프로그래밍 언어의 구현은 나중에 인모스와 타사 공급업체 모두에서 출시되었다. 이들은 일반적으로 Occam과 유사한 병행성과 채널 기반 통신을 덜 우아한 방식으로 제공하는 언어 확장 또는 라이브러리를 포함했다.
트랜스퓨터는 가상 메모리를 지원하지 않아 유닉스 운영체제의 주류 변형을 포팅하는 데 어려움이 있었지만, 유닉스 계열 운영체제(예: 미닉스 및 화이트스미스의 아이드리스)의 포팅은 제작되었다. 고급 유닉스 계열 분산 운영체제인 헬리오스는 페리헬리온 소프트웨어에 의해 다중 트랜스퓨터 시스템을 위해 특별히 설계되었다.
구현
[편집]최초의 트랜스퓨터는 1983년에 발표되었고 1984년에 출시되었다.
마이크로컨트롤러와 같은 장치로서의 역할에 따라, 온보드 RAM과 내장된 RAM 컨트롤러가 포함되어 있어 추가 하드웨어 없이 더 많은 메모리를 추가할 수 있었다. 다른 설계와 달리 트랜스퓨터는 I/O 라인을 포함하지 않았다. 이들은 기존 직렬 링크에 연결된 하드웨어로 추가되어야 했다. 기존 프로세서의 인터럽트 라인과 유사한 '이벤트' 라인이 하나 있었다. 채널로 처리되어, 프로그램은 이벤트 채널에서 '입력'할 수 있었고, 이벤트 라인이 활성화된 후에만 진행할 수 있었다.
모든 트랜스퓨터는 외부 5 MHz 클럭 입력에서 작동했다. 이것은 프로세서 클럭을 제공하기 위해 곱해졌다.
트랜스퓨터에는 메모리 관리 장치(MMU)나 가상 메모리 시스템이 포함되지 않았다.
트랜스퓨터 변형(취소된 T9000 제외)은 세 그룹으로 분류할 수 있다. 16비트 T2 시리즈, 32비트 T4 시리즈, 64비트 IEEE 754 부동소수점 지원을 갖춘 32비트 T8 시리즈이다.
T2: 16비트
[편집]프로토타입 16비트 트랜스퓨터는 S43으로, 스케줄러와 링크의 DMA 제어 블록 전송 기능이 없었다. 출시 당시 T212와 M212(후자는 온보드 디스크 컨트롤러 포함)가 16비트 제품으로 제공되었다. T212는 17.5 및 20 MHz 프로세서 클럭 속도 등급으로 제공되었다. T212는 온칩 RAM이 2 KB에서 4 KB로 확장된 T222로 대체되었고, 나중에는 T225로 대체되었다. T225는 디버깅-브레이크포인트 지원(명령어 "J 0" 확장)과 T800 명령어 세트의 일부 추가 명령어를 추가했다. T222와 T225 모두 20 MHz로 작동했다.
T4: 32비트
[편집]1985년 10월에 출시된 T414는 900,000개의 트랜지스터에 해당하는 기능을 사용했고 1.5 마이크로미터 공정 기술로 제조되었다. 이 칩은 32비트 설계로, 32비트 데이터 단위를 처리하고 최대 4 GB의 주 메모리를 주소 지정할 수 있었다.[13] 원래 첫 번째 32비트 변형은 T424였으나, 제조상의 어려움으로 인해 4 KB 대신 2 KB 온보드 RAM을 갖춘 T414로 재설계되었다. T414는 15 MHz 및 20 MHz 버전으로 제공되었다. RAM은 나중에 T425(20, 25, 30 MHz 버전)에서 4 KB로 복원되었으며, T425는 또한 J 0 브레이크포인트 지원과 추가 T800 명령어를 추가했다. 1989년 9월에 출시된 T400은 2 KB와 4개 대신 2개의 링크를 가진 저가형 20 MHz T425 파생 제품으로, 임베디드 시스템 시장을 겨냥했다.
T8: 부동소수점
[편집]1987년에 도입된 2세대 T800 트랜스퓨터는 확장된 명령어 세트를 가졌다. 가장 중요한 추가 사항은 64비트 부동소수점 장치(FPU)와 부동 소수점을 위한 3개의 추가 레지스터였는데, IEEE 754-1985 부동 소수점 표준을 구현했다. 또한 4 KB의 온보드 RAM을 가졌고 20 또는 25 MHz 버전으로 제공되었다. 나중에 T801과 T805에 브레이크포인트 지원이 추가되었는데, 전자는 성능 향상을 위해 별도의 주소 및 데이터 버스를 특징으로 했다. T805는 나중에 30 MHz 부품으로도 제공되었다.
더 많은 RAM, 더 많고 빠른 링크, 추가 명령어, 개선된 마이크로코드를 가질 향상된 T810이 계획되었지만, 1990년경에 취소되었다.
인모스는 또한 C004 32방향 링크 스위치 및 트랜스퓨터 링크를 8비트 데이터 버스와 인터페이스할 수 있도록 하는 C011 및 C012 "링크 어댑터"와 같은 트랜스퓨터 프로세서를 위한 다양한 지원 칩을 생산했다.
T400
[편집]원래 인모스 전략의 일부는 CPU를 매우 작고 저렴하게 만들어 다른 논리와 하나의 장치로 결합할 수 있도록 하는 것이었다. 시스템 온 칩(SoC)이 지금은 유비쿼터스이지만, 이 개념은 1980년대 초반에는 거의 들어본 적이 없었다. 1983년경 M212와 TV-toy라는 두 가지 프로젝트가 시작되었다. M212는 ST 506 및 ST 412 슈가트 표준용 디스크 컨트롤러를 추가한 표준 T212 코어에 기반을 두었다. TV-toy는 비디오 게임 콘솔의 기반이 될 예정이었고 인모스와 싱클레어 리서치 간의 공동 프로젝트였다.
T212 및 T414/T424 트랜스퓨터의 링크에는 하드웨어 DMA 엔진이 있어 다른 프로세스의 실행과 병렬로 전송이 이루어질 수 있었다. CPU가 이러한 전송을 처리하는 T400이라는 디자인 변형(나중에 같은 이름의 트랜스퓨터와 혼동하지 말 것)이 설계되었다. 4개의 링크 엔진이 전체 CPU와 거의 같은 크기였기 때문에 장치 크기가 상당히 줄어들었다. T400은 당시 시스템 온 실리콘(SOS) 장치라고 불리던 것, 즉 현재는 시스템 온 칩(SoC)으로 불리는 장치의 코어로 사용될 예정이었다. 이 디자인이 TV-toy의 일부를 형성할 예정이었다. 이 프로젝트는 1985년에 취소되었다.
T100
[편집]이전 SoC 프로젝트가 제한적인 성공을 거두었지만(M212는 한동안 판매되었다), 많은 설계자들은 여전히 그 개념을 굳게 믿었고 1987년에 새로운 프로젝트인 T100이 시작되었다. 이 프로젝트는 트랜스퓨터 CPU의 8비트 버전과 상태 기계 기반의 구성 가능한 로직을 결합했다. 트랜스퓨터 명령어 세트는 8비트 명령어에 기반을 두고 있으며 8비트의 배수인 모든 워드 크기와 쉽게 사용할 수 있다. T100의 목표 시장은 퓨처버스(Futurebus)와 같은 버스 컨트롤러 및 표준 링크 어댑터(C011 등)의 업그레이드였다. 이 프로젝트는 T840(나중에 T9000의 기반이 됨)이 시작되면서 중단되었다.
- T2, T4 및 T8 시리즈 트랜스퓨터
-
인모스 T212, PREQUAL
-
인모스 T222, PREQUAL
-
ST마이크로일렉트로닉스 IMST225 (인모스 T225)
-
인모스 T400
-
인모스 T414
-
인모스 T425
-
인모스 T800, PREQUAL
-
ST마이크로일렉트로닉스 IMST805 (인모스 T805)
TPCORE
[편집]TPCORE는 FPGA에서 실행되는 os-링크를 포함한 트랜스퓨터 구현이다.[9][14]
T9000
[편집]
인모스는 T9000(개발 중에는 H1이라는 코드명)을 도입하여 T8 시리즈 트랜스퓨터의 성능을 향상시켰다. T9000은 T800의 대부분의 기능을 공유했지만, 설계의 여러 부분을 하드웨어로 옮기고 슈퍼스칼라 지원을 위한 여러 기능을 추가했다. 이전 모델과 달리 T9000은 RAM 대신 실제 16 KB의 고속 CPU 캐시 (무작위 교체 사용)를 가졌지만, 이를 메모리로 사용할 수 있도록 허용했으며, 이 모든 것을 처리하는 MMU와 유사한 기능(PMI라고 불림)을 포함했다. 더 빠른 속도를 위해 T9000은 이전 버전의 3개 대신 스택의 상위 32개 위치를 캐싱했다.

T9000은 더욱 빠른 속도를 위해 5단계 파이프라인을 사용했다. 흥미로운 추가 기능은 캐시에서 명령어를 수집하여 최대 8바이트의 더 큰 패키지로 묶어 파이프라인에 더 빠르게 공급하는 그루퍼[15]였다. 그런 다음 그룹은 더 빠른 CPU에서 작동하는 단일 더 큰 명령어처럼 한 사이클에 완료되었다.
링크 시스템은 새로운 100 MHz 모드로 업그레이드되었지만, 이전 시스템과 달리 링크는 더 이상 하향 호환되지 않았다. 이 새로운 패킷 기반 링크 프로토콜은 DS-링크[16]라고 불렸으며, 나중에 IEEE 1355 직렬 상호 연결 표준의 기반이 되었다. T9000은 또한 VCP(Virtual Channel Processor)라고 불리는 링크 라우팅 하드웨어를 추가하여 링크를 지점 간(point-to-point)에서 진정한 네트워크로 변경하여 링크에 어떤 수의 가상 채널이든 생성할 수 있도록 했다. 이는 프로그램이 더 이상 연결의 물리적 레이아웃을 알 필요가 없다는 것을 의미했다. C104 32방향 크로스바 스위치 및 C101 링크 어댑터와 같은 다양한 DS-링크 지원 칩도 개발되었다.
T9000 개발의 긴 지연은 출시될 무렵에는 이미 더 빠른 로드/스토어 설계가 이를 능가하고 있었다는 것을 의미했다. T800보다 10배 빠른 성능 목표를 지속적으로 달성하지 못했다. 프로젝트가 마침내 취소되었을 때에도 50 MHz에서 약 36 MIPS만 달성하고 있었다. 생산 지연은 T9000을 위한 최고의 호스트 아키텍처가 오버헤드 프로젝터였다는 농담을 낳았다.
이것은 인모스에게는 너무나 큰 부담이었고, 개발을 계속할 자금이 없었다. 이 무렵 회사는 SGS-Thomson(현재 ST마이크로일렉트로닉스)에 매각되었는데, 이 회사는 임베디드 시스템 시장에 중점을 두었으며 결국 T9000 프로젝트는 중단되었다. 그러나 임베디드 애플리케이션용으로 완전히 재설계된 32비트 트랜스퓨터인 ST20 시리즈가 나중에 T9000을 위해 개발된 일부 기술을 사용하여 생산되었다. ST20 코어는 셋톱박스 및 GPS 애플리케이션용 칩셋에 통합되었다.
ST20
[편집]엄밀히 말하면 트랜스퓨터는 아니지만, ST20은 T4와 T9의 영향을 많이 받았으며, 트랜스퓨터의 마지막이라고 할 수 있는 T450의 기반을 형성했다. ST20의 목표는 당시 떠오르던 SoC 시장에서 재사용 가능한 코어가 되는 것이었다. ST20의 원래 이름은 RMC(Reusable Micro Core)였다. 아키텍처는 마이크로코드 제어 데이터 경로를 갖춘 원래 T4 아키텍처를 느슨하게 기반으로 했다. 그러나 이는 설계 언어로 VHDL을 사용하고 최적화된(그리고 다시 작성된) 마이크로코드 컴파일러를 사용하여 완전히 재설계되었다. 이 프로젝트는 T9가 많은 애플리케이션에 너무 클 것이라는 점이 인식되었던 1990년에 처음 구상되었다. 실제 설계 작업은 1992년 중반에 시작되었다. 트랩을 통해 소프트웨어로 구현된 복잡한 명령어를 가진 매우 간단한 RISC 스타일 CPU부터 토마술로 알고리즘과 유사한 개념의 다소 복잡한 슈퍼스칼라 설계에 이르기까지 여러 시험 설계가 수행되었다. 최종 설계는 원래 T4 코어와 매우 유사했지만, 성능 향상을 위해 일부 간단한 명령어 그룹화와 작업 공간 캐시가 추가되었다.
채택
[편집]
트랜스퓨터는 많은 동시대 설계에 비해 간단하면서도 강력했지만, CPU와 마이크로컨트롤러 역할 모두에서 보편적으로 사용되겠다는 목표에 거의 도달하지 못했다. 마이크로컨트롤러 시장에서는 비용이 가장 중요한 고려 사항인 8비트 기계가 시장을 지배했다. 여기서는 심지어 T2도 대부분의 사용자에게 너무 강력하고 비쌌다.
컴퓨터 데스크톱 및 워크스테이션 분야에서 트랜스퓨터는 상당히 빨랐다(20 MHz에서 약 1천만 초당 명령 수(MIPS)로 작동). 이는 1980년대 초반에는 뛰어난 성능이었지만, 부동소수점 장치(FPU)를 장착한 T800이 출시될 무렵에는 다른 RISC 설계가 이를 능가했다. 이는 계획대로 여러 트랜스퓨터를 사용했다면 크게 완화될 수 있었겠지만, T800은 도입 당시 개당 약 400달러였으므로 가격 대비 성능비가 좋지 않았다. 트랜스퓨터 기반 워크스테이션 시스템은 거의 설계되지 않았으며, 가장 주목할 만한 것은 아마도 아타리 트랜스퓨터 워크스테이션일 것이다.
트랜스퓨터는 1980년대 후반 여러 공급업체가 트랜스퓨터 기반 시스템을 생산했던 대규모 병렬 컴퓨터 분야에서 더 성공적이었다. 여기에는 메이코 사이언티픽 (전 인모스 직원들이 설립), 플로팅 포인트 시스템즈, 파르지텍[17] 및 파르시스가 포함되었다. 여러 영국 학술 기관은 브리스틀 폴리테크닉의 브리스틀 트랜스퓨터 센터와 에든버러 대학교의 에든버러 동시 슈퍼컴퓨터 프로젝트를 포함하여 트랜스퓨터 기반 병렬 시스템 적용에 대한 연구 활동을 시작했다. 또한 DESY의 하드론 전자 링 시설(HERA) 충돌기용 고에너지 물리학 ZEUS 실험의 데이터 수집 및 2차 트리거 시스템은 여러 하위 시스템으로 나뉜 300개 이상의 동기식 클록 트랜스퓨터 네트워크를 기반으로 했다. 이들은 맞춤형 검출기 전자 장치의 판독을 제어하고 물리학 이벤트 선택을 위한 재구성 알고리즘을 실행했다.
트랜스퓨터의 병렬 처리 능력은 1990년대 초 세계 최대 인쇄 회사인 R. R. 도넬리 & 선즈에 의해 영상 처리를 위해 상업적으로 활용되었다. 인쇄 준비를 위해 디지털 이미지를 빠르게 변환하는 능력은 이 회사에 경쟁업체보다 상당한 우위를 제공했다. 이 개발은 R. R. 도넬리 기술 센터의 마이클 벵스턴이 주도했다. 몇 년 안에 데스크톱 컴퓨터의 처리 능력만으로도 이 회사를 위한 맞춤형 다중 처리 시스템의 필요성이 없어졌다.
독일 회사 Jäger Messtechnik는 초기 ADwin 실시간 데이터 준비 및 제어 제품에 트랜스퓨터를 사용했다.[18]
프랑스 회사는 최대 144개의 T800 및 T400 트랜스퓨터를 갖춘 아르키펠 볼복스 슈퍼컴퓨터를 구축했다. 이 컴퓨터는 UNIX를 실행하는 실리콘 그래픽스 인디고2와 볼복스 백플레인에 인터페이스하는 특수 카드로 제어되었다.
트랜스퓨터는 지멘스/텍트로닉스 K1103과 같은 프로토콜 분석기와 군사 애플리케이션에서도 사용되었다. 군사 애플리케이션에서는 어레이 아키텍처가 레이더와 같은 애플리케이션에 적합했으며, (1980년대에 고속이었던) 직렬 링크는 하위 시스템 통신에서 비용과 무게를 절약하는 데 큰 도움이 되었다.
트랜스퓨터는 또한 가상 현실 관련 제품에서도 등장했다. 브리스틀의 Division Limited에서 만든 ProVision 100 시스템이 그 예인데, 인텔 i860, 80486/33, 도시바 HSP 프로세서와 함께 T805 또는 T425 트랜스퓨터를 사용하여 렌더링 엔진을 구현했고, 이 엔진은 PC, 선 SPARC스테이션 또는 VAX 시스템에서 서버로 접근할 수 있었다.[19][20]
아스트리움 새틀라이트와 프랑스 국립 우주 연구 센터가 개발하고 피카르 위성 등에서 사용되는 유럽의 초소형 위성 플랫폼인 미리아드는 T805를 기반으로 하며 약 4 MIPS의 성능을 제공하고 2015년까지 생산될 예정이다.[21][22]
통신과 연산의 비동기 작동은 베인의 "비동기 다항식 근 찾기" 알고리즘과 같은 비동기 알고리즘의 개발을 가능하게 했다.[23] 비동기 알고리즘 분야와 현재 알고리즘의 비동기 구현은 엑사스케일 컴퓨팅으로의 전환에 핵심적인 역할을 할 가능성이 있다.
고에너지 천이 탐색기 2(HETE-2) 우주선은 4개의 T805 트랜스퓨터와 8개의 DSP56001을 사용하여 약 1억 초당 명령 수(MIPS)의 성능을 제공했다.[24]
유산
[편집]내부 병렬 처리의 증가는 기존 CPU 설계 개선의 원동력 중 하나였다. (트랜스퓨터에서 사용되는) 명시적인 스레드 수준 병렬 처리 대신, CPU 설계는 명령어 수준에서 암시적인 병렬 처리를 활용하여 데이터 의존성을 위해 코드 시퀀스를 검사하고 여러 독립적인 명령어를 다른 실행 장치에 발행했다. 이를 슈퍼스칼라 처리라고 한다. 슈퍼스칼라 프로세서는 순차적으로 구성된 코드 조각의 실행을 최적화하는 데 적합하다. 슈퍼스칼라 처리와 투기적 실행의 조합은 기존 코드 본체(대부분 파스칼, 포트란, C, C++로 작성됨)에서 상당하고 규칙적인 성능 향상을 제공했다. 기존 코드의 이러한 실질적이고 규칙적인 성능 향상으로 인해 더 많은 태스크 수준 병렬 처리를 노출하는 언어나 코딩 스타일로 소프트웨어를 다시 작성할 유인이 거의 없었다.
그럼에도 불구하고 협력하는 동시 프로세서 모델은 21세기 슈퍼컴퓨터 설계를 지배하는 클러스터 컴퓨팅 시스템에서 여전히 찾아볼 수 있다. 트랜스퓨터 아키텍처와 달리, 이러한 시스템의 처리 장치는 일반적으로 상당한 양의 메모리 및 디스크 저장 장치에 접근할 수 있는 슈퍼스칼라 CPU를 사용하며, 기존 운영 체제 및 네트워크 인터페이스를 실행한다. 더 복잡한 노드로 인해 이러한 시스템에서 병렬 처리를 조정하는 데 사용되는 소프트웨어 아키텍처는 일반적으로 트랜스퓨터 아키텍처보다 훨씬 더 무겁다.
근본적인 트랜스퓨터의 동기는 남아 있었지만, 트랜지스터 수가 반복적으로 두 배로 늘어나면서 20년 이상 가려져 있었다. 필연적으로 마이크로프로세서 설계자들은 결국 더 많은 물리적 자원을 사용할 방법을 다 소진했고, 거의 동시에 기술 스케일링이 한계에 부딪히기 시작했다. 전력 소비, 즉 열 방출 요구 사항으로 인해 추가적인 클럭 속도 증가는 불가능해졌다. 이러한 요인들은 산업을 인모스가 제안한 것과 본질적으로 크게 다르지 않은 해결책으로 이끌었다.
컬럼비아 대학교의 설계에 기반을 두고 IBM 블루 진으로 구축된 세계에서 가장 강력한 슈퍼컴퓨터 중 일부는 트랜스퓨터의 꿈을 현실화한 것이다. 이들은 동일하고 비교적 성능이 낮은 SoC의 거대한 집합체이다.
최근의 경향은 또한 인모스에게조차 너무 미래적이었을 방식으로 트랜지스터 딜레마를 해결하려고 노력해 왔다. CPU 다이에 구성 요소를 추가하고 하나의 시스템에 여러 다이를 배치하는 것 외에도, 최신 프로세서는 점점 더 하나의 다이에 여러 코어를 배치하고 있다. 트랜스퓨터 설계자들은 트랜지스터 예산에 단 하나의 코어도 맞추기 위해 고군분투했다. 오늘날 설계자들은 1000배 증가한 트랜지스터 밀도를 가지고 이제 일반적으로 많은 코어를 배치할 수 있다. 가장 최근의 상업적 개발 중 하나는 XMOS 회사에서 나왔는데, 이 회사는 트랜스퓨터 및 인모스와 강력하게 공명하는 임베디드 다중 코어 다중 스레드 프로세서 제품군을 개발했다. 셀 프로세서, 어댑테바 에피파니 아키텍처, 틸레라 등과 같이 칩 위의 네트워크(NoC) 접근 방식을 취하는 새로운 등급의 멀티코어/매니코어 프로세서가 등장하고 있다.
트랜스퓨터와 인모스는 브리스틀, 영국을 마이크로전자 설계 및 혁신의 중심지로 확립하는 데 기여했다.
같이 보기
[편집]각주
[편집]- ↑ Allen Kent, James G. Williams (eds.) (1998) "Encyclopedia of Computer Science and Technology", ISBN 0-8247-2292-2, "The Transputer Family of Products", by Hamid R. Arabnia.
- ↑ Hey, Anthony J. G. (1990년 1월 1일). 〈Supercomputing with transputers---past, present and future〉. 《Proceedings of the 4th international conference on Supercomputing - ICS '90》. New York, NY, USA: ACM. 479–489쪽. doi:10.1145/77726.255192. ISBN 0897913698. S2CID 8612995.
- ↑ Stoker, & White, A. . (2000). Mechatronic cine-film copying using transputer control. Mechatronics (Oxford), 10(7), 773–807. https://doi.org/10.1016/S0957-4158(99)00043-4
- ↑ Fuller, Samuel H. & Millett, Lynette I., Editors (2011). The Future of Computing Performance, CSTB, National Academic Press, p. 84. ISBN 978-0-309-15951-7 Retrieved on November 2, 2016.
- ↑ “The Prince Philip Designers Prize”. 《The Design Council》. 2019년 12월 1일에 확인함.
- ↑ Barron, Iann M. (1978). D. Aspinall (편집). 《The Transputer》. 《The Microprocessor and Its Application: An Advanced Course》 (케임브리지 대학교 출판부). 343쪽. ISBN 0-521-22241-9. 2009년 5월 18일에 확인함.
- ↑ Stakem, Patrick H. The Hardware and Software Architecture of the Transputer, 2011, PRB Publishing, ASIN B004OYTS1K
- ↑ 《Transputer Reference Manual》 (PDF). 프렌티스 홀. 1988. ISBN 0-13-929001-X. 2022년 10월 9일에 원본 문서 (PDF)에서 보존된 문서.
- ↑ 가 나 Kazuto Tanaka; Satoshi Iwanami; Takeshi Yamakawa; Chikara Fukunaga; Kazuto Matsui; Takashi Yoshida. "The Design and Performance of SpaceWire Router-network using CSP". p. 2.
- ↑ "High-Performance Computing and Networking: International Conference and Exhibition, Amsterdam, the Netherlands, April 21-23, 1998 Proceedings". B C O'Neill; G Coulson; K L Wong; R Hotchkiss; J H Ng; S Clark; and P D Thomas. "An Interface Device to Support a Distributed Parallel System for the StrongARM Microprocessor". p. 1031.
- ↑ “Inmos Technical Note 29: Dual-In-Line Transputer Modules (TRAMs)”. Transputer.net. 2008년 7월 4일. 2013년 10월 12일에 확인함.
- ↑ Borger, & Durdanovic, I. (1996). Correctness of compiling Occam to transputer code. Computer Journal, 39(1), 52–92. https://doi.org/10.1093/comjnl/39.1.52
- ↑ Anning, Nick; Hebditch, David (1986년 3월 20일). “New chip displays its powers”. 《New Scientist》. 43–46쪽. 2022년 6월 22일에 확인함.
- ↑ "Communicating Process Architectures 2004". p. 361. Makoto Tanaka; Naoya Fukuchi; Yutaka Ooki; and Chikara Fukunaga. "Design of a Transputer Core and its implementation in an FPGA". 2004.
- ↑ Inmos T9000 CPU patent, "US patent 5742783",
- ↑ Inmos DS Link patent, "Communication Interface US patent 5341371"
- ↑ Harald W. Wabnig (1993년 9월 22일). 《Virtual Channels for Deadlock-Free Communication in Transputer Networks》. 1993 World Transputer Congress. Aachen, Germany. 1047쪽. ISBN 9789051991406.
- ↑ “ADwin Fast Real-Time Automation System” (PDF). 2012년 4월 25일에 원본 문서 (PDF)에서 보존된 문서. 2011년 11월 16일에 확인함.
- ↑ Edmunds, Nick (July 1993). “When two worlds collide”. 《Personal Computer World》.
- ↑ Bangay, Sean (July 1993). 《Parallel Implementation of a Virtual Reality System on a Transputer Architecture.》 (PDF). Rhodes University. 2022년 10월 9일에 원본 문서 (PDF)에서 보존된 문서. 2012년 5월 6일에 확인함.
- ↑ “The Myriade Platform”. 2011년 8월 22일에 확인함.
- ↑ David Chemouil. “The Design of Space Systems” (PDF). 2012년 3월 21일에 원본 문서 (PDF)에서 보존된 문서. 2011년 8월 22일에 확인함.
- ↑ T.L. Freeman and M.K. Bane, "Asynchronous Polynomial Zero-Finding Algorithms". Parallel Computing 17, pp. 673-681. (1991)
- ↑ HETE-2 Spacecraft
외부 링크
[편집]- 트랜스퓨터 FAQ
- 람 미낙시순다람의 트랜스퓨터 홈페이지
- WoTUG 다른 환경에서 트랜스퓨터 원리(예: 커뮤니케이팅 시퀜셜 프로세스(CSP))를 적용하는 그룹.
- 트랜스퓨터 에뮬레이터 – 하나의 T414 트랜스퓨터(즉, FPU 없음, 블리팅 명령어 없음)를 에뮬레이션하고 일반적으로 호스트 컴퓨터 시스템에서 제공하는 파일 및 터미널 I/O 서비스를 제공한다.
- PC 기반 트랜스퓨터 에뮬레이터 – 이것은 1990년대 중후반 줄리안 하이필드가 작성한 원래 T414 트랜스퓨터 에뮬레이터(jserver라고 불림)의 PC 포트이다.
- 트랜스퓨터는 재미있을 수 있다.
- 트랜스터프리터 가상 머신. 보관됨 2017-03-03 - 웨이백 머신 – 트랜스퓨터 바이트코드에 기반한 오캄파이 및 기타 언어를 위한 휴대용 런타임.
- 켄 리타게터블 오캄 컴파일러. – 오캄파이 컴파일러.
- transputer.net. – 트랜스퓨터에 대한 문서 및 추가 정보.
- 인모스 동창회 전 인모스 직원들의 디렉토리, 사진 및 일반 정보. 켄 헤딩스 관리.
- 프린스 필립 디자이너스 상 1959년부터 2009년까지 수상자, 디자인 카운슬 웹사이트
- HETE-2 우주선 내부 시스템
- 저비용, 고성능, 멀티프로세서 기계의 개발 및 적용
특허
[편집]- US4704678 - INMOS, [1982년 11월 26일], 마이크로컴퓨터용 기능 세트
- US4724517 - INMOS, [1982년 11월 26일], 접두어 기능을 가진 마이크로컴퓨터
- US4758948 - INMOS, [1988년 7월 19일], 마이크로컴퓨터
- US4989133 - INMOS, [1991년 1월 29일], 시간 종속 프로세스 실행 시스템
- US4783734 - INMOS, [1988년 11월 8일], 가변 길이 프로세스 통신 컴퓨터
- US4794526 - INMOS, [1988년 12월 27일], 우선순위 스케줄링을 가진 마이크로컴퓨터