KR20090016642A - 비동기적 컴퓨터 통신 - Google Patents

비동기적 컴퓨터 통신 Download PDF

Info

Publication number
KR20090016642A
KR20090016642A KR1020077009920A KR20077009920A KR20090016642A KR 20090016642 A KR20090016642 A KR 20090016642A KR 1020077009920 A KR1020077009920 A KR 1020077009920A KR 20077009920 A KR20077009920 A KR 20077009920A KR 20090016642 A KR20090016642 A KR 20090016642A
Authority
KR
South Korea
Prior art keywords
computer
computers
line
communication
read
Prior art date
Application number
KR1020077009920A
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
Application filed by 브이엔에스 포트폴리오 엘엘씨 filed Critical 브이엔에스 포트폴리오 엘엘씨
Publication of KR20090016642A publication Critical patent/KR20090016642A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3246Power saving characterised by the action undertaken by software initiated power-off
    • 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
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead

Landscapes

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

Abstract

컴퓨터 어레이(10)는 복수의 컴퓨터들(12)을 구비하고 있다. 컴퓨터들(12)은 서로 비동기로 통신하며, 컴퓨터들(12) 자체도 일반적으로 내부적으로 비동기 방식으로 동작한다. 한 컴퓨터(12)가 또 다른 컴퓨터(12)와 통신하려고 시도하는 경우, 상기 다른 컴퓨터(12)가 트랜잭션을 완료할 준비가 될 때까지, 상기 한 컴퓨터는 수면 상태로 들어가며, 그럼으로써 파워를 절약하고 열 발생을 감소시킨다. 복수의 읽기 라인들(18), 쓰기 라인들(20), 및 데이터 라인들(22)이 컴퓨터들(12)을 상호연결한다. 한 컴퓨터(12)가 읽기 라인(18)을 하이로 설정하고 다른 컴퓨터(12)가 대응하는 쓰기 라인(20)을 하이로 설정하면, 데이터 라인들(22) 사에서 데이터가 전송된다. 읽기 라인(18)과 대응하는 쓰기 라인(20)이 모두 로우로 내려가면, 통신 중인 컴퓨터들(12) 모두는 통신이 완료되었음을 알 수 있다. 컴퓨터들(12)을 다시 시작하도록 승인 라인(72)이 하이로 된다.
Figure P1020077009920
컴퓨터 어레이, 비동기, 트랙잭션, 읽기 라인, 쓰기 라인

Description

비동기적 컴퓨터 통신{ASYNCHRONOUS COMPUTER COMMUNICATION}
본 발명은 컴퓨터와 컴퓨터 프로세서에 관한 것이며 특히 개개의 컴퓨터를 설정하고 컴퓨터를 상호 연결하여 총체적 속도와 특히 구성의 효율성을 최적화하는 방법과 수단에 관한 것이다. 본 발명의 컴퓨터 어레이(array)의 가장 보편적인 사용 예는 한 마이크로 칩 내에 여러 컴퓨터를 조합하는 것이며 이 구성 내에선 동작 속도를 빠르게 할 뿐만 아니라 전력 소비를 줄이고 열 방출을 감소시킬 수 있다는 점에서 매우 효과적인 동작 효율성을 이룰 수 있다.
컴퓨터 기술에선 프로세싱 속도는 매우 필요한 품질이며 좀더 빠른 컴퓨터 및 프로세서의 달성하고자 하는 추구는 계속 되고 있다. 그러나 적어도 현재 알려진 기술에서 마이크로 프로세서의 속도를 증가시키고자 하는 데에 있어 한계가 다가오고 있다고 많은 관계자들이 시인하고 있다. 따라서 복수의 프로세서를 사용하여 컴퓨터 태스크(task)를 이들 프로세서상에서 분배하여 속도를 높이고자 하는 관심도가 높아지고 있다. 그러나 작업량을 공유하는 과정에서 총 효율성의 저하가 불가피하다는 것은 일반적으로 인지되고 있다. 즉 이는 한 사람이 60분 안에 말뚝을 위한 구멍을 팔 수 있다고 하여 60명이 작업할 경우 반드시 1분 안에 완료할 수 있는 것은 아니다라는 격언과 같다. 태스크의 분배에 있어 이와 같은 원리가 적용되 며 프로세서 상의 태스크 분배도 예외는 아니다.
물론 컴퓨터 프로세서 간의 태스크를 좀더 효율적으로 공유하려는 노력이 기울어지고 있다. 태스크가 어떻게 할당되어야 하는지의 문제가 연구되고 그에 따른 분배과정이 향상되었다. 그러나, 아무리 설계가 기발하다 하더라도, 그런 구성에서 "낭비되는" 프로세서 파워가 최소 하나도 없을 것이라는 것은 누구도 기대하지 않는다.
다중 프로세서 컴퓨터 효율성이 없다 하여 컴퓨터의 칩이나 시스템에 있어 컴퓨터 기능상의 장애를 뜻하지 않는다. 효율성의 결여는 이용가능한 프로세서나 프로세서 용량을 과도하게 늘려서 극복될 수 있으나 이는 다른 문제를 야기한다. 즉, 그렇게 많은 프로세서나 그에 따른 구성 요소들은 극도로 증가하는 열을 방출하게 된다. 이미 열 발산은 요즘의 단일 프로세서 칩들에서 큰 문제로 대두하고 있다. 그 칩은 작동을 위해 팬이나 수냉식 쿨러와 같은 냉각 수단이 필요하다. 따라서, 작은 휴대용기기나 소형 주문형 디지털 기기(small application specific digital equipment) 등등에서 좀더 강력한 단일 프로세서를 사용하는 것이 실용적으로 불가능해 졌다. 요새와 같은 형태의 다량의 프로세서를 결합하는 것은 가장 특이한 보조 방법을 사용한다 하더라도 물리적인 한계의 범주를 벗어나는 듯하다.
위에 제시된 방열문제는 이미 해당 업계에 잘 알려진 바다. 이 문제를 다루기 위한 노력이 기울여 지고 있다. 제시된 해결책으로는 효율성을 증대하는 법과 따라서 필요한 프로세서의 크기와 수를 축소시키는 방법과 개별의 프로세서의 전력 소비를 감소시키는 방법이 포함된다. 그러나, 궁극적인 해결책이 제시되지 못하고 있다고 알려져 있다. 이 문제는 소형 휴대형 기기에 이러한 프로세서를 포함하는 추세가 강해 짐에 따라 더욱더 악화 되고 있다. 방열문제는 대형 컴퓨터 구성에서 이미 문제화되 있으나 작은 크기와 그에 따른 방열 표면이 작은 것을 고려할 때 이 문제는 매우 심각하다. 전력 소비 문제는 방열 문제에 수반된다. 낭비된 열은 전력 낭비라는 것은 명백히 드러난다. 이는 언제나 바람직한 것이 못되며, 작은 배터리로 운영되는 장치에서는 허용될 수 없다.
분명히, 방대한 전력 소비나 방대한 방열 없이 컴퓨터의 용량을 늘릴 수 있는 방법을 찾는 것이 매우 중요하다. 그러나 발명자의 지식으론 본 출원 이전에 알려진 만족할 만한 종래 기술이 없다.
따라서, 컴퓨터 처리 속도를 증가시키는 장치와 방법을 제공하는 것이 본 발명의 목적이다.
실질적인 컴퓨팅 파워를 저비용으로 제공하는 장치와 방법을 제공하는 것이 본 발명의 또 다른 목적이다.
다중 컴퓨터 어레이의 동작 속도를 증가시키는 장치와 방법을 제공하는 것도 본 발명의 또 다른 목적이다.
컴퓨터계산으로 집약적인 태스크를 수행하는 장치와 방법을 제공하는 것이 본 발명의 또 다른 목적이다.
많은 전력 소비 없이 방대한 처리 능력을 제공하는 컴퓨터 장치를 제공하는 것이 본 발명의 또 다른 목적이다.
많은 양의 열 발생 없이 방대한 처리 능력을 제공하는 컴퓨터 장치를 제공하는 것이 본 발명의 또 다른 목적이다.
간단히 말하면, 본 발명의 알려진 실시 예는 다중 컴퓨터의 어레이이며 이 어레이는 각각의 독립적인 메모리를 구비하여 독립적인 계산 기능을 갖춘 컴퓨터로 구성된다. 이 같은 태스크를 협동적으로 실행하기 위해, 다수의 컴퓨터는 서로 데이터 및/또는 명령어를 주고 받아야 한다. 동시에 동작하는 컴퓨터가 흔히 대부분의 태스크에 요구되는 계산 능력보다 더 많은 능력을 제공하기에, 몇몇의 컴퓨터 간에 분배되는 태스크에 사용되는 알고리즘과 방법에 따랐을 경우 거의 확정적으로 그 배분이 치우치게 배정되기 마련이므로, 최소한 몇몇 아니 어쩌면 대부분의 컴퓨터는 주어진 시간에 태스크를 실행하는 데 참가하지 않을 수도 있다. 불필요한 전력 낭비와 방열을 막기 위해, 한 컴퓨터가 최소 하나 이웃과 통신하려 하면, 이웃중의 하나나 그 이상이 통신을 완료하기 위해 동작할 때까지는 전력 소비를 거의 하지 않는 수면 상태로 들어가야 한다.
여기서 상술된 바와 같이, 어떤 시계나 그 비슷한 것으로 동기화되지 않는 점에서 컴퓨터 간의 통신은 비동기적이다. 오히려, 자원이 이용 가능할 때에 개시되고 완료된다. 즉, 프로그램이 지시한데로 한 컴퓨터는 데이터를 송신을 개시한다거나 수신할 준비를 위한 상태에 진입되기도 한다. 그 후, 상호 간에 통신 되려는 상기 컴퓨터와 목적 컴퓨터가 통신을 완료하기 위한 준비가 되어있을 때 통신을 한다.
여기서 요구되는 전력 절약과 방열 감소를 달성하기 위하여 통신을 개시하는 컴퓨터는 통신의 완료를 기다리고 있는 동안 전력 소비를 중단하거나 최소한 급격히 감소하는 것이 바람직하다. 여러 방도로 이는 달성될 수 있다. 예를 들어, 컴퓨터는 내장 시계나 외장 시계에 의해 동기화될 수 있다면, 그 기간 동안에 시계가 늦춰지거나 멈추어 질 수 있다. 그러나, 본원에 상술된 발명의 실시예에 따르면, 컴퓨터 자체가 내부적으로 비동기적으로 작동한다. 즉, (여기서 다루어진 예를 제외하고는) 클럭형 신호 구동 컴퓨터(clock type signal driving computer)가 없다. 자연스럽게 그러한 비동기적 프로세서는 다음 동작을 위해 대기하고 있는 동안 (소량의 누설전류를 빼고는) 사실상 거의 전력 소비가 없는 상태에서 멈추게 된다.
본 발명에 따르면, 승인 동작(acknowledge operation)을 통해 컴퓨터 간의 완벽한 비동기적 통신이 가능하다. 즉, 컴퓨터가 클럭 동기화되는 종래 기술에서는, 장치 간의 통신은 클록 신호에 따른 상대적인 시간에 발생하는 것으로 가정된다. 전송 컴퓨터는 일반적으로 데이터가 수신컴퓨터에 의해 받아졌다는 즉각적인 인지 반응을 받지 못한다. 그러나, 본 발명의 실시예에 따르면, 한 컴퓨터가 전송하거나 수신하려는 시도를 함으로서 통신을 시도하고, 또 다른 컴퓨터가 그에 따라 수신하거나 전송함으로서 그 동작을 완료하는 경우, 송신 컴퓨터의 동작이 수신 컴퓨터에 의해 승인되고 이에 따라 양 컴퓨터가 트랜잭션(transaction)이 완료됨을 안다. 승인은 데이터 사이클이나 시간이 승인 절차에서 낭비되지 않도록 제어 라인을 로우(low)로 설정함으로써 실행된다. 그러나, 통신의 완료를 승인하는 동작은, 그러한 장치들이 내부적으로 비동기적이냐 동기적이냐에 관계없이, 사실상 디바이스 간의 어떠한 비동기적 통신에나 적용될 수 있다. 이와 같은 과정은 더 나아가 이러한 장치가 종래 전자 회로, 분자 원리, 현존하는 법칙이나 미래에 개발될 법칙이냐 아니냐를 막론하고 적용 가능하다.
본 발명에 있어 본 발명을 실행하는 방법과 발명의 효과는 본 명세서에서 기술된 바와 다수의 도면들을 통해, 기술분야의 당업자들에게 명백히 드러날 것이다. 기술된 바와 같은 본 발명의 목적들 및 장점들은 본 발명의 가능한 모든 장점들에 대한 완벽한 설명이 아니다. 더 나아가, 응용에 있어, 하나 이상의 의도된 목적들 및/또는 장점들이 존재하지 않거나 필요치 않는 경우에도 본 발명을 실현하는 것이 가능할 것이다.
또한, 해당 기술분야의 당업자들은, 본 발명에 대한 다양한 실시예들이 앞서 설명된 목적들 및 장점들 중 하나 또는 그 이상(전부일 필요는 없음)을 획득할 수 있다는 점을 인식할 것이다. 따라서, 여기에서 기술된 목적들 및/또는 장점들은 본 발명의 필수적인 요소들이 아니며, 결코 기술적인 한계를 뜻하지 않는다.
도 1은 본 발명에 따른 컴퓨터 어레이를 도시한 도면이다.
도 2는 도 1에 도시된 컴퓨터들의 서브세트와 데이터 버스들의 연결을 상세히 도시한 도면이다.
도 3은 도 1 및 도 2에 도시된 컴퓨터들 중 하나의 일반적인 레이아웃(layout)을 도시한 블록도이다.
도 4는 본 발명의 실시예에 따른 명령 워드를 도시한 도면이다.
도 5는 도 3의 슬롯 시퀀서(slot sequencer)(42)를 도시한 도면이다.
도 6은 본 발명의 일 실시예를 도시한 흐름도이다.
본 발명은 도면과 연결지어 명시되어 있으며 동일한 참조번호는 같거나 유사한 구성요소를 지칭한다. 본 발명은 발명의 목적을 달성하기 위한 방법으로 구성되어 있으나 해당 기술의 당업자는 본 발명의 사상이나 범주를 벗어남이 없이 전술한 가르침에 따라 다양한 실시예들이 가능함을 이해할 것이다.
본 명세서에 기재된 바와 같은 본 발명의 실시예들, 변형예들 및 도면에 도시된 것들은, 단지 예시적인 취지로 제공된 것이며 본 발명의 사상을 한정하는 것이 아니다. 본 발명이 여러 응용에 적용될 수 있음을 의도하기 때문에, 특별히 달리 언급되지 않는 한, 본 발명의 개별적인 양상들 및 구성요소들은 생략되거나 수정될 수도 있으며, 또는 현 존재하는 대응하는 유사물로 대치되거나 미래에 발명되거나 대치물로 인정받을 수 있는 아직 알려지지 않는 대용물에 의해 대체될 수 있다. 이 발명은 잠재적인 응용 가능성은 광대하며 본 발명이 그와 같은 응용에 적용될 수 있도록 의도되었기에 발명의 취지와 범주에서 벗어나지 않는 한도에서 변경이 가능하다.
본 발명을 달성하기 위해 알려진 방법은 개별 컴퓨터들의 어레이이다. 본 발명 컴퓨터 어레이는 도 1에서 도시되어 있으며 참조번호 10으로 지칭되어 있다. 컴퓨터 어레이(10)는 여러(도시된 도면에서는 24개) 컴퓨터들(12)(컴퓨터들은 때때로 어레이의 예에서 "코어(cores)", "노드(nodes)"로 언급되기도 함)을 갖는다. 도시된 실시예에서, 모든 컴퓨터들(12)은 하나의 다이(die)(14)에 배치되어 있다. 각각 의 컴퓨터들(12)은 일반적으로 독립적으로 기능하는 컴퓨터들인바, 이는 좀더 상세히 후술될 것이다. 컴퓨터들(12)은 복수의 상호연결 데이터 버스들(16)에 의해 상호 연결되어 있다(데이터 버스들의 개수는 앞으로 자세히 후술될 것이다). 이러한 실시예에서, 상기 데이터 버스들(16)은 양방향 비동기 고속 병렬 데이터 버스들이지만, 본 발명의 사상의 범위 내에서는 그 목적으로 또 다른 상호연결 수단들이 채용될 수도 있다. 어레이(10)에 대한 상기 실시예에서, 컴퓨터들(12) 사이의 데이터 통신은 비동기식일 뿐만 아니라, 개별적인 컴퓨터들(12) 역시 내부적으로는 비동기식 모드에서 동작한다. 이러한 사실은 발명자에 의해 중요한 장점으로 인지된 것이다. 예를 들어, 클럭 신호는 컴퓨터 어레이(10)의 전체에 분포될 필요가 없기 때문에, 파워가 크게 절약될 수 있다. 나아가, 클럭 신호를 공급할 필요가 없다는 것은 컴퓨터 어레이(10)의 크기를 제한하거나 또는 다른 알려진 문제점들을 일으킬 수 있는 많은 타이밍 문제들을 없애준다.
당업자는 도 1의 다이(14) 상에는 명확성을 위해 생략된 부가적인 구성요소들이 있음을 인식할 것이다. 그러한 부가적인 구성요소들은 파워 버스들, 외부 연결 패드(pad)들, 및 마이크로프로세서 칩의 기타 다른 공통요소들을 포함하나 이에 국한된 것이 아니다.
컴퓨터(12e)는 상기 어레이(10)의 주변부에 있지 않은 컴퓨터들(12) 중 하나의 예이다. 즉, 컴퓨터(12e)는 직교적으로 인접한 네 개의 컴퓨터들(12a, 12b, 12c 및 12d)을 갖는다. 컴퓨터 12a부터 12e까지의 이 그룹핑(grouping)은 어레이(10)의 컴퓨터들(12) 간의 통신들에 대한 이후의 보다 상세한 논의와 관련되어 사용될 것 이다. 도 1에서 도시된 바와 같이, 컴퓨터(12e)와 같은 내부 컴퓨터들은, 버스들(16)을 통해 직접적으로 서로 통신할 수 있는 네 개의 다른 컴퓨터들(12)을 가질 것이다. 이하의 설명에서, 어레이(10) 주변부의 컴퓨터들(12)은 오직 세 개, 모퉁이의 컴퓨터들(12)의 경우에는 오직 두 개의 다른 컴퓨터들(12)과 직접적으로 통신하게 될 것이라는 것을 제외하고는, 논의되는 원칙은 상기 모든 컴퓨터들(12)에 적용될 것이다.
도 2는 오직 몇몇 컴퓨터들(12)만을 보여주고 있는 도 1의 부분 및 특히 12a에서부터 12e까지의 컴퓨터들을 포함한 부분에 대한 보다 구체적인 도면이다. 도 2는 역시 데이터 버스들(16)이 각각 읽기 라인(read line)(18), 쓰기 라인(write line) 및 다수의(이 예에서는 18) 데이터 라인(data lines)(22)을 가진다는 것을 보여주고 있다. 상기 데이터 라인(22)은 하나의 18 비트 명령 워드의 모든 비트들을 일반적으로 동시에 병렬적으로 전송할 수 있다. 본 발명의 일 실시예에서, 컴퓨터들(12)의 일부는 인접 컴퓨터들의 미러 이미지들(mirror images)이다. 그러나, 컴퓨터들(12)이 모두 동일한 방향으로 구성되었는지 또는 인접 컴퓨터들의 미러 이미지들로서 구성되는지의 여부가, 본 명세서에서 설명되는 본 발명의 양상은 아니다. 따라서, 본 발명을 보다 잘 설명하기 위하여, 잠재적인 복잡성은 본 명세서에서 다뤄지지 않을 것이다.
본 발명의 한 예에 따라, 컴퓨터(12e)와 같은 컴퓨터(12)는 하나, 두 개, 세 개 또는 네 개 모두의 그 읽기 라인들(18)을, 하나, 두 개, 세 개 또는 네 개 모두의 인접 컴퓨터들(12)로부터 데이터를 수신할 준비가 되도록 설정할 수 있다. 유사 하게, 컴퓨터(12)가 하나, 두 개, 세 개 또는 네 개 모두의 쓰기 라인들(20)을 하이(high)로 설정하는 것도 역시 가능하다. 본 발명자는 동시에 한 컴퓨터(12)의 2개 이상의 쓰기 라인(20)을 설정하는 것이 현재에는 실용성 가치가 없다고 생각하나 그 설정 자체가 발명의 범주에 들어가며 이러한 구성이 실행되는 것은 충분히 가능성이 있다.
인접 컴퓨터들(12a, 12b, 12c 또는 12d) 중 하나가 자신과 컴퓨터(12e) 사이의 쓰기 라인(20)을 하이로 설정할 때, 만약 컴퓨터(12e)가 이미 그에 대응하는 읽기 라인(18)을 하이로 설정했다면, 그때 워드는 연결된 데이터 라인들(22) 상에서 컴퓨터(12a, 12b, 12c 또는 12d)로부터 컴퓨터(12e)로 전송된다. 그러면, 상기 전송 컴퓨터(12)는 쓰기 라인(20)을 해제하고 상기 수신 컴퓨터(이 예에서 12e)는 쓰기 라인(20) 및 읽기 라인(18) 둘 모두를 로우로 할 것이다. 상기 뒤의 동작은 상기 데이터가 수신되었다는 것을 전송 컴퓨터(12)에 알려주게 될 것이다. 상기 설명이 반드시 일련의 사건들을 순서대로 서술하도록 의도된 것은 아님을 밝혀둔다. 실제상황에서는, 이 예에서의 상기 수신 컴퓨터는 전송 컴퓨터(12)가 그것의 쓰기 라인(20)을 해제하기 (하이로 올리는 것을 멈추기) 전에 쓰기 라인(20)을 약간 로우로 설정하려고 할 수도 있다. 이러한 경우, 상기 전송 컴퓨터(12)가 쓰기 라인(20)을 해제하자마자 상기 쓰기 라인(20)이 수신 컴퓨터(12e)에 의해 로우로 될 것이다.
본 실시예에서는, 오직 프로그래밍 에러일 때만 버스들(16) 중 하나의 양 끝단에 있는 컴퓨터(12) 둘이 이 그 사이의 읽기 라인(18)을 하이로 설정하게끔 할 것이다. 마찬가지로, 동시에 쓰기 라인(18) 사이를 하이로 설정하려고 하는 것도 버스들(16) 중 하나의 양 끝단에 있는 컴퓨터들(12) 둘 다에 대한 에러일 것이다. 유사하게, 위에서 논의된 바와 같이, 단일 컴퓨터(12)가 그의 네 쓰기 라인들(20) 중 하나 이상을 하이로 설정하는 것이 현재로서는 바람직하다고 여겨지지는 않는다. 그러나, 여러 가지 조합들로 다수의 읽기 라인들(18)을 하이로 설정하는 경우가 바람직하다고 현재 예상되는데, 이 경우는 컴퓨터(12)가 읽기 선택된 컴퓨터들(12) 중 하나가 쓰기 라인(20)을 하이로 설정하기를 기다리며 대기 상태에 있는 경우이다.
상기 예에서, 컴퓨터(12e)는 인접 컴퓨터(컴퓨터들 12a, 12b, 12c 또는 12d의 하나 이상으로부터 선택된)가 그것의 쓰기 라인(20)을 하이로 설정하기 전에, 그것의 읽기 라인들(18)의 하나 이상을 하이로 설정하는 것으로서 설명되었다. 그러나, 이 프로세스는 물론 반대 순서로도 일어날 수 있다. 예를 들어, 만약 컴퓨터(12e)가 컴퓨터(12a)에 쓰기를 시도하고 있는 중이었다면, 그때 컴퓨터(12e)는 컴퓨터(12e) 및 컴퓨터(12a) 사이의 쓰기 라인(20)을 하이로 설정할 것이다. 만약 컴퓨터(12e) 및 컴퓨터(12a) 사이에 읽기 라인(18)이 컴퓨터(12a)에 의해서 이미 하이로 설정되어있지 않았다면, 그때 컴퓨터(12e)는 컴퓨터(12a)가 그 읽기 라인(20)을 하이로 설정할 때까지 단순히 기다리게 될 것이다. 그러면 상기 설명한 바와 같이, 쓰기 라인(18) 및 읽기 라인(20) 두 개의 대응하는 라인 모두가 하이일 때, 데이터 라인들(22)에서 전송되기를 기다리는 상기 데이터는 전송된다. 그 후에, 수신 컴퓨터(12)(이 예들에서 컴퓨터 12a)는 전송 컴퓨터(12e)가 그것을 해제 하자마자 상기 두 컴퓨터들(이 예에서 12e 및 12a) 사이의 읽기 라인(18) 및 쓰기 라인(20) 둘 모두를 로우로 설정한다.
컴퓨터(12e)와 같은 컴퓨터(12)가 쓰기를 예상(anticipation)하면서 그것의 쓰기 라인들(20) 중 하나를 하이로 설정할 때마다, 만약 상기 데이터가 즉시 전송되는 경우에 있어서, 만약 상기 데이터를 전송받게 되는 컴퓨터(12)가 이미 그것의 읽기 라인(18)을 하이로 설정하지 않았다면, 상기 설명한 바와 같이 상기 데이터가 상기 적절한 인접 컴퓨터(12)로부터 "요청"될 때까지, 본질적으로는 전력을 사용하지 않고, 단지 기다릴 것이다. 유사하게, 컴퓨터(12)가 읽기를 예상하면서 그것의 읽기 라인들(18) 중 하나 이상을 하이로 설정할 때마다, 선택된 컴퓨터(12)로 연결된 쓰기 라인(20)이 상기 두 컴퓨터들(12) 간에 명령을 전송하도록 하이로 올라갈 때까지 본질적인 전력의 사용 없이, 단지 기다릴 것이다.
컴퓨터들(12)이 상기 설명한 바대로 기능 하도록 하는 여러 가능한 수단들 및/또는 방법들이 있을 수 있다. 그러나, 본 발명의 예에서는, 컴퓨터들(12)은 일반적으로 내부적으로 비동기적으로 실행하기 때문에 단순히 그렇게 동작하는 것이다(상기 설명된 비동기식 방법으로 그들 사이에 데이터를 전송하는 것 외에도). 즉, 명령들은 순차적으로 완료된다. 쓰기 또는 읽기 명령이 있을 때, 그 명령이 완료될 때까지는(또는, 아마도 대안적으로는, "리셋(reset)" 등등에 의해 그것이 중단(aborted)될 때까지) 더 이상의 활동이 있을 수 없다. 종래 기술에는 정기적인 클럭 펄스가 없다. 오히려 펄스는, 실행되고 있는 명령이 읽기 또는 쓰기 유형의 명령(주어진 그 읽기 또는 쓰기 유형의 명령은 다른 엔티티에 의해 완료될 것을 요 구한다)이 아닐 때만 또는 그 밖에 상기 읽기 또는 쓰기 유형의 동작이 사실상 완료되었을 때에만 다음 명령을 수행하기 위해서 발생 된다.
도 3은 도 1 및 도 2의 프로세서들(12)의 하나의 예에 대한 일반적인 레이아웃을 묘사하는 블록도이다. 도 3에서 보여지는 바와 같이, 상기 프로세서들(12)의 각각은 일반적으로 자체적인 램(24) 및 롬(26)을 가지는 자체 완비(self contained) 프로세서이다. 앞서 언급한 바와 같이, 컴퓨터들(12)은 때때로 현 실시예에서 단일 칩 상에서 결합 되는바, 개별 "코어"로 언급되기도 한다.
컴퓨터(12)의 다른 기본 구성 요소들로는 리턴 스택(return stack)(28), 명령 영역(instruction area)(30), 산술 논리 연산 장치(Arithmetic Logic Unit, "ALU")(32), 데이터 스택(34) 및 명령들을 디코딩하기 위한 디코드 논리 영역(decode logic section)(36)이 있다. 당업자는 일반적으로 이 예에서의 컴퓨터들(12)처럼 스택 기반 컴퓨터들의 동작에 익숙할 것이다. 컴퓨터들(12)은 데이터 스택(34) 및 별도의 리턴 스택(28)을 가지는 듀얼(dual) 스택 컴퓨터들이다.
본 발명의 실시예에서, 컴퓨터(12)는 인접 컴퓨터들(12)과 통신하기 위한 네 개의 통신 포트들(38)을 가진다. 이 통신 포트들(38)은 오프(off) 상태, 수신 상태(신호들을 컴퓨터(12)로 받아들이기 위한 것) 및 발신 상태(신호들을 컴퓨터 밖으로 내보내기 위한 것)를 가지는 3-상태 드라이버(drivers)이다. 물론, 만약 특정 컴퓨터(12)가 컴퓨터(12e)의 예와 같이 어레이(도 1)의 내부에 있는 것이 아니라면, 적어도 여기서 기술된 목적을 위해서는, 상기 통신 포트들의 하나 이상이 그 특정 컴퓨터에 사용되지 않을 것이다. 명령 영역(30)은 본 실시 예에서, 레지스 터(40a), B 레지스터(40b) 및 P 레지스터(40c)를 포함하는 다수의 레지스터들(40)을 포함한다. 이 예에서, B 레지스터(40b) 및 P 레지스터(40c)가 9비트 레지스터인 반면, A 레지스터(40a)는 풀(full) 18비트 레지스터이다.
본 발명은 본 예에 한정되지 않으나 현재의 프로세서는 포스(Forth) 언어 명령어들을 실행하도록 구성되어 있다. 포스 컴퓨터 언어에 친숙한 사람이라면, 포스 "워드들"로서 알려져 있는 복잡한 포스 명령들이 프로세서 내에 설계된 네이티브(native) 프로세서 명령들로부터 비롯된다는 것을 인식할 것이다. 포스 워드들의 집합은 "딕셔너리(dictionary)"로서 알려져 있다. 다른 언어들에 있어서, 이것은 "라이브러리(library)"로서 알려져 있다. 아래에서 보다 상세히 설명되는 바와 같이, 프로세서(12)는 RAM(26), ROM(26)으로부터, 또는 데이터 버스들(16)(도 2) 중 하나로부터 직접적으로, 한번에 18개의 비트들의 읽기를 실행한다. 하지만, 포스에서, (오퍼랜드가 없는 명령들(operand-less instructions)로서 알려져있는) 대부분의 명령들은 자신들의 오퍼랜드들을 스택들(28 및 34)로부터 직접 얻기 때문에, 이들은 일반적으로 단지 5비트의 길이를 가지며, 이에 따라 그룹 내의 마지막 명령이 단지 3비트 만을 요구하는 제한된 명령들의 세트로부터 선택된다는 조건하에서, 단일의 18 비트 명령 워드 내에 최대 4개의 명령들이 포함될 수 있다. 또한, 도 3에서 도시된 블록도는 슬롯 시퀀서(42)이다. 이 실시예에서는, 데이터 스택(34)의 가장 꼭대기의 두 레지스터는 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-op)(no operation) 명령어가 컴퓨터(12)의 명령 셋에 포함된다. 유의할 점으로, 본 발명의 특정 실시예에 따른, 대체 슬롯들(특히, 슬롯 1(54b) 및 3(54c)) 내의 비트들(50)의 극성(polarity)(액티브 로우(active low)와 비교하여 액티브 하이(active high))은 역으로 바뀔 수 있다. 그러나, 이것은 본 발명의 필수적인 면은 아니며, 따라서, 본 발명의 보다 나은 설명을 위해서 잠재적 문제와 그 복잡성은 아래의 설명에서 피할 것이다.
도 5는 도 3의 슬롯 시퀀서(42)의 개략적인 표현이다. 도 5에서 보여지는 바와 같이, 슬롯 시퀀서(42)는 다수의 인버터들(56) 및 하나의 NAND 게이트(58)를 가짐으로서, 신호가 14개의 인버터(56) 및 NAND 게이트(58)를 통과함으로써 홀수번 인버터 될 수 있게 한다. OR 게이트(60)로의 두 개의 입력 중 어느 하나가 높이 올라갈 때 슬롯 시퀀서(42)에서 신호가 시작된다. 제 1 OR 게이트 입력(62)은 실행되고 있는 명령(52)의 비트 i4(66)(도 4)로부터 들어온다. 만약 비트 i4가 높으면 그때 그 특정 명령(52)은 ALU 명령이고, 상기 i4 비트(66)은 '1'이다. i4 비트가 '1' 일 때, 그때 제 1 OR 게이트 입력(62)은 높고, 그리고 슬롯 시퀀서(42)는 다음 명령(52)을 실행하기 위해 펄스를 발생시키도록 트리거된다.
하이로 올라가는 제 1 OR 게이트 입력(62)에 의하거나 하이로 올라가는 제 2 OR 게이트 입력에 의해(이후에 논의될 내용과 같이), 슬롯 시퀀서(42)가 트리거되면, 신호는 각각의 경우에 슬롯 시퀀서 출력(68)에서 출력을 발생하면서, 슬롯 시퀀서(42)를 두 번 돌게 될 것이다. 상기 신호가 통과하는 첫 번째에는, 슬롯 시퀀서 출력(68)은 로우일 것이고, 두 번째에는 슬롯 시퀀서 출력(68)에서의 출력은 하이로 높아질 것이다. 슬롯 시퀀서 출력(68)으로부터의 상대적으로 넓은 출력은 펄스 발생기(70)(블록도로 도시됨)로 공급되고 이 발생기는 출력 값으로서 궁극적으로 좁은 타이밍 펄스(timing pulse)를 공급하게 된다. 당업자는 상기 좁은 타이밍 펄스가 컴퓨터(12)의 동작을 정확하게 개시하기에 바람직하다는 것을 인식할 것이다.
실행되고 있는 특정 명령(52)이 읽기 또는 쓰기 명령일 때, 또는 실행되고 있는 명령(52)이 연속해서 다음 명령(52)의 즉각적인 실행을 트리거하는 것이 바람직하지않는 어떤 다른 명령일 때, i4 비트(66)는 '0'(로우)이고 제 1 OR 게이트 입력(62)은 그 결과 역시 로우이다. 해당 기술 당업자는 컴퓨터(12)와 같은 장치에서 이벤트들의 시간이 일반적으로 매우 중요하다는 것과 이것도 예외가 아니라는 것을 인식할 것이다. 슬롯 시퀀서(42)를 시험해보면, 당업자는 상기 링(ring)의 두 번째 "바퀴 신호(lap)"를 개시하기 위해서, 상기 신호가 NAND 게이트(58)를 지나서 계산된 후가 될 때까지, OR 게이트(60)로부터의 출력이 하이로 유지되어야 한다는 것을 인식하게 될 것이다. 그 결과, OR 게이트(60)로부터의 출력은, 상기 회로의 원하지 않은 계속된 진동(oscillation)을 막기 위해서 상기 두 번째 바퀴 신호 동안 낮아지게 될 것이다.
상기 설명으로 비추어 볼 때 이해될 수 있는 바와 같이, i4 비트(66)가 '0'이면, 슬롯 시퀀서(42)는 -이후에 논의될 제 2 OR 게이트 입력(66)이 높지 않음을 가정해 보면- 트리거되지 않을 것이다.
상기 논의된 바대로, 각 명령(52)의 i4 비트(66)는 그 명령이 읽기 또는 쓰기 유형의 명령인지 여부에 따라 설정된다. 명령(52)에서 남아있는 비트들(50)은 그 명령을 위한 상기 특정 op코드(opcode)의 나머지(remainder)를 제공한다. 읽기 또는 쓰기 유형의 명령의 경우에, 상기 비트들의 하나 이상은 그 특정 컴퓨터(12)에서, 데이터가 어디서 읽혀지는지 또는 어디로 쓰여지는지를 지시하는데 사용될 수 있다. 본 발명의 예에서, 쓰여지는 데이터는 항상 T 레지스터(44)(데이터 스택(34)의 맨 위)로부터 오나, T 레지스터(44) 또는 실행될 수 있는 명령 영역(30)으로 선택적으로 읽혀질 수 있다. 본 발명에 대한 이 특정 실시예에서, 그것은 데이터나 명령들이 본 명세서에서 설명된 방식으로 통신할 수 있고 그리고 비록 이것이 본 발명의 필수적인 것은 아니지만, 그 결과 명령들이 데이터 버스(16)로부터 직접 실행될 수 있기 때문이다. 더욱이, 비트들(50)의 포트가 존재한다면, 하나 이상은 포트들(38) 중 어느 것이 읽기 또는 쓰기를 위해 설정될 것인지를 지시하는데 사용될 것이다. 이 이후의 동작은 A 레지스터(40a), B 레지스터 등등과 같은 레지스터(40)를 지정하기 위해서 하나 이상의 비트들을 사용함으로써 선택적으로 수행 된다. 그러한 예에서, 상기 지정된 레지스터(40)는, 상기 포트들(38)(그리고 또한, 상기 컴퓨터(12)가 통신하려고 시도하는, 메모리, 외부 통신 포트, 등등과 같은 기타 다른 가능한 개체들) 각각에 대응되는 비트를 가지는 데이터로 프리로딩(preloading) 될 것이다. 예를 들면, 상기 특정 레지스터(40)에서 네 개 비트들 각각은, 상위 포트(38a), 오른쪽 포트(38b), 왼쪽 포트(38c) 또는 하위 포트(38d) 각각에 대응할 수 있다. 그러한 경우에, 그러한 비트 위치들 중 '1'이 있는 곳에서, 통신은 대응되는 포트(38)를 통해 진행되도록 설정될 것이다. 여기서 앞서 논의한 바대로, 본 발명의 실시예에서, 읽기 op코드가 단일 명령에서 통신을 위해 하나 이상의 포트(38)를 설정하는 것이 기대되는 반면, 비록 가능하긴 하지만, 쓰기 op코드는 단일 명령 통신을 위해 하나 이상의 포트(38)를 설정할 것으로 예상되지 않는다.
바로 아래의 예는 어떤 인접한 컴퓨터(12) 간의 통신에도 적용 가능하지만, 컴퓨터(12e)가 컴퓨터(12c)로 쓰기를 시도하게 되는 통신을 가정한다. 쓰기 명령이 쓰고 있는 컴퓨터(12e)에서 실행되면, 선택된 쓰기 라인(20)(이 예에서, 컴퓨터(12e)와 컴퓨터(12c) 간의 쓰기 라인(20))은 하이로 설정되며, 만약 그에 대응하는 읽기 라인(18)이 이미 하이라면, 그때는 데이터가 상기 선택된 통신 포트(38)를 통해서 상기 선택된 위치로부터 즉시 전송된다. 또한, 만약 상기 대응하는 읽기 라인(18)이 이미 하이가 아니라면, 그때 컴퓨터(12e)는 대응하는 읽기 라인(18)이 하이로 올라갈 때까지 단순히 동작을 멈출 것이다. 읽기 또는 쓰기 유형의 명령이 있을 때, 컴퓨터(12a)를 멈추기 위한 메커니즘(또는, 더 정확하게는 더 이상의 동작 을 하지 않도록 하는 것)이 여기서 앞서 논의되어 왔다. 간단히 말하면, 명령(52)의 op코드는 비트 포지션(position) 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) 모두를 로우로 할 것이다. 실제 경우에, 수신 컴퓨터(12c)는 전송 컴퓨터(12c)가 읽기 라인(18)을 해제하기 전에 라인들(18 및 20)을 로우로 낮추려고 할 수도 있다. 그러나, 라인들(18 및 20)은 이미 하이로 높여져 단지 약하게(weakly) 유지(래치)되기 때문에, 그 라인(18 및 20)이 그것을 하이로 높게 유지하고 있는 컴퓨터(12)에 의해 해제될 때까지는 라인(18 또는 20)을 로우로 낮추려는 어떠한 시도도 실제로 성공하지 못할 것이다.
데이터 버스(16)의 두 라인들(18 및 20)이 로우로 낮춰지면, 이것은 "승인" 조건이다. "승인" 조건에 따라 각각의 컴퓨터들(12e 및 12c)은 자신들만의 내부 승인 라인(72)를 하이로 높게 설정할 것이다. 도 5에서 보여지는 바와 같이, 승인 라인(72)은 제 2 OR게이트 입력(64)을 공급한다. OR 게이트(60) 입력들(62 또는 64) 둘 중에 하나로의 입력이 OR 게이트(60)의 출력을 하이로 높게 올릴 것이므로, 이것은 여기서 앞서 설명된 방식으로 슬롯 시퀀서(42)의 동작을 개시하여, 명령 워드(48)의 다음 슬롯(54)에서 명령(52)이 실행될 것이다. 승인 라인(72)은 가짜(spurious) 주소들이 주소 버스로 들어가는 것을 막기 위해서 다음 명령(52)이 디코딩될 때까지 하이로 유지된다.
어떤 경우에 있어서, 실행되고 있는 명령(52)이 상기 명령 워드(48)의 슬롯 3의 위치에 있을 때면, 컴퓨터(12)는, 비트i4(66)이 '0'이 아니면, 다음 대기하고 있는 18 비트 명령 워드(48)를 페치(fetch) 할 것이다. 실제의 경우에, 본 발명의 메커니즘은 "프리페칭(prefetching)" 명령에 대한 방법 및 장치를 포함하여 상기 페치가 명령 워드(48)에 있는 모든 명령들(52)의 실행 종료 전에 시작될 수 있도록 한다. 그러나, 이는 또한 비동기 데이터 통신들을 위한 본 발명 방법 및 장치에 대한 필요한 양상이 아니다.
컴퓨터(12e)가 컴퓨터(12c)에 쓰는(write) 상기 예는 상세하게 설명되었다. 상기 설명의 견지에서 알 수 있는 바와 같이, 컴퓨터(12e)가 컴퓨터(12c)에 먼저 쓰기를 시도하는지 또는 컴퓨터(12c)가 먼저 컴퓨터(12e)로부터 읽기(read)를 시도하는지에 관계없이, 동작들은 사실상 동일하다. 동작은 컴퓨터(12 및 12c) 모두가 준비될 때까지 완료될 수 없으며, 그리고 어느 컴퓨터(12e 또는 12c)라도 먼저 준비되면, 다른 컴퓨터(12e 또는 12c)가 전송을 완료할 때까지, 제 1 컴퓨터(12)는 단순히 "수면 상태로 진입한다". 상술한 과정을 볼 수 있는 또 하나의 방법은, 쓰기 컴퓨터(12e)와 수신 컴퓨터(12c)가 쓰기 및 읽기 명령들을 각각 실행하는 때에, 실제로 이들 모두가 수면 상태로 진입하지만, 마지막으로 트랜잭션에 진입하는 것은 읽기 라인(18) 및 쓰기 라인(20) 모두가 하이일 때에, 거의 순간적으로 재기상(reawaken)하고, 반면에 트랜잭션을 개시하는 제 1 컴퓨터는 제 2 컴퓨터(12)가 과정을 완료할 준비가 될 때까지, 거의 무한정으로 수면 상태를 유지할 수 있다.
발명자는 디바이스들 간의 효율적인 비동기 통신들을 가능함에 있어 중요한 특징이 일종의 승인 신호 또는 승인 조건이라 생각한다. 종래 기술에선 대부분의 통신은 클록화되어 있고, 송신 장치에서 수신 장치가 데이터를 받았는지 알 수 있는 직접적인 방법이 없다. 검사합(checksum)과 같은 방법이 데이터가 제대로 받아졌는지를 확인하기 위해 사용될 수 있으나, 송신 장치는 동작이 완료되었는지 알 길이 없다. 본원에서 설명되는 바와 같은 이러한 방법은 디바이스들간의 비동기 통신들을 허용하거나 적어도 실행되게 하는 필요한 승인 조건을 제공한다. 더욱이, 승인 신호 또는 승인 조건이 발생할 때까지, 하나 이상의 디바이스들로 하여금 "수면 상태로 들어갈 수 있도록" 한다. 당연하게, 승인 조건은 (상호연결 데이터 버스(16)를 통해 또는 개별 신호 라인을 통해) 컴퓨터들(12) 간에서 송신되는 개별 신호에 의해 컴퓨터들(12) 간에 통신될 수 있으며, 이러한 승인 신호는 본 발명의 이러한 양상의 범주 내에 들 것이다. 그러나, 본원에서 설명되는 본 발명의 실시예에 따르면, 승인 방법이 통신에 실질적으로 영향을 미치기 위해 임의의 신호, 클록 사이클, 타이밍 펄스, 또는 설명되는 것 이외의 모든 이러한 자원을 요구하지 않는다는 점에서, 관련된 훨씬 많은 경제성이 있음을 이해할 수 있다.
발명을 실행하기 위한 수단과 방법에 관한 상기 설명의 관점에서, 다음에 나 오는 본 발명에 따른 실시예의 간결한 설명이 이해될 수 있다. 도 6은 참조번호 74로 표기된 흐름도이며, 방법 실시예를 도시하고 있다. "통신 개시" 동작(76)에서는 하나의 컴퓨터(12)가 명령어(53)를 실행하여 다른 컴퓨터(12)와 통신하게 한다. 이는 쓰기 내지 읽기를 하려는 시도에서 비롯된다. 흔히 "통신 개시" 동작(76)과 동시에 수반되는 "제 1 라인 하이로 설정" 동작(78)에서는 (제 1 컴퓨터(12)가 쓰기를 시도하려는지 읽기를 시도하려는지에 따라) 쓰기 라인(20) 이나 읽기 라인(18)이 하이로 설정된다. "제 1 라인 하이로 설정" 동작(78)의 일부분으로서, 앞서 설명된 동작의 실시예를 따르는 컴퓨터(12)는, 본 명세서에서 앞서 상세히 설명된 바와 같이, 동작을 멈춘다. "제 2 라인 하이로 설정" 동작(80)에서는 제 2 라인(읽기 라인(18) 내지 쓰기 라인(20))이 두 번째 컴퓨터(12)에 의해 하이로 설정된다. "데이터 통신" 동작(82)에서, 데이터(또는 명령어 등등)는 데이터 라인(22)을 통해 전송되고 수신된다. "두 라인을 모두 로우로 설정" 동작(84)에서, 읽기 라인(18)과 쓰기 라인(20)은 모두 해제되고 로우로 내려진다. "계속 진행" 동작(86)에서, 승인 조건에 의해 컴퓨터(12)는 동작을 재개한다. 본 발명의 실시예에 경우, 승인 조건에 의해 승인 신호(86)(도 5)가 발생 되는데 이는 승인 라인(72)을 "하이"로 설정하는 것에 불과하다.
발명의 가치와 범주를 변화시키지 않는 범위에서 다양한 변경이 가능하다. 예를 들어, 이 실시예에서는 본 발명이 읽기 쓰기 명령어에로만 설명되었으나 실제로는, 다수의 읽기 형 명령어 및/또는 쓰기형 명령어가 존재할 수 있다. 한 예로, 발명의 실시예에서, 레지스터 값을 증분 시키는 쓰기 명령어가 있는가 하면 증분 시키지 않는 쓰기 명령어가 존재한다. 유사하게, 전술된 바와 같이, 통신 포트(38)와 같은 것들을 선택하기 위해 어떤 레지스터가 사용되는지에 따라 쓰기 명령어는 다양하게 달리질 수 있다. 또한, 단지 컴퓨터(12) 설계자가 대안적인 읽기 형태들 중 유용한 선택으로 판단하는 어떤 변형에 따라, 여러 가지 다른 읽기 명령어들이 있을 수 있다.
유사하게, 본 발명은 단일 다이(14) 상의 어레이(10) 내에 있는 컴퓨터(12) 간의 통신에 관해 기술되었지만, 같은 원리와 방법을 사용하거나 변경하여 컴퓨터(12)와 그 전용 메모리 간의 통신이라던지 어레이 내의 컴퓨터(12)와 외부기기와의 (입출력 포트 등등을 통한) 통신과 같은 다른 장치 간 통신을 가능하게 할 수 있다. 예상되는 것으로서, 어떤 응용은 어레이들의 어레이들을 요구할 수 있다(여기서 설명된 장치 간 통신 방법은 잠재적으로 어레이들의 어레이들 사이의 통신에 적용될 수 있음).
본 발명 컴퓨터 어레이(10)와 컴퓨터(12)의 특정 예가 본 명세서에서 설명되었지만, 구상되지 않은 많은 응용들이 있을 것으로 생각된다. 본 발명의 방법과 장치가 수많은 응용에 적용될 수 있다는 것은 본 발명의 큰 장점이다.
앞서 설명된 모든 것들은 본 발명의 이용가능한 실시예들의 단지 일부 예들이다. 본 발명의 기술분야에서 숙련된 기술을 가지는 자들은 본 발명의 사상 및 범위를 벗어나지 않는 한도 내에서 수많은 다른 수정 및 변경이 이루어질 수 있다는 것을 쉽게 알 수 있다. 따라서, 본 명세서에서 개시된 내용은 본 발명을 한정하려는 것으로 의도된 것이 아니며, 그리고 첨부되는 특허청구범위는 본 발명의 전체 범위를 포함하는 것으로 해석되어야 한다.
본 발명 컴퓨터 어레이(10), 컴퓨터(12), 및 관련 방법(74)은 다양한 컴퓨터 응용에서 광범위하게 이용되도록 의도되었다. 방대한 컴퓨터 계산력이 필요하며 파워 소비와 열 방출의 고려가 중요한 분야에서 특히 유용할 것으로 예상된다.
본 명세서에서 설명된 바와 같이, 본 발명의 이용 가능성은 여러 형태의 장치 간 컴퓨터 통신이 본 발명에 의해 향상될 수 있다는 것이다. 여기서 예상되는 것은, 본 발명(몇몇 컴퓨터들이 사용되지 않을 때 "수면 상태로 들어갈 수 있음")은 다양한 응용과 발명의 구현예에서 전력 소비를 감소시키고 열 발생을 감소시키고 컴퓨터와 컴퓨터 장치 간의 통신 효율성을 높이는데 사용될 것이다.
본 발명 컴퓨터 어레이(10), 컴퓨터(12), 및 방법(74)은 용이하게 생산될 수 있고 기존 태스크나, 입출력 장치 등등과 통합이 될 수 있기 때문에, 또한 본 명세서에서 설명된 장점들이 제공되기 때문에, 산업계에서 쉽게 수용될 것으로 예측된다. 이러한 이유 및 다른 이유로, 본 발명의 유용성과 산업상 이용가능성은 그 범위에 있어 중요하고, 지속 기간에 있어 오래 지속 될 것으로 기대된다.

Claims (25)

  1. 컴퓨터 어레이에 있어서,
    복수의 컴퓨터들과; 그리고
    상기 컴퓨터들을 연결하는 복수의 데이터 경로들을 포함하여 구성되며; 그리고 여기서
    상기 컴퓨터들 중 제 1 컴퓨터가 상기 컴퓨터들 중 제 2 컴퓨터와 통신을 시도 할 때, 상기 컴퓨터들 중 상기 제 2 컴퓨터가 상기 통신을 완료할 준비가 되어있을 때까지 상기 컴퓨터들 중 상기 제 1 컴퓨터가 동작을 중지하는 것을 특징으로 하는 컴퓨터 어레이.
  2. 제 1 항에 있어서,
    상기 컴퓨터들 중 상기 제 1 컴퓨터가 쓰기를 시도하고; 그리고
    상기 컴퓨터들 중 상기 제 2 컴퓨터가 상기 컴퓨터들 중 상기 제 2 컴퓨터로부터 읽기를 함으로써 상기 통신을 완료하는 것을 특징으로 하는 컴퓨터 어레이.
  3. 제 1 항에 있어서,
    상기 컴퓨터들 중 상기 제 1 컴퓨터가 읽기를 시도하고; 그리고
    상기 컴퓨터들 중 상기 제 2 컴퓨터가 상기 컴퓨터들 중 상기 제 1 컴퓨터에 쓰기를 함으로서 상기 통신을 완료하는 것을 특징으로 하는 컴퓨터 어레이.
  4. 제 3 항에 있어서,
    상기 컴퓨터들 중 상기 제 1 컴퓨터가 하나 이상의 다른 컴퓨터로부터 읽기를 하도록 구성되는 것을 특징으로 하는 컴퓨터 어레이.
  5. 제 1 항에 있어서,
    상기 컴퓨터들 중 상기 제 1 컴퓨터가 상기 컴퓨터들 중 상기 제 2 컴퓨터와 통신을 시도할 때, 상기 제 1 컴퓨터가 쓰기 라인을 하이로 설정하고; 그리고
    상기 컴퓨터들 중 상기 제 2 컴퓨터가 상기 통신을 완료할 준비가 되어 있을 때, 상기 제 2 컴퓨터가 읽기 라인을 하이로 설정하는 것을 특징으로 하는 컴퓨터 어레이.
  6. 제 5 항에 있어서,
    상기 읽기 라인이 하이이고, 또한 대응하는 상기 쓰기 라인이 하이일 때, 상기 컴퓨터들 중 상기 제 1 컴퓨터와 상기 컴퓨터들 중 상기 제 2 컴퓨터 사이에서 데이터가 전송되는 것을 특징으로 하는 컴퓨터 어레이.
  7. 제 6 항에 있어서,
    상기 컴퓨터들 중 상기 제 1 컴퓨터와 상기 컴퓨터들 중 상기 제 2 컴퓨터 사이에서 데이터가 전송될 때, 상기 읽기 라인 및 상기 쓰기 라인 모두 로우가 되 는 것을 특징으로 하는 컴퓨터 어레이.
  8. 제 7 항에 있어서,
    상기 읽기 라인 및 상기 쓰기 라인 모두 로우가 될 때, 상기 컴퓨터들 중 상기 제 1 컴퓨터 및 상기 컴퓨터들 중 상기 제 2 컴퓨터 모두 동작을 재개하는 것을 특징으로 하는 컴퓨터 어레이.
  9. 제 1 컴퓨터 장치와 제 2 컴퓨터 장치 사이의 통신 방법에 있어서,
    상기 제 1 컴퓨터 장치로 하여금 상기 제 2 컴퓨터 장치와의 통신을 위한 준비가 되어 있음을 표시하도록 하는 단계와;
    상기 제 2 컴퓨터 장치로 하여금 상기 통신을 완료하기 위한 준비가 되어 있음를 표시하도록 하는 단계와;
    상기 제 1 컴퓨터 장치와 상기 제 2 컴퓨터 장치 사이에서 데이터를 전송하는 단계와; 그리고
    상기 제 2 컴퓨터 장치로 하여금 상기 통신이 완료되었음을 상기 제 1 컴퓨터 장치에 승인(acknowledge)하도록 하는 것을 포함하는 것을 특징으로 하는 통신 방법.
  10. 제 9 항에 있어서,
    상기 제 1 컴퓨터 장치가 상기 제 2 컴퓨터 장치에 쓰기를 위한 준비가 되어 있음을 표시하는 것을 특징으로 하는 통신 방법.
  11. 제 10 항에 있어서,
    상기 장치들 간 쓰기 라인을 하이로 설정함으로써, 상기 제 1 컴퓨터 장치가 상기 제 2 컴퓨터 장치에 쓰기를 위한 준비가 되어 있음을 표시하는 것을 특징으로 하는 통신 방법.
  12. 제 9 항에 있어서,
    상기 제 1 컴퓨터 장치가 상기 제 2 컴퓨터 장치로부터 읽기를 위한 준비가 되어 있음을 표시하는 것을 특징으로 하는 통신 방법.
  13. 제 12 항에 있어서,
    상기 장치들 간 읽기 라인을 하이로 설정함으로써, 상기 제 1 컴퓨터 장치가 상기 제 2 컴퓨터 장치로부터 읽기 위한 준비가 되어 있음을 표시하는 것을 특징으로 하는 통신 방법.
  14. 제 9 항에 있어서,
    읽기 라인 또는 쓰기 라인 중 하나를 하이로 설정함으로써, 상기 제 1 컴퓨터 장치가 상기 제 2 컴퓨터 장치와의 통신을 위한 준비가 되어 있음을 표시하고;
    상기 읽기 라인 또는 상기 쓰기 라인 중 나머지 하나를 하이로 설정함으로 써, 상기 제 2 컴퓨터 장치가 상기 제 1 컴퓨터 장치와의 통신을 위한 준비가 되어 있음을 표시하고; 그리고
    상기 읽기 라인 및 상기 쓰기 라인 모두가 하이일 때, 상기 제 1 컴퓨터 장치와 상기 제 2 컴퓨터 장치 사이에서 데이터가 전송되는 것을 특징으로 하는 통신 방법.
  15. 제 9 항에 있어서,
    상기 제 2 컴퓨터 장치가, 상기 읽기 라인 및 상기 쓰기 라인 모두를 로우로 만듦으로써, 상기 통신이 완료되었음을 승인하는 것을 특징으로 하는 통신 방법.
  16. 제 15 항에 있어서,
    상기 읽기 라인 및 상기 쓰기 라인 모두를 로우로 만들 수 있도록, 상기 제 1 컴퓨터 장치가 읽기 라인 또는 쓰기 라인 중 하나를 해제하고; 그리고
    상기 제 2 컴퓨터 장치가 상기 읽기 라인 및 상기 쓰기 라인 중 나머지 하나를 해제하는 것을 특징으로 하는 통신 방법.
  17. 컴퓨터들 사이의 통신 방법에 있어서,
    (a) 제 1 컴퓨터로 하여금 통신을 위한 준비가 되어있음을 표시하도록 하는 단계와;
    (b) 상기 제 1 컴퓨터로 하여금 그 후 동작을 중지하도록 하는 단계와;
    (c) 제 2 컴퓨터로 하여금 상기 제 1 컴퓨터에게 통신을 위한 준비가 되어있음 표시하도록 하는 단계와;
    (d) 상기 제 1 컴퓨터와 상기 제 2 컴퓨터 사이에서 데이터를 전송하는 단계와; 그리고
    (e) 상기 제 1 컴퓨터로 하여금 동작을 재개하도록 하는 단계를 포함하는 것을 특징으로 하는 통신 방법.
  18. 제 17 항에 있어서,
    상기 통신이 완료되었다는 것을 상기 제 2 컴퓨터가 승인할 때, 상기 제 1 컴퓨터가 동작을 재개하도록 되는 것을 특징으로 하는 통신 방법.
  19. 제 17 항에 있어서,
    상기 제 1 컴퓨터가 상기 제 1 컴퓨터와 상기 제 2 컴퓨터 사이의 쓰기 라인을 설정하고;
    상기 제 2 컴퓨터가 상기 제 1 컴퓨터와 상기 제 2 컴퓨터 사이의 읽기 라인을 설정하고; 그리고
    상기 읽기 라인 및 상기 쓰기 라인 모두가 설정된 후에 상기 제 1 컴퓨터가 동작을 재개하도록 되는 것을 특징으로 하는 통신 방법.
  20. 제 19 항에 있어서,
    상기 읽기 라인 및 상기 쓰기 라인 모두가 설정될 때, 상기 제 1 컴퓨터와 상기 제 2 컴퓨터 사이에서 데이터가 전송되는 것을 특징으로 하는 통신 방법.
  21. 제 19 항에 있어서,
    상기 읽기 라인 및 상기 쓰기 라인 모두가 설정되는 경우, 데이터가 전송되었음을 표시하기 위해 상기 읽기 라인 및 상기 쓰기 라인 모두가 설정 해제되는 것을 특징으로 하는 통신 방법.
  22. 제 21 항에 있어서,
    상기 쓰기 라인이 하이가 되게 함으로써, 상기 제 1 컴퓨터가 상기 쓰기 라인을 설정하고;
    상기 읽기 라인이 하이가 되게 함으로써, 상기 제 2 컴퓨터가 상기 읽기 라인을 설정하고;
    상기 읽기 라인 및 상기 쓰기 라인이 로우가 되게 함으로써, 상기 읽기 라인 및 상기 쓰기 라인이 설정 해제되는 것을 특징으로 하는 통신 방법.
  23. 제 17 항에 있어서,
    제 17 항에 제시된 순서와 비교해서, 동작 단계 (a)와 (b)의 순서가 뒤바뀐 것을 특징으로 하는 통신 방법.
  24. 컴퓨터에 있어서,
    제 1 컴퓨터와 제 2 컴퓨터 사이에서 통신하기 위한 적어도 하나의 데이터 전송 수단과;
    상기 제 1 컴퓨터로 하여금 통신할 준비가 되었음을 표시하도록 하는 수단과;
    상기 제 2 컴퓨터로 하여금 통신할 준비가 되었음을 표시하도록 하는 수단과; 그리고
    통신이 완료되었음을 승인하는 수단을 포함하는 것을 특징으로 하는 컴퓨터.
  25. 제 24 항에 있어서,
    통신이 완료되었음을 승인하는 상기 수단이 표시할 때까지 상기 제 1 컴퓨터를 중지시키는 수단을 더 포함하는 것을 특징으로 하는 컴퓨터.
KR1020077009920A 2006-02-16 2007-02-16 비동기적 컴퓨터 통신 KR20090016642A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/355,513 2006-02-16
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,495 2006-02-16

Publications (1)

Publication Number Publication Date
KR20090016642A true KR20090016642A (ko) 2009-02-17

Family

ID=37965009

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020077009921A KR20090016643A (ko) 2006-02-16 2007-02-16 비동기적 절전형 컴퓨터
KR1020077009920A KR20090016642A (ko) 2006-02-16 2007-02-16 비동기적 컴퓨터 통신

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020077009921A KR20090016643A (ko) 2006-02-16 2007-02-16 비동기적 절전형 컴퓨터

Country Status (7)

Country Link
EP (2) EP1821174B9 (ko)
JP (2) JP2009527810A (ko)
KR (2) KR20090016643A (ko)
AT (2) ATE512409T1 (ko)
DE (1) DE602007007999D1 (ko)
TW (2) TW200809530A (ko)
WO (2) WO2007098007A2 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3731201B1 (en) 2019-04-24 2022-11-09 ABB Schweiz AG A support system for an operator

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4589067A (en) * 1983-05-27 1986-05-13 Analogic Corporation Full floating point vector processor with dynamically configurable multifunction pipelined ALU
JPS60204149A (ja) 1984-03-29 1985-10-15 Mitsubishi Electric Corp デ−タ伝送装置
DE3937807C2 (de) 1988-11-19 1995-04-06 Vaillant Joh Gmbh & Co Verfahren zum Übertragen von Daten zwischen zwei sendenden und empfangenden Stationen
JPH03136136A (ja) * 1989-10-23 1991-06-10 Fujitsu Ltd 命令実行時刻制御方式
DE58908974D1 (de) * 1989-11-21 1995-03-16 Itt Ind Gmbh Deutsche Datengesteuerter Arrayprozessor.
US5218682A (en) 1991-05-10 1993-06-08 Chrysler Corporation Two-way handshake circuit and method for communication between processors
JP2723712B2 (ja) * 1991-08-30 1998-03-09 茨城日本電気株式会社 マイクロプログラム制御回路
US5692197A (en) * 1995-03-31 1997-11-25 Sun Microsystems, Inc. Method and apparatus for reducing power consumption in a computer network without sacrificing performance
JPH0997128A (ja) * 1995-09-26 1997-04-08 Internatl Business Mach Corp <Ibm> 情報処理システム
GB9704068D0 (en) * 1997-02-27 1997-04-16 Sgs Thomson Microelectronics Trigger sequencing controller
FR2789501B1 (fr) 1999-02-09 2001-04-13 St Microelectronics Sa Procede et dispositif de reduction de la consommation d'un microcontroleur
US6937538B2 (en) * 2000-02-02 2005-08-30 Broadcom Corporation Asynchronously resettable decoder for a semiconductor memory
GB2370381B (en) * 2000-12-19 2003-12-24 Picochip Designs Ltd Processor architecture
JP4412905B2 (ja) * 2003-01-28 2010-02-10 パナソニック株式会社 低電力動作制御装置、およびプログラム最適化装置
JP2004326222A (ja) * 2003-04-22 2004-11-18 Renesas Technology Corp データ処理システム

Also Published As

Publication number Publication date
TW200809530A (en) 2008-02-16
EP1821174B1 (en) 2010-07-28
ATE512409T1 (de) 2011-06-15
KR20090016643A (ko) 2009-02-17
EP1821174B9 (en) 2010-10-27
EP1821174A1 (en) 2007-08-22
WO2007098023A3 (en) 2008-07-03
EP1821217B1 (en) 2011-06-08
WO2007098007A3 (en) 2008-08-28
EP1821217A1 (en) 2007-08-22
JP2009527813A (ja) 2009-07-30
DE602007007999D1 (de) 2010-09-09
WO2007098007A2 (en) 2007-08-30
JP2009527810A (ja) 2009-07-30
WO2007098023A2 (en) 2007-08-30
TW200813744A (en) 2008-03-16
ATE475927T1 (de) 2010-08-15

Similar Documents

Publication Publication Date Title
US8825924B2 (en) Asynchronous computer communication
US7904695B2 (en) Asynchronous power saving computer
US9558150B2 (en) Processing system with synchronization instruction
KR20150023905A (ko) 프로세서의 언코어 회로의 전력 소비 감소
US7555637B2 (en) Multi-port read/write operations based on register bits set for indicating select ports and transfer directions
KR20090016644A (ko) 동작 효율성을 증가시킨 컴퓨터 시스템
US20080229006A1 (en) High Bandwidth Low-Latency Semaphore Mapped Protocol (SMP) For Multi-Core Systems On Chips
JP2001202155A (ja) 低消費電力処理装置
EP1986094A1 (en) System and method for processing data in a series of computers
KR20090016642A (ko) 비동기적 컴퓨터 통신
KR20090016645A (ko) 컴퓨터의 입력을 모니터링하는 방법과 장치
US20100325389A1 (en) Microprocessor communications system
KR20090003217A (ko) 컴퓨터들의 어레이 간의 자원들의 할당
JP2008503806A (ja) マイクロプロセッサ及び論理装置の為の接続システムの方法及び構造

Legal Events

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