KR20080096484A - 데이터 통신 - Google Patents

데이터 통신 Download PDF

Info

Publication number
KR20080096484A
KR20080096484A KR1020080039577A KR20080039577A KR20080096484A KR 20080096484 A KR20080096484 A KR 20080096484A KR 1020080039577 A KR1020080039577 A KR 1020080039577A KR 20080039577 A KR20080039577 A KR 20080039577A KR 20080096484 A KR20080096484 A KR 20080096484A
Authority
KR
South Korea
Prior art keywords
computer
data
register
write
read
Prior art date
Application number
KR1020080039577A
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
Application filed by 테크날러지 프라퍼티즈 리미티드 filed Critical 테크날러지 프라퍼티즈 리미티드
Publication of KR20080096484A publication Critical patent/KR20080096484A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

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

Abstract

자신을 다른 장치들과 연결시키기 위한 다수의 데이터 경로들(38a-d)을 구비하는 컴퓨터로, 유사 컴퓨터들일 수 있다. 레지스터(40d)가 자신의 내부에 어느 비트들이 동시에 설정되어 있는지에 기초하여 상기 컴퓨터가 다수개의 상기 데이터 경로들을 통하여 통신할 수 있도록, 상기 데이터 경로들 각각을 어드레싱 할 수 있도록 프로그래밍적으로 설정될 수 있는 비트들을 구비한다. 선택적으로, 다수의 상기 컴퓨터들은 직렬로('파이프라이닝') 연결되거나, 어레이(10)를 형성하도록 연결될 수 있다.
컴퓨터, 데이터 통신

Description

데이터 통신{COMMUNICATING DATA}
본 발명은 일반적으로 전기적 컴퓨터 및 프로세싱 아키텍처를 갖고 명령어 프로세싱을 수행하는 디지털 프로세싱 시스템에 관한 것으로, 특히 데이터 전송 연산을 구체적으로 지원하거나 실행하는 명령어 처리에 관한 것이다.
연산(computing) 기술에 있어서, 프로세싱 속도는 절실히 요구되는 품질이고, 보다 빠른 컴퓨터 및 프로세서를 구현하고자 하는 노력이 진행 중이다. 그러나, 적어도 현재 주지된 기술을 이용해서는, 마이크로 프로세서 내부의 속도 증가에 대한 한계에 급속히 부딪히고 있다는 사실이 업계에서 일반적으로 인정된다. 따라서, 다중 프로세서들 사이에서 컴퓨터 태스크를 공유함으로써 전체적인 컴퓨터 속도를 증가시키는 다중 프로세서의 사용에 대한 관심이 증가하고 있다. 그러나, 업무수행(workload) 공유와 관련된 전체적인 효율이, 거의 불가피하게, 다소 떨어질 것이라는 사실은 일반적으로 인정된다. 즉, 한 사람이 60분 안에 포스트 홀(post hole)을 팔 수 있다고 해서, 60명의 사람이 1분 안에 포스트 홀을 팔 수 있다고 할 수는 없다는 오래된 격언이 적용될 것이다. 같은 원칙이 태스크들에 대한 임의의 분담에 적용되고, 프로세서들 사이의 태스크에 대한 분담이 예외는 아니 다.
물론, 컴퓨터 프로세서들 사이에서 태스크의 공유를 보다 효율적으로 하기 위한 노력들이 진행되고 있다. 상기 태스크들이 할당되고 있는 정확한 방법에 대한 질문이 검사중이고, 프로세스들이 향상되고 있다. 이 분야에 대한 연구 중, 본 발명가들은 다중 CPU 환경 내의 하나의 CPU에서 다른 CPU로의 데이터 전송이 일부 환경들 하에서 매우 어렵다는 것을 관측하였다. 예를 들어서, 만일 데이터가 하나의 CPU에서 다른 CPU로 전송되어야 한다면, 타겟(target) CPU는 자신과 소스(source) CPU 사이에 있는 하나의 CPU에 의해 상기 소스 CPU로부터 분리되고, 상기 소스 CPU는 상기 데이터를 상기 CPU로 직접 라인을 이루어서(in line) 기록(write) 해야만 한다. 이후, 상기 소스 CPU는 차례로 상기 데이터를 판독(read)하고 이후 판독된 데이터를 상기 타겟 CPU에 기록해야 한다. 이후, 상기 소스 CPU는 상기 기록된 데이터를 판독해야 한다. 이와 같은 프로세스는 많은 판독 및 기록 연산들을 요구하며, 만일 다량의 데이터가 전송중이라면, 그와 같은 많은 판독 및 기록 명령어(commands)들이 시스템 연산을 방해(clog)할 수도 있다.
따라서, 본 발명의 목적은 다중 포트(multi-port) 판독 및 기록 연산을 위한 시스템 및 방법을 제공하는 데 있다.
본 발명의 일 측면에 따르면, 컴퓨터를 다른 장치들과 연결시키기 위한 복수개의 데이터 경로들; 및 어느 비트들이 동시에 설정되어 있는지에 기초하여 상기 컴퓨터가 상기 복수개의 데이터 경로들 중 다수를 통하여 통신할 수 있도록, 상기 복수개의 데이터 경로들 각각을 어드레싱 할 수 있도록 프로그래밍적으로 설정될 수 있는 비트들을 지닌 레지스터;를 포함하는 컴퓨터가 제공된다. 상기 컴퓨터는 컴퓨터 어레이의 일부일 수 있고, 상기 다른 장치들 중 적어도 하나 또한 상기 컴퓨터 어레이 내의 컴퓨터이다. 상기 컴퓨터 또는 컴퓨터들은 비동기적으로 통신할 수 있다.
본 발명의 다른 측면에 따르면, (a)다른 장치들(other devices) 중 제 1 다른 장치가 데이터를 컴퓨터에 기록하려 하고 있는 중임을 나타내는 신호를 위해, 상기 컴퓨터를 상기 다른 장치들과 연결하는 복수개의 데이터 경로들을 모니터링 하는 단계; (b)상기 제 1 다른 장치로부터 상기 데이터를 판독하는 단계; 및 (c)상기 복수개의 데이터 경로들을 어드레싱 할 수 있도록 프로그래밍적으로 설정될 수 있는 비트들을 지닌 레지스터에 기초하여, 상기 데이터를 상기 제 1 다른 장치에 기록하는 단계를 포함하는 컴퓨터를 데이터 통신 시키기 위한 프로세스가 제공된다. 상기 컴퓨터는 컴퓨터 어레이의 일부일 수 있고, 상기 다른 장치들 중 적어도 하나 또한 상기 컴퓨터 어레이 내의 컴퓨터이다. 상기 컴퓨터 또는 컴퓨터들은 비동기적으로 통신할 수 있다.
간략히, 본 발명의 일 실시예에 따르면, 컴퓨터를 다른 장치들과 연결시키기 위한 다중 데이터 경로들을 지닌 컴퓨터가 제공된다. 여기서, 상기 다른 장치들은 전형적으로 다른 컴퓨터들이지만, 반드시 이에 한정되는 것은 아니다. 상기 컴퓨터 내의 레지스터는 상기 데이터 경로들 각각을 어드레싱하도록 프로그래밍 된 비트들을 지니고 있어서, 상기 컴퓨터는 상기 비트들 중 어느 비트들이 동시에 설정되었는지에 기초하여 상기 데이터 경로들 중 다중 데이터 경로(multiple data paths)를 통하여 통신할 수 있다.
간략히, 본 발명의 다른 실시예에 따르면, 컴퓨터를 데이터 통신 시키기 위한 프로세스가 제공된다. 상기 컴퓨터를 다른 장치들(other devices)과 연결시키기 위한 다중 데이터 경로들은 다른 장치(another device)가 상기 데이터를 상기 컴퓨터에 기록하려 하고 있는 중임을 알리는 신호를 위해 모니터링된다. 상기 제 1 다른 장치(first other device)로부터의 상기 데이터는 이후 판독된다. 그리고, 상기 데이터는 상기 다중 데이터 경로들을 어드레싱하도록 프로그래밍 된 비트들을 구비한 레지스터에 기초하여 또 다른 장치(yet another device)에 기록된다.
본 발명의 일 실시예의 장점은 다중 프로세서들 가운데에서 데이터 전송 속도가 증가한다는 점이다. 특히 상기 프로세서들이 다중 차수(multidimensional) 어레이로 배열되고, 각각 데이터가 판독되고 기록될 수 있는 데이터 경로들을 둘 이상 구비할 경우 데이터 전송 속도가 증가한다.
본 발명의 일 실시예의 다른 장점은 다중 프로세서들을 쉽게 사용하여, 상기 프로세서들 사이에서 태스크들을 공유함으로써 전체적인 연산 속도(computing speed)를 증가시킨다는 점이다.
본 발명의 일 실시예의 다른 장점은 본 발명이 비동기적으로 통신하는 프로세서들에 의한 사용에 특히 적합하다는 점이다.
본 발명의 일 실시예의 다른 장점은 다중 프로세서들 사이에서 태스크들을 공유할 때 오버헤드(overhead)를 줄인다는 점이다.
또한, 본 발명은 적합한 컴퓨터 상에서의 구동시 상기 컴퓨터가 본 발명의 상기 다른 측면에 따르는 상기 프로세스를 구현시키도록 야기시키는 컴퓨터 프로그램을 제공한다. 상기 프로그램은 저장 매체 또는 신호일 수 있는 캐리어 상에 구현될 수 있다. 상기 저장 매체는 다른 예시들 가운데 보여진 기록 매체 또는 메모리 장치일 수 있다.
본 발명의 상기 목적들 및 장점들은 여기에 기재된 바와 같이 그리고 도면에 도시된 바와 같이, 본 발명을 구현하는 실시예 중 최고의 실시예에 대한 설명 및 바람직한 실시예의 산업적 이용가능성의 관점에서, 당업자에게 보다 명료해질 것이다.
본 발명의 실시예가 목적들을 달성하기 위한 모드들의 견지에서 기술되는 동안, 다양한 변형들이 본 발명의 정신 또는 범위를 벗어나지 아니한 상태에서 본 취지의 관점에서 이루어질 수 있다는 것은 당업자들에게 자명할 것이다.
이하 기재되고 또는 도면에 제시된 본 발명의 실시예들 및 변형들은 단지 예로써 제시된 것이고, 본 발명의 범위에 있어서 제한되지 아니한다. 특별한 언급이 없는 한, 본 발명의 개별적인 측면 및 구성요소는 생략 또는 변경될 수 있거나, 주지된 등가물들을 대체할 수도 있고, 아직 알려지지 않은 대체물로써 미래에 개발될 수 있거나, 미래의 수용가능한 대체물로 간주될 수 있다. 가능한 애플리케이션들의 범위가 넓고, 본 발명이 많은 변형들에 적용되도록 의도되기 때문에, 본 발명은 또한 클레임의 정신과 범위 내에서 유지되는 동안 다양한 애플리케이션들에 대해 변경될 수 있다.
본 발명의 바람직한 실시예들은 다중 포트 판독 및 기록 기능을 위한 시스템 및 방법에 관한 것이다. 다양한 도면들 내에서 도시되고, 특히 도 7에서 도시된 바와 같이, 본 발명의 바람직한 실시예들은 일반적인 참조번호 100으로 기술된다.
본 발명의 문맥 및 기초로써, 비동기 컴퓨터 통신의 상세 예시가 첫 번째로 제시된다. 이를 위해, 컴퓨터 어레이가 도 1의 도표 내에 도시되고, 일반적인 참조번호 10으로 내부에 지정된다. 상기 컴퓨터 어레이(10)는 복수개의(도시된 예에서는 24개) 컴퓨터들(12) (종종 어레이의 예시에서 'cores' 또는 'nodes'라고 불림)을 갖는다. 도시된 예에 있어서, 상기 컴퓨터들(12) 모두는 단일 다이(14) 상에 위치한다. 상기 컴퓨터들(12) 각각은 일반적으로 독립적으로 연산하는 컴퓨터로써, 이하 보다 상세히 기술될 것이다. 상기 컴퓨터들(12)은 복수개의 상호접속(interconnecting) 데이터 버스들(16, 데이터 버스들의 양에 대해서는 이하 보다 상세히 기술될 것임)에 의해 상호연결된다. 본 예시에 있어서, 다른 상호접속 수단 들이 상기의 목적을 위해 사용될 수 있음이 본 발명의 정신 내에 속한다 할지라도, 상기 데이터 버스들(16)은 양방향의 비동기적 고속 평행 데이터 버스들이다. 상기 어레이(10)의 본 실시예에 있어서, 상기 컴퓨터들(12) 사이에서의 데이터 통신이 비동기적일 뿐만 아니라, 상기 개별 컴퓨터들(12) 또한 내부적으로 비동기 모드에서 연산한다. 이는 중요한 장점들을 제공한다는 사실이 밝혀졌다. 예를 들어, 클럭 신호가 상기 컴퓨터 어레이(10) 도처에(throughout) 분산될 필요가 없기 때문에, 상당량의 전력이 절약된다. 게다가, 클럭 신호를 분산시킬 필요가 없기 때문에 상기 어레이(10)의 크기를 제한할 수 있거나, 다른 어려움들을 야기시킬 수 있는 많은 타이밍 문제들을 해결할 수 있다.
당업자라면 간결성을 위해 도 1에서 생략된 부가적인 성분들이 상기 다이(14) 상부(on)에 있다라는 사실을 알 것이다. 그와 같은 부가적 성분들은 파워 버스, 외부 연결 패드, 및 마이크로프로세서 칩의 다른 일반적인 측면들을 포함한다.
컴퓨터(12e)는 상기 어레이(10)의 주변에 있지 않은 상기 컴퓨터들(12) 중 하나에 대한 예시이다. 즉, 컴퓨터(12e)는 4개의 직교하는 인접(adjacent) 컴퓨터들(12a, 12b, 12c, 12d)을 구비한다. 상기 컴퓨터들(12a-12e)의 그룹은 상기 어레이(10)의 상기 컴퓨터들(12) 사이의 통신에 대한 더욱더 상세한 설명과 관련하여 이하 사용될 것이다. 도 1에서 보여진 바와 같이, 컴퓨터(12e)와 같은 내부 컴퓨터들은 자신들이 상기 버스들(16)을 통해 통신할 수 있는 4개의 다른 컴퓨터들(12)을 가지게 될 것이다. 하기의 설명에 있어서, 상술한 원리들이 상기 어레이(10)의 주 변에 있는 상기 컴퓨터들(12)이, 코너 컴퓨터들(12)의 경우 상기 컴퓨터들(12) 중 오직 3개 또는 2개의 컴퓨터와만 직접 통신을 수행한다 라는 사실을 제외하고, 상기 모든 컴퓨터들(12)에 적용될 것이다.
도 2는 도 1의 일부분에 대한 더욱 상세한 도면으로, 특히 컴퓨터들 (12a-12e)을 포함하는 상기 컴퓨터들의 일부만을 보여준다. 도 2는 또한 상기 데이터 버스들(16)이 각각 판독 라인(18), 기록 라인(20), 및 복수개의 (본 예에서는 18개) 데이터 라인들(22)을 구비한다는 것을 보여준다. 상기 데이터 라인들(22)은 하나의 18비트 명령어가 지니고 있는 모든 비트들을 일반적으로 동시에 평행하게 전송할 수 있다. 다른 실시예로써, 상기 컴퓨터들(12) 중 일부는 인접한 컴퓨터들의 거울 이미지(mirror images)라는 것을 주지해야 한다. 그러나, 여기에서 상기 컴퓨터들(12)이 모두 똑같이 파생되었는지(oriented), 또는 인접 컴퓨터들의 거울 이미지들인가는 중요하지 않고, 이러한 전위 복잡성(potential complication)은 여기서 심도있게 논의되지 않을 것이다.
상기 컴퓨터(12e)와 같은 컴퓨터(12)는 자신의 판독 라인들(18) 중 하나, 둘, 셋, 또는 네 개가 각각 하나, 둘, 셋, 또는 네 개의 인접 컴퓨터들(12)로부터의 데이터를 수신할 수 있도록 설정할 수 있다. 유사하게, 컴퓨터(12)가 자신의 기록 라인들(2) 중 하나, 둘, 셋, 또는 네 개를 하이(high) 상태로 설정할 수 있다 (이 두 경우에 대해서는 이하 더욱더 상세히 논의된다).
상기 인접 컴퓨터들(12a, 12b, 12c 또는 12d) 중 하나가 자신과 상기 컴퓨터(12e) 사이에 기록 라인(20)을 하이 상태로 설정시, 만일 상기 컴퓨터(12e)가 이 미 해당 판독 라인(18)을 하이 상태로 설정했을 경우, 워드(word)가 관련(associated) 데이터 라인들(22) 상에서 컴퓨터(12a, 12b, 12c 또는 12d)로부터 상기 컴퓨터(12e)로 전송된다. 이후, 상기 송신 컴퓨터(12)는 상기 기록 라인(20)을 해제(release)할 것이고, 상기 수신 컴퓨터(12e) (본 예시에서)는 상기 기록 인(20)과 상기 판독 라인(18)을 로우 상태로 풀링한다(pull). 후자의 경우는 상기 송신 컴퓨터(12)에게 상기 데이터가 수신되었음을 통보(acknowledge)해 줄 것이다. 상기의 서술이 이벤트들의 시퀀스를 순서대로 설명하는 것만은 아니라는 사실을 주지하라. 현행 관습상, 상기 수신 컴퓨터는 상기 송신 컴퓨터(12)가 자신의 기록 라인(20)을 해제하기(하이 상태로 풀링(pull)하는 것을 멈추기) 전에, 상기 기록 라인(20)을 약간 로우 상태로 설정하려고 시도할 수 있다. 이와 같은 예시에서, 상기 송신 컴퓨터(12)가 자신의 기록 라인(20)을 해제하자마자, 상기 기록 라인(20)은 상기 수신 컴퓨터(12e)에 의해 로우 상태로 풀링될 것이다.
본 예시에 있어서, 프로그래밍 에러만이 상기 버스들(16) 중 하나의 대향단들(opposite ends) 상의 두 개의 컴퓨터들(12)이 자신들 사이의(therebetween) 상기 두 개의 판독 라인들(18)을 하이 상태로 설정하거나, 자신들 사이의(therebetween) 상기 두 개의 기록 라인들(20)을 동시에 하이 상태로 설정하기 위한 시도를 하도록 야기시킨다. 그러나, 상기 컴퓨터들(12) 중 하나가 자신의 해당 기록 라인(20)을 하이 상태로 설정하기 위해 상기 선택된 컴퓨터들(12) 중 첫 번째 컴퓨터로부터의 데이터를 기다리는 대기 상태(wait state)에 있을 수 있도록, 상기 판독 라인들(18)의 서로 다른 조합들을 하이 상태로 설정하는 것이 바람직한 경우가 있을 것이라고 현재 기대된다.
상술한 예시에 있어서, 컴퓨터(12e)는 인접 컴퓨터(12a, 12b, 12c 또는 12d 중 하나 또는 다수)가 자신의 기록 라인(20)을 하이 상태로 설정하기 전에, 자신의 판독 라인들(18) 중 하나 또는 다수를 하이 상태로 설정한다고 설명되었다. 그러나, 상기 프로세스는 분명히 반대 순서로 일어날 수 있다. 예를 들어, 만일 상기 컴퓨터(12e)가 상기 컴퓨터(12a)에 기록하려고 시도하고 있었다면, 상기 컴퓨터(12e)는 상기 컴퓨터(12e)와 컴퓨터(12a) 사이의 상기 기록 라인(20)을 하이 상태로 설정한다. 만일, 컴퓨터(12e)와 컴퓨터(12a) 사이의 상기 판독 라인(18)이 컴퓨터(12a)에 의해 하이 상태로 설정되어 있지 않았다면, 상기 컴퓨터(12e)는 컴퓨터(12a)가 판독 라인(18)을 하이 상태로 설정할 때까지 기다리기만 할 것이다. 이후, 상술한 바와 같이, 한 쌍의 해당 판독 라인들(18) 및 기록 라인들(20)이 하이 상태로 설정되었을 경우, 상기 데이터 라인들(22) 상에서 전송되기를 기다리고 있는 상기 데이터는 전송된다. 이후, 상기 수신 컴퓨터(12a)(본 예에서)는 상기 송신 컴퓨터(12e)가 상기 데이터를 해제하자마자, 컴퓨터 상기 두 대의 컴퓨터들(12e, 12a) (본 예에서) 사이의 상기 판독 라인(18)과 기록 라인(20) 둘 다를 로우 상태로 설정한다. 상기 컴퓨터(12e)와 같은 컴퓨터(12)가 자신의 기록 라인들(20) 중 하나를 기록을 기대하고 하이 상태로 설정했다면, 상기 데이터가 전송되어질 상기 컴퓨터(12)가 자신의 판독 라인(18)을 하이 상태로 이미 설정하지 않았을 경우, 상술한 바와 같이, 적절한 인접 컴퓨터(12)로부터 상기 데이터가 '요청될(requested)'때까지 전력을 사용하지 않고 단순히 대기할 것이다. 이 경우, 상기 데이터는 즉시 전송이 된다. 유사하게, 컴퓨터(12)가 자신의 판독 라인들(18) 중 하나 또는 다수개를 판독을 기대하고 하이 상태로 설정할 때마다, 상기 컴퓨터(12)는 선택된 컴퓨터(12)로 연결된 상기 기록 라인(20)이 하이 상태로 설정되어 상기 두 대의 컴퓨터들(12) 사이로 명령어(instruction word)를 전송할 때까지 전력을 사용하지 않고 단순히 대기할 것이다.
상기 컴퓨터들(12)이 상술한 바와 같이 연산하도록 하는 몇 가지의 가능한(potential) 수단 및/또는 방법들이 있을 수 있다. 그러나, 본 예시에서, 상기 컴퓨터들(12)은 자신들이 일반적으로 내부적으로 비동기적으로 연산하고 있기 때문에 (상술한 비동기적 방법으로 자신들 사이에서 데이터를 전송하는 것 외에도), 그렇게 단순히 연산한다. 즉, 명령어들이 순차적으로 완성된다. 기록 또는 판독 명령어가 발생할 때, 상기 명령어가 완성될 때까지 (또는 다른 방법으로, 상기 명령어가 'reset' 또는 기타에 의해 폐기될 때까지) 보다 심화된 동작이 없을 수 있다. 종래의 기술 관점에서 보면, 규칙적인(regular) 클럭 펄스가 없다. 오히려, 펄스가 생성되어, 상기 실행되고 있는 명령어가 판독 또는 기록형 명령어가 아닐 경우 (상기 판독 또는 기록형 명령어는 다른 엔티티에 의한 완성을 요구한다), 또는 상기 판독 또는 기록형 연산이 사실상 완료되었을 경우에만, 다음의 명령어를 완성한다.
도 3은 도 1 및 2의 상기 컴퓨터들 중 하나에 대한 일반적인 배치를 보여주는 블록도이다. 도 3으로부터 알 수 있듯이, 상기 컴퓨터들(12) 각각은 자신의 고유한 RAM(24)과 ROM(26)을 구비하는 일반적으로 자신 포함형 컴퓨터(self contained computer)이다. 상술한 바와 같이, 상기 컴퓨터들(12)은 종종 개별형 'cores'(본 예에서는, 단일 칩 상에 결합됨)라고 언급되기도 한다.
상기 컴퓨터(12)의 다른 기본적 구성품들은 리턴 스택(28), 명령영역(30), 산술 로직유닛(ALU:32), 데이터 스택(34), 및 명령어 디코딩을 위한 디코딩 로직섹션(36)을 포함한다. 해당 분야의 지식을 가지는 사람이라면 일반적으로 본 예에서의 상기 컴퓨터들(12)과 같은 스택 기반(stack based) 컴퓨터들의 연산에 친숙할 것이다. 상기 컴퓨터들(12)은 상기 데이터 스택(34) 및 개별(separate) 리턴 스택(28)을 구비하는 이중 스택 컴퓨터들이다.
본 발명의 본 실시예에 있어서, 상기 컴퓨터(12)는 인접 컴퓨터들(12)과 통신하기 위한 4개의 통신 포트들(38)을 갖는다. 상기 통신 포트들(38)은 OFF 상태, (신호들을 상기 컴퓨터(12) 내부에서) 구동하기 위한 수신 상태, (신호들을 상기 컴퓨터(12) 밖에서) 구동하기 위한 송신 상태를 구비하는, 3-상태 드라이버들이다. 물론, 상기 특정 컴퓨터(12)가 컴퓨터(12e)의 예와 같은 상기 어레이(도 1)의 내부 상에 있지 않다면, 상기 통신 포트들 중 하나 또는 다수개가 적어도 여기에 기재되는 상기 목적들을 위하여 상기 특정 컴퓨터 내에서 사용되지 않을 것이다. 상기 명령어 영역(30)은 다수개의 레지스터들(40)을 포함하는데, 이는 본 예에서 'A'레지스터(40a), 'B'레지스터(40b), 'P'레지스터(40c), 및 입출력(I/O) 제어 및 상태 레지스터(IOCS 레지스터:40d)에 해당한다. 본 예에서, 상기 'A'레지스터(40a) 및 IOCS 레지스터(40d)는 18 풀비트 레지스터들인 반면, 상기 'B'레지스터(40b) 및 'P'레지스터(40c)는 9-비트 레지스터들이다.
비록 본 발명이 본 예시에 의해 제한되지는 않지만, 상기 컴퓨터(12)는 네이 티브 포스 언어(native Forth language) 명령어들을 실행하도록 구현된다. 상기 포스 컴퓨터 언어와 친숙한 사람이라면, 포스 워드(Forth words)로 알려진 복잡한 포스 명령어가 상기 컴퓨터 내부로 디자인된 상기 네이티브 프로세서 명령어들로부터 구축된다는 것을 이해하게 될 것이다. 포스 언어들의 집합체는 '사전(dictionary)'으로 알려져 있다. 다른 언어들에 있어서, 이는 '도서관(library)'으로 알려져 있을 수 있다. 이하, 더욱더 상세히 기술되는 바와 같이, 상기 컴퓨터(12)는 RAM(24)과 ROM(26)으로부터 한 번에 18 비트들을 판독하거나, 상기 데이터 버스들(16: 도 2) 중 하나로부터 직접 판독한다. 그러나, 대부분의 포스 명령어들(적은 피연산자 명령어들(operand-less instructions)이라고 알려짐)은 자신들의 피연산자들을 상기 스택들(28, 34)로부터 직접 획득하기 때문에, 길이 측면으로 볼 때 겨우 5 비트에 불과하다. 이는 오직 3 비트만을 필요로 하는 제한된 집합의 명령어들로부터 상기 그룹내의 마지막 명령어가 선택된다는 조건 하에서, 4개의 명령어들까지 단일 18 비트 명령어 내부에 포함되도록 하는 길이에 해당한다. 본 발명의 상기 실시예에서, 상기 데이터 스택(34) 내부의 상부(top) 두 개의 레지스터들은 'T' 레지스터(44)와 'S'레지스터(46)이다. 슬롯 시퀀서(slot sequencer 42: 곧 상세히 논의될 예정임)가 또한 도 3의 블록 도표(block diagrammatic form) 내에 도시된다.
도 4는 명령어 워드(48)에 대한 도식 대표(diagrammatic representation)이다 (상기 명령어 워드(48)는 명령어, 데이터, 또는 그것들의 일부 조합을 실제적으로 포함할 수 있다는 것을 주지해야 한다). 상기 명령어 워드(48)는 18개의 비트들(50)로 이루어진다. 이진수 컴퓨터이기 때문에, 상기 비트들(50) 각각은 '1' 또 는 '0'이 될 것이다. 상술한 바와 같이, 상기 18 비트 폭을 지닌 명령어 워드(48)는 '슬롯 0(54a)', '슬롯 1(54b)', '슬롯 2(54c)', '슬롯 3(54d)'라고 불리우는 4개의 슬롯들(54) 안에서 네 개의 명령어들(52)까지 포함할 수 있다. 본 발명에서, 상기 18 비트 명령어 워드(48)는 항상 전체적으로 판독된다. 따라서, 상기 명령어 워드(48) 내에서 4개의 명령어까지 가질 수 있는 전위(potential)가 있기 때문에, 놉(no-op:no operation 무연산) 명령어는 예를 들어 상기 유효한 슬롯들(54)에 대한 사용이 불필요하거나 심지어 바람직하지 않을 경우에 대비하여, 상기 컴퓨터(12)의 명령어 집합 내에 포함된다. 특정 실시예에 따르면, 교번적인 슬롯들(특히, 슬롯 1(54b)과 슬롯 3(54c))내부의 비트들(50)의 극성(액티브 '로우'와 비교했을 때 액티브 '하이')이 반전(reverse)된다는 것을 주지해야 한다. 그러나, 이는 필요하지 않고, 따라서 본 발명을 보다 잘 설명하기 위해서 상기 전위 복잡성(potential complication)이 또한 다음의 논의에서 생략된다.
도 5는 도 3의 슬롯 시퀀서(sequencer)의 개략적 대표도이다. 도 5에서 보여지는 바와 같이, 상기 슬롯 시퀀서(42)는 링 모양으로 배치된 복수개의(본 예에서는 14개) 인버터들(56) 및 하나의 'NAND' 게이트(58)를 포함하여, 신호가 상기 14개의 인버터들(56)과 상기 'NAND' 게이트(58)을 통해 이동하는 동안 홀수 번 역전(invert) 되도록 한다. 'OR' 게이트(60)로 입력된 상기 두 신호 중 하나가 '하이'상태가 될 때, 신호가 상기 슬롯 시퀀서(42) 내에서 초기화된다. 첫 번째 'OR' 게이트 입력(62)이 실행되고 있는 중인 상기 명령어(52)의 i4 비트(66, 도 4)로부터 인출된다(derived). 만일 i4 비트(66)가 '하이' 상태라면, 특정 명령어(52)가 산술 로직 유닛(ALU) 명령어이고, 상기 i4 비트(66)는 '1'이다. 상기 i4 비트(66)가 '1'일 경우, 상기 첫 번째 'OR' 게이트 입력(62)은 '하이' 상태이고, 상기 슬롯 시퀀서(42)는 트리거되어(triggered) 다음 명령어(52)의 실행을 야기시킬 펄스를 초기화한다.
상기 슬롯 시퀀서(42)가 트리거되었을 때, '하이' 상태로 가고 있는 상기 첫 번째 'OR' 게이트 입력(62)과 '하이' 상태로 가고 있는 상기 두 번째 'OR' 게이트 입력(64)(이하 논의될 예정임) 둘 중 하나에 의해, 신호가 매 번 슬롯 시퀀서 출력(68)에서 출력을 생성하면서, 상기 슬롯 시퀀서(42) 주위를 두 번 이동하게 될 것이다. 상기 신호가 상기 슬롯 시퀀서 출력(68)을 통과하는 첫 번째에는 '로우' 상태로 될 것이고, 두 번째에는 상기 슬롯 시퀀서 출력(68)에서의 상기 출력은 '하이' 상태가 될 것이다. 상기 슬롯 시퀀서 출력(68)으로부터 나온 상대적으로 넓은 출력은 폭이 좁은 타이밍 펄스를 출력으로써 생성하는 펄스 생성기(70, 블록 도표내에 도시)로 제공된다. 해당 분야의 지식을 지니고 있는 사람이라면 상기 좁은 타이밍 펄스가 상기 컴퓨터(12)의 연산을 정확히 초기화시키기 위해 바람직하다는 것을 알게 될 것이다.
상기 실행중인 특정 명령어(52)가 판독 또는 기록 명령어일 때, 또는 상기 실행중인 명령어(52)가 다음 명령어(52)에 대한 즉각 실행을 순서대로 트리거하는 것이 바람직하지 않은 임의의 다른 명령어일 때, 상기 i4 비트(66)는 '0'(로우)이 되고 상기 첫 번째 'OR' 게이트 입력(62)도 또한 '로우' 상태가 된다. 해당 분야의 통상 지식을 지니고 있는 당업자라면 상기 컴퓨터들(12)과 같은 장치 내의 이벤트 들의 타이밍이 일반적으로 꽤 중요하고, 이는 예외가 아니라는 사실을 알게 될 것이다. 상기 슬롯 시퀀서(42)를 검사하자마자, 해당 분야의 통상 지식을 지니고 있는 당업자라면 상기 'OR' 게이트(60)로부터의 상기 출력이, 상기 신호가 상기 링의 두 번째'lap'을 초기화하기 위해 상기 'NAND'게이트(58)를 통과하여 순환을 할 때까지 '하이' 상태를 유지해야 한다는 것을 알게 될 것이다. 이후, 상기 'OR' 게이트(60)로부터의 출력은 상기 회로의 바람직하지 않은 계속적인 진동(oscillation)을 방지하기 위해 상기 두 번째의 'lap' 동안 '로우' 상태가 될 것이다.
상술한 설명의 견지에서 이해될 수 있듯이, 상기 i4 비트(66)가 '0'일 경우, 상기 슬롯 시퀀서(42)는, 상기 두 번째의 'OR' 게이트 입력(64)이 '하이' 상태가 아니라는 (이후 논의될 예정임) 가정 하에, 트리거되지 않을 것이다.
상술한 바와 같이, 각 명령어(52)의 상기 i4 비트(66)는 상기 명령어가 판독 또는 기록형 명령어인지의 여부에 따라 설정된다. 상기 명령어(52) 내부의 잔존 비트들(50)은 상기 명령어를 위한 특정 옵코드(opcode)의 잔차(remainder)를 제공한다. 판독 또는 기록형 명령어일 경우, 상기 비트들 중 하나 또는 다수가 데이터가 상기 특정 컴퓨터(12) 내부의 판독 또는 기록 위치를 지시하기 위해 사용될 수 있다. 본 예시에서, 기록될 데이터는 항상 상기 'T'레지스터(44, 상기 데이터 스택(34)의 탑(top))으로부터 나오지만, 데이터는 상기 'T'레지스터(44) 및 자신이 실행될 수 있는 상기 명령어 영역(30) 중 하나의 내부로 선택적으로 판독될 수 있다. 이는 상기 특정 실시예에서, 데이터 또는 명령어가 상술한 방법으로 통신될 수 있고, 따라서 명령어들이 반드시는 아닐지라도 상기 데이터 버스(16)로부터 직접 실행될 수 있기 때문이다. 게다가, 상기 비트들(50) 중 하나 또는 다수는 상기 포트들(38) 중 어느 것이 판독 또는 기록을 위해 설정될 것인가를 지시하기 위해 사용될 것이다. 상기 후자의 연산은 상기 'A'레지스터(40a), 'B'레지스터(40b), 또는 기타와 같은 레지스터(40)를 지정하기 위한 하나 또는 다수의 비트들을 사용하여 선택적으로 달성된다. 그와 같은 예에 있어서, 상기 지정된 레지스터(40)는 상기 포트들(38) (및, 또는, 메모리, 외부 통신 포트 등과 같은 상기 컴퓨터(12)가 가지고서 통신을 위해 시도하고 있는 임의의 전위 엔터티) 각각에 해당하는 비트를 지닌 데이터와 함께 프리로딩(preload) 될 것이다. 예를 들어, 상기 특정 레지스터(40) 내의 4개의 비트들 각각은 상기 상부 포트(38a), 우측 포트(38b), 좌측 포트(38c), 또는 하측 포트(38d)에 각각 대응할 수 있다. 상기 비트 위치들 중 임의의 위치에 '1'이 있는 경우, 통신이 상기 해당 포트(38)를 통해 이루어지도록 설정될 것이다.
바로 뒤따르는 예시는, 비록 상기 예시가 임의의 인접 컴퓨터들(12) 사이의 통신에 적용될 수 있을지라도, 컴퓨터(12e)가 컴퓨터(12c)에 기록하기를 시도하는 중인 통신을 가정할 것이다. 기록 명령어가 기록 컴퓨터(12e) 내에서 실행될 때, 상기 선택된 기록 라인(20)(본 예시에서, 컴퓨터들(12e 및 12c) 사이의 상기 기록 라인(20))은 '하이' 상태로 설정된다. 만일 상기 해당 판독 라인(18)이 이미 '하이' 상태이라면, 데이터가 상기 선택된 통신 포트(38)를 통해 상기 선택된 위치로부터 즉시 전송된다. 다른 방법으로, 만일 해당 판독 라인(18)이 이미 '하이' 상태가 아니라면, 컴퓨터(12e)는 해당 판독 라인(18)이 '하이' 상태가 될 때까지 연산 을 단지 멈출 것이다. 판독 또는 기록형 명령어가 있을 경우, 상기 컴퓨터(12a)를 정지시키는(또는, 보다 정확히는 상기 컴퓨터(12a)의 심화된 연산들을 인에이블 하지 않는) 상기 메커니즘은 본문에서 이전에 언급되었다. 요약하면, 상기 명령어(52)의 'opcode'는 i4 비트(66) 위치에서 '0'을 가지게 될 것이고, 그 결과 상기 'OR' 게이트(60)의 첫 번째 'OR' 게이트 입력(62)은 '로우' 상태이고, 상기 슬롯 시퀀서(42)는 트리거되지 않아 인에이블링 펄스를 생성한다.
판독 또는 기록형 명령어가 완성될 때, 상기 컴퓨터(12e)의 연산이 재개(resume)되는 방법과 관련한 상기 메커니즘은 다음과 같다. 컴퓨터들(12e, 12c)사이의 상기 판독 라인(18) 및 해당 기록 라인(20) 모두가 '하이' 상태에 있을 경우, 상기 두 개의 라인들(18, 20)은 자신들을 '하이' 상태로 유지하고(hold) 있는 상기 컴퓨터(12)들 각각에 의해 해제될 것이다 (본 예시의 경우, 상기 수신 컴퓨터(12c)가 상기 판독 라인(18)을 '하이' 상태로 유지시키는 동안, 상기 전송 컴퓨터(12e)는 상기 기록 라인(20)을 '하이' 상태로 유지시킬 것이다). 이후, 상기 수신 컴퓨터(12c)는 상기 라인들(18, 20) 둘 다를 '로우' 상태로 '풀링(pull)' 할 것이다. 현행 관습상, 상기 전송 컴퓨터(12e)가 상기 기록 라인(20)을 해제하기 전에, 상기 수신 컴퓨터(12c)는 상기 라인들(18, 20) 둘 다를 '로우' 상태로 풀링하기 위한 시도를 할 수 있다. 그러나, 상기 라인들(18, 20) 모두가 '하이' 상태로 풀링되고 '로우' 상태로 단지 약하게 유지(래칭)되기 때문에, 상기 라인(18 또는 20)이 자신을 '하이' 상태로 래칭하고 있는 상기 컴퓨터(12)에 의해 해제될 때까지, 상기 라인(18) 또는 상기 라인(20)을 풀링하기 위한 임의의 노력이 현실적으로 성공하지 못할 것이다.
데이터 버스(16) 내부의 라인들(18, 20)이 '로우' 상태로 풀링될 때, 이는 '응답(acknowledge)' 조건이다. 상기 컴퓨터들(12e, 12c) 각각은 상기 응답 조건에 들어서자마자, 자신의 내부 응답 라인(72)를 '하이' 상태로 설정한다. 도 5에서 보여지듯이, 상기 응답 라인(72)은 두 번째의 'OR' 게이트 입력(64)을 제공한다. 상기 'OR' 게이트 입력들(62, 64)로의 입력이 상기 'OR' 게이트(60)로부터의 출력이 '하이' 상태가 되도록 할 것이기 때문에, 이는 상기 명령어 워드(48)의 다음 슬롯(54) 내에서의 상기 명령어(52)가 실행될 수 있도록 이전에 서술한 방법으로 상기 슬롯 시퀀서(42)의 연산을 초기화할 것이다. 상기 응답 라인(72)은 위조 어드레스들이 상기 어드레스 버스에 도달하는 것을 막기 위해, 다음의 명령어(52)가 디코딩될 때까지 '하이' 상태에 머무른다.
상기 실행되고 있는 중인 명령어(52)가 상기 명령어 워드(48)의 상기 슬롯 내의 세 위치에 존재하는 경우, 상기 컴퓨터(12)가 물론 상기 i4 비트(66)가 '0'이 아니라면 다음의 대기중인(awaiting) 18 비트 명령어 워드(48)를 패치(fetch)할 것이다. 현행 관습상, 명령어들을 프리패칭(prefetching) 하기 위한 장치 및 방법은 상기 패치가 상기 명령어 워드(48) 내의 모든 명령어들(52)에 대한 실행이 끝나기 전에 시작될 수 있도록 포함될 수 있다. 그러나, 이 또한 비동기적인 데이터 통신을 위해 반드시 필요한 것은 아니다.
컴퓨터(12e)가 컴퓨터(12c)로 기록하고 있는 중인 상기 예가 상세히 기술되었다. 상기 진술의 관점에서 이해될 수 있듯이, 상기 연산들은 컴퓨터(12e)가 처음 에 컴퓨터(12c)로 기록하기 위해 시도하든지, 또는 컴퓨터(12c)가 처음에 컴퓨터(12e)로부터 판독하기 위해 시도하든지 본질적으로 똑같다. 상기 연산은 컴퓨터들(12e, 12c) 둘 다가 준비될 때까지 완료될 수 없고, 어느 컴퓨터(12e 또는 12c)가 먼저 준비된다 할지라도 상기 첫 번째 컴퓨터(12)는 다른 컴퓨터(12e 또는 12c)가 상기 전송을 마칠 때까지 단순히 '휴면(sleep)' 상태로 들어선다. 상술한 프로세스를 살펴보는 다른 방법으로, 실제적으로, 상기 기록 컴퓨터(12e) 및 상기 수신 컴퓨터(12c)가 각각 상기 기록 및 판독 명령어들을 실행할 때 휴면상태로 들어선다. 그러나, 상기 거래(transaction) 내부로 진입하는 마지막 컴퓨터는 상기 판독 라인(18) 및 상기 기록 라인(20) 모두가 '하이' 상태에 있을 때 거의 순간적으로 다시 각성되는(reawaken) 반면에, 상기 거래를 초기화하기 위한 첫 번째 컴퓨터(12)는 상기 두 번째 컴퓨터(12)가 상기 프로세스를 종료시킬 준비가 될 때까지 거의 한없이 휴면상태(asleep)에 머무를 수 있다.
장치들 간에 효율적인 비동기적 통신을 인에이블링 하기 위한 중요한 특징은 일부 종류의 응답 신호 또는 조건이라고 알려져 있다. 종래 기술에서는, 장치들 사이의 대부분의 통신이 클럭되었고, 전송 장치가 상기 수신 장치가 상기 데이터를 적절하게 수신했는지에 대해 직접 알 수 있는 방법이 없다. 검사합(checksum) 연산과 같은 방법이 데이터가 정확히 수신되었는지에 대한 확인을 위한 시도로 사용되었을 수도 있지만, 상기 전송 장치는 상기 연산이 완료되었다는 직접적인 지시를 가지고 있지 않다. 여기에 기술되는 바와 같이, 본 방법은 상기 장치들 사이의 비동기적인 통신을 허락하는, 또한 상기 비동기적인 통신이 적어도 실용적이 되도록 하는 필요 응답 조건을 제공한다. 게다가, 상기 응답 조건은 또한 상기 응답 조건이 발생할 때까지 상기 장치들 중 하나 또는 다수가 '휴면상태'에 들어갈 수 있도록(go to sleep) 해준다. 물론, 응답 조건은 상기 컴퓨터들(12) 사이에서(상기 상호접속 데이터 버스(16) 상에서, 또는 개별(separate) 신호 라인 상에서) 전송되고 있는 중인 개별 신호에 의해 상기 컴퓨터들(12) 사이에서 통신될 수 있다. 그러나, 상기 응답을 위한 방법이 상기 통신에 실제적으로 영향을 끼치는 임의의 부가적인 신호, 클럭 사이클, 타이밍 펄스, 또는 상술한 것 이외의 임의의 자원을 필요로 하지 않는다는 점에서 (이와 관련하여) 훨씬 더 경제적이라고 평가될 수 있다.
상기의 것들을 달성하기 위한 절차 및 수단에 대한 상술한 설명의 관점에서, 배경 방법의 예시에 대한 다음의 간략한 서술을 이제 이해할 수 있다.
도 6은 본 발명에 따르는 방법의 일 예를 보여주는 순위표(flow diagram)이다. '통신 초기화' 연산(76)에 있어서, 하나의 컴퓨터(12)는 자신을 다른 컴퓨터(12)와 통신하도록 하는 명령어(52)를 실행한다. 이는 기록을 위한 시도일 수도 있고, 판독을 위한 시도일 수 있다. 상기 '통신 초기화' 연산(76)과 일반적으로 동시에 일어나는 '첫 번째 라인의 하이 상태로의 설정' 연산(78)에서, 판독 라인(18) 및 기록 라인(20) 둘 중 하나가 (상기 첫 번째 컴퓨터(12)가 판독 또는 기록을 시도하고 있는 중인지의 여부에 따라) '하이' 상태로 설정된다. 상기 '첫 번째 라인의 하이 상태로의 설정' 연산(78)의 일부로써, 상기 컴퓨터(12)는 상술한 바와 같이 연산할 것이다. '두 번째 라인의 하이 상태로의 설정' 연산(80)에서, 상기 두 번째 라인(상기 기록 라인(20) 또는 판독 라인(18))이 상기 두 번째 컴퓨터(12)에 의해 '하이' 상태로 설정된다. '데이터 통신' 연산(82)에서, 데이터(또는 명령어 등등)가 상기 데이터 라인들(22) 상으로 전송되고 수신된다. '라인들의 로우 상태로의 풀링' 연산(84)에서, 상기 판독 라인(18) 및 기록 라인(20)이 해제되고 '로우' 상태로 풀링된다. '계속' 연산(86)에서, 상기 응답 조건이 상기 컴퓨터들(12)이 자신들의 연산을 재개하도록 한다. 본 발명의 예시의 경우, 상기 응답 조건은 응답 신호(88, 도 5)를 야기시키는데, 이 경우, 상기 응답 신호는 상기 응답 라인(72)의 '하이' 조건에 '불과하다.
도 7은 본 발명에 따르는 일 실시예를 설명하기 위해 사용되는 도 1 및 2의 상기 컴퓨터 어레이(10)의 섹션(100)을 보여주는 상세도(detailed diagram)이다. 그러나, 상기 섹션(100)이 본 발명의 일 실시예를 이용한다는 것을 강조하기 위해, 상기 컴퓨터들(노드, 코어, 등등)이 이제 'CPU(12)'들로 언급된다.
도 7에서 보여지는 바와 같이, 중앙 CPU(12e)는 판독 라인(18), 기록 라인(20), 및 18 개의 데이터 라인들(22)을 포함하는 각 데이터 버스들(16)을 통하여 주변 CPU(12a, 12b, 12c, 12d)들과 연결된다. 그러나, CPU(12) 내에서, 상기 버스들(16)은 내부적으로 연결되고, 하나의 포트(38, 도 3) 이상이 동시에 판독될 경우정의되지 않은 하드웨어 상태들을 생성한다. 이러한 조건은 그와 같은 상황들로부터의 회복을 허락하기 위해 소프트웨어적 설계 관점에서 설명되어야 한다.
상기 CPU(12e)는 자신의 메모리(102)(예를 들어, 도 3에서 보여진 상기 RAM(24) 및 ROM(26))를 구비하는데, 이는 자신의 소프트웨어(104)를 포함할 수 있다. 상기 CPU(12e)는 또한 연산을 위한 조작 포인터들(manipulation pointers)을 포함하는 레지스터들(40)의 집합을 지닌다. 이는 데이터 연산을 위한 'A'레지스터(40a) 및 'B'레지스터(40b), 프로그램 포인터를 저장하기(hold) 위한 'P'레지스터(40c), 및 I/O 제어 및 상태(IOCS) 레지스터(40d, 도 3)를 포함한다.
도 8a 내지 8f는 도 7의 상기 섹션(100)의 상기 CPU(12)들 내에서 사용가능한 포트 어드레스 디코딩에 대한 개요를 보여주는 테이블도(table diagram)이다. 도 8a는 레지스터(40) 내부의 어드레스 비트(108)가 '1'로 설정되었을 경우, 상기 레지스터(40)가 보통 하나 또는 다수의 상기 포트들(38)을 어드레싱한다는 것을 보여준다. 역으로, 도면에 도시되진 않았지만, 상기 어드레스 비트(108)가 '0'으로 설정되었을 경우, 상기 레지스터(40)가 상기 메모리(102) 내의 위치를 어드레싱한다. 상기 어드레스 비트(108)가 '하이' 상태로 설정될 경우, 다음의 8 비트들은 선택 비트들(110) 역할을 한 후, 어느 특정 포트(38) 또는 포트들(38a)이 선택되었는지 및 그것들이 판독 또는 기록될 지에 대한 여부를 구체화한다. 따라서, CPU(12e) 내의 레지스터들(40)에 대해서, '우측'은 오른쪽 또는 동쪽 주변(neighboring) CPU(12a)를 지칭하고, '하측'은 아래쪽 또는 남쪽 주변 CPU(12b)를 지칭하고, '좌측'은 왼쪽 또는 서쪽 주변 CPU(12c)를 지칭하고, '상측'은 위쪽 또는 북쪽 주변 CPU(12d)를 지칭한다. 'RR'의 액션을 위해 설정된 선택 비트(110)는 보류중인(pending) 판독 요청이고, 'WR'의 액션을 위해 설정된 선택 비트(110)는 보류중인 기록 요청이다.
일관성을 유지하고 혼란을 최소화하기 위해, 하이 상태의 값 또는 '1'은 참 조건(true condition)을 지칭하고, 로우 상태의 값 또는 '0'은 거짓 조건(false condition)을 지칭하는 일반적인 규칙을 따른다는 것을 주지하라. 그러나, 이는 필수 사항은 아니고, 다른 규칙이 사용될 수 있다. 예를 들어, 상기 CPU(12)들의 일부 제시된 실시예들은 상기 RR 비트 위치들 내부의 참값을 위한 '0'을 사용하고, 상기 WR 비트 위치들 내부의 참값을 위한 '1'을 사용한다.
상술한 포트 어드레스 디코딩 접근법은 또한 상기 어드레스 비트(108)가 '1'로 설정되도록 하고, 상기 선택 비트들(110) 중 어느 것도 설정되지 않도록 한다. 이는 상기 CPU(12) 내의 다른 엘리먼트를 어드레싱하기 위해 유익하게 사용될 수 있다. 예를 들어, 상기 IOCS 레지스터(40d)는 이와 같은 방법으로 어드레싱 될 수 있다.
상기 CPU(12)들의 본 실시예들에서, 상기 IOCS 레지스터(40d)는 상기 포트들(38)의 상기 판독 라인들(18) 및 기록 라인들(20)의 현재 상태를 보고하기 위해동일 포트 어드레스 배열(arrangement)을 사용한다. 이는 상기 IOCS 레지스터(40d) 내의 각 비트들을 유용하게 하여 입출력 연산들의 상태를 프로그래밍적으로 테스트할 수 있도록 한다. 예를 들어, CPU(12b)가 상기 공유된 기록 라인(20)을 '하이' 상태로 아직 설정하지 않았을 경우 CPU(12e)는 휴면상태로 들어가게 되는, CPU(12e)에 의한 CPU(12b)로부터의 비동기적인 판독 실행 대신, 상기 CPU(12e)는 상기 IOCS 레지스터(40d) 내의 비트(13)의 상태(DOWN/WR)를 테스트할 수 있고 (CPU(12b)를 CPU(12e)와 연결시키는 상기 기록 라인(20)의 상태를 반영하면서), CPU(12b)로부터의 상기 준비된 데이터의 즉각적인 판독을 위한 분기(branch) 및 다른 명령어를 즉각 실행하라는 분기(branch) 중 하나를 선택할 수 있다.
도 8b는 간단한 첫 번째 예를 보여준다. 여기서, 우측/RR을 위한 상기 선택 비트(110)가 설정되어, 상기 포트(38b)가 판독될 예정이라는 것을 지시한다. 도 8c는 간단한 두 번째 예를 보여준다. 여기서, 우측/WR을 위한 상기 선택 비트(110)가 설정되어, 상기 포트(38b)가 기록될 예정이라는 것을 지시한다.
종래의 기술에 따르면, 오직 하나의 선택 비트(110)만이 인에이블되어 임의의 주어진 시간에 단일 포트(38) 및 단일 동작(판독 또는 기록)을 구체화한다. 다중의 하이 상태 비트들이 이후 에러 상태(error condition)로써 디코딩된다. 그러나, 여기에 제시된 새로운 접근법은 이러한 규칙을 따르지 않는다. 오히려, 상기 포트들(38)에 대한 상기 선택 비트들(110) 중 하나 이상이 동시에 유리하게 인에이블되어, 다중의 판독 및/또는 기록 연산들을 요청한다. 이와 같은 경우, 상기 데이터는 상기 새로운 데이터가 제시된다는 것을 지시하는 신호를 포함하여, 상기 모든 포트들(38) 상에 제시된다.
도 8d-f는 다중 판독 및/또는 기록 연산들의 일부 예시들을 보여준다. 도 8d는 CPU(12e) 내의 레지스터(40)가 CPU(12b)로부터의 판독 및 CPU(12a)로의 기록을 동시에 구체화할 수 있는 방법을 보여준다. 도 8e는 CPU(12b)로부터의 판독 및 CPU(12c)로의 기록을 동시에 구체화할 수 있는 방법을 보여준다. 그리고, 도 8f는 CPU(12b)로부터의 판독 및 CPU(12a)와 CPU(12c) 중 하나로의 기록을 구체화하는 방법을 보여준다 (예고(foreshadowing)되는 바와 같이, 도 8d-f를 데이터 전송로가 화살표 132 및 134로 나타난 도 9와 비교할 수 있다).
실제, 다중 기록 연산 동안, 상기 CPU(12e)는 상기 데이터를 제시하고, 자신 이 상기 타겟 CPU들(12a, 12b, 12c 또는 12d) 중 하나 또는 다수와 공유하는 상기 버스들(16) 상에서 상기 기록 라인들(20)을 '하이' 상태로 설정할 것이다. 상기 소스 CPU(12e)는 이후 자신이 상기 데이터가 판독되었음을 지시하는 신호를 수신할 때까지 기다릴 것이다. 추측상, 일부 최종 지점에서, 상기 타겟 CPU들(12a, 12b, 12c 또는 12d) 중 하나 또는 다수가 CPU(12e)와 공유하는 상기 버스(16) 상에서 자신들의 각 판독 라인(18)을 '하이'상태로 설정한다. 타겟 CPU(12)는 이후, 상기 데이터를 형식적으로 판독하고, CPU(12e)와 공유하는 상기 버스(16) 상에서 상기 판독 라인(18) 및 기록 라인(20) 둘 다를 '로우'상태로 풀링하여, CPU(12e)로부터 상기 데이터의 수신을 확인(acknowledge)한다.
도 9는 도 7 및 8d-f 에서 보여진 상기 다중 기록 접근(multiple-write approach) 방법이 하나의 데이터 워드(120) 안에 명령어를 4개까지 포함할 수 있는 능력과 특수하게 결합하는 방법을 보여주는 개략적인 블록도이다. 각 명령어는 전형적으로 5비트이고, 따라서 18 비트 폭을 지닌 상기 데이터 워드(120)는 대략 3개의 명령어들을 저장한다. 이후, 마지막 명령어는 겨우 3비트가 될 수 있지만 그것은 많은 명령어들에 있어서 충분하다. 이에 대한 주목할 만한 유리한 측면은 매우 효율적인 데이터 전송 메커니즘들을 사용하도록 허락한다는 점이다.
하기에서, @는 패치, !는 저장, 그리고 'p'는 상기 '프로그램 카운터' 또는 'P' 레지스터(40c)를 지칭한다. @p+ 및 !p+ 에서의 상기 '+'는, 만일 다른 레지스터 또는 포트를 어드레싱할 경우 상기 레지스터 컨텐츠가 증가하지 않는다는 것을 제외하고, 실행 후 상기 레지스터 내에서의 메모리 어드레스에 대한 증가를 의미한 다. 따라서, 상기 후자의 경우들에 있어서의 상기 '+'는 상기 명령어들을 정상의 @p 및 !p 명령어들이라기 보다는 '특별한(special)' 명령어로 차별화한다.
도 9는 데이터를 하나의 CPU(12)로부터 다른 CPU로 데이터를 전송하기 위한 단일 명령어 시퀀스 프로그램이 상기 데이터를 판독 및 기록하기 위해 사용되는 상기 P레지스터(40c)와 함께 단일 18 비트 데이터 워드(120) 내에 포함될 수 있는 방법을 보여주는 예이다. 여기서, "@p+"는 '슬롯 0'(54a) 내에서 로딩되는 명령어(122)이다. 이는 상기 'P' 레지스터(40c) 내에서 특정된 현재의 어드레스로부터 이후의 18 비트 데이터 워드(120)를 패치하고, 상기 데이터 워드(120)를 상기 데이터 스택(34) 상으로 푸시(push)하는 리터럴(literal) 연산이다. [그리고, 일반적으로 상기 어드레스가 레지스터 또는 포트용일 경우 이것이 행해지지 않는다는 것을 제외하고, 상기 'P'레지스터(40c) 내의 상기 어드레스를 증가시킨다. 여기서 상기 'P'레지스터(40c) 내부의 상기 어드레스 비트(108)는 포트들이 현재 특정되고 있는 중이라는 것을 지시해 줄 것이다.] "."는 '슬롯 1'(54b) 내에서 로딩되는 명령어(124)이다. 이는 아무것도 하지 않는 단순한 무연산 (no operation)이다. 다음, "!p+"는 '슬롯 2'(54c) 내에 로딩되는 명령어(126)이다. 이는 상기 탑 데이터 워드(120)를 상기 데이터 스택(34)으로부터 인출(pop)하여, 상기 18 비트 데이터 워드(120)를 상기 'P'레지스터(40c) 내부에서 특정되는 현재의 어드레스로 기록한다. 상기 'P'레지스터(40c) 내에서 특정되는 상기 어드레스가 변화되지 않았을 경우, 그것은 다른 주변 CPU들이 접근될 수 있도록 함수적으로 야기시킨다. 마지막으로, "unext"는 '슬롯 3'(54d) 내에서 로딩되는 명령어(128)이다. 이는 상기 리턴 스 택(28)의 상부(top)가 '0'인지의 여부에 따라 다르게 연산하는 마이크로 넥스트(micro-next) 연산이다. 상기 리턴 스택(28)이 '0'이 아닐 경우, 상기 마이크로 넥스트는 상기 리턴 스택(28)이 감소하도록 하고, 실행을 위해 현재 저장된(cached) 데이터 워드(120)의 '슬롯 0'(54a) 내의 명령어에서 지속되도록 한다 (즉, 본 예에서는 다시 명령어(122)에서이다). 특히, 여기서 상기 마이크로 넥스트를 사용하는 것이 패치될(to be fetched) 새로운 데이터 워드(120)를 요구하지 않는다는 것을 주지하라. 대조적으로, 상기 리턴 스택(28)이 '0'일 경우, 상기 마이크로 넥스트는 이후의 데이터 워드(120)를 상기 'P'레지스터(40c) 내에서 특정된(specified) 현재의 어드레스로부터 패치하고, 상기 새로운 데이터 워드(120)의 상기 '슬롯 0'(54a) 내부의 상기 명령어에서 실행이 시작되도록 한다.
이러한 특별 예시를 위해, 상기 'P'레지스터(40c)는 '101100000b'와 함께 로딩될 수 있고, 상기 리턴 스택(28)의 상부(top)는 101b(십진수 5: 5 decimal)를 포함할 수 있다. 상기 'P'레지스터(40c)는 '101100000b'(예를 들어, 도 8a, 8b 참조)를 포함하기 때문에, 여기서 명령어(122) 내의 상기 "@p+"는 CPU(12e)가 CPU(12b)로부터 이후의 데이터 워드(120)를 판독하여, 상기 데이터 워드(120)를 상기 데이터 스택(34) 상으로 푸시하도록 지시한다. 그러나, 상기 'P'레지스터(40c) 내의 상기 어드레스는 포트용이기 때문에 증가하지 않는다. 여기서, 명령어(124) 내의 상기 "." 무연산은 현재 데이터 워드(120)의 18 비트까지를 채울 수 있는 필러(filler)이다. 상기 'P'레지스터(40c)는 여전히 '101100000b'를 포함하기 때문에, 여기서 명령어(126) 내부의 상기 '!p+'는 CPU(12e)가 상기 탑 데이터 워 드(120)(명령어(122)에 의해 데이터 스택에 막 입력된 데이터 워드)를 상기 데이터 스택(34)으로부터 인출(pop)하여, 상기 데이터 워드(120)를 (포트 38b를 통하여) CPU(12a)에 기록하도록 지시한다. 다시, 상기 'P'레지스터(40c) 내부의 상기 어드레스는 포트용이기 때문에 증가하지 않는다. 이후, 명령어(128) 내부의 상기 'unext'는 상기 리턴 스택(28)이 100b(십진수 4)로 감소하도록 하고, 실행을 위해 명령어(122)에서 지속하도록 한다. 그리고 명령어들(122, 124, 126, 128) 내부의 상기 단일 워드 프로그램은, 상기 리턴 스택(28)을 '011b, 010b, 001b'로 감소시켜 결국에는 000b(십진수 0)로 감소시키고, 이후의 데이터 워드(120)를 CPU(12b)로부터 패치하고, 상기 새로운 데이터 워드(120)의 '슬롯 0'(54a) 내부의 상기 명령어를 실행하는 방법으로 지속된다(continues).
요약하면, 본 예에서의 상기 'P'레지스터(40c)는 소스(source) 및 목적(destination) 장치(포트들 38d, 38b 및 CPUs 12b,12a) 둘 다를 특정하는(specify) 하나의 어드레스 값을 가지고 로딩되고, 상기 리턴 스택(28)은 반복 카운트(5)를 가지고 로딩되었다. 이후, 다섯 개의 데이터 워드들(120)이 CPU(12e)를 통해 효율적으로 전송되고(파이프라이닝 되고), 이후 CPU(12b)에 의해 또한 제공된 6번째 데이터 워드(120)의 '슬롯 0'(54a) 내의 상기 명령어에서 지속된다.
상기 간단하지만 격조높은(elegant) 방법을 사용함으로써 이외의 다양한 장점들을 얻을 수 있다. 예를 들어, 상기 'A'레지스터(40a) 및 'B'레지스터(40b)는 사용될 필요가 없고, 따라서 다른 데이터 목적을 위해 CPU(12e)에 의해 사용될 수 있다. 이에 수반하여, 데이터 전송을 수행시 포인터 스와핑(pointer swapping(trashing))이 또한 제거될 수 있다.
예를 들어, 데이터 파이프라이닝을 위한 종래의 소프트웨어 루틴(routine)은 일부 지점에서(at some point) 입력 포트로부터 데이터를 읽고, 다른 지점에서 출력 포트에 데이터를 기록한다. 이를 위해, 각 입력 및 출력 포트들로의 포인터들 이외에도 메모리 내부로의 적어도 하나의 포인터가 필요할 것이다. 상기 포트들이 서로 다른 어드레스들을 구비하고 있기 때문에, 여기서 프로세싱하기 위한 가장 직접적인 방법으로, 상기 입력 포트 어드레스를 리터럴(literal) 명령어를 가지고 스택 상에 로딩시키고, 상기 어드레스를 어드레싱 레지스터 내부에 저장(put)하고, 상기 입력 포트로부터 판독을 수행하고, 이후 상기 출력 포트의 상기 어드레스를 리터럴 명령어를 가지고 상기 스택 상에 로딩시키고, 상기 어드레스를 어드레싱 레지스터 내부에 저장하고, 상기 출력 포트로 기록을 실행하는 방법을 들 수 있다.
본 접근 방법에서의 상기 두 개의 리터럴 로드들(literal loads)은 각각 4개의 주기(cycle)를 지니며, 상기 두 개의 레지스터 집합 명령어들은 각각 1개의 주기를 지닐 것이다. 즉, 상기 루프 내에서 상기 입력 및 출력 포인터들을 설정하기 위해 소비되는 총 주기 수는 10개이다. 게다가, 상기 루프 내에서 메모리의 세 개의 워드들이 요구되기 때문에, 그와 같은 포인터 스와핑이 필요할 경우, 별도의 벌칙(penalty)이 있고, 이로 인해 단일 18 비트 워드 안에 포함된 루프의 사용을 허락하지 않는다. 따라서, 본 예에서의 명령어 루프는 메모리 접근을 갖는 분기(branch)를 요구할 것이고, 이는 심화된 오버헤드의 4개의 주기를 더하고, 전체 포인터 스와프 및 루프 오버헤드를 적어도 14개의 주기로 만든다.
그러나, 대조적으로, 다중 포트 어드레싱이 상기 CPU(12) 내에서 가능하기 때문에, 상기 입력 포트(38) 및 출력 포트(38) 둘 다를 선택하는 상기 어드레스는 입출력 루프 밖에서 로딩될 수 있고, 입력 및 출력용으로 사용될 수 있다. 본 접근 방법은, 오직 하나의 주변 장치로부터의 데이터가 다중 포트 판독 동안 판독되고, 오직 하나의 주변장치가 다중 포트 기록 동안 판독하기 때문에 적용된다. 따라서, 일반적으로 상기 입력 및 출력 포인터들을 설정하는 데 소비된 루프 안의 14 주기 오버헤드는 필요하지 않다. 상기 루프는 판독 명령어 및 기록 명령어를 여전히 지니고 있지만, 상기 판독 명령어 및 기록 명령어 둘 다는 동일 포인터를 사용할 수 있다. 따라서 상기 루프는 변할 필요가 없다.
이것은 상기 다중 포트 기록 방법의 사용이 일부 형태의 입출력 루프들의 오버헤드를 14주기 만큼(또는 이상) 감소시킬 수 있음을 의미한다. 본 발명가들의 관측에 따르면, 최상의 경우에 있어서, 이는 CPU(12)의 프로세싱 루프 내에서 23주기를 6주기로 감소시킬 수 있도록 한다. 한 주기가 대략 1 나노초를 차지하는 상황에서, 이는 효과적인 프로세서 속도에서 43MHz 에서 167MHz 로의 증가를 의미하고, 이는 상당한 발전을 의미한다.
간략히 계속 설명하여, 도 8f와 도 9는 다중 기록들이 심지어 단일 워드 프로그램들을 가지고 어떻게 실행될 수 있는가를 보여준다. 여기서, 상기 CPU(12e)는 CPU(12b)로부터 판독하여, CPU(12a) 또는 CPU(12c)에 기록한다. 실제로, 여기서의 상기 파이프라이닝은 첫 번째 유효한 CPU(12a) 또는 CPU(12c)이다. 이는 상기 CPU(12)들 내에서 가능한 상기 부가된 융통성(added flexibility)을 보여주고, 본 발명에 따르는 CPU(12)들이 지금까지 너무 어렵거나 비실용적이라고 여겨진 방법을 사용하여 유용해지는 법을 보여주는 단지 하나의 가능한 예시이다.
요약하면, 상기 CPU(12)들은 판독 및 포트들(38)로의 점핑(jumping)을 다루어야 한다. 다중 포트 어드레스로부터의 판독, 또는 다중 포트 어드레스로의 점핑에 있어서, 데이터 또는 명령어가 얻어지는 'WHICH' 포트(38)는 탐색(find out)을 위해 시행되고 있는 중인 명백한 코드 없이 알려지지 않는다. (가장 빠른 방법은 두 개의 CPU(12)들에 대한 동일한 상기 포트들(38)에 의존한다.) 일반적으로, 다른 데이터 또는 코드가 다른 포트들로부터 올 수 있기 때문에, 이는 피해야 할 문제라고 간주되어 왔다. 그러나, 가정된 협력 환경(cooperative environment postulated)에서, 본 발명가들은 모든 것을 이익으로 전환하는 방법에 대한 모색을 해왔다. 다음은 그와 같은 경우이다.
만일, CPU(12)가 다중 포트 어드레스로부터 실행을 하고, 상기 어드레싱된 모든 주변 CPU(12)들이 공동으로 기록하고 있는 중이라면(예를 들어, 동기화), 서로 다른 CPU(12)들이 상기 리터럴 데이터를 제공하는 동안, 하나의 주변 CPU(12)가 상기 명령어 스트림을 제공할 수 있다. 상기 리터럴 패치 옵코드(opcode: @p+)는 상기 'P'레지스터 (40c) 내부의, 서로 다른 주변 CPU(12)들에 의해 선택적으로 만족될 수 있는 (모든 리터럴이 이를 행할 필요가 있는 것은 아니다) 상기 다중 포트 어드레스로부터 판독을 야기시킨다. 이는 상기 주변 CPU(12)들 사이의 광범위의 '협력(cooperation)'을 요구할 뿐이다.
그러나, 하나의 이웃 CPU(12)가 판독하고 하나의 CPU(12)가 기록하고 있는 중인 파이프라이닝 다중 포트 사용에 있어서, 동일 다중 포트 어드레스로의 판독 및 기록은 문제점들을 야기하지 않는다. 상기 다중 포트 어드레스로의 점핑 및 상기 리터럴 저장 옵코드(!p+)에 대한 실행은 상기 'P'레지스터(40c)가 100% 안전하게 두 개의 포트들(38)을 어드레싱하도록 한다. 이는 로컬 용도인(for local use) 상기 'A'레지스터(40a)와 'B'레지스터(40b) 둘 다를 자유롭게 한다.
다양한 부가적 변형들이 본 발명의 가치 또는 범위를 바꾸지 아니하고 상기 실시예들에 이루어질 수 있다. 예를 들어, 본 발명이 여기에 판독 명령어 또는 기록 명령어의 관점에서 서술되었을 동안, 실제 관행상 하나 이상의 판독형 명령어 및/또는 하나 이상의 기록형 명령어가 있을 수 있다. 단지 하나의 예로써, 본 발명의 일 실시예에 있어서, 상기 레지스터를 증가시키는 하나의 기록 명령어와, 증가시키지 않는 다른 기록 명령어들이 있다. 유사하게, 기록 명령어들이 본 고에서 이전에 서술된 바와 같이, 어느 레지스터(40)가 통신 포트들(38) 또는 기타를 선택하기 위해 사용되는지에 따라 달라질 수 있다. 또한 상기 컴퓨터들(12)의 설계자에 의해 대안적(alternative) 판독 행위들에 대한 유용한 선택으로 여겨지는 변형예들에 따라서만, 서로 다른 많은 판독 명령어들이 있을 수 있다.
유사하게, 본 발명의 상기 실시예가 단일 다이(14) 상(on)에 있는 어레이(10) 내부의 컴퓨터들(12) 사이의 통신과 관련하여 여기세 기술된 동안, 컴퓨터(12)와 컴퓨터(12)의 전용 메모리 사이, 또는 어레이(10) 내부의 컴퓨터(12)와 외부 장치(입출력 포트, 또는 기타를 통해) 사이의 통신과 같은 다른 장치 간(inter-device) 통신을 수행하기 위해, 동일 원칙 및 방법이 사용될 수 있거나 사용을 위해 변경될 수 있다. 실제로, 일부 애플리케이션들이 상기 어레이들 사이의 통신에 잠재적으로 적용되고 있는 중인 상술한 장치 간 통신과 함께, 어레이들을 필요로 한다고 기대되고 있다.
본 발명의 컴퓨터 어레이(10) 및 컴퓨터(12)의 구체적인 예들이 여기에서 기술된 동안, 아직 구상되지(envisioned) 않은 것들을 위한 많은 애플리케이션들이 있을 것으로 기대된다. 실제로, 본 발명의 방법 및 장치가 다양한 용도에 적용될 수 있다는 것이 본 발명의 장점들 중 하나이다.
본 발명은 또한 적합한 컴퓨터 상에서 구동시, 상기 컴퓨터가 상술한 본 발명의 방법들을 구현하도록 하는 컴퓨터 프로그램을 제공한다. 상기 프로그램은 저장 매체 또는 신호인, 캐리어 상에 존재할 수 있다. 상기 저장 매체는 기록 매체 또는 다른 예시들 가운데 보여진 메모리 장치일 수 있다.
상술한 모든 것들은 단지 본 발명의 유효한 실시예들의 일부 예시들일 뿐이다. 당업자라면 본 발명의 정신 및 범위를 벗어나지 않고서 이외의 많은 변형 및 수정이 이루어질 수 있음을 쉽게 알 수 있을 것이다. 따라서, 여기 기재된 본 고(disclosure)는 제한적으로 의도되지 아니하며, 첨부 클레임들이 본 발명의 전체 범위를 포함하도록 해석될 것이다.
본 발명의 실시예들에 대한 목적 및 장점들은 다음의 첨부된 도면들과 관련된 하기의 상세 설명으로부터 명백해질 것이다.
도 1은 본 발명에 따르는 컴퓨터 어레이의 도표이다.
도 2는 도 1의 상기 컴퓨터들의 서브셋(subset)의 상세 도표 및 도 1의 상호접속(interconnecting) 데이터 버스들에 대한 보다 상세한 도면이다.
도 3은 도 1 및 2의 상기 컴퓨터들 중 하나에 대한 일반적인 배치를 보여주는 블록도이다.
도 4는 도 1 및 2의 상기 컴퓨터들 내에서 사용가능한 명령어 워드(instruction word)에 대한 도식 대표(diagrammatic representation)이다.
도 5는 도 3의 슬롯 시퀀서(sequencer)의 개략적 대표도이다.
도 6은 본 발명에 따르는 방법의 일 예를 보여주는 순위표(flow diagram)이다.
도 7은 본 발명에 따르는 일 실시예를 설명하기 위해 사용되는 도 1 및 2의 상기 컴퓨터 어레이의 섹션을 보여주는 상세도(detailed diagram)이다.
도 8a 내지 8f는 도 7의 섹션 내부의 상기 컴퓨터들 내에서 사용가능한 포트 어드레스 디코딩에 대한 개요를 보여주는 테이블도(table diagram)이다.
도 9는 도 7 및 8d-f에서 보여진 상기 다중 기록 접근(multiple-write approach) 방법이 단일 명령어 워드 내부에 다중 명령어들을 포함하는 능력과 특수하게 결합하는 방법을 보여주는 개략적인 블록도이다.
상기 도면들 내에서, 동일 또는 유사 엘리먼트들 또는 단계들을 지칭하기 위해 유사 참조번호들이 사용된다.

Claims (16)

  1. 컴퓨터를 다른 장치들(other devices)과 연결시키기 위한 다수의 데이터 경로들; 및
    어느 비트들이 동시에 설정되어 있는지에 기초하여 상기 컴퓨터가 상기 다수의 데이터 경로들 중 다수를 통하여 통신할 수 있도록, 상기 다수의 데이터 경로들 각각을 어드레싱 할 수 있도록 프로그래밍적으로 설정될 수 있는 비트들을 지닌 레지스터를 포함하는 컴퓨터.
  2. 제 1항에 있어서, 상기 레지스터는 상기 다른 장치들의 예들(instances)을 상기 컴퓨터가 데이터를 판독할 수 있는 소스 장치들로 나타내고, 상기 다른 장치들의 예들을 상기 컴퓨터가 데이터를 기록할 수 있는 목적(destination) 장치들로 각각 나타내는 비트들을 구비하여, 상기 레지스터 내부의 단일 어드레스가 상기 컴퓨터에 의해 통신되는 데이터를 위한 소스 장치 및 목적 장치 둘 다를 나타내도록 하는 것을 특징으로 하는 컴퓨터.
  3. 제 1 또는 2항에 있어서, 상기 컴퓨터는 스택 저장 엘리먼트들을 포함하고,
    상기 컴퓨터는 제 1의 상기 다른 장치로부터 데이터를 판독하고, 상기 데이터를 제 2의 상기 다른 장치에 기록하기 위한 상기 레지스터 및 상기 스택 저장 엘리먼트들만을 이용하는 것을 특징으로 하는 컴퓨터.
  4. 제 1, 2 또는 3항에 있어서, 상기 컴퓨터는 다중 명령어들을 포함하기에 충분한 길이를 갖는 명령어 워드들을 사용하고, 상기 데이터 경로 상에 제시된 상기 명령어 워드 내에 제시된 상기 명령어들의 예들을 실행할 수 있고,
    상기 컴퓨터는 제 1의 상기 다른 장치로부터 데이터를 판독하고, 상기 데이터를 제 2의 상기 다른 장치에 기록하기 위해 상기 레지스터, 상기 스택 저장 엘리먼트들, 및 상기 단일 명령어를 이용하는 프로그램만을 이용하는 것을 특징으로 하는 컴퓨터.
  5. 제 1, 2, 3 또는 4항에 있어서, 상기 컴퓨터는 상기 레지스터에 의해 특정되는 제 1의 상기 데이터 경로를 통하여 상기 다른 장치로부터 데이터를 판독하고,
    상기 컴퓨터는 상기 레지스터에 의해 현재 특정되고 있는 중인 제 2의 상기 데이터 경로를 통해 다른 상기 다른 장치에 데이터를 기록하는 것을 특징으로 하는 컴퓨터.
  6. 제 5항에 있어서, 상기 컴퓨터는 상기 레지스터에 의해 현재 특정되고 있는 중인(currently specified) 다수개의 상기 다른 장치들 중 하나로부터 데이터를 판독할 수 있고,
    상기 컴퓨터는 상기 레지스터에 의해 현재 특정되고 있는 중인 다수개의 상기 다른 장치들로 데이터를 기록할 수 있고, 및
    상기 컴퓨터는 상기 데이터를 제공하는 제 1의 상기 다른 장치로부터 판독하고, 상기 데이터를 수신하는 제 2의 상기 다른 장치에 기록하는 것을 특징으로 하는 컴퓨터.
  7. 상기 항들 중 임의의 한 항에 있어서,
    상기 컴퓨터가 판독할 수 있는 상기 다른 장치들을 정의하는 상기 레지스터 내의 상기 비트들은 판독 비트들이고,
    상기 컴퓨터가 기록할 수 있는 상기 다른 장치들을 정의하는 상기 레지스터 내의 상기 비트들은 기록 비트들이고,
    상기 컴퓨터는 해당하는 상기 판독 비트들이 설정되었을 때, 상기 제 2의 다른 장치들 모두로부터 판독하려고 시도하고, 및
    상기 컴퓨터는 해당하는 상기 기록 비트들이 설정되었을 때, 상기 제 2의 다른 장치들 모두에 기록하려고 시도하는 것을 특징으로 하는 컴퓨터.
  8. (a)다른 장치들(other devices) 중 제 1 다른 장치가 데이터를 컴퓨터에 기록하려 하고 있는 중임을 나타내는 신호에 대해, 상기 컴퓨터를 상기 다른 장치들과 연결하는 다수의 데이터 경로들을 모니터링 하는 단계;
    (b)상기 제 1 다른 장치로부터 상기 데이터를 판독하는 단계; 및
    (c)상기 다수의 데이터 경로들을 어드레싱 할 수 있도록 프로그래밍적으로 설정될 수 있는 비트들을 지닌 레지스터에 기초하여, 상기 데이터를 하나의 상기 다른 장치에 기록하는 단계를 포함하는 컴퓨터 데이터 통신을 위한 프로세스.
  9. 제 8항에 있어서, 상기 (a)단계는 상기 레지스터 내에 설정된 각각의 비트들을 구비한 상기 데이터 경로들만 모니터링하는 단계를 포함하여, 상기 레지스터 내부의 단일 어드레스가 상기 컴퓨터에 의해 통신되는 데이터를 위한 상기 소스 장치 및 상기 목적 장치 둘 다를 나타내도록 하는 것을 특징으로 하는 컴퓨터 데이터 통신을 위한 프로세스.
  10. 제 8 또는 9항에 있어서, 상기 (b)단계는 상기 레지스터 내에 설정된 각각의 비트들을 구비한 상기 다른 장치들 모두로부터 판독하기를 시도하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 데이터 통신을 위한 프로세스.
  11. 제 8, 9 또는 10항에 있어서, 상기 (c)단계는 상기 레지스터 내에 설정된 각각의 비트들을 구비한 상기 다른 장치들 모두에 기록하기를 시도하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 데이터 통신을 위한 프로세스.
  12. 제 8, 9, 10 또는 11항에 있어서, 상기 (a)단계는 제 1의 상기 신호에 대한 수신에 응답하는 상기 모니터링 단계를 정지하는 단계를 포함하여, 상기 판독들이 상기 제 1의 신호와 연관된 하나의 상기 다른 장치로부터 이루어지고 있음을 확인(insuring) 하는 것을 특징으로 하는 컴퓨터 데이터 통신을 위한 프로세스.
  13. 제 8, 9, 10, 11 또는 12항에 있어서, 상기 데이터는 일련의 데이터 워드들을 포함하고,
    상기 (b)단계는 상기 데이터 각각을 하나의 상기 데이터 경로로부터 직접 판독하여 상기 컴퓨터 내의 스택 저장 엘리먼트 내부에 저장하는 단계를 포함하고,
    상기 (c)단계는 상기 스택 저장 엘리먼트로부터 직접 나온 상기 데이터 각각을 하나의 상기 데이터 경로에 직접 기록하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 데이터 통신을 위한 프로세스.
  14. 제 8 내지 13항 중 어느 한 항에 있어서, 상기 컴퓨터는 다중 명령어들을 포함하기에 충분한 길이를 갖는 명령어 워드들을 이용하고,
    상기 (b) 및 (c) 단계는 상기 레지스터, 상기 스택 저장 엘리먼트들, 및 하나의 상기 명령어로 실행되는 프로그램만을 이용하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 데이터 통신을 위한 프로세스.
  15. 제 14항에 있어서, 하나의 상기 데이터 경로 상에서 하나의 상기 명렁어 워드를 수신하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 데이터 통신을 위한 프로세스.
  16. 적합한 컴퓨터 상에서 구동시, 상기 컴퓨터가 상기 청구항 제8항 내지 제15 항 중 어느 하나의 프로세스를 구현시키도록 하는 컴퓨터 프로그램.
KR1020080039577A 2007-04-27 2008-04-28 데이터 통신 KR20080096484A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/741,649 US7555637B2 (en) 2007-04-27 2007-04-27 Multi-port read/write operations based on register bits set for indicating select ports and transfer directions
US11/741,649 2007-04-27

Publications (1)

Publication Number Publication Date
KR20080096484A true KR20080096484A (ko) 2008-10-30

Family

ID=39591084

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080039577A KR20080096484A (ko) 2007-04-27 2008-04-28 데이터 통신

Country Status (7)

Country Link
US (1) US7555637B2 (ko)
EP (1) EP1986093A1 (ko)
JP (1) JP2009009550A (ko)
KR (1) KR20080096484A (ko)
CN (2) CN101295242A (ko)
TW (1) TW200905556A (ko)
WO (1) WO2008133980A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11791984B2 (en) 2019-03-25 2023-10-17 Micron Technology, Inc. Local ledger block chain for secure updates

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2398446B (en) * 2003-02-12 2006-06-07 Snell & Wilcox Ltd Image processing
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
US7904695B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US7904615B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US11397814B2 (en) * 2019-03-25 2022-07-26 Micron Technology, Inc. Local ledger block chain for secure electronic control unit updates

Family Cites Families (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3757306A (en) 1971-08-31 1973-09-04 Texas Instruments Inc Computing systems cpu
US4107773A (en) 1974-05-13 1978-08-15 Texas Instruments Incorporated Advanced array transform processor with fixed/floating point formats
US4215422A (en) 1978-05-22 1980-07-29 International Business Machines Corporation Selectively modifiable phrase storage for a typewriter
US4298932A (en) 1979-06-11 1981-11-03 International Business Machines Corporation Serial storage subsystem for a data processor
US4462074A (en) 1981-11-19 1984-07-24 Codex Corporation Do loop circuit
US4821231A (en) 1983-04-18 1989-04-11 Motorola, Inc. Method and apparatus for selectively evaluating an effective address for a coprocessor
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 デ−タ伝送装置
ATE94999T1 (de) 1984-11-21 1993-10-15 Harris Corp Mikroprozessor fuer forth-aehnliche sprache.
US4984151A (en) 1985-03-01 1991-01-08 Advanced Micro Devices, Inc. Flexible, next-address generation microprogram sequencer
EP0227319A3 (en) 1985-12-26 1989-11-02 Analog Devices, Inc. Instruction cache memory
US5053952A (en) 1987-06-05 1991-10-01 Wisc Technologies, Inc. Stack-memory-based writable instruction set computer having a single data bus
US5029124A (en) * 1988-05-17 1991-07-02 Digital Equipment Corporation Method and apparatus for providing high speed parallel transfer of bursts of data
DE3937807C2 (de) 1988-11-19 1995-04-06 Vaillant Joh Gmbh & Co Verfahren zum Übertragen von Daten zwischen zwei sendenden und empfangenden Stationen
JPH0769791B2 (ja) 1988-12-21 1995-07-31 三菱電機株式会社 マイクロプロセッサ
DE3901457A1 (de) 1989-01-19 1990-08-02 Strahlen Umweltforsch Gmbh Verfahren zur adressbereichsueberwachung bei datenverarbeitungsgeraeten in echtzeit
CA2019299C (en) 1989-06-22 2002-01-15 Steven Frank Multiprocessor system with multiple instruction sources
US5440749A (en) 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
EP0428770B1 (de) 1989-11-21 1995-02-01 Deutsche ITT Industries GmbH Datengesteuerter Arrayprozessor
DE4019040A1 (de) 1990-06-14 1991-12-19 Philips Patentverwaltung Multirechnersystem
US5390304A (en) 1990-09-28 1995-02-14 Texas Instruments, Incorporated Method and apparatus for processing block instructions in a data processor
US5826101A (en) 1990-09-28 1998-10-20 Texas Instruments Incorporated Data processing device having split-mode DMA channel
US5590345A (en) 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
JP3102027B2 (ja) 1990-11-20 2000-10-23 日本電気株式会社 ループ制御のネスティング管理機構
US5218682A (en) 1991-05-10 1993-06-08 Chrysler Corporation Two-way handshake circuit and method for communication between processors
DE69229657T2 (de) 1991-06-19 1999-12-02 Hewlett Packard Co Co-Prozessor unterstützende Architektur für einen Prozessor, der keine Zusatzprozessorfähigkeit hat
EP0547247B1 (en) 1991-07-08 2001-04-04 Seiko Epson Corporation Extensible risc microprocessor architecture
CA2078315A1 (en) 1991-09-20 1993-03-21 Christopher L. Reeve Parallel processing apparatus and method for utilizing tiling
JPH0581216A (ja) 1991-09-20 1993-04-02 Hitachi Ltd 並列プロセツサ
GB2267588B (en) 1992-06-06 1996-03-20 Motorola Inc FIFO memory system
ES2143490T3 (es) 1992-08-12 2000-05-16 Advanced Micro Devices Inc Decodificador de instrucciones.
US5473271A (en) 1993-02-09 1995-12-05 Dallas Semiconductor Corporation Microprocessor output driver
CA2129882A1 (en) 1993-08-12 1995-02-13 Soheil Shams Dynamically reconfigurable interprocessor communication network for simd multiprocessors and apparatus implementing same
US5535417A (en) 1993-09-27 1996-07-09 Hitachi America, Inc. On-chip DMA controller with host computer interface employing boot sequencing and address generation schemes
US5893148A (en) 1994-03-03 1999-04-06 International Business Machines Corporation System and method for allocating cache memory storage space
US6173387B1 (en) 1994-05-11 2001-01-09 Intel Corporation Interleaved exchange in a network mesh
JPH0863355A (ja) 1994-08-18 1996-03-08 Mitsubishi Electric Corp プログラム制御装置及びプログラム制御方法
US5706491A (en) 1994-10-18 1998-01-06 Cyrix Corporation Branch processing unit with a return stack including repair using pointers from different pipe stages
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
US5727194A (en) 1995-06-07 1998-03-10 Hitachi America, Ltd. Repeat-bit based, compact system and method for implementing zero-overhead loops
EP0870226B1 (en) 1995-10-06 2003-05-21 Patriot Scientific Corporation Risc microprocessor architecture
US5854760A (en) 1995-11-10 1998-12-29 Nippon Telegraph And Telephone Corporation Two-dimensional PE array, content addressable memory, data transfer method and mathematical morphology processing method
US5752259A (en) 1996-03-26 1998-05-12 Advanced Micro Devices, Inc. Instruction cache configured to provide instructions to a microprocessor having a clock cycle time less than a cache access time of said instruction cache
US5784602A (en) 1996-10-08 1998-07-21 Advanced Risc Machines Limited Method and apparatus for digital signal processing for integrated circuit architecture
US5911082A (en) 1997-02-25 1999-06-08 Audio Digitalimaging Inc. Parallel processing building block chip
GB9704068D0 (en) 1997-02-27 1997-04-16 Sgs Thomson Microelectronics Trigger sequencing controller
US6003128A (en) 1997-05-01 1999-12-14 Advanced Micro Devices, Inc. Number of pipeline stages and loop length related counter differential based end-loop prediction
US6023753A (en) 1997-06-30 2000-02-08 Billion Of Operations Per Second, Inc. Manifold array processor
US6381682B2 (en) 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
US6101598A (en) 1997-11-14 2000-08-08 Cirrus Logic, Inc. Methods for debugging a multiprocessor system
US6085304A (en) 1997-11-28 2000-07-04 Teranex, Inc. Interface for processing element array
US6173389B1 (en) 1997-12-04 2001-01-09 Billions Of Operations Per Second, Inc. Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
US6112296A (en) 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Floating point stack manipulation using a register map and speculative top of stack values
KR100252136B1 (ko) 1997-12-29 2000-04-15 윤종용 디지털 신호 처리 칩에서의 반복 구문 실행 제어회로
US6219783B1 (en) 1998-04-21 2001-04-17 Idea Corporation Method and apparatus for executing a flush RS instruction to synchronize a register stack with instructions executed by a processor
US6449709B1 (en) 1998-06-02 2002-09-10 Adaptec, Inc. Fast stack save and restore system and method
US7028163B2 (en) 1998-06-22 2006-04-11 Samsung Electronics, Co., Ltd. Apparatus for controlling multi-word stack operations using a multi-bank stack in digital data processors
US6353880B1 (en) 1998-07-22 2002-03-05 Scenix Semiconductor, Inc. Four stage pipeline processing for a microcontroller
US6219685B1 (en) 1998-09-04 2001-04-17 Intel Corporation Method to detect IEEE overflow and underflow conditions
US6148392A (en) 1998-09-08 2000-11-14 Hyundai Electronics Industries Co., Ltd. Low power implementation of an asynchronous stock having a constant response time
EP0992896A1 (en) 1998-10-06 2000-04-12 Texas Instruments Inc. Pipeline protection
US6507649B1 (en) 1998-12-18 2003-01-14 Ericsson Inc. Mechanism and method for distributing ISUP stacks over multiple loosely coupled processors
SE514785C2 (sv) 1999-01-18 2001-04-23 Axis Ab Processor och metod för att exekvera instruktioner från flera instruktionskällor
FR2789501B1 (fr) 1999-02-09 2001-04-13 St Microelectronics Sa Procede et dispositif de reduction de la consommation d'un microcontroleur
US6427204B1 (en) 1999-06-25 2002-07-30 International Business Machines Corporation Method for just in-time delivery of instructions in a data processing system
NZ516680A (en) 1999-08-30 2004-01-30 Ip Flex Inc Program product for specifying an input and/or output interface of a processing unit independently of the timing of execution of the processing unit
US6665793B1 (en) 1999-12-28 2003-12-16 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for managing access to out-of-frame Registers
US6865663B2 (en) 2000-02-24 2005-03-08 Pts Corporation Control processor dynamically loading shadow instruction register associated with memory entry of coprocessor in flexible coupling mode
US6725361B1 (en) 2000-06-16 2004-04-20 Transmeta Corporation Method and apparatus for emulating a floating point stack in a translation process
GB2370381B (en) 2000-12-19 2003-12-24 Picochip Designs Ltd Processor architecture
DE10102202A1 (de) 2001-01-18 2002-08-08 Infineon Technologies Ag Mikroprozessorschaltung für tragbare Datenträger
US7155602B2 (en) 2001-04-30 2006-12-26 Src Computers, Inc. Interface for integrating reconfigurable processors into a general purpose computing system
US6938253B2 (en) 2001-05-02 2005-08-30 Portalplayer, Inc. Multiprocessor communication system and method
US6874079B2 (en) 2001-07-25 2005-03-29 Quicksilver Technology Adaptive computing engine with dataflow graph based sequencing in reconfigurable mini-matrices of composite functional blocks
WO2003019356A1 (en) 2001-08-22 2003-03-06 Adelante Technologies B.V. Pipelined processor and instruction loop execution method
JP3656587B2 (ja) 2001-10-01 2005-06-08 日本電気株式会社 並列演算プロセッサ、その演算制御方法及びプログラム
US6845412B1 (en) * 2001-11-07 2005-01-18 Lsi Logic Corporation Method and system for a host processor to broadcast data to instruction or data memories of several processors in a multi-processor integrated circuit
US6959372B1 (en) 2002-02-19 2005-10-25 Cogent Chipware Inc. Processor cluster architecture and associated parallel processing methods
US6948040B2 (en) 2002-05-17 2005-09-20 Samsung Electronics Co., Ltd. System and method for synchronizing a plurality of processors in a processor array
JP3509023B2 (ja) 2002-06-26 2004-03-22 沖電気工業株式会社 ループ制御回路及びループ制御方法
US7237045B2 (en) 2002-06-28 2007-06-26 Brocade Communications Systems, Inc. Apparatus and method for storage processing through scalable port processors
US6825843B2 (en) 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
JP3987784B2 (ja) 2002-10-30 2007-10-10 Necエレクトロニクス株式会社 アレイ型プロセッサ
US7079046B2 (en) * 2003-03-28 2006-07-18 Yokogawa Electric Corporation Multi-point data acquisition apparatus
US7613900B2 (en) 2003-03-31 2009-11-03 Stretch, Inc. Systems and methods for selecting input/output configuration in an integrated circuit
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
JP4610218B2 (ja) 2004-03-30 2011-01-12 ルネサスエレクトロニクス株式会社 情報処理装置
US7269805B1 (en) 2004-04-30 2007-09-11 Xilinx, Inc. Testing of an integrated circuit having an embedded processor
US7392366B2 (en) 2004-09-17 2008-06-24 International Business Machines Corp. Adaptive fetch gating in multithreaded processors, fetch control and method of controlling fetches
US7330964B2 (en) 2005-11-14 2008-02-12 Texas Instruments Incorporated Microprocessor with independent SIMD loop buffer
EP1821211A3 (en) 2006-02-16 2008-06-18 Technology Properties Limited Cooperative multitasking method in a multiprocessor system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11791984B2 (en) 2019-03-25 2023-10-17 Micron Technology, Inc. Local ledger block chain for secure updates

Also Published As

Publication number Publication date
WO2008133980A3 (en) 2008-12-24
EP1986093A1 (en) 2008-10-29
JP2009009550A (ja) 2009-01-15
CN101295242A (zh) 2008-10-29
US7555637B2 (en) 2009-06-30
US20080270648A1 (en) 2008-10-30
TW200905556A (en) 2009-02-01
CN101295241A (zh) 2008-10-29
WO2008133980A2 (en) 2008-11-06

Similar Documents

Publication Publication Date Title
JP2564805B2 (ja) 情報処理装置
JP3105223B2 (ja) マイクロコンピュータ,マイクロプロセッサおよびコア・プロセッサ集積回路用デバッグ周辺装置
US4112490A (en) Data transfer control apparatus and method
US5752071A (en) Function coprocessor
US5440747A (en) Data processor with control logic for storing operation mode status and associated method
US7904615B2 (en) Asynchronous computer communication
KR20080096484A (ko) 데이터 통신
US7904695B2 (en) Asynchronous power saving computer
KR20080099193A (ko) 데이터 및 명령어를 컴퓨터 내부로 로딩시키는 방법 및장치
KR100210205B1 (ko) 스톨캐쉬를 제공하기 위한 장치 및 방법
US7752422B2 (en) Execution of instructions directly from input source
US8468323B2 (en) Clockless computer using a pulse generator that is triggered by an event other than a read or write instruction in place of a clock
KR20080096485A (ko) 일련의 컴퓨터 내에서의 데이터 처리를 위한 시스템 및방법
US8380963B2 (en) Apparatus and method for enabling inter-sequencer communication following lock competition and accelerator registration
Leibson et al. Configurable processors: a new era in chip design
US7934075B2 (en) Method and apparatus for monitoring inputs to an asyncrhonous, homogenous, reconfigurable computer array
US20100325389A1 (en) Microprocessor communications system
WO2009128924A2 (en) Method and apparatus for serializing and deserializing
EP1821217B1 (en) Asynchronous computer communication
WO2007098024A2 (en) Allocation of resources among an array of computers
Becht et al. IBM z14: Advancing the I/O storage and networking channel adapter
JPS63163634A (ja) 命令フエツチ方式
Koltes et al. Circuit parallelism in haskell programs

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