KR20090003217A - 컴퓨터들의 어레이 간의 자원들의 할당 - Google Patents

컴퓨터들의 어레이 간의 자원들의 할당 Download PDF

Info

Publication number
KR20090003217A
KR20090003217A KR1020087022319A KR20087022319A KR20090003217A KR 20090003217 A KR20090003217 A KR 20090003217A KR 1020087022319 A KR1020087022319 A KR 1020087022319A KR 20087022319 A KR20087022319 A KR 20087022319A KR 20090003217 A KR20090003217 A KR 20090003217A
Authority
KR
South Korea
Prior art keywords
computer
computers
instructions
instruction
array
Prior art date
Application number
KR1020087022319A
Other languages
English (en)
Inventor
챨스 에이치. 무어
Original Assignee
브이엔에스 포트폴리오 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/355,513 external-priority patent/US7904695B2/en
Priority claimed from US11/355,495 external-priority patent/US7904615B2/en
Priority claimed from US11/441,812 external-priority patent/US7913069B2/en
Priority claimed from US11/441,784 external-priority patent/US7752422B2/en
Priority claimed from US11/441,818 external-priority patent/US7934075B2/en
Application filed by 브이엔에스 포트폴리오 엘엘씨 filed Critical 브이엔에스 포트폴리오 엘엘씨
Publication of KR20090003217A publication Critical patent/KR20090003217A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

컴퓨터 어레이(10)는 복수의 컴퓨터들(12)을 갖는다. 컴퓨터들(12)은 이웃하는 컴퓨터들과 직접 통신하고, 어레이 내의 다른 컴퓨터들과 간접적으로 통신한다. 컴퓨터들은 데이터 그리고/또는 명령들을 포함하는 데이터 워드들을 전달한다. 4개의 명령들이 1개의 18비트 데이터 워드에 포함될 수 있다. 4개의 명령들이 한번에 통신되기 때문에, 4개의 명령들로 구성되는 전체 마이크로 루프를 통신할 수 있게 된다. 본 발명의 컴퓨터들은 자신들의 입력 레지스터로부터 직접 명령을 실행할 수 있다.
Figure P1020087022319
컴퓨터 어레이, 데이터 워드, 마이크로 루프, 이웃 컴퓨터, 직접 통신

Description

컴퓨터들의 어레이 간의 자원들의 할당{ALLOCATION OF RESOURCES AMONG AN ARRAY OF COMPUTERS}
본 발명은 컴퓨터들 및 컴퓨터 프로세서들의 분야에 관한 것으로서, 보다 특정하게는 컴퓨터들 간에 유일한 타입의 상호작용(interaction)을 위한 방법 및 수단에 관한 것이다. 본 발명의 컴퓨터 어레이는 단일 마이크로칩 상에서의 다수의 컴퓨터들의 결합에 대해 주로 이용된다.
어떠한 태스크를 달성하기 위해, 함께 작동하는 다수의 컴퓨터 프로세서들을 이용하는 것이 종래에 알려져있다. 프로세서들이 협동할 수 있도록 하기 위해, 멀티-스레딩(multi-threading) 및 복수의 다른 방식들을 이용하였다. 하지만, 일반적으로, 이러한 분야에서의 진보를 위해서는 많은 여지(room)가 남아있다는 것이 인식된다. 또한, 단일 칩 상에 복수개의 프로세서들을 결합함으로써, 문제를 악화시키고, 컴퓨터들이 효율적인 방식으로 함께 작동할 수 있게 하는 해결책을 찾기 위한 긴급성을 증가시키는 것이 현재의 추세이다. 현재, 많은 이유들로 인해, 많은 응용들에 대한 다수의 프로세서들의 최상의 배열은 많은 컴퓨터들로 구성되는 어레이인 것으로 여겨지고 있으며, 이러한 컴퓨터들 각각은 처리 성능 및 적어도 얼마간의 전용 메모리를 갖는다. 이러한 예에서, 컴퓨터들 각각은 자기 자신들에 있어 서는 특별히 강력하지 못하며, 컴퓨팅 파워는 이러한 컴퓨터들의 밀접한 협력을 통해 달성된다.
본 출원과 동일한 발명자의 명의를 갖는 동시 계류중인 출원들은, 이러한 컴퓨터들이 어떻게 배열될 수 있는 지에 대한 특정 사항 및 이들 사이에 통신 채널이 어떻게 존재할 수 있는 지에 대한 특정 사항을 포함하여, 이러한 컴퓨터 어레이들의 다양한 발명적인 양상들에 대해 설명하고 청구한다. 하지만, 컴퓨터 어레이들에 대한 비교적 새로운 개념의 구현은 최대의 효율성을 가지며 동작하기 위해서는 여전히 더 많은 혁신을 요구한다.
명백하게는, 컴퓨터 어레이들을 어떻게 최상으로 배열하고, 이들 사이에서 어떻게 통신을 하고, 이들 사이에 어떻게 태스크를 분배하고, 그리고 그렇지않으면 이들을 어떻게 이용할지에 대하여 해결되어야 하는 임의의 많은 문제들이 존재한다. 이러한 문제들의 일부는 해결되었지만, 기존의 해결책을 훨씬 더 개선해야 하는 여지가 여전히 남아있다. 다른 경우들에 있어서, 종래에 존재하지 않았던 새로운 문제들을 해결하기 위해서, 해결책들은 퍼스트 임프레션(first impression)의 문제들을 해소할 것을 요구한다.
따라서, 본 발명의 목적은 컴퓨터들의 어레이에서 이용가능한 컴퓨팅 파워를 효율적으로 이용하기 위한 방법 및 장치를 제공하는 것이다.
본 발명의 다른 목적은 상당한 컴퓨팅 파워를 저렴하게 제공하기 위한 장치 및 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 멀티-컴퓨터 어레이의 동작 속도를 증가시키기 위한 장치 및 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 계산 집중적인 태스크들을 달성하기 위한 장치 및 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 한 그룹의 컴퓨터들중 하나의 컴퓨터가 나머지 컴퓨터들중 하나 이상의 컴퓨터의 자원들과 통신하고 그리고/또는 이용하는 속도 및 효율성을 증가시키는 것이다.
간단히 말하면, 본 발명의 알려진 실시예는 컴퓨터들의 어레이인데, 여기서 각 컴퓨터는 자기 자신의 메모리를 가지며, 독립적인 계산 기능들이 가능하다. 태스크들을 협동하여 달성하기 위해, 컴퓨터들은 데이터 그리고/또는 명령들을 하나의 컴퓨터로부터 다른 컴퓨터로 전달해야 한다. 본 발명의 일 실시예에 따르면, 컴퓨터들은 직교하여 인접하는 컴퓨터들 간에 연결 데이터 경로(connecting data path)들을 가지며, 이에 의해 각 컴퓨터는 4개의 "이웃들"과 직접 통신할 수 있게 된다. 컴퓨터가 인접하는 이웃이 아닌 다른 컴퓨터와 통신하는 것이 바람직하다면, 다른 컴퓨터들을 통해 원하는 목적지로 통신의 채널이 형성된다.
본 발명의 바람직한 실시예에 따르면, 4개의 명령들을 포함하는 데이터 워드들은 컴퓨터들 사이에서, 그리고 각 컴퓨터의 내부 메모리들로/로부터, 병렬로 통과될 수 있기 때문에, 본 발명에 따르면, 각 데이터 워드는 미니 프로그램(mini-program)으로 구성될 수 있으며, 이러한 미니 프로그램은 본원에서 마이크로 루프(micro-loop)로서 지칭될 것이다. 프로세서들의 대규모 어레이에 있어서, 커다란 태스크들은 이상적으로는 복수의 보다 작은 태스크들로 분할되며, 이러한 보다 작은 태스크들 각각은 다소 제한된 성능을 갖는 프로세서에 의해 용이하게 달성될 수 있다는 것을 기억해야 한다. 따라서, 4개의 명령 루프들이 아주 유용한 것으로 여겨진다. 이러한 사실은, 컴퓨터들이 제한된 퍼실리티(facility)들을 갖기 때문에, 종종 이웃으로부터 퍼실리티들을 "빌리는(borrow)" 것이 편리하다는 관련 사실에 의해 훨씬 더 중요하게 되었다. 이것은 마이크로 루프의 이용에 대한 이상적인 기회를 제시한다. 어떠한 컴퓨터가 이웃으로부터 처리 파워 등을 빌릴 필요가 있기는 하지만, 다른 유망한 가능성은 그 컴퓨터가 이웃으로부터 어떠한 메모리를 빌려, 이를 자기 자신의 내부 메모리와 다소 유사한 방식으로 이용할 필요가 있다는 것이다. 일련의 데이터를 판독 또는 기록할 것을 지시하는 마이크로 루프를 이웃에게 전달함으로써, 이러한 메모리 차용(borrowing)이 쉽게 달성될 수 있다. 이러한 마이크로 루프는, 예를 들어 특정의 내부 메모리 위치로부터 기록하고, 그 위치를 증분시킨 다음, 소정수의 되풀이(iteration)를 반복하기 위한 명령을 포함한다.
마이크로 루프를 이웃에게 전달하는 상기의 예는 본 발명의 또 다른 양상의 하나의 예이며, 이는 "포스릿(Forthlets)"이라 불리는데, 그 이유는 이들이 현재 포스 컴퓨터 언어로 구현되기 때문이다. 하지만, 본 발명의 응용은 엄격히 포스(Forth)를 이용하는 것으로 제한되지 않는다. 포스릿은 실행을 위해 컴퓨터에 직접 전송될 수 있는 미니 프로그램이다. 종래의 컴퓨터들에 있어서, 어떠한 명령은 실행 이전에 판독 및 저장되어야 했지만, 본원의 하기의 상세한 설명으로부터 알 수 있는 바와 같이, 이는 본 발명에 따르면 반드시 필수적이지는 않다. 실제로, 본 발명의 중요한 양상은 컴퓨터가 포스릿을 발생시킨 다음, 이를 실행을 위해 다른 컴퓨터에 넘겨주는 것에 있다는 것을 알 수 있을 것이다. 포스릿은 프로그래머에 의해 "사전 기록되고(pre-written)", 이용을 위해 저장될 수 있다. 실제로, 포스릿은 필요할 때에 이용하기 위해 "라이브러리" 내에 축적될 수 있다. 하지만, 포스릿이 사전 프로그램된 기준들에 따라 컴퓨터 내에서 발생될 수 있는 것 역시 본 발명의 범위 내에 있다.
예로서, 본 발명의 일 실시예에서, I/O 레지스터들은 메모리 어드레스들로서 취급되는데, 이는 메모리를 판독 및 기록하는 동일한(또는 유사한) 명령들은 I/O 동작들을 또한 수행할 수 있다는 것을 의미한다. 멀티 코어 칩(multi-core chip)의 경우, I/O 구조에 대한 이러한 선택의 강력한 분기(powerful ramification)가 있다. 코어 프로세서는 자신의 로컬 ROM 및 RAM으로부터 명령들을 판독하고 실행할 수 있을 뿐 아니라, I/O 포트들 또는 레지스터들 상에서 자신에게 제시되는 명령들을 판독 및 실행할 수 있다. 이제, 데이터를 전송하는 타이트한 루프(tight loop)의 개념이 대단히 강력하게 되었다. 즉, 매우 중요하게 되었다. 이것은 명령 스트림들이 I/O 포트들에서 코어들에게 제시된 다음, 이들로부터 직접 실행될 수 있게 한다. 따라서, 하나의 코어는 인접하는 코어 프로세서에 코어 객체(core object)를 전송할 수 있으며, 인접하는 코어는 코어 객체를 직접 실행할 수 있다. 코어 객체들은 이제 코어들 사이에 전달될 수 있는데, 이러한 코어들은 코어 객체들을 레지스터들에서 실행한다. 코어 객체들은 매우 높은 속도로 도달하는데, 이는 각 코어가 코어 명령들을 전송하는 데에 걸리는 어떠한 명백한 시간(apparent time)도 없이 전적으로 자기 자신의 로컬 어드레스 공간 내에서 본질적으로 작동하기 때문이다.
상기 설명한 바와 같이, 각각의 명령 페치는 복수개(현재 설명되는 실시예에서는 4개)의 명령들을 코어 프로세서 내로 가져온다. 비록 이러한 종류의 빌트인(built-in) "캐시"가 확실히 작기는 하지만, 명령들 자체가 이를 이용할 때에는 비용이 매우 많이 들게 된다. 이를 테면, 단일의 18-비트 명령 워드의 바운드(bound) 내에 완전히 포함되는 마이크로 포 넥스트 루프(micro for-next loop)들이 구성될 수 있다. 이러한 타입의 구성들은, I/O 레지스터들 내에 빌트인되는 자동 상태 시그널링(automatic status signaling)과 결합될 때에 이상적인데, 그 이유는 이것이 데이터의 큰 블럭들이 단지 단일의 명령 페치에 의해 전송될 수 있음을 의미하기 때문이다. 그리고, 이러한 종류의 명령 패킹(packing)을 이용하게 되면, 이웃하는 프로세서 코어로부터 공유 I/O 레지스터 상에 제시되는 명령들을 실행하는 개념은 새로운 파워를 얻게 되는데, 이는 그 레지스터에 나타나는 각 워드가 1개의 명령을 나타내는 것이 아니라, 4개의 명령들을 나타내기 때문이다. 멀티 코어 칩들의 성능에 영향을 주는 이러한 타입들의 소프트웨어/하드웨어 구조들 및 이들의 스태거링(staggering)은 전형적인 언어들에 대해서 간단히 이용가능하지 않은데, 이러한 언어들은, 다수의 명령들이 단일 워드 내에 패킹되고, 완전한 루프들이 그 워드내로부터 실행될 수 있는 명령 세트에서만 가능하다.
본 발명의 상기 및 다른 목적들 그리고 장점들은 여기에 기재되고 일부 도면들 내에서 기재된 바와 같이, 본 발명을 수행하기 위한 모드들에 대한 서술 관점, 및 그의 산업상 이용가능성의 관점에서 당업자들에게 명백해질 것이다. 기술된 목적 및 장점은 본 발명의 가능한 모든 장점들에 대한 완전한 리스트는 아니다. 더욱이, 하나 이상의 상기 의도된 목적들 및/또는 장점들이 응용에서 결여되거나 또는 요구되지 않는 경우에도, 본 발명을 실행시키는 것이 가능하다.
게다가, 해당 분야의 기술을 지니고 있는 당업자라면 본 발명의 다양한 실시예들이 상술한 목적들 및/또는 장점들의 모두는 아닐지라도, 하나 또는 다수를 달성할 수 있다는 것을 알게 될 것이다. 따라서, 여기에 기재된 상기 목적들 및/또는 장점들은 본 발명의 필수 요소들은 아니고, 한정 요소들로 간주되어야 한다.
도 1은 본 발명에 따른 컴퓨터 어레이의 개략도이다.
도 2는 도 1의 컴퓨터들의 서브셋(subset)들을 상세히 나타내고, 도 1의 상호접속(interconnecting) 데이터 버스들을 보다 상세히 나타내는 도면이다.
도 3은 도 1 및 2의 컴퓨터들중 하나의 컴퓨터의 일반적인 레이아웃을 도시하는 블록도이다.
도 4는 본 발명의 응용에 따른 명령 워드의 개략적인 표현을 나타내는 도면이다.
도 5는 도 3의 슬롯 시퀀서(slot sequencer)(42)의 개략적인 표현을 나타내는 도면이다.
본 발명은 도면들을 참조하여 하기에서 설명되며, 동일한 번호들은 동일하거 나 유사한 요소들을 나타낸다. 본 발명은 본 발명의 개념을 달성하기 위한 모드들의 견지에서 설명되지만, 다양한 변형들이 본 발명의 정신 또는 범위를 벗어나지 않으면서 본 개시에 비추어 이루어질 수 있다는 것이 당업자들에게 자명할 것이다.
여기에 기술되고, 그리고/또는 도면에 제시된 본 발명의 실시예들 및 변형들은 단지 예시적으로 제시된 것으로서, 본 발명의 범위를 한정하지 않는다. 특별히 다르게 언급하지 않는 한, 본 발명의 개별적인 양상들 및 컴포넌트들은 생략 또는 변경되거나, 또는 공지된 등가물들로 대체되거나, 또는 미래에 개발될 수 있는 것 또는 미래에 수용가능한 대체물인 것으로 밝혀질 수 있는 아직 알려지지 않은 대체물들로 대체될 수도 있다. 가능한 응용들의 범위가 넓고, 그리고 본 발명은 많은 변형들에 대해 적응될 수 있기 때문에, 본 발명은 청구되는 발명의 정신 및 범위 내에서 다양한 응용들에 대해 변경될 수 있다.
하기의 실시예가 컴퓨터들과 개별적으로 비동기적으로 동작하는 컴퓨터들 간에 비동기적인 통신을 갖는 컴퓨터 어레이의 예를 이용하여 설명되지만, 본 발명의 응용들은 결코 이러한 환경으로 제한되지 않는다.
본 발명을 수행하기 위한 알려진 모드는 개별적인 컴퓨터들의 어레이이다. 본 발명의 컴퓨터 어레이는 도 1에 도시되어 있으며, 참조 번호(10)로 표시된다. 컴퓨터 어레이(10)는 복수개(도시된 예에서는 24개)의 컴퓨터들(12)(본 어레이의 예에서는, 종종 "코어들" 또는 "노드들"이라고도 지칭됨)을 갖는다. 도시된 예에 있어서, 컴퓨터들(12) 모두는 단일 다이(14) 상에 위치한다. 본 발명에 따르면, 일반적으로 컴퓨터들(12) 각각은 독립적으로 기능하는 컴퓨터이며, 이에 대해서는 하 기에서 보다 상세히 설명된다. 컴퓨터들(12)은 복수개의 상호접속(interconnecting) 데이터 버스들(16)에 의해 상호 연결된다(데이터 버스의 양에 대해서는 하기에서 보다 상세히 설명된다). 본 예시에서, 데이터 버스들(16)은 양방향의 비동기적인 고속의 평행 데이터 버스들이기는 하지만, 이러한 목적을 위해 다른 상호 접속 수단을 이용하는 것 역시 본 발명의 범위 내에 있다. 본 어레이(10)의 실시예에서는, 컴퓨터들(12) 간의 데이터 통신이 비동기적일 뿐만 아니라, 개별적인 컴퓨터들(12)은 내부적으로 비동기적인 모드에서 동작한다. 이는 중요한 장점들을 제공하는 것으로 본 발명자에 의해 밝혀졌다. 예를 들어, 클럭 신호는 컴퓨터 어레이(10) 전체에 걸쳐서 분배될 필요가 없기 때문에, 상당량의 전력이 절약된다. 또한, 클럭 신호를 분배할 필요가 없기 때문에, 어레이(10)의 크기를 제한하거나 또는 알려져있는 다른 어려움들을 야기할 수 있는 많은 타이밍 문제들을 없앤다.
당업자라면 다이(14) 상의 부가적인 컴포넌트들이 간결함을 위해 도 1로부터 생략되어 있다는 것을 알 수 있을 것이다. 이러한 부가적 컴포넌트들은 전력 버스들, 외부 연결 패드들 및 마이크로프로세서 칩의 기타의 공통적인 것들을 포함한다.
컴퓨터(12e)는 어레이(10)의 주변에 있지 않은 컴퓨터들(12)중 하나에 대한 예이다. 즉, 컴퓨터(12e)는 4개의 직교하여 인접하는 컴퓨터들(12a, 12b, 12c, 12d)을 구비한다. 이러한 컴퓨터들(12a 내지 12e)의 그룹은 이후 어레이(10)의 컴퓨터들(12) 간의 통신에 대한 보다 상세한 설명과 관련하여 이용될 것이다. 도 1에 서 알 수 있는 바와 같이, 컴퓨터(12e)와 같은 내부 컴퓨터들은 이들이 버스들(16)을 통해 직접 통신할 수 있는 4개의 다른 컴퓨터들(12)을 갖게 된다. 하기의 설명에서, 어레이(10)의 주변에 있는 컴퓨터들(12)이 오직 3개의 컴퓨터들(12)하고만 직접 통신을 하거나, 또는 코너 컴퓨터들(12)의 경우에는 오직 2개의 다른 컴퓨터들(12)하고만 통신하게 되는 것을 제외하고, 상기 설명된 원리들은 모든 컴퓨터들(12)에 적용될 것이다.
도 2는 도 1의 일부분에 대한 보다 상세한 도면으로서, 컴퓨터들(12)의 일부, 특히 컴퓨터들(12a 내지 12e) 만을 보여준다. 도 2는 또한 데이터 버스들(16) 각각이 판독 라인(18), 기록 라인(20) 및 복수개(본 예에서는 18개)의 데이터 라인들(22)을 구비한다는 것을 보여준다. 데이터 라인들(22)은 하나의 18-비트 명령 워드의 모든 비트들을 일반적으로 동시에 평행하게 전송할 수 있다. 본 발명의 일 실시예에서, 컴퓨터들(12)중 일부는 인접하는 컴퓨터들의 거울 이미지(mirror image)들이라는 것을 유념해야 한다. 하지만, 컴퓨터들(12)이 모두 동일하게 방위가 정해지거나, 또는 인접하는 컴퓨터들의 거울 이미지들인 지의 여부는 지금 설명되고 있는 발명의 실시 형태가 아니다. 따라서, 본 발명을 더욱 잘 설명하기 위해, 이러한 가능한 복잡성에 대해서는 본원에서 더 설명하지 않을 것이다.
본 발명의 실시예에 따르면, 컴퓨터(12e)와 같은 컴퓨터(12)는 각각의 하나, 둘, 셋, 또는 네 개의 모든 인접하는 컴퓨터들(12)로부터 데이터를 수신할 준비가 되도록 자신의 판독 라인들(18)중 하나, 둘, 셋, 또는 네 개 모두를 설정할 수 있다. 유사하게, 컴퓨터(12)는 자신의 기록 라인들(2)중 하나, 둘, 셋, 또는 네 개 모두를 하이(high)로 설정할 수 있다. 비록 본 발명자는 컴퓨터(12)의 기록 라인들(20)중 하나 이상을 한번에 하이로 설정하기 위한 임의의 실제 값이 현재 존재하는 것으로 믿고 있지 않지만, 이를 행하는 것은 본 발명의 범위 밖에 있지 않은데, 왜냐하면 이것은 이러한 동작에 대한 이용이 일어날 수 있음을 생각할 수 있기 때문이다.
인접하는 컴퓨터들(12a, 12b, 12c 또는 12d)중 하나가 자신과 컴퓨터(12e) 간의 기록 라인(20)을 하이 상태로 설정할 때, 만일 컴퓨터(12e)가 이미 대응하는 판독 라인(18)을 하이 상태로 설정했다면, 관련 데이터 라인들(22)을 통해 컴퓨터(12a, 12b, 12c 또는 12d)로부터 컴퓨터(12e)로 워드가 전송된다. 이후, 송신 컴퓨터(12)는 기록 라인(20)을 해제(release)하고, 수신 컴퓨터(본 예에서는, 12e)는 기록 라인(20)과 판독 라인(18) 모두를 로우(low) 상태가 되게 한다. 후자의 행동은 송신 컴퓨터(12)에게 데이터가 수신되었음을 알릴 것이다. 상기 설명은 반드시 이벤트들의 시퀀스를 순서대로 나타내는 것으로 의도되지는 않는 다는 것을 유념하자. 실제의 실행에서는, 본 예에서, 수신 컴퓨터는 송신 컴퓨터(12)가 자신의 기록 라인(20)을 해제(하이 상태로 풀링하는 것을 중단)하기 전에, 기록 라인(20)을 약간 로우 상태로 설정하고자 시도할 수 있다. 이러한 경우에 있어서, 송신 컴퓨터(12)가 자신의 기록 라인(20)을 해제하자마자, 그 기록 라인(20)은 수신 컴퓨터(12e)에 의해 로우 상태로 풀링될 것이다.
본 예에서는, 단지 프로그래밍 에러 만이 버스들(16)중 하나의 대향 단들 상의 양자의 컴퓨터들(12)로 하여금 그들 사이의 판독 라인(18)을 하이 상태로 설정 하고자 시도하게 한다. 또한, 버스들(16)중 하나의 대향 단들 상의 양자의 컴퓨터들(12)로 하여금 그들 사이의 기록 라인(1)을 동시에 하이로 설정하고자 시도하게 하는 것도 에러이다. 유사하게, 상술한 바와 같이, 단일 컴퓨터(12)가 자신의 네 개의 기록 라인들(20)중 하나 이상을 하이로 설정하는 것이 바람직한 것으로 현재 기대되지 않는다. 하지만, 컴퓨터들(12)중 하나가 자신의 해당 기록 라인(20)을 하이 설정하기 위해, 선택된 컴퓨터들(12)중 제 1 컴퓨터로부터 데이터를 기다리는 대기 상태(wait state)가 될 수 있도록, 판독 라인들(18)의 다른 조합들을 하이로 설정하는 것이 바람직한 경우들이 있을 것으로 현재 기대된다.
상술한 예시에 있어서, 컴퓨터(12e)는 (컴퓨터들(12a, 12b, 12c 또는 12d)의 하나 또는 그 이상으로부터 선택되는) 인접하는 컴퓨터가 자신의 기록 라인(20)을 하이로 설정하기 전에, 컴퓨터(12e)의 판독 라인들(18)중 하나 이상을 하이로 설정하는 것으로서 설명되었다. 하지만, 이러한 프로세스는 반대 순서로도 확실히 일어날 수 있다. 예를 들어, 만일 컴퓨터(12e)가 컴퓨터(12a)에 기록하고자 시도하는 경우, 컴퓨터(12e)는 컴퓨터(12e)와 컴퓨터(12a) 사이의 기록 라인(20)을 하이로 설정한다. 만일 컴퓨터(12e)와 컴퓨터(12a) 사이의 판독 라인(18)이 컴퓨터(12a)에 의해 아직 하이로 설정되어 있지 않다면, 컴퓨터(12e)는 컴퓨터(12a)가 그 판독 라인(18)을 하이로 설정할 때 까지 기다리기만 할 것이다. 이후, 상술한 바와 같이, 판독 라인(18)과 기록 라인(20)의 해당하는 쌍 모두가 하이로 설정되면, 데이터 라인들(22) 상에서 전송되기를 기다리고 있는 데이터가 전송된다. 이후, 수신 컴퓨터(본 예에서는, 12a)는, 송신 컴퓨터(12e)가 해제하자마자, 2개의 컴퓨터들(본 예 에서는, 12e 및 12a) 사이의 판독 라인(18) 및 기록 라인(20)을 모두 로우로 설정한다.
컴퓨터(12e)와 같은 컴퓨터(12)가 기록을 예상하여 자신의 기록 라인들(20)중 하나를 하이로 설정할 때 마다, 데이터가 전송될 컴퓨터(12)가 자신의 판독 라인(18)을 하이로 설정하지 않는한(이 경우, 데이터는 즉시 전송된다), 상기 설명한 바와 같이, 적절한 인접 컴퓨터(12)로부터 데이터가 "요청"될 때 까지 본질적으로 전력을 사용하지 않으면서 단순히 기다릴 것이다. 유사하게, 컴퓨터(12)가 판독을 예상하여 자신의 판독 라인들(18)중 하나 이상을 하이로 설정할 때 마다, 선택된 컴퓨터(12)에 연결된 기록 라인(20)이 두개의 컴퓨터들(12) 간에 명령 워드를 전송하기 위해 하이로 될 때 까지, 본질적으로 전력을 사용하지 않으면서 단순히 기다릴 것이다.
컴퓨터들(12)로 하여금 상기 설명한 바와 같은 기능을 수행하게 하는 몇 개의 가능한 수단 그리고/또는 방법들이 있다. 그러나, 본 예에서, 컴퓨터들(12)은 단순히 동작하는데, 그 이유는 (상기 설명한 비동기적인 방식으로 이들 간에 데이터를 전송하는 것에 부가하여) 이들은 일반적으로 내부적으로 비동기식으로 동작하기 때문이다. 즉, 명령들은 순차적으로 완성된다. 기록 또는 판독 명령이 발생할 때, 그 명령이 완성될 때 까지 (또는 대안적으로는, 그 명령이 "리셋" 등에 의해 중단(abort)될 때 까지) 어떠한 추가의 동작도 없을 수 있다. 종래의 기술의 관점에서는, 어떠한 규칙적인 클럭 펄스도 없다. 오히려, 펄스는, (판독 또는 기록 타입 명령이 다른 엔티티에 의한 완성을 요구한다는 가정하여) 실행되고 있는 명령이 판독 또는 기록 타입 명령이 아닐때에만, 또는 판독 또는 기록 타입 동작이 사실상 완료될 경우에만, 다음 명령을 달성하기 위해 생성된다.
도 3은 도 1 및 도 2의 컴퓨터들(12)중 하나의 예에 대한 일반적인 레이아웃을 도시하는 블록도이다. 도 3으로부터 알 수 있는 바와 같이, 컴퓨터들(12) 각각은 일반적으로 자기 자신의 RAM(24) 및 ROM(26)을 구비하는 독립형 컴퓨터(self contained computer)이다. 상기 설명한 바와 같이, 컴퓨터들(12)은 또한, 본 예에서, 이들이 단일 칩 상에서 결합된다고 가정하면, "코어들"이라고도 지칭된다.
컴퓨터(12)의 다른 기본적인 컴포넌트들은 리턴 스택(28), 명령 영역(30), 산술 논리 유닛("ALU")(32), 데이터 스택(34) 및 명령들을 디코드하기 위한 디코드 논리 섹션(36)을 포함한다. 당업자라면 일반적으로 본 예에서의 컴퓨터들(12)과 같은 스택 기반의 컴퓨터들의 동작에 친숙할 것이다. 컴퓨터들(12)은 데이터 스택(34) 및 개별적인 리턴 스택(28)을 구비하는 이중 스택 컴퓨터들이다.
본 발명의 이러한 실시예에서, 컴퓨터(12)는 인접하는 컴퓨터들(12)과 통신하기 위한 4개의 통신 포트들(38)을 갖는다. 이러한 통신 포트들(38)은 오프 상태(off state), (신호들을 컴퓨터(12) 내로 구동하기 위한) 수신 상태 및 (컴퓨터(12)로부터 신호들을 구동하기 위한) 송신 상태를 갖는 3-상태 드라이버들이다. 물론, 특정 컴퓨터(12)가 컴퓨터(12e)의 예와 같이 어레이(도 1)의 내부에 있지 않다면, 통신 포트들중 하나 또는 그 이상은 적어도 여기에서 설명되는 목적들을 위해, 그 특정 컴퓨터에서 이용되지 않을 것이다. 명령 영역(30)은 다수개의 레지스터들(40)을 포함하는데, 이는 본 예에서 A 레지스터(40a), B 레지스터(40b) 및 P 레지스터(40c)를 포함한다. 본 예에서, A 레지스터(40a)는 완전한(full) 18비트 레지스터인 반면, B 레지스터(40b) 및 P 레지스터(40c)는 9비트 레지스터들이다.
비록 본 발명이 본 예시에 의해 제한되는 것은 아니지만, 컴퓨터(12)는 네이티브 포스 언어(native Forth language) 명령어들을 실행하도록 구현된다. 포스 컴퓨터 언어와 친숙한 사람이라면, 포스 "워드"로서 알려져있는 복잡한 포스 명령들이 컴퓨터 내로 디자인된 네이티브 프로세서 명령들로부터 구성된다는 것을 이해할 것이다. 포스 워드들의 집합은 "딕셔너리(dictionary)"로 알려져있다. 다른 언어들에 있어서, 이는 "라이브러리(library)"로 알려져 있다. 하기에서 더욱 상세히 설명되는 바와 같이, 컴퓨터(12)는 RAM(24)과 ROM(26)으로부터 한번에 18 비트들을 판독하거나, 또는 데이터 버스들(16)(도 2)중 하나로부터 직접 판독한다. 하지만, 포스에 있어서, 대부분의 명령들(무 오퍼랜드 명령들(operand-less instructions)이라고 알려짐)은 스택들(28, 34)로부터 직접 자신들의 오퍼랜드들을 얻기 때문에, 이들은 일반적으로 단지 5비트의 길이를 가지며, 이에 따라 그룹 내의 마지막 명령이 단지 3개의 비트들 만을 요구하는 제한된 명령들의 세트로부터 선택된다는 조건하에서, 최대 4개의 명령들이 단일의 18비트 명령 워드 내에 포함될 수 있게 된다. 또한, 도 3의 블록도에는 슬롯 시퀀서(42)가 도시되어 있다. 본 발명의 이러한 실시예에서, 데이터 스택(34) 내의 상부 2개의 레지스터들은 T 레지스터(44) 및 S 레지스터(46)이다.
도 4는 명령 워드(48)에 대한 표현을 나타낸다. (명령 워드(48)는 실제로 명령들, 데이터 또는 그 결합을 포함할 수 있다는 것을 유념하자.) 명령 워드(48)는 18개의 비트들(50)로 이루어진다. 이진수 컴퓨터이기 때문에, 비트들(50) 각각은 '1' 또는 '0'이 될 것이다. 상술한 바와 같이, 18 비트 폭의 명령 워드(48)는 슬롯 0(54a), 슬롯 1(54b), 슬롯 2(54c) 및 슬롯 3(54d)이라 불리는 4개의 슬롯들(54) 내에 최대 4개의 명령들(52)을 포함할 수 있다. 본 실시예에서, 18 비트 명령 워드들(48)은 항상 전체적으로 판독된다. 따라서, 명령 워드(48) 내에 최대 4개의 명령들을 가질 수 있는 가능성이 항상 존재하기 때문에, 예를 들어 유효한 모든 슬롯들(54)을 이용하는 것이 불필요하거나 심지어 바람직하지 않을 때의 경우에는, 무연산(no operation, no-op) 명령이, 컴퓨터(12)의 명령 세트 내에 포함된다. 본 발명의 일 특정 실시예에 따르면, 교번적인 슬롯들(특히, 슬롯 1(54b) 및 슬롯 3(54c)) 내의 비트들(50)의 극성(액티브 로우와 비교하여 액티브 하이)이 반전(reverse)된다는 것을 유념하자. 하지만, 이는 현재 설명되는 실시예의 필수 양상은 아니며, 이에 따라 본 발명을 더욱 잘 설명하기 위해, 이러한 가능한 복잡성은 하기의 설명에서 생략된다.
도 5는 도 3의 슬롯 시퀀서(42)의 개략적인 표현을 나타낸다. 도 5에서 알 수 있는 바와 같이, 슬롯 시퀀서(42)는 링(ring)으로 배치된 복수개(본 예에서는, 14개)의 인버터들(56) 및 하나의 NAND 게이트(58)를 포함하며, 이에 따라 신호가 14개의 인버터들(56) 및 NAND' 게이트(58)를 통해 이동할 때, 이러한 신호는 홀수회 인버트된다. OR 게이트(60)로의 2개의 입력들중 어느 하나가 하이가 되면, 신호가 슬롯 시퀀서(42) 내에서 개시된다. 제 1 OR 게이트 입력(62)은 실행중인 명령(52)의 비트 i4(66)(도 4)로부터 도출된다. 만일 비트 i4가 하이이면, 그 특정 명령(52)은 ALU 명령이고, i4 비트(66)는 '1'이다. i4 비트(66)가 '1'일 때, 제 1 OR 게이트 입력(62)은 하이가 되고, 슬롯 시퀀서(42)는 펄스를 일으키도록 트리거(trigger)됨으로써, 다음 명령(52)의 실행을 야기한다.
제 1 OR 게이트 입력(62)이 하이가 되거나, 또는 제 2 OR 게이트 입력(64)(이하 논의될 예정임)이 하이가 되는 것중 어느 하나에 의해, 슬롯 시퀀서(42)가 트리거되면, 신호는 슬롯 시퀀서 출력(68) 주위에서 두번 이동하게 됨으로써, 슬롯 시퀀서 출력(68)에서 매번 출력을 생성한다. 신호가 슬롯 시퀀서 출력(68)을 첫번째로 통과할 때, 신호는 로우가 될 것이며, 슬롯 시퀀서 출력(68)을 두번째로 통과할 때, 신호는 하이가 될 것이다. 슬롯 시퀀서 출력(68)으로부터의 비교적 폭이 넓은 출력은 (블록 형태로 나타낸) 펄스 발생기(70)에 제공되며, 이 펄스 발생기는 좁은 타이밍 펄스를 출력으로서 생성한다. 당업자라면 이러한 좁은 타이밍 펄스가 컴퓨터(12)의 연산들을 정확히 개시하는 데에 바람직하다는 것을 인식할 것이다.
실행중인 특정 명령(52)이 판독 또는 기록 명령이거나, 또는 임의의 다른 명령일 때(여기서, 실행되는 명령(52)이 시퀀스 내의 다름 명령(52)의 즉각적인 실행을 트리거하는 것이 요구되지 않는다), i4 비트(66)는 '0'(로우)이 되고, 제 1 OR 게이트 입력(62) 역시 로우가 된다. 당업자라면 컴퓨터들(12)과 같은 장치 내의 이벤트들의 타이밍이 일반적으로 상당히 중요하고, 이것은 예외가 없다는 것을 인식할 것이다. 슬롯 시퀀서(42)를 검사하게 되면, 당업자는 링의 두번째 "랩(lap)"을 개시하기 위해 NAND 게이트(58)를 지나 순환하는 이후까지, OR 게이트(60)로부터의 출력이 하이로 유지되어야 한다는 것을 인식할 것이다. 이후, OR 게이트(60)로부터의 출력은 회로의 바람직하지 않은 연속적인 진동을 막기 위해 두번째 "랩" 동안 로우가 될 것이다.
상기 설명으로부터 이해할 수 있는 바와 같이, i4 비트(66)가 '0'일 경우, 이하 설명되는 바와 같이 제 2 OR 게이트 입력(64)이 하이가 아니라고 가정하여, 슬롯 시퀀서(42)는 트리거되지 않는다.
상기 설명한 바와 같이, 각 명령(52)의 i4 비트(66)는 명령이 판독 타입 명령인지 아니면 기록 타입 명령인지에 따라 설정된다. 명령(52) 내의 나머지 비트들(50)은 그 명령에 대한 특정의 오피코드(opcode)의 나머지를 제공한다. 판독 타입 또는 기록 타입 명령의 경우, 비트들중 하나 또는 그 이상은 어디에서 데이터가 상기 특정 컴퓨터(12)로부터/내에 판독 또는 기록되어야 하는 지를 나타내는 데에 이용될 수 있다. 본 예에서, 기록될 데이터는 항상 T 레지스터(44)(데이터 스택(34)의 상부)로부터 나오지만, 데이터는 이 데이터가 실행될 수 있는 명령 영역(30) 또는 상기 T 레지스터(44) 내로 선택적으로 판독될 수 있다. 이는, 본 특정 실시예에서, 데이터 또는 명령들이 여기에서 설명한 방식으로 통신할 수 있으며, 이에 따라 명령들이 데이터 버스(16)로부터 직접 실행될 수 있기 때문이다. 하지만, 이것이 본 발명에 반드시 필요한 양상은 아니다. 또한, 비트들(50)중 하나 또는 그 이상은, 만일 있는 경우, 포트들(38)중 어느 것이 판독 또는 기록을 위해 설정되어야 하는 지를 나타내는 데에 이용될 것이다. 이러한 후작의 동작은 A 레지스터(40a), B 레지스터(40b) 등과 같은 레지스터(40)를 나타내는 데에 하나 또는 그 이상의 비트들을 이용함으로써 선택적으로 달성된다. 이러한 예에서, 지정된 레지스터(40)에는, 포트들(38) (그리고 또한 임의의 다른 가능한 엔티티)(이 엔티티에 의해 컴퓨터(12)는 메모리, 외부 통신 포트 등과 통신하고자 시도한다) 각각에 해당하는 비트를 갖는 데이터가 프리로드(preload)된다. 예를 들어, 특정 레지스터(40) 내의 4개의 비트들 각각은 상부 포트(38a), 우측 포트(38b), 좌측 포트(38c) 또는 하측 포트(38d)에 각각 대응할 수 있다. 비트 위치들중 임의의 위치에 '1'이 있는 경우, 통신은 해당 포트(38)를 통해 진행되도록 설정될 것이다. 이전에 설명한 바와 같이, 본 실시예에서, 판독 오피코드는 단일 명령 내에서의 통신을 위해 하나 이상의 포트(38)를 설정할 수 있다고 기대되는 반면, 비록 가능하기는 하지만, 기록 오피코드가 단일 명령 내에서의 통신을 위해 하나 이상의 포트(38)를 설정할 것으로는 기대되지 않는다.
바로 다음의 예는 컴퓨터(12e)가 컴퓨터(12c)에 기록하고자 시도하는 통신을 가정하지만, 이러한 예는 임의의 인접하는 컴퓨터(12) 간의 통신에 적용될 수 있다. 기록 명령이 기록 컴퓨터(12e) 내에서 실행될 때, 선택된 기록 라인(20)(본 예에서는, 컴퓨터들(12e 및 12c) 사이의 기록 라인(20))은 하이로 설정되며, 그리고 해당 판독 라인(18)이 이미 하이 상태이면, 데이터는 선택된 통신 포트(38)를 통해 선택된 위치로부터 즉시 전송된다. 대안적으로, 해당 판독 라인(18)이 아직 하이가 아니면, 컴퓨터(12e)는 해당 판독 라인(18)이 하기가 될 때 까지 연산을 단지 멈출 것이다. 판독 또는 기록 타입 명령이 있을 때, 컴퓨터(12a)를 정지시키는(또는, 보다 정확하게는, 컴퓨터(12a)의 추가의 동작들을 가능하지 않게 하는) 메커니즘은 이전에 설명되었다. 요약하면, 명령(52)의 오피코드는 i4의 비트 위치(66)에서 '0'을 가질 것이며, 이에 따라 OR 게이트(60)의 제 1 OR 게이트 입력(62)은 로우가 되고, 이에 따라 슬롯 시퀀서(42)가 트리거되지 않게 되어, 인에이블링 펄스(enabling pulse)를 발생시킨다.
판독 또는 기록 타입 명령이 완성될 때 컴퓨터(12e)의 연산이 재개되는 방법에 대한 메커니즘은 다음과 같다. 컴퓨터들(12e 및 12c) 간의 판독 라인(18)과 해당 기록 라인(20) 모두가 하이일 때, 이러한 양 라인들(18 및 20)은 하이로 유지되고 있는 각각의 컴퓨터들(12)에 의해 해제될 것이다. (본 예에서, 수신 컴퓨터(12c)가 판독 라인(20)을 하이로 유지하는 동안, 전송 컴퓨터(12e)는 기록 라인(18)을 하이로 유지할 것이다. 이후, 수신 컴퓨터(12c)는 라인들(18 및 20) 모두를 로우 상태가 되게 한다. 실제 실행에 있어서, 전송 컴퓨터(12e)가 기록 라인(20)을 해제하기 전에, 수신 컴퓨터(12c)는 라인들(18, 20) 모두를 로우 상태가 되도록 시도할 것이다. 하지만, 라인들(18, 20)은 하이로 풀링(pulling)되고, 로우로 단지 약하게 유지(래치)되기 때문에, 라인(18 또는 20)이 자신을 하이로 래치하고 있는 컴퓨터(12)에 의해 해제될 때까지, 라인(18 또는 20)을 로우로 풀링하고자 하는 임의의 시도는 성공하지 못할 것이다.
데이터 버스(16) 내의 라인들(18 및 20)이 로우로 풀링될 때, 이것은 "확인(acknowledge)" 상태이다. 컴퓨터들(12e 및 12c) 각각은, 확인 상태가 되면, 자기 자신의 내부 확인 라인(72)을 하이로 설정한다. 도 5로부터 알 수 있는 바와 같이, 확인 라인(72)은 제 2 OR 게이트 입력(64)을 제공한다. OR 게이트 입력들(62 또는 64)중 어느 하나로의 입력은 OR 게이트(60)이 출력이 하이가 되게 하기 때문에, 이는 상기 설명한 방식으로 슬롯 시퀀서(42)의 동작을 개시할 것이며, 이에 따라 명령 워드(48)의 다음 슬롯(54) 내의 명령(52)이 실행되게 된다. 확인 라인(72)은, 가짜 어드레스(spurious address)들이 어드레스 버스에 도달하는 것을 막기 위해, 다음 명령(52)이 디코드될 때 까지 하이로 유지된다.
실행되고 있는 명령(52)이 명령 워드(48)의 슬롯 3 위치에 있는 경우, 물론 i4 비트(66)가 '0'이 아닌한, 컴퓨터(12)는 다음의 대기중인 18 비트 명령 워드(48)를 페치(fetch)할 것이다. 실제 실행에 있어서, 본 발명에 따른 메커니즘은 명령 워드(48) 내의 모든 명령들(52)의 실행이 끝나기 전에 페치가 시작될 수 있도록, 명령들을 "프리페치(prefetch)"하기 위한 방법 및 장치를 포함한다. 하지만, 이것은 비동기 데이터 통신을 위한 본 발명의 방법 및 장치에 대해 반드시 필요한 양상은 아니다.
상기에서는 컴퓨터(12e)가 컴퓨터(12c)에 대해 기록을 행하는 예가 상세히 설명되었다. 상기 설명에 비추어 알 수 있는 바와 같이, 상기 동작들은 컴퓨터(12e)가 먼저 컴퓨터(12c)에 기록을 하고자 하든, 아니면 컴퓨터(12c)가 먼저 컴퓨터(12e)로부터 판독하고자 시도하든 간에, 본질적으로 동일하다. 이러한 동작은 컴퓨터들(12 및 12c) 모두가 준비가 될 때 까지 완료될 수 없으며, 그리고 어느 컴퓨터(12e 또는 12c)가 먼저 준비되든지 간에, 제 1 컴퓨터(12)는 다른 컴퓨터(12e 또는 12c)가 전송을 완료할 때 까지 단순히 "수면 상태(sleep)"가 된다. 상기 설명한 프로세스를 살펴보는 다른 방법에 따르면, 실제로, 기록 컴퓨터(12e)와 수신 컴 퓨터(12c)가 각각 기록 및 판독 명령들을 실행할 때, 이들 모두는 수면 상태가 된다. 하지만, 트랜잭션(transaction)에 들어가는 마지막 컴퓨터는 판독 라인(18) 및 기록 라인(20) 모두가 하이일 때와 동시에 다시 깨어나는(reawaken) 반면, 트랜잭션을 개시하는 제 1 컴퓨터(12)는 제 2 컴퓨터(12)가 프로세스를 완료할 준비가 될 때 까지 거의 무기한으로 수면 상태로 유지될 수 있다.
본 발명자는, 장치들 간에 효율적인 비동기 통신을 가능하게 하는 중요 특징은 어떠한 종류의 확인 신호(acknowledge signal) 또는 상태(condition)라고 믿고 있다. 종래 기술에 있어서, 장치들 간의 대부분의 통신은 클럭(clock)되었으며, 수신 장치가 데이터를 적절하게 수신했는 지를 전송 디바이스가 알 수 있는 어떠한 직접적인 방법도 없다. 체크섬(checksum) 연산과 같은 방법들이 데이터가 정확히 수신되었는지에 대한 확인을 시도하는 데에 이용되어 왔지만, 전송 장치는 동작이 완료되었다는 직접적인 지시를 받지 못한다. 여기에서 설명되는 본 발명의 방법은 필요한 확인 조건을 제공하는바, 이는 장치들 간의 비동기 통신을 가능하게 하거나 또는 이러한 통신을 적어도 실용적이게 한다. 또한, 확인 조건은 확인 조건이 발생할 때 까지 장치들중 하나 또는 그 이상을 "수면 상태"로 들어가게 할 수 있다. 물론, 확인 조건은 (상호접속 데이터 버스(16)를 통해, 또는 개별적인 신호 라인을 통해) 컴퓨터들(12) 간에 전송되고 있는 개별적인 신호에 의해 이러한 컴퓨터들(12) 사이에서 통신될 수 있으며, 그리고 이러한 확인 신호는 본 발명의 이러한 양상의 범위 내에 있다. 하지만, 여기에서 설명되는 본 발명의 실시예에 따르면, 확인을 위한 방법은 통신에 실제적으로 영향을 끼치는 임의의 부가적인 신호, 클럭 사이클, 타이밍 펄스, 또는 상술한 것 이외의 임의의 자원을 필요로 하지 않는다는 점에서 훨씬 더 경제적이라고 평가될 수 있다.
다양한 변형들이 본 발명의 정신 또는 범위를 변경하지 않으면서 이루어질 수 있다. 예를 들어, 본 발명이 판독 명령들 및 기록 명령들의 측면에서 설명되기는 했지만, 실제의 실행에서는, 하나 이상의 판독 타입 명령 그리고/또는 하나 이상의 기록 타입 명령이 있을 수 있다. 단지 예로서, 본 발명의 일 실시예에서는, 레지스터를 증분시키는 기록 명령 및 증분시키지 않는 다른 기록 명령들이 있을 수 있다. 유사하게, 기록 명령들은, 상기 설명된 바와 같이, 통신 포트들(38)을 선택하는 데에 어떤 레지스터(40)에 이용되느냐에 따라 달라질 수 있다. 또한, 컴퓨터들(12)의 설계자가 대안적인 판독 작동에 대한 유용한 선택으로 어떠한 변화들을 고려하느냐에 의존하여, 많은 다른 판독 명령들이 있을 수 있다.
유사하게, 본 발명이 단일 다이(14) 상의 어레이(10) 내의 컴퓨터들(12) 간의 통신과 관련하여 설명되었지만, 동일한 원리들 및 방법은, 컴퓨터(12)와 그 전용 메모리 간에 또는 (입/출력 포트 등을 통한) 어레이(10) 내의 컴퓨터(12)와 외부 장치 간의 통신과 같은 다른 디바이스간 통신을 달성하는 데에 이용되거나, 또는 이러한 통신을 달성하도록 변형될 수 있다. 실제로, 일부 응용들은 어레이들의 어레이들을 요구할 것으로 기대되며, 현재 설명되는 장치간 통신 방법은 어레이들의 어레이들 간의 통신에 적용될 수 있다.
본 발명의 컴퓨터 어레이(10) 및 컴퓨터(12)의 특정의 예들이 설명되었지만, 이들에 대해 아직 계획되지 않은 많은 응용들이 있는 것으로 기대된다. 실제로, 본 발명의 장점들중 하나는 본 발명의 방법 및 장치가 많은 용도들에 대해 적응될 수 있다는 것이다.
상술한 모든 것들은 단지 본 발명의 유효한 실시예들의 일부 예시들일 뿐이다. 당업자라면 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 많은 변형들 및 수정들이 이루어질 수 있다는 것을 쉽게 알 수 있을 것이다. 따라서, 여기에서의 개시는 한정적인 것으로서 의도되지 않으며, 첨부된 청구항들은 본 발명의 전체 범위를 포괄하는 것으로서 해석되어야 한다.
본 발명의 컴퓨터 어레이(10), 컴퓨터들(12) 및 관련 방법(74)은 다양한 컴퓨터 응용들에서 널리 이용되는 것으로 의도된다. 이것들은, 특히 막대한 계산 파워가 요구되는 응용들에서 유용한 것으로 기대되며, 전력 소모 및 열 생성이 여전히 중요한 고려 사항들이다.
상기 설명한 바와 같이, 본 발명의 이용 가능성은 장치간 컴퓨터 통신들의 많은 타입이 개선될 수 있다는 것이다. 일부 컴퓨터들이 "수면"상태로 들어가는 것이 가능한 본 발명의 방법은, 많은 응용들 및 구현들에서, 전력 소모를 줄이고, 열 생성을 줄이며, 그리고 컴퓨터들과 컴퓨터화된 장치들 간의 통신을 효율성을 개선하는 데에 이용될 것이다.
본 발명의 컴퓨터 어레이(10), 컴퓨터(12) 및 방법(74)은 기존의 태스크들, 입/출력 장치들 등과 쉽게 제조 및 집적될 수 있기 때문에, 그리고 여기에서 설명되는 장점들이 제공되기 때문에, 이것들은 산업에서 쉽게 받아들일 수 있을 것으로 기대된다. 이러한 이유들 및 기타의 이유들로 인해, 본 발명의 효용성 및 산업적인 응용가능성은 그 범위가 상당히 넓고, 지속 기간이 오래 갈 것으로 기대된다.

Claims (13)

  1. 복수의 컴퓨터들과; 그리고
    상기 복수의 컴퓨터들을 연결하는 복수의 데이터 경로들로 이루어지며,
    여기서, 상기 복수의 컴퓨터들 각각은 자신의 가장 가까운 이웃들중 적어도 일부와 직접적인 통신 경로를 갖는 것을 특징으로 하는 컴퓨터 어레이.
  2. 제 1 항에 있어서,
    상기 각 컴퓨터는 자신의 가장 가까운 이웃들 모두와 직접적인 통신 경로를 갖는 것을 특징으로 하는 컴퓨터 어레이.
  3. 제 1 항에 있어서,
    이웃의 정의는 주체 컴퓨터(subject computer)에 직접적으로 인접하는 컴퓨터들로 한정되는 것을 특징으로 하는 컴퓨터 어레이.
  4. 제 1 항에 있어서,
    이웃의 정의는 주체 컴퓨터와 직접적으로 수평으로 인접하거나, 또는 상기 주체 컴퓨터와 직접적으로 수직으로 인접하는 컴퓨터들을 포함하는 것을 특징으로 하는 컴퓨터 어레이.
  5. 제 1 항에 있어서,
    주체 컴퓨터는 상기 어레이 내의 나머지 컴퓨터들중 적어도 일부를 통해 메시지들을 전달함으로써, 직접 인접하지 않은 상기 나머지 컴퓨터들과 통신할 수 있는 것을 특징으로 하는 컴퓨터 어레이.
  6. 컴퓨터로서,
    명령들이 입력 레지스터로부터 직접 선택적으로 실행되는 것을 특징으로 하는 컴퓨터.
  7. 복수의 워드 명령 세트들(multiple word instructions sets)을 갖는 컴퓨터에 있어서,
    복수의 워드 명령 세트 내의 제 1 명령 위치로 루프 백시키기 위한 루프 명령이 상기 복수의 워드 명령 세트 내에 포함되는 것을 특징으로 하는 컴퓨터.
  8. 제 7 항에 있어서,
    상기 루프 명령은 상기 복수의 워드 명령 세트 내의 마지막 명령인 것을 특징으로 하는 컴퓨터.
  9. 제 7 항에 있어서,
    4개 보다 적은 명령들로 전체 루프를 구성할 것을 요구하는 경우, 상기 복수 의 워드 명령 세트 내에 포함시키기 위한 무연산 명령(no-op instruction)을 더 포함하는 것을 특징으로 하는 컴퓨터.
  10. 컴퓨터들의 어레이에 있어서,
    상기 컴퓨터들중 제 1 컴퓨터로 하여금 상기 컴퓨터들중 제 2 컴퓨터에게 명령 그룹을 전달하게 하고; 그리고
    상기 컴퓨터들중 제 2 컴퓨터로 하여금 입력 레지스터로부터 직접 상기 명령 그룹을 실행하게 하는 것을 특징으로 하는 컴퓨터들의 어레이.
  11. 제 10 항에 있어서,
    상기 컴퓨터들중 상기 제 1 컴퓨터 및 상기 제 2 컴퓨터는 서로 간에 직접적인 통신 경로를 갖는 것을 특징으로 하는 컴퓨터들의 어레이.
  12. 제 10 항에 있어서,
    상기 명령 그룹은 적어도 제 3 컴퓨터를 통해 상기 제 1 컴퓨터와 상기 제 2 컴퓨터 간에 라우팅되는 것을 특징으로 하는 컴퓨터들의 어레이.
  13. 제 10 항에 있어서,
    상기 명령 그룹은 상기 명령 그룹을 상기 제 1 컴퓨터로부터 상기 제 2 컴퓨터로 라우팅하기 위한 관련 명령들을 갖는 것을 특징으로 하는 컴퓨터들의 어레이.
KR1020087022319A 2006-02-16 2007-02-16 컴퓨터들의 어레이 간의 자원들의 할당 KR20090003217A (ko)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
US11/441,784 2005-05-26
US11/355,513 US7904695B2 (en) 2006-02-16 2006-02-16 Asynchronous power saving computer
US11/355,495 US7904615B2 (en) 2006-02-16 2006-02-16 Asynchronous computer communication
US11/355,513 2006-02-16
US11/355,495 2006-02-16
US78826506P 2006-03-31 2006-03-31
US60/788,265 2006-03-31
US11/441,812 US7913069B2 (en) 2006-02-16 2006-05-26 Processor and method for executing a program loop within an instruction word
US11/441,784 US7752422B2 (en) 2006-02-16 2006-05-26 Execution of instructions directly from input source
US11/441,812 2006-05-26
US11/441,818 US7934075B2 (en) 2006-02-16 2006-05-26 Method and apparatus for monitoring inputs to an asyncrhonous, homogenous, reconfigurable computer array
US11/441,818 2006-05-26

Publications (1)

Publication Number Publication Date
KR20090003217A true KR20090003217A (ko) 2009-01-09

Family

ID=38437887

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087022319A KR20090003217A (ko) 2006-02-16 2007-02-16 컴퓨터들의 어레이 간의 자원들의 할당

Country Status (4)

Country Link
EP (1) EP1984836A4 (ko)
JP (1) JP2009527814A (ko)
KR (1) KR20090003217A (ko)
WO (1) WO2007098024A2 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115586972B (zh) * 2022-11-25 2023-02-28 成都登临科技有限公司 命令生成方法、装置、ai芯片、电子设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5222237A (en) * 1988-02-02 1993-06-22 Thinking Machines Corporation Apparatus for aligning the operation of a plurality of processors
US5440749A (en) 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
DE4019040A1 (de) * 1990-06-14 1991-12-19 Philips Patentverwaltung Multirechnersystem
SE514785C2 (sv) * 1999-01-18 2001-04-23 Axis Ab Processor och metod för att exekvera instruktioner från flera instruktionskällor
US7415594B2 (en) * 2002-06-26 2008-08-19 Coherent Logix, Incorporated Processing system with interspersed stall propagating processors and communication elements
US7937557B2 (en) * 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array

Also Published As

Publication number Publication date
WO2007098024A3 (en) 2008-12-31
EP1984836A2 (en) 2008-10-29
JP2009527814A (ja) 2009-07-30
WO2007098024A2 (en) 2007-08-30
EP1984836A4 (en) 2009-08-26

Similar Documents

Publication Publication Date Title
JP2519226B2 (ja) プロセツサ
US8832413B2 (en) Processing system with interspersed processors and communication elements having improved wormhole routing
JP4921638B2 (ja) メモリサブシステムに複数のメモリアルゴリズムプロセッサを組込むマルチプロセッサコンピュータアーキテクチャ
US8825924B2 (en) Asynchronous computer communication
US7904695B2 (en) Asynchronous power saving computer
US20070250682A1 (en) Method and apparatus for operating a computer processor array
JP7264897B2 (ja) メモリ装置及びそれを制御するための方法
JP2009009550A (ja) データの通信
KR20090016644A (ko) 동작 효율성을 증가시킨 컴퓨터 시스템
JP2009009549A (ja) 一連のコンピュータでデータを処理するシステムおよび方法
KR20090003217A (ko) 컴퓨터들의 어레이 간의 자원들의 할당
US20100325389A1 (en) Microprocessor communications system
JP2023533795A (ja) レジスタデータの消去
David et al. Self-timed architecture of a reduced instruction set computer
WO2009128924A2 (en) Method and apparatus for serializing and deserializing
EP1821217B1 (en) Asynchronous computer communication
JP2589828B2 (ja) 複数のプロセッサと複数のメモリとを備えるデータ処理システム用中央処理ユニット
JP2510173B2 (ja) アレ−・プロセツサ
CN117009287A (zh) 一种于弹性队列存储的动态可重构处理器
WO2008024661A1 (en) Processor having multiple instruction sources and execution modes
JPS63318635A (ja) デ−タ処理装置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid