KR19980032458A - 비동기 파이프라인 제어 회로 및 비동기 파이프라인을 구비하는 컴퓨터 메모리 - Google Patents

비동기 파이프라인 제어 회로 및 비동기 파이프라인을 구비하는 컴퓨터 메모리 Download PDF

Info

Publication number
KR19980032458A
KR19980032458A KR1019970050738A KR19970050738A KR19980032458A KR 19980032458 A KR19980032458 A KR 19980032458A KR 1019970050738 A KR1019970050738 A KR 1019970050738A KR 19970050738 A KR19970050738 A KR 19970050738A KR 19980032458 A KR19980032458 A KR 19980032458A
Authority
KR
South Korea
Prior art keywords
control circuit
output
circuit
pipeline
input
Prior art date
Application number
KR1019970050738A
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 KR19980032458A publication Critical patent/KR19980032458A/ko

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/08Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • G06F5/14Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations for overflow or underflow handling, e.g. full or empty flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3884Pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Transfer Systems (AREA)
  • Dram (AREA)
  • Shift Register Type Memory (AREA)
  • Advance Control (AREA)

Abstract

파이프라인을 비동기적으로 제어하는 장치가 개시되어 있다. 이 제어 회로는 제어 회로와 검출 회로가 교번하는 체인(an alternating chain of control circuits and detection circuits)을 포함한다. 이 체인내에서 충만 제어 회로가 공백 제어 회로에 선행할 때, 이것은 충만 제어 회로에 대응하는 데이터 저장 소자가 자신의 데이터를 공백 제어 회로에 대응하는 후속의 저장 소자로 전송해야 함을 나타내며, 검출 회로는 이동 신호(a move signal)를 발생시킨다. 이동 신호는 선행 제어 회로를 공백으로 설정하고 후속 제어 회로를 충만으로 설정함으로써, 선행 스테이지에서 후속 스테이지로 데이터 요소의 이동이 가능하도록 한다. 제어 회로는 비교적 단순하며 예측 가능한 신호 전파 시간을 가지므로, 공통 이동 신호(the common move signal)에 대한 두 개의 인접 제어 회로들의 상대적인 상호 작용은 긴밀하게 제어될 수 있다. 이 제어 회로는 상류형 파이프라인, 분기형 파이프라인, 병합형 파이프라인 등을 제어할 수 있다.

Description

비동기 파이프라인 제어 회로 및 비동기 파이프라인을 구비하는 컴퓨터 메모리
본 발명은 컴퓨터 파이프라인 제어 분야에 관한 것으로, 더 구체적으로는 파이프라인(pipelines)을 통해 데이터를 비동기적으로 전송하는 회로 구성에 관한 것이다.
파이프라인 프로세서는 널리 보급되어 있는 초고속 연산 기계 장치중 하나이다. 파이프라인 프로세서 또는 파이프라인은 데이터가 자신을 통과할 때 그 데이터상에 작용한다. 파이프라인을 가장 기초적으로 구현한 것이 FIFO(a first-in-first-out) 메모리인데, 이 FIFO 메모리에서는, 변하지 않은 데이터가 파이프라인 방식으로 하나의 스테이지(stage)에서 다음 스테이지로 카피(copied)된다.
파이프라인형 FIFO 메모리에서, 충만(full) 즉 점유(occupied) 스테이지에 후속하여 공백(empty) 즉 비점유(unoccupied) 스테이지가 뒤따를 때, 세 가지의 핵심 기능 즉, (1) 충만 스테이지에서 공백 스테이지로 데이터를 전송하는 기능과, (2) 공백 제어 상태를 충만으로 설정하는 기능과, (3) 충만 제어 상태를 공백으로 설정하는 기능을 수행하기 위한 논리가 필요하다. 이상적으로는, 데이터 요소들이 충만 스테이지에서 공백 스테이지로 가능한 빨리 이동되어져야 한다. 파이프라인 속도는 전술한 세 개의 동작들이 동시에 수행될 때 최대화된다. 예컨대 FIFO 메모리 같은 파이프라인을 통한 데이터 흐름은 클록에 의해 제어되는 것(동기형)일 수도 있고, 혹은 클록에 의해 제어되지 않는 것(비동기형)일 수도 있다. 클록 제어형 FIFO 메모리에서 데이터 요소들은 연속하는 스테이지들을 통상적으로 간격이 거의 없이 일렬로 통과하여 전진하는데, 이 때 각각의 스테이지는 정해진 개수의 클록 사이클(통상적으로 하나 또는 둘)을 취한다. 클록 제어형 FIFO는 클록에 의해 규정되는 정해진 시간 동안 요소들을 수신하여, 동일한 정해진 속도로 전달한다.
비동기 FIFO 메모리는 클록형 FIFO 메모리를 능가하는 현저한 설계 이점들을 가지는데, 그것은 각각의 스테이지가 단지 인접 스테이지와의 국부적인 통신만을 필요로 하면서 자체적인 속도(at its own pace)로 동작하기 때문이다. 전역적인 클록 분산과 관련한 오버헤드(overhead)를 피함으로써, 비동기 FIFO 메모리는 클록 제어형 FIFO 메모리보다 더 고속으로 동작할 수 있으며, 전력을 덜 소모할 수 있다.
도 1은 종래의 비동기 FIFO 메모리(50)의 개괄적인 구조를 도시하는 블록도이다. FIFO 메모리(50)는 입력 섹션(100)과 출력 섹션(102)을 포함한다. 입력 섹션(100)과 출력 섹션(102)의 사이에는 데이터 레지스터들(104, 105, 106, 107)이 접속되어 있고, 이 레지스터들은 FIFO 메모리를 통해 데이터 요소들을 저장 및 이동시킨다. 각각의 제어 회로(110 내지 113)는 데이터 레지스터들(104 내지 107)과 각기 대응하여 관련되어 있다.
입력 섹션(100)이 데이터 레지스터(104)내에 저장될 준비가 된 데이터 요소를 가질 때, 입력 섹션(100)은 제어 회로(110)의 상태(the status)를 검사한다. 만약 제어 회로(110)가 레지스터(104)가 공백(empty)임을 표시하면, 입력 섹션(100)은 데이터 요소를 레지스터(104)로 전송하고, 제어 회로(110)는 레지스터(104)가 충만(full)임을 표시하도록 상태를 변경시킨다. 만약 제어 회로(110)가 충만임을 나타내는 반면 제어 회로(111)는 공백임을 나타내면, 데이터 요소는 다음 레지스터(105)로 전송된다. 이와 동시에, 혹은 거의 동시에 제어 회로(110) 및 (111)의 상태가 변경되어, 이제는 제어 회로(110)가 공백임을 표시하는 반면 제어 회로(111)는 충만임을 나타낸다. 이런 방식으로, 진행하려는 스테이지가 충만 스테이지임을 발견할 때까지 데이터 요소는 FIFO 메모리(50)를 통해 전달될 것이다. 즉, 진행하려는 스테이지가 충만 스테이지이면, 데이터 요소는 정지하여, 후속 스테이지가 공백으로 되기를 기다린다.
FIFO 메모리(50)내의 데이터 요소들은 충만 스테이지에 의해 정지될 때까지 공백 스테이지를 통해 자율적으로 이동하므로, 데이터 이동 속도는 각각의 레지스터와 제어 요소들이 충만/공백 상태를 감지하여 데이터를 이동시키는데 필요한 시간에 따라 좌우된다. 데이터 요소를 이동시킨다는 것은, (1) 데이터 요소를 FIFO 메모리내에서 후속 스테이지에서는 래치(latching)하는 반면, (2) 선행 스테이지에서는 이 데이터 요소를 언래치(unlatching)하는 것이다. 그러므로, 데이터 이동 속도를 증가시키는 것은 래치와 언래치 동작을 가능한 긴밀하게 관련시키는 것을 필요로 한다. 래치 동작 이후에 언래치 동작이 너무 느리게 일어나면 데이터 이동 속도가 느려지고, 래치 동작이 종료되기 전에 언래치 동작이 발생하면 시스템의 완강성(robustness)이 나빠진다.
도 2는 도 1의 FIFO 메모리(50)의 일부를 구현한 종래의 회로(200)의 회로도이다. 레지스터들(202 및 204)은 각각 레지스터들(104 내지 107)중 하나에 대응하며, 제어 섹션(206)은 제어 소자들(110 내지 113)에 거의 대응한다. 제어 섹션(206)은 직렬 접속의 뮬러 C 소자들(serially-connected Muller C elements)(208, 210, 212)과 배타적 논리합(XOR) 게이트들(214, 216)을 포함한다.
뮬러 C 소자들은 잘 알려진 순차식 회로 소자로서, 입력 노드가 논리적으로 동일해 질때 입력 노드의 값을 출력 노드에서 재생한다. 예를 들어, C-소자가 저레벨 및 저레벨(low, low)의 입력들을 가질 때 그 출력은 저레벨이다. 입력 노드가 고레벨 및 제레벨(high, low)로 변경되면, 그 출력은 저레벨을 그대로 유지한다. 이 출력은 입력 노드가 고레벨 및 고레벨(high, high)로 변할 때에만 고레벨로 변경된다. C-소자들(208, 210, 212)은 각각 상부측 입력으로서 반전 입력(이것은 작은 원으로 표시했다)을 갖는다. 따라서, C-소자들(208, 210, 212)은 두 개의 입력이 상이할 때 자신의 하부측 입력을 출력 노드에서 복제한다.
C-소자들(208, 210, 212)은 체인(chain)내에서 자신의 선행(하위) C-소자의 출력을 자신의 한 쪽 입력으로서 취하고, 체인내에서 자신의 후속(상위) C-소자의 반전 출력을 다른 쪽 입력으로 취하도록 접속되어 있다. 따라서, 소정의 C-소자는 자신의 출력 상태가 체인내에서 자신의 선행 C-소자 상태와 상이하고 자신의 후속 C-소자 상태와는 동일할 때에만 자신의 출력을 변경시킨다.
XOR 게이트(216)는 뮬러 C 소자들(208, 210)의 출력을 수신하고, 자신의 출력을 이용해 레지스터(204)의 게이트 입력을 구동한다. 마찬가지로, XOR 게이트(214)는 뮬러 C 소자들(210, 212)의 출력을 수신하고, 자신의 출력을 이용해 레지스터(202)의 게이트 입력을 구동한다. 비록 도 2에는 두 개의 레지스터만을 도시하였을지라도, 추가의 C-소자들과 XOR 게이트들을 이용해서 제어 섹션을 확장하고 데이터 회로에 대해 필요한 레지스터의 개수를 추가함으로써, 임의의 개수의 FIFO 스테이지가 구현될 수 있다.
표 1은 도 2의 회로에서 A, B, C, D, E, F 및 G로 표시된 회로점에서의 논리 상태들의 타이밍 관계를 예시한 것이다.
시간 간격 A B C D E F G
0 저레벨 저레벨 저레벨 저레벨 저레벨 고레벨 저레벨
1 고레벨 저레벨 저레벨 저레벨 저레벨 고레벨 저레벨
2 고레벨 고레벨 저레벨 고레벨 저레벨 고레벨 저레벨
3 고레벨 고레벨 고레벨 저레벨 고레벨 고레벨 저레벨
4 고레벨 고레벨 고레벨 저레벨 저레벨 고레벨 고레벨
시간 간격 0에서, 점 F은 고레벨(high)인데, 이것은 하위 데이터 레지스터가 충만이고, 그 속에 담긴 값이 점 H에 제공됨을 나타낸다. 점 E 및 D는 저레벨(low)인데, 이것은 레지스터들(202 및 204)이 공백임을 나타낸다. 간격 1에서, C-소자(208)는 점 A의 값이 점 F의 값과 같아지도록 상태를 변경시킨다. 다음, C-소자(208)의 출력은 C-소자(210)로 전파되고, XOR 게이트(216)의 출력이 고레벨로 되는데, 이것은 레지스터(204)가 자신의 입력 데이터를 래치해야 함을 나타낸다(간격 2). 또한, 간격 2에서, C-소자(210)의 출력 B은 고레벨로 된다. 출력 B이 C-소자들(208 및 212)과 XOR(214 및 216)의 입력으로서 제공되므로, 출력 B에서의 이러한 변화는 간격 3에서 여러가지 결과로 나타난다.
시간 간격 3에서, C-소자(212)는 점 G로부터의 반전 입력이 저레벨이므로 점 B의 고레벨 값에 응답하여 점 C에 고전압을 출력한다. 또한, 점 B의 고전압에 응답하여 XOR 게이트(216)의 출력 D이 저레벨로 변하여, 레지스터(204)가 현재 공백 임을 나타낸다. 역시 점 B의 고전압에 응답하여 XOR 게이트(214)의 출력 E이 고레벨로 변하여, 레지스터(202)가 현재 충만임을 나타낸다. 마지막으로, 점 B의 고레벨 값은 C-소자(208)의 반전 입력에 인가되고, 결국 데이터 레지스터(204)에 대한 데이터 입력에 있어서 두 번째 데이터 값의 이용 가능성을 알려주는 입력 F의 후속 변화(고레벨에서 저레벨로)에 응답할 수 있다.
간격 4에서, 점 C에서의 고레벨 값의 영향으로 XOR 게이트(214)의 출력 E은 원래의 저레벨 값으로 되돌아간다. 점 E에서의 저레벨 값은, 데이터 레지스터(202)가 파이프라인의 후속 스테이지(도시안됨)로 첫 번째 데이터 값을 전달하여 공백임을 나타낸다. 점 G에서의 초기의 저레벨 값은, 점 C가 고레벨 값으로 변경될 때 파이프라인의 후속 스테이지가 레지스터(202)의 값을 수용할 준비가 되었음을 나타낸다. 결국, 간격 4에서, 점 D 및 점 E은 그들 초기의 저레벨 값으로 되돌아가서 공백임을 나타낸다. 간격 1에서 점 A가 저레벨에서 고레벨로 변경된 이후에는 언제든지 회로가 두 번째 데이터 값을 수신할 수 있는데, 이것은 점 F가 고레벨에서 저레벨로 변경됨으로써 신호된다. 두 번째 데이터 값 및 그 후속 데이터 값들은 전술한 종류의 무한 개의 파이프라인 스테이지를 통해 순서대로 정확히 전파될 수 있다.
도 2에서 레지스터(204)에서 레지스터(202)로의 데이터 요소들의 정확하고 효율적인 이동은 점 D 및 E에서의 레지스터 게이트 신호들의 정확한 변경 타이밍에 의해 좌우되고, 따라서 데이터 요소를 훼손시키지 않으면서 가능한 신속하게 D는 레지스터(204)를 공백으로 구동하고 E는 레지스터(202)를 충만으로 구동한다. 불행하게도, 점 B의 상태가 변할때, 그에 대한 점 E 및 D에서의 상대적인 상태 변경 타이밍은 XOR 회로들(214 및 216)내에서의 지연차에 따라 좌우된다. XOR 게이트들은 도 2에 도시된 FIFO 메모리에서 타이밍을 상당히 불안정하게 만들 수 있는 비교적 복잡한 회로들인데, 타이밍이 불안정하면, 회로의 최대 안전 동작 속도가 감소된다.
그러므로, FIFO 메모리같은 비동기 파이프라인에서 타이밍의 불안정성을 줄이고 제어 신호를 더 긴밀하게 결합시켜서 이러한 파이프라인의 동작 속도를 증가시킬 필요성이 존재한다.
이러한 필요성은 데이터 이동 타이밍이 예컨대 상류형 파이프라인(a couterflow pipeline)에서 추가로 제한될 때 훨씬 더 절실하다. 도 3은 상류형 파이프라인의 일부를 예시하는 블록도이다. 상류형 파이프라인(300)은 제 1 파이프라인(320)(이것은 인스트럭션 파이프라인으로 불림)과 제 2 파이프라인(340)(이것은 결과 파이프라인으로 불림)을 포함하고, 이들 파이프라인들은 데이터 요소를 상반되는 방향으로 이동시킨다. 도 3에서, 인스트럭션 파이프라인(320)은 데이터 요소를 우측으로 이동시키고, 결과 파이프라인(340)은 데이터 요소를 좌측으로 이동시킨다. 파이프라인(320)의 스테이지들은 직렬 접속된 제어 섹션들(328 내지 330)과, 이들 제어 섹션에 대응하는 데이터 요소 저장 및 동작 섹션(322 내지 324)을 포함한다. 각각의 데이터 요소 저장 및 연산 섹션(322 내지 324)은 인스트럭션을 실행시키는데 필요한 인스트럭션과 그 관련 정보 필드를 저장하기 위한 메모리를 포함한다. 데이터 요소 저장 및 연산 섹션(322 내지 324)은 예를 들어 정수 인스트럭션을 실행할 수 있는 ALU를 포함할 수도 있다.
파이프라인(340)의 스테이지들은 직렬 접속된 제어 섹션(348 내지 350)과 그에 대응하는 결과 저장 소자(324 내지 344)를 포함한다. 결과 저장 소자들은 저장 및 연산 섹션(322 내지 344)중 하나에서 인스트럭션에 의해 초래되거나 혹은 인스트럭션에 필요한 데이터 값들을 저장 및 전송한다.
동작시, 파이프라인(320)의 각 스테이지는 대응하는 파이프라인(340)의 스테이지에서의 결과와 상호 작용할 수 있다. 각각의 스테이지에서, 인스트럭션 섹션(322 내지 324)내의 정보는 대응하는 결과 섹션(342 내지 344)내의 정보와 각기 비교될 수 있다. 예를 들어, 섹션(322)이 섹션(342)내의 결과를 오퍼랜드로서 요구할 경우, 이 섹션(342)내의 결과는 섹션(322)로 카피된다. 반대로, 정보도 마찬가지로 역방향 즉, 인스트럭션 파이프라인에서 결과 파이프라인으로 카피 또는 전송될 수 있는데, 이 정보는 이동되어 인스트럭션 파이프라인내의 후속 인스트럭션과 상호 작용하는데 이용될 수 있다. 이런 저런 응용과 관련하여 상류형 파이프라인(300)이 올바르게 동작하기 위해, 파이프라인(340)으로 공급되는 각각의 결과는 파이프라인(320)으로 공급되는 각각의 각각의 인스트럭션과 상호 작용해야 한다. 이러한 상호 작용이 발생하는 스테이지가 사전에 알려지지 않을지라도, 이러한 상호 작용은 어떤 스테이지에서든 반드시 발생할 것이고, 그렇지 않으면 에러가 발생할 것이다. 결국, 제어 회로는 파이프라인(320)의 인스트럭션과 파이프라인(340)의 결과가 상반되는 방향으로 임의의 스테이지 경계를 넘지 않도록 해야 할 필요성이 있다.
따라서, 비동기 제어 회로가 예컨대 상류형 파이프라인 같은 복잡한 파이프라인을 정확하게 제어하는 제어 신호들을 긴밀하게 결합시켜야 하는 또다른 필요성과 중요성이 존재한다.
제어 소자들은 파이프라인 데이터 저장 소자들의 상태를 직접 지시하고, 단일 검출기 회로가 인접 스테이지의 제어 소자들의 상태를 동시에 변경시킨다. 비교에 의해, 도 2의 회로(206)에서, 데이터 레지스터(204)와 관련한 데이터 정보는 두 개의 C-소자(208 및 210)에 저장되고, 그것이 충만 상태인지 또는 공백 상태인지는 XOR 게이트(216)에 의해 결정된다. 제어 소자로부터 XOR 회로를 제거하고 선행 제어 스테이지와 후속 스테이지 사이에 공통인 단순 신호 경로내에 검출 회로를 구현함으로써, 종래 회로의 타이밍 불안정성을 상당히 줄일 수 있다. 본 발명은 다른 많은 응용에서 유용한데, 예를 들면, 비동기 상류형 파이프라인, 분기형 파이프라인(forking pipelines) 및 병합형 파이프라인(merging pipelines) 등에 유용하다.
본 발명에 따른 이점들과 목적들은 이후에 설명되고, 또한 이런 설명으로부터 더욱 명확해지거나 또는 본 발명을 실현함으로써 깨닫게 될 것이다. 본 발명의 이점 및 목적은 첨부된 특허청구범위에서 특히 제시되는 소자들 및 그 조합에 의해 실현 및 획득될 것이다.
본원 명세서에서 구체적으로 설명되거나 광범위하게 설명되는 것처럼, 본 발명의 이점을 달성하기 위해 그리고 본 발명의 목적에 따라, 본 발명의 실시예는, 데이터 저장 소자의 전송 상태를 제어하는 제 1 제어 회로와, 제 2 데이터 저장 소자의 전송 상태를 제어하는 제 2 제어 회로를 포함하되, 이 때 제 1 데이터 저장 소자의 데이터 출력이 제 2 데이터 저장 소자의 데이터 입력에 접속되어 있는 FIFO 메모리용 제어 회로를 포함한다. 또한, 검출 회로는 제 1 및 제 2 제어 회로로부터 대응하는 제 1 및 제 2 제어 회로의 상태들을 나타내는 신호들을 수신하고, 그 수신된 신호에 근거하여 이동 신호를 발생시킨다.
전술한 일반적인 설명과 이후의 상세한 설명은 단지 예시를 위한 것으로, 특허청구범위처럼 본 발명을 제한하는 것은 아니다.
도 1은 종래의 비동기 FIFO 메모리(a asynchronous FIFO memory)의 일반적인 구조를 도시하는 블록도.
도 2는 종래의 파이프라인 제어 회로를 도시하는 도면.
도 3은 종래의 상류형 파이프라인(a counterflow pipeline)의 일부를 도시하는 블록도.
도 4는 실시예 1의 비동기 FIFO 파이프라인 구조를 도시하는 블록도.
도 5a 및 도 5b는 본 발명의 실시예 1에서 이용되는 제어 회로를 도시하는 도면.
도 6a 및 도 6b는 본 발명의 실시예 1에서 이용되는 검출 회로의 바람직한 실시예를 도시하는 도면.
도 7은 본 발명의 실시예 1에서 이용되는 비동기 파이프라인 제어 회로의 단순화된 일부를 도시하는 개념도.
도 8은 실시예 2에 따른 비동기 FIFO 파이프라인의 구조를 도시하는 회로도.
도 9는 실시예 2에서 이용되는 바람직한 세트-리세트 래치(a set-reset latch)의 회로도.
도 10은 실시예 3에 따른 비동기 FIFO 메모리를 위한 제어 구조를 도시하는 블록도.
도 11은 본 발명의 실시예 4에 따른 상류형 파이프라인을 제어할 수 있는 비동기 파이프라인 제어 회로를 도시하는 회로도.
도 12는 도 11의 파이프라인에서 이용되는 세트-리세트 래치의 회로도.
도 13a 및 도 13b는 본 발명에 따른 분기형 파이프라인(a forking pipeline)의 두 개의 스테이지와, 병합형 파이프라인(a merging pipeline)의 두 개의 스테이지를 도시하는 도면.
도 14는 실시예 5에 따른 분기형 파이프라인을 위한 파이프라인 제어 회로를 도시하는 블록도.
도 15는 실시예에 따른 병합형 비동기 파이프라인을 위한 파이프라인 제어 회로를 도시하는 블록도.
도면의 주요 부분에 대한 부호의 설명
402, 403, 404, 802, 803, 804, 1404, 1405, 1406 : 데이터 레지스터
411, 412, 1000, 1110, 1120 : 제어 회로
414, 415, 1412 : 검출 회로
600, 602, 810, 902, 904, 1112, 1122, 1412 : NAND 게이트
806, 1114, 1116, 1124, 1126, 1200, 1402 : 세트-리세트 래치
본원 명세서의 일부를 이루고 있는 첨부 도면들은 본 발명의 몇몇 실시예를 예시하며, 본원 명세서의 설명과 함께 본 발명의 원리를 설명하는데 이용된다.
이제부터 첨부 도면을 참조하여 본 발명의 실시예들이 상세히 언급될 것이다. 도면 전반에 걸쳐 가능한 모든 곳에서, 동일한 참조 부호는 동일하거나 혹은 유사한 부분을 나타내도록 이용될 것이다.
본 발명은 FIFO 파이프라인으로서 구성된 직렬 접속의 파이프라인을 비동기적으로 제어하는 장치를 포함한다. 이후에 먼저 설명되는 세 가지의 실시예들은, 데이터 저장 및 전송 소자들의 게이트에 대한 상대적인 신호 도달 시간이 예측 가능하게 정밀 제어되도록 하는 고속의 단순한 FIFO 파이프라인 제어 회로를 제공한다. 이런 방식으로 데이터 저장 및 전송 소자들의 상대적인 타이밍을 긴밀하게 결합시킴으로써 데이터를 훼손시키지 않으면서 FIFO 메모리의 동작 속도를 증가시킨다. 본 발명의 실시예 4 내지 6는 실시예 3를 신규하게 변형하여 이용한 응용들을 설명한다.
모든 실시예들과 관련되어 있는 제어 회로들은 제어 회로와 검출 회로가 연속하여 교번하고 있다. 충만 상태의 제어 회로가 공백 상태의 제어 회로에 선행할 때, 이것은 충만 상태의 제어 회로에 대응하고 있는 데이터 저장 소자가 공백 상태의 제어 회로에 대응하는 후속 저장 소자로 자신의 데이터를 전송해야 함을 나타내므로, 검출 회로는 이동 신호를 발생시킨다. 이동 신호는 선행하는 제어 회로와 그에 후속하는 제어 회로의 상태들을 각각 공백 및 충만으로 설정함으로써, 선행 스테이지에서 후속 스테이지로 데이터 요소가 이동될 수 있도록 한다. 제어 회로들은 비교적 단순하고 예측 가능한 신호 전파 시간을 가지므로, 공통의 이동 신호에 대한 인접하는 두 제어 회로의 상대적인 반응 시간은 긴밀하게 제어될 수 있다.
도 4 내지 도 7은 본 발명에 따른 비동기 FIFO의 실시예 1를 도시하는데, 이 실시예에서 제어 회로는 충만/공백 상태 정보를 회로 캐패시턴스상에 전하로서 기억한다. 이 실시예의 시뮬레이션(simulations)에 따르면, 0.6 미크론의 CMOS 제조 프로세스를 이용할 경우 1GHz 이상의 데이터 전파율이 가능하다.
도 4는 실시예 1의 비동기 FIFO 파이프라인의 구조를 도시하는 블록도(400)이다. 이 도면에는 예시를 위해 세 개의 FIFO 파이프라인 스테이지가 도시되어 있지만, 실제로 FIFO 파이프라인은 더 많은 스테이지를 가질 수 있다.
직렬 접속되어 있는 레지스터(402 내지 404)는 FIFO 파이프라인(400)의 각 스테이지를 통해 데이터를 저장 및 전송한다. 레지스터들(402 내지 404)은 게이트 입력 G이 활성 상태(active)로서 레지스터가 공백임을 나타낼 때 입력 D에 수신된 데이터를 출력 Q으로 전송한다. 게이트 신호가 비활성 상태(inactive)이면, 레지스터들은 충만이므로 자신들의 데이터 출력 Q을 그 최종 값으로 그대로 유지시킨다. 제어 회로와 함께 적절히 동작하기 위해, 레지스터들(402 내지 404)은 활성 고레벨 게이트 신호와 활성 저레벨 게이트 신호가 교번하도록 배열되어 있다. 레지스터(402 및 404)는 저전압 신호에 의해 충만으로 구동되고, 레지스터(403)는 고전압 신호에 의해 충만으로 구동된다.
제어 섹션(410)에는 제 1 제어 회로(411), 제 1 검출 회로(414), 제 2 제어 회로(412), 제 2 검출 회로(415)가 교대로 직렬 접속되어 있다. 제어 회로(411)는 레지스터(402 및 404)에 대한 게이트 입력을 제어하고, 회로(412)는 레지스터(403)에 대한 게이트 입력을 제어한다. 각각의 검출 회로(414, 415)는 인접하는 두 개의 제어 회로의 상태들을 감시하여, 체인내에서 충만 상태의 제어 회로가 공백 상태의 제어 회로에 선행할 때 이들 제어 회로들에게 이동 신호를 제공한다.
도 5a 및 도 5b는 실시예 1에서 이용되는 제어 회로(411 및 412)를 도시하는 회로도이다. 한 종류의 제어 회로가 한 종류의 검출 회로와 교번하도록 하여 유사한 제어 회로 섹션을 구성하는 것도 가능하지만, 도 4에 도시된 회로(400)가 더 신속하게 동작하며, 또한 회로(400)는 인버터(516 및 526)를 제공하는데, 이것은 이후에 설명되는 것처럼 회로의 정적 동작(static operation)을 가능하도록 해주는 키퍼(keeper) 회로의 추가를 간단하게 한다. 제어 회로(411)는 NMOS 트랜지스터(514)와 직렬 접속된 PMOS 트랜지스터(512)를 포함한다. 공백/충만 상태 정보는 주위 회로 캐패시턴스상에 전하(charge)로서 노드(515)에 저장되며, 이러한 주위 회로 캐패시턴스로서 인버터(516)로부터의 게이트 캐패시턴스와, 다양한 확산 및 배선 기생 캐패시턴스로 인한 캐패시턴스를 들 수 있다.
PMOS 트랜지스터(512)는 자신의 게이트 (set Empty;이 때 ─는 저레벨 상태가 활성임을 나타냄)를 저레벨 상태로 만듦으로써 턴온되고, NMOS 트랜지스터(514)는 자신의 게이트 입력 Set F(set Full)을 고레벨 상태로 만듦으로써 턴온된다. 트랜지스터(512)를 턴온시키는 반면 트랜지스터(514)를 턴오프시킴으로써 노드(515)는 Vdd(고레벨)로 설정되고, 트랜지스터(514)를 턴온시키는 반면 트랜지스터(512)를 턴오프시킴으로써 노드(515)는 접지 전위로 설정된다.
인버터(516 및 517)는 노드(515)와, 회로(411)의 충만 출력(the Full output) 사이에 순환 구성으로 접속되어 있다. 인버터(517)는 키퍼 인버터로서 기능을 하는데, 키퍼 인버터는 트랜지스터(512 및 514)가 모두 턴오프일 때 노드(515)에서 누설되는 전하를 제자리로 보충한다. 키퍼 인버터(517)가 없다면, 노드(515)는 누설 전류로 인해 자신의 전하 상태를 잃어버릴 수도 있고, 트랜지스터들(512 및 514)중 하나를 주기적으로 턴온시킴으로써 재충전하는 것이 필요할 수도 있다. 따라서, 키퍼 인버터(517)는 파이프라인이 오랜 기간동안 비활성 상태일 때(즉, 회로가 정적일 때)에도 노드(515)의 상태를 보존한다. 파이프라인이 충분히 짧은 기간에 동작될 것으로 알려진 경우(즉, 회로가 동적인 경우)에는 키퍼 인버터(517)가 생략될 수도 있다.
키퍼 인버터(517)는 PMOS 트랜지스터(512)와 NMOS 트랜지스터(514)에 비해 소량의 출력 전류만을 공급할 수 있는 약(weak) 인버터이다. 통상적으로, 키퍼 인버터(517)내의 트랜지스터들의 폭은 인버터(516)내의 트랜지스터들의 폭에 비해 약 10 내지 20 배 정도 작다. 예를 들어, 키퍼 인버터(517)는 자신의 P 및 N 채널 트랜지스터에 대해 약 1.2 미크론의 폭을 가질 수 있는 반면, 인버터(516)는 P 채널 트랜지스터에 대해서는 약 24 미크론의 폭을 갖고 N 채널 트랜지스터에 대해서는 12 미크론의 폭을 갖는다. 대조적으로, 트랜지스터들(512 및 514)은 각각 약 36 미크론 및 18 미크론의 폭을 가질 수 있다.
도 5b에 도시된 제어 회로(412)는 PMOS 트랜지스터(522)와, NMOS 트랜지스터(524)와, 인버터(526)와, 키퍼 인버터(527)를 포함한다. 회로(412)는 회로(411)와 구조적으로 동일하지만 미러 이미지(mirror image)이다. 그러나, 회로(412)에서는 PMOS 및 NMOS 트랜지스터의 게이트 입력들과 출력들에 대해 회로(411)에서 그에 대응하는 구조와는 상이한 의미들이 부여된다. 특히, 회로(412)에서, 트랜지스터(522)의 게이트는 로 표시되고, 트랜지스터(524)의 게이트는 Set E로 표시되었다. 또한, 인버터(526)의 좌측 입력(528)의 고전압은 공백(Empty)을 표시하고, 그 우측 출력의 고전압은 충만(Full)을 표시한다.
도 6a는 검출 회로(414)의 바람직한 실시예의 회로도로서, 이 검출 회로에서 NAND 게이트(600)는 회로(411)의 충만 출력(518)과 회로(412)의 공백 출력(528)을 입력으로서 수신한다. 검출 회로(414)의 출력(즉, 신호)은 회로(411)의 입력과 회로(412)의 입력으로 입력된다. 검출 회로(414)는 노드(518)상에서 고레벨 값으로 표현되는 회로(411)의 충만 상태와, 노드(528)에서 고레벨 값으로 표현되는 회로(412)의 공백 상태를 검출하도록 동작한다.
도 6b는 검출 회로(415)의 바람직한 실시예의 회로도로서, NAND 게이트(602)는 회로(412)의 충만(Full) 출력(525)과 회로(411)의 공백(Empty) 출력(515)을 입력으로서 수신한다. 인버터(604)의 출력(즉, Move 신호)은 회로(412)의 Set E 입력과 회로(411)의 Set F 입력에 입력된다. 검출 회로(415)는 노드(525)상에서 고레벨 값으로 표현되는 회로(412)의 충만 상태와, 노드(515)에서 고레벨 값으로 표현되는 회로(411)의 공백 상태를 검출한다.
도 7은 제어 섹션(410)의 일부를 도시하는 회로도로서, 도 4 내지 도 6에 도시된 것들을 단일 도면으로 다시 도시한 것이다. 회로 동작을 간단하고 쉽게 이해하기 위해, 인버터(516 및 526)와 검출 회로(414)는 논리적으로 등가인 OR 게이트(707)로 도시되었고, 검출 회로(415)는 논리적으로 등가인 AND 게이트(708)로 도시되었다. 트랜지스터들(704, 705 및 706)은 PMOS 트랜지스터이고, 트랜지스터들(701, 702 및 703)은 NMOS 트랜지스터이다.
이 회로의 동작을 검증하기 위해, 노드 A, B, C가 각각 저레벨 값, 고레벨 값, 고레벨 값을 갖는다고 가정한다. 이것은 충만, 충만, 공백 상태에 대응한다. 노드 B 및 C의 값이 둘다 고레벨이라면, AND 게이트(708)는 두 개의 대향하는 NMOS 트랜지스터(702 및 703)의 게이트에 고레벨을 인가한다. 이것은 트랜지스터(702 및 703)를 온시키고 노드 B 및 C를 로우 레벨로 설정한다. 이 중간 단계에서 노드 A, B 및 C의 회로 상태는 각각 충만, 공백, 충만 상태를 나타낸다. 결국, 노드 B에 의해 표시된 충만 상태는 노드 C로 이동되었고, 노드 C에 의해 표시된 공백 상태는 노드 B로 이동되었다. B와 C의 이러한 회로 상태 변경은 그와 관련되어 있는 데이터 레지스터의 게이트 입력들에 접속되어, 노드 B와 관련된 데이터 레지스터에 보유되어 있던 데이터 값을 노드 C와 관련된 데이터 레지스터로 이동시킨다.
노드 A로부터 저레벨 입력을 계속 수신하는 OR 게이트(707)에 노드 B의 새로운 저레벨 값이 도달할 때, 후속 단계가 발생한다. OR 게이트(707)의 출력은 PMOS 트랜지스터(705, 706)의 게이트에 저레벨을 인가하여, 이들 트랜지스터를 온시키고, 노드 A 및 B를 고레벨로 설정한다. 이 단계 이후, 노드 A, B 및 C는 각각 공백, 충만, 충만값들을 나타낸다. 원래 노드 A 및 B에 의해 표시되었던 충만 값들은 둘다 우측으로 노드 B 및 C로 이동되고, 따라서 노드 A와 관련된 데이터 레지스터에 원래 보유되었던 데이터 값은 이제 노드 B와 관련된 데이터 레지스터에 보유되고, 이 노드 B의 내용은 차례로 노드 C와 관련된 데이터 레지스터로 이동된다.
마찬가지 방식으로, 노드 C와 관련된 데이터 값은 우측으로 파이프라인의 후속 스테이지들로 이동될 수 있고, 스테이지 A의 좌측에 계속되어 있는 추가의 스테이지로부터 새로운 데이터 값들이 노드 A와 관련된 스테이지로 유입될 수 있다. 이처럼 인접 스테이지들 사이의 상호 작용과 관련되어 있는 동작 사이클들을 반복함으로써, 데이터 요소를 보유할 능력이 있는 공백 셀이 존재하는 한, 데이터 요소는 파이프라인을 통해 우측으로 이동된다.
비록 바람직한 실시예에서는 레지스터를 데이터 저장 및 전송 소자로 이용하여 설명하였을지라도, 이와 등가인 많은 구현물들이 이용될 수 있다. 또한, 다중 데이터 레지스터가 다중 비트를 갖는 데이터의 이동을 허용하도록 구동될 때, 도 4에 도시된 제어 신호 G 및 를 하나 이상의 버퍼 스테이지를 통해 증폭시키는 것이 요구될 수도 있다. 더욱이, 게이트 극성이 교번하는 레지스터를 이용하는 대신에 버퍼 스테이지들이 게이트 극성을 반전시키도록 배열될 수도 있다.
도 8 및 도 9는 본 발명에 따른 비동기 FIFO 메모리의 제어 구조와 관련한 실시예 2를 도시한다. 이 실시예는 비동기 FIFO 메모리(800)가 데이터 요소들을 직렬 접속의 데이터 레지스터들(802, 803, 804)에 저장한다는 점에서 도 4 내지 도 7에 도시된 실시예와 유사하다. 그러나, 도 8 및 도 9에서는, 각 스테이지가 동일한 제어 회로(세트-리세트 래치(806))와 검출 회로(논리 게이트(810))를 갖는다.
레지스터들(802 내지 804)은 입력 D에서 데이터를 수신하여, 이 수신된 데이터를 게이트 입력 G의 신호에 따라 출력 Q으로 전송한다. 각각의 플립 플롭 (802 내지 804)의 게이트 입력 G은 세트-리세트 래치(806)의 충만(F) 출력에 접속된다. 논리 게이트(810)는 세트-리세트 래치(806)의 충만 출력과 후속의 세트-리세트 래치(806)의 공백 출력을 입력으로서 수신한다.
정규 동작시, 래치(806)의 충만 및 공백 출력은 서로 정적으로 상보 관계에 있다. 데이터 레지스터(803)를 구동하는 세트-리세트 래치의 충만 출력에서의 고레벨 논리 상태는 데이터 레지스터(803)가 자신의 출력 Q의 현재값을 그대로 보유하도록 하는데, 이 때 출력 Q은 다음 데이터 레지스터(804)의 데이터 입력 D에 접속되어 있다. 선택적으로, 세트-리세트 래치의 충만 출력에서의 저레벨 논리 상태는 데이터 레지스터(803)가 자신의 데이터 출력 Q의 현재값을 언래치하도록 함으로써, 데이터 레지스터(803)가 그 선행 데이터 레지스터(802)로부터 새로운 데이터 값을 수신하여 이 새로운 데이터 값을 후속 데이터 레지스터(804)의 데이터 입력 D으로 보내도록 한다.
논리 게이트(810)는 NAND 게이트인 것이 바람직하지만, 세트-리세트 래치의 특정한 구현에 따라 다른 논리 회로일 수도 있다. 동작시, 논리 게이트(810)는 선행 세트-리세트 래치의 충만 출력 신호와 후속 세트-리세트 래치의 공백 출력 신호를 수신하고, 이 두 출력 신호들이 고레벨일 때, NAND 게이트의 출력은 저레벨이 된다. 다음, NAND 게이트의 출력은 선행 세트-리세트 래치를 충만 상태에서 공백 상태로 구동하고, 후속 세트-리세트 래치를 공백 상태에서 충만 상태로 구동함으로써, 선행 데이터 레지스터의 언래칭(unlatching)과 후속 데이터 레지스터의 래칭(latching)을 개시한다. 이러한 동작들은 선행 데이터 레지스터에 보유되어 있던 데이터 값을 후속 데이터 레지스터로 이동시키고, 선행 레지스터가 다음 데이터 값을 받아들이도록 준비를 시킨다.
선행 세트-리세트 래치가 공백 상태에 도달하거나, 혹은 후속 세트-리세트 래치가 충만 상태에 도달할 때마다, 논리 게이트(810)는 더 이상 활성화되지 않으며, NAND 게이트의 출력은 고레벨이 되어, 더 이상 선행 혹은 후속 세트-리세트 래치들을 각각 공백 및 충만 상태로 구동하지 않는다. 만약 필요하다면, 추가의 회로 지연 소자들이 세트-리세트 래치 및 논리 게이트(810)에 삽입됨으로써, 전술한 단계들이 적절히 조정된다.
도 9는 세트-리세트 래치(806)의 바람직한 회로도이다. NAND 게이트(902) 및 NAND 게이트(904)는 교차 접속되며, NAND 게이트(902)는 신호를 제 1 입력에서 수신하고 NAND 게이트(904)의 출력을 제 2 입력에서 수신한다. NAND 게이트(904)는 신호를 제 2 입력에서 수신하고 NAND 게이트(902)의 출력을 제 1 입력에서 수신한다.
또한 세트-리세트 래치 및 논리 게이트(910)는 NAND 게이트 대신에 NOR 게이트로도 구현될 수 있지만, 잘 알려진 제조 기법을 이용하여 실리콘으로 구현하기에는 NAND 게이트가 더 효율적이다.
표 2는 두 개의 인접하는 세트-리세트 래치(806)과 논리 게이트(810)의 타이밍 관계를 예시적으로 나타낸다. 표 2의 칼럼 A 내지 E는 도 8에 A 내지 E로 표시한 점들에 대응한다.
시간 간격 A B C D E 설 명
0 고레벨 저레벨 저레벨 고레벨 X 제 1래치는 충만이고, 그 후속 래치는 공백임.
1 고레벨 저레벨 저레벨 고레벨 저레벨 A 및 D에서의 고레벨 값은 NAND 게이트를 저레벨로 만듬.
2 고레벨 고레벨 고레벨 고레벨 저레벨 NAND 게이트의 출력에서 저레벨 값은 세트/리세트 래치가 토글을 개시하도록 한다.이 때, 점 B 및 C의 상태는 변경된다.
3 저레벨 고레벨 고레벨 저레벨 저레벨 세트/리세트 래치가 변경을 종료한다.
4 저레벨 고레벨 고레벨 저레벨 고레벨 A 및 D에서 저레벨 값은 NAND 게이트가 고레벨로 되도록 한다.이제 회로는 대기 상태이다.
시간 간격 0에서, 초기 상태로서 점 A 및 D은 고레벨이고, B 및 C는 저레벨이다. 이것은 충만 상태를 나타내는 제 1 래치(A가 고레벨임)와 공백 상태를 나타내는 제 2 래치(C가 저레벨임)에 대응한다. 표 2는 제 1 래치가 공백(A가 제레벨)이고 제 2 래치가 충만(B가 고레벨)으로 될 때까지 회로를 통해 비동기적으로 전파하는 신호들을 나타낸다.
도 10은 실시예 3에 따른 비동기 FIFO 메모리를 위한 제어 구조를 도시하는 블록도이다. 실시예 2에서 처럼, FIFO 메모리(1000)는 자신의 데이터 요소들을 직렬 접속의 레지스터(802 내지 804)에 저장하는데, 이 레지스터들은 제어 회로(세트-리세트 래치)(806)와 검출 회로(논리 NAND 게이트)(810)에 의해 제어된다. FIFO 메모리(806)와는 달리, FIFO 메모리(1000)는 스테이지마다 두 개의 추가 인버터(1002, 1004)를 포함한다. 또한, 이전 스테이지로부터의 충만 출력과 후속 스테이지로부터의 공백 출력을 접속시키는 대신에, FIFO 메모리(1000)에서는, 이전 스테이지로부터의 공백 출력과 후속 스테이지로부터의 충만 출력이 각각 인버터(1002 및 1004)를 통해 논리 게이트(810)의 입력에 접속된다.
FIFO 메모리(1000)는 FIFO 메모리(800)와 유사하게 동작한다. 세트-리세트 래치(806)의 충만 및 공백 출력은 정적 상태에서 서로 상보적으로 동작하고, FIFO 메모리(1000)에서 이용되는 논리 게이트(810)에 대한 반전된 입력들은 FIFO 메모리(800)에서 논리 게이트(810)에 입력되는 비반전 입력들과 논리적으로 등가이다.
비록 세트-리세트 래치(806)의 정적 상태의 해석이 출력 E 및 F이 논리적 상보 관계에 있다고 나타낼지라도, 래치의 상태가 상태들을 변경중인 동안에는 반드시 상보 관계인 것을 아니다. 긴 파이프라인(64개 이상의 스테이지)의 FIFO 메모리(800)의 시뮬레이션에 따르면, 데이터가 많은 스테이지를 통해 전파된 이후에 정보의 손실이 발생할 수도 있음을 나타낸다. 이러한 손실에 의해 세트-리세트 래치(806) 및 NAND 게이트(810)는 비정상적인 제어 상태(pathological control states)에 도달하는 것으로 생각된다.
FIFO(800)와 달리, FIFO(1000)에서 이용되는 제어 회로는 정규 상태에서 액세스된 제어 상태 이외의 제어 상태들은 통과시키지 않는다. 이러한 차이는 NAND 게이트(810)의 입력에 고레벨 신호를 발생하는 인버터(1002 및 1004)로부터 발생한다. 인버터(1002)는 세트-리세트 래치(806)의 출력 E으로부터 자신의 입력을 수신하고, 인버터(1004)는 후속 세트-리세트 래치(806)의 출력 F으로부터 자신의 입력을 수신한다. FIFO(800)를 위한 제어 회로에서는, 그에 대응하는 NAND 게이트(810)의 입력이 세트-리세트 래치(806)의 F 출력과 후속 세트-리세트 래치(806)의 E 출력으로부터 곧장 유도된다.
비록 통상의 논리 해석으로는 정적인 조건에서 두 개의 회로가 논리적으로 등가인 것으로 나타나더라도, 제어 회로(1000)을 이용하는 긴 FIFO 체인의 시뮬레이션은 신뢰성 있는 동작을 나타낸다. 이러한 시뮬레이션은 0.6 미크론의 CMOS 프로세스를 이용해 제조된 실험용 회로를 테스트함으로써 증명되었다. 실험용 칩은 데이터의 손실없이 약 1 GHz에 이르기까지 동작하였다.
전술한 원리들은 더 복잡한 비동기 회로를 제어하는데 이용될 수도 있다.
본 발명에 따라서, 상류형 파이프라인을 제어할 수 있는 비동기 파이프라인 제어 회로는 도 11 및 도 12를 참조하여 이후에 설명될 것이다. 이 제어 회로의 기본적인 설계는 실시예 3에서 이용된 것과 유사하다. 상류형 파이프라인은 상반되는 방향으로 두 개의 파이프라인 흐름을 가지므로, 두 개의 제어 회로가 요구된다(즉, 각각의 파이프라인에 하나씩 요구된다). 일반적으로, 각각의 제어 회로는 다른 제어 회로에 대해 독립적으로 동작하여, 하나의 스테이지가 충만이고 후속 스테이지가 공백일 때 그들의 대응 데이터 요소를 이동시킨다. 그러나, 본 실시예에서는, 각각의 파이프라인에 대응하는 제어 회로가 서로간에 추가적으로 상호 작용하여 두 파이프라인의 데이터 요소가 동시에 서로에게 보내지는 것을 금지시킨다.
도 11는 본 발명의 실시예 4에 따라 상류형 파이프라인을 제어할 수 있는 비동기 파이프라인 제어 회로의 회로도이다. 제어 회로(1110)는 제 1 파이프라인(인스트럭션 파이프라인)을 통한 데이터 요소의 이동을 제어하고, 논리 게이트(1112)와, 세트-리세트 래치들(1114 및 1116) 및 인버터들(1118, 1119)을 포함한다. 논리 게이트(1112)는 세트-리세트 래치(1116)의 반전된 충만 출력과 세트-리세트 래치(1114)의 반전된 공백 출력을 수신한다. 논리 게이트(1112)의 출력은 래치들(1114 및 1116)의 입력 및 입력에 각각 입력된다. 또한, 실시예 3와는 달리, 본 실시예에서는 대향 논리 게이트(1122)의 출력(출력 B으로 표시됨)은 게이트 논리(1112)와, 세트-리세트 래치(1114)의 Set E 입력과, 세트-리세트 래치(1112)의 Set F 입력에 의해 수신된다.
제어 회로(1120)는 제 2 파이프라인(결과 파이프라인)을 통한 데이터 요소의 이동을 제어하며, 논리 게이트(1122)와, 세트-리세트 래치들(1124 및 1126)과, 인버터들(1128 및 1129)을 포함한다. 논리 게이트(1122)와, 세트-리세트 래치(1124)와, 세트-리세트 래치(1126)는 제어 회로(1110)내의 대응 소자들과 유사하게 배열되어 있다. 특히, 대향 논리 게이트(1112)의 출력(출력 A으로 표시됨)은 게이트 논리(1122)와, 세트-리세트 래치(1126)의 Set E 입력과, 세트-리세트 래치(1124)의 Set F 입력에 의해 수신된다.
제어 회로들(1110 및 1120)의 동작은 두 개의 모드로 발생한다고 개념적으로 설명될 수 있다. 제 1 동작 모드는 충만 값(a Full value)이 세트-리세트 래치들(1114 및 1126)중 하나를 통해서만 다음 (공백) 세트-리세트 래치들(1116 및 1124)중 하나로 전파될 준비가 되었을 때 발생한다. 예를 들어, 세트-리세트 래치(1114)의 출력 E이 저레벨일 때, 이것은 이 래치가 충만임을 나타내며, 세트-리세트 래치의 출력 F이 저레벨일 때는, 이 래치가 공백임을 나타낸다. 그리고, 점 B의 신호가 고레벨일 때, 이것은 제어 회로(1120)가 데이터 요소를 전파시킬 준비가 되지 않았음을 나타내고, NAND 게이트(1112)는 점 A상에서 자신의 출력을 저레벨로 변경시켜서, 세트-리세트 래치들(1114 및 1116)이 각각 상태를 변경시키도록 한다. 점 A의 저레벨 값은 NAND 게이트(1122)를 고레벨 값으로 로킹(locking)시킴으로써 세트-리세트 래치들(1124 및 1126)이 상태를 변경시키지 못하도록 한다. 그러므로, 세트-리세트 래치들(1124 및 1126)이 추후에 상태를 변경하여 세트-리세트 래치(1126)가 충만이고 세트-리세트 래치(1124)가 공백으로 될지라도, NAND 게이트(1112)가 NAND 게이트(1122)의 로킹을 해제시킬 때까지 충만 상태의 래치(1126)는 공백 상태의 래치(1124)로 전파시키지 않을 것이다.
제 2 동작 모드는 세트-리세트 래치들의 집합이 모두가 동시에 데이터를 전송할 준비가 되었을 때 발생한다. 이런 상황에서, NAND 게이트(1112 및 1122)는 동시에 혹은 거의 동시에 자신의 세 개 입력들상에서 고레벨 값을 수신함으로써 불안정 동작 상태(a metastable operation state)가 된다. 불안정 동작 상태에서, NAND 게이트들(1112 및 1122)의 출력들은 논리 고레벨 전압과 논리 제레벨 전압 사이에서 결정된다. 결국, 불안정 상태는 스스로 해결될 것이고, NAND 게이트들중 하나는 저레벨이 되고 다른 것은 고레벨이 될 것이다. 저레벨로 된 NAND 게이트는 자신의 세트-리세트 래치들에게 상태를 변경시킬 것을 신호하고, 망실한(losing) NAND 게이트를 고레벨로 로킹한다. 적절한 회로 동작을 위해, 불안정 상태에서, 세트-리세트 래치들(1114, 1116, 1124, 1126)은 점 A 및 B에 나타나는 중간 전압에 반응해서는 안된다. 이것은 수정된 세트/리세트 회로를 이용함으로써 달성된다.
도 12는 수정된 세트-리세트 래치들(1114, 1116, 1124, 1126)의 바람직한 회로도(1200)이다. 세트-리세트 래치(1200)는 수정된 두 개의 교차 접속 NAND 게이트(1202 및 1204)를 포함한다. 수정된 NAND 게이트(1202 및 1204)는 종래의 NAND 게이트와 동일하지만, 다만 종래의 NAND 게이트는 NAND 게이트(1202)의 Set F 입력과 NAND 게이트(1204)의 Set E 입력이 Vdd에 접속되어 있다는 점만이 다르다. PMOS 트랜지스터(1206)와 PMOS 트랜지스터(1210)의 소스들을 각각 Set F 및 Set E에 접속시킴으로써, 수정된 NAND 게이트들(1202 및 1204)은, 도 11의 점 A 및 B의 전압들이 충분히 상이하여 적정 방향으로 PMOS 트랜지스터(1206 및 1210)의 임계 전압들을 초과할 때까지 반응하지 않는다. 회로(1112 및 1122)의 불안정 상태에서, 점 A 및 B의 전압들은 거의 동일하며, 불안정 상태가 해결될 때까지 그대로 유지된다. 결국, 세트-리세트 래치들(1124, 1126, 1114, 1116)은 NAND 게이트들(1122 및 1112)의 불안정 상태가 스스로 해결되고 점 A 및 B의 전압들이 상태 변경 이전에 충분히 상이해질 때까지 대기할 것이다. 세트-리세트 래치들(1114 내지 1116, 1126 내지 1124)에 대한 점 A 및 B의 접속이 역전되므로, 단지 하나의 파이프라인에서만 이동이 발생할 것이다. 이 파이프라인을 위한 이동 신호가 제거될 때에만 다른 파이프라인이 이동을 실행할 수 있을 것이다.
수정된 NAND 게이트(1202)는 PMOS 트랜지스터들(1206 및 1213)과 NMOS 트랜지스터들(1207 및 1208)을 포함한다. NAND 게이트(1202)의 출력은 세트-리세트 래치(1200)의 충만 상태를 나타내며, 트랜지스터들(1206, 1207, 1213)에 대해 공통인 단자로부터 유출된다. NAND 게이트에 대한 두 개의 게이트 제어 입력은 트랜지스터(1206, 1207)의 게이트에 수신되는 와, 트랜지스터(1213, 1208)의 게이트에 수신되는 NAND 게이트(1204)의 출력이다.
수정된 NAND 게이트(1204)는 NAND 게이트(1202)와 동일한 미러 이미지이다. NAND 게이트(1204)는 PMOS 트랜지스터들(1209 및 1210)과 NMOS 트랜지스터들(1211 및 1212)을 포함한다. NAND 게이트(1204)의 출력은 세트-리세트 래치(1200)의 공백 상태를 나타내며, NAND 게이트에 대한 두 개의 게이트 제어 입력은 와 NAND 게이트(1202)의 출력이다.
상류형 파이프라인에 덧붙여서, 처음의 세 개 실시예와 연계하여 전술한 원리들은 또한 분기형 파이프라인과 병합형 파이프라인을 제어하는데 이용될 수도 있다.
분기형 및 병합형 파이프라인들을 제어할 수 있는 비동기 파이프라인 제어 회로는 도 13 내지 도 16을 참조하여 이후에 설명될 것이다. 도 13a 및 도 13b는 분기형 파이프라인의 두 개 스테이지와 병합형 파이프라인의 두 개 스테이지를 각각 예시하는 개념도이다. 이 두 도면에서, 데이터는 좌측에서 우측으로 흐른다. 분기형 파이프라인(1300)내의 스테이지들 사이의 데이터 이동을 정의하는 제어 논리는 다음과 같다. 즉, 스테이지(1306)가 충만이고 스테이지들(1302 및 1304)이 둘다 공백일 때, 스테이지(1306)의 데이터를 스테이지(1302 및 1304)로 이동시킨다. 역으로, 병합형 파이프라인(1310) 내에서의 데이터 이동을 정의하는 제어 논리는 다음과 같다. 즉, 스테이지(1312 및 1314)가 둘다 스테이지(1316)가 공백일 때, 스테이지(1312, 1314)의 데이터를 스테이지(1316)로 이동시킨다.
도 14는 본 발명의 실시예 5에 따른 분기형 비동기 파이프라인을 위한 파이프라인 제어 회로를 예시하는 블록도이다. 스테이지(1401)는 분기전 스테이지(the pre-fork stage)로서, 도 13a의 스테이지(1306)에 대응한다. 스테이지들(1403 및 1405)은 분기후 스테이지들(the post-fork stages)로서, 각각 스테이지(1302, 1304)에 대응한다. 각각의 스테이지(1401, 1403, 1405)는 세트-리세트 래치(1402)와, 레지스터들(1404 내지 1406)중 하나와, 인버터들(1408 및 1410)을 포함한다. 이런 구조는 실시예 3에서 이용되었던 세트-리세트 래치(806)와, 레지스터들(802 내지 804)과, 인버터들(1002 및 1004)과 동일하다. 그러나, 검출 회로(1412)는 3입력 NAND 게이트인 반면, 실시예 3은 2입력 NAND 게이트(810)를 갖는다. NAND 게이트(1406)의 출력은 분기전 세트-리세트 래치(the pre-fork set-reset latch)의 입력과 분기후 세트-리세트 래치(the post-fork set-reset latches)의 입력에 입력된다.
실시예 3와 마찬가지로, 본 실시예에서는, NAND 게이트(1412)에서 발생된 공통 이동 신호에 의해 분기전 세트-리세트 래치는 공백으로 되고, 분기후 세트-리세트 래치는 충만으로 된다. 래치(1402)가 상태를 변경하는 것과 병행하여 레지스터(1404)의 데이터는 레지스터(1405 및 1406)로 전송된다.
도 15는 실시예 6에 따른 병합형 비동기 파이프라인을 위한 파이프라인 제어 회로를 예시하는 블록도이다. 병합형 파이프라인을 위한 제어 회로는 반드시 분기형 파이프라인용 제어 회로와 미러 이미지여야 한다. 스테이지들(1501 및 1503)은 병합전 스테이지들(the pre-merge stages)로서, 도 13b의 스테이지들(1312 및 1314)에 대응하며, 스테이지(1505)는 병합후 스테이지(the post-merge stage)로서, 스테이지(1316)에 대응한다.
실시예 3와 마찬가지로, 본 실시예에서는, NAND 게이트(1412)에서 발생된 공통 이동 신호에 의해 병합전 세트-리세트 래치는 공백으로 변경되고, 병합후 세트-리세트 래치는 충만으로 된다. 래치(1402)가 상태를 변경하는 것과 병행하여 레지스터(1404 및 1405)의 데이터는 레지스터(1506)로 전송된다. 이 예에서, 레지스터(1404 및 1405)는 4비트 레지스터이고, 레지스터(1506)는 8비트 레지스터이다.
3입력 NAND 게이트를 이용하는 두 갈래의 파이프라인 분기/병합(a two-pronged pipeline fork/merge)이 설명되었을지라도, 4입력 혹은 그 이상의 입력을 갖는 NAND 게이트와 추가의 파이프라인 스테이지를 이용하여 세 갈래의 혹은 그 이상으로 갈래진 파이프라인 분기/병합을 구현할 수 있다. 또한, 실시예 6가 두 개의 4비트 데이터 요소를 8비트 데이터 요소로 병합하였을지라도, 논리는 두 개의 4비트 스트림에 대해 동작하여 하나의 4비트 스트림을 출력하거나, 혹은 예컨대 두 개의 병합 파이프라인으로부터의 두 개의 4비트 데이터 요소들의 4비트 합을 산출하는 것과 같은 다른 함수들을 수행할 수도 있다.
이전에 상세히 설명한 것처럼, 비동기 파이프라인 제어 및 전송 소자들의 상대적인 타이밍을 긴밀하게 결합시킴으로써, 파이프라인 동작 속도는 상당히 증가될 수 있다. 세 개의 기본적인 실시예는 이러한 결합을 수행하기 위해 개시되었다. 또한, 이러한 원리들의 확장이 상류형 파이프라인, 분기형 파이프라인 및 병합형 파이프라인과 관련하여 설명되었다. 파이프라인 데이터의 함수들을 계산하기 위해 데이터 레지스터들 사이에 회로를 삽입하는 것이 개시되었으며, 이러한 삽입은 여러 방식으로 적용될 수 있다.
당업자에게는, 본 발명의 범주나 사상을 벗어나지 않으면서 본 발명을 다양하게 수정 및 변화시킬 수 있음이 명확할 것이다. 예를 들면, 비록 실시예에서는, 데이터 레지스터에서 데이터 레지스터로 보내진 데이터 요소를 처리하기 위한 논리를 포함하지 않는 FIFO 회로가 설명되었을지라도, 파이프라인형 데이터 처리기를 생성하기 위해 FIFO 메모리 사이에 처리 논리를 삽입하는 것도 가능하다.
본원 명세서에 개시된 발명의 내용과 실시를 고려함으로써 당업자에게는 본 발명의 다른 실시예들도 명확할 것이다. 설명 내용과 실시예들은 단지 예시를 위한 것이다. 본 발명의 진정한 범주와 사상은 이후의 특허청구범위와 그의 등가물에 의해 나타난다.

Claims (15)

  1. 복수의 스테이지를 포함하는 비동기 파이프라인을 제어하는 회로에 있어서,
    상기 복수의 스테이지들중 제 1 스테이지의 전송 상태를 제어하는 제 1 제어 회로와,
    상기 복수의 스테이지들중 상기 제 1 스테이지와 직렬 접속되어 있는 제 2 스테이지의 전송 상태를 제어하는 제 2 제어 회로와,
    상기 제 1 및 제 2 제어 회로의 출력들에 접속되어 있으며, 상기 제 1 및 제 2 제어 회로에 의해 수신될 이동 신호를 상기 제 1 및 제 2 제어 회로의 출력들에 기초하여 발생시키는 검출 회로와,
    상기 제 1 제어 회로와 상기 검출 회로 사이에 접속되어 있는 제 1 인버터와,
    상기 제 2 제어 회로와 상기 검출 회로 사이에 접속되어 있는 제 2 인버터
    를 포함하는 비동기 파이프라인 제어 회로.
  2. 제 1 항에 있어서,
    상기 제 1 및 제 2 제어 회로는 교차 접속된 NAND 게이트 쌍을 각각 포함하는 비동기 파이프라인 제어 회로.
  3. 제 1 항에 있어서,
    상기 검출 회로는 NAND 게이트를 포함하는 비동기 파이프라인 제어 회로.
  4. 제 1 항에 있어서,
    상기 복수의 스테이지들중 제 3 스테이지의 전송 상태를 제어하는 제 3 제어 회로를 더 포함하고,
    상기 검출 회로는 상기 제 3 제어 회로의 출력에 접속된 입력을 구비하고, 상기 검출 회로에 의해 발생된 상기 이동 신호는 상기 제 3 제어 회로에 의해 수신되는 비동기 파이프라인 제어 회로.
  5. 복수의 스테이지를 포함하는 비동기 파이프라인을 제어하는 회로에 있어서,
    상기 복수의 스테이지들중 제 1 스테이지의 전송 상태를 제어하는 제 1 제어 회로와,
    상기 복수의 스테이지들중 상기 제 1 스테이지와 직렬 접속되어 있는 제 2 스테이지의 전송 상태를 제어하는 제 2 제어 회로와,
    상기 제 1 및 제 2 제어 회로의 출력들에 접속되어 있으며, 상기 제 1 및 제 2 제어 회로에 의해 수신될 이동 신호를 상기 제 1 및 제 2 제어 회로의 출력들에 기초하여 발생시키는 검출 회로를 포함하되,
    상기 제 1 및 제 2 제어 회로는 각각,
    전원에 접속된 소스 단자 및, 공통 노드에 접속된 드레인 단자를 구비하는 PMOS 트랜지스터와,
    상기 공통 노드에 접속된 소스 단자 및, 접지된 드레인 단자를 구비하는 NMOS 트랜지스터
    를 포함하는 비동기 파이프라인 제어 회로.
  6. 제 5 항에 있어서,
    상기 제 1 및 제 2 제어 회로는 각각,
    상기 공통 노드에 접속된 입력을 구비하는 인버터와,
    상기 인버터의 출력에 접속된 입력 및, 상기 공통 노드에 접속된 출력을 구비하는 키퍼 인버터(a keeper inverter)를 더 포함하는 비동기 파이프라인 제어 회로.
  7. 컴퓨터 메모리에 있어서,
    FIFO(a first-in-first-out) 메모리와,
    제 1 및 제 2 트랜지스터를 구비하며, 제 1 입력과, 제 2 입력과, 상기 FIFO 메모리를 제어하는 출력을 구비하는 제 1 제어 회로와,
    제 1 및 제 2 트랜지스터를 구비하며, 제 1 입력과, 제 2 입력과, 상기 FIFO 메모리를 제어하는 출력을 구비하는 제 2 제어 회로와,
    상기 제 1 제어 회로의 출력과 상기 제 2 제어 회로의 출력을 수신하여, 상기 제 1 및 제 2 제어 회로의 출력들에 따라 이동 신호를 발생하도록 구성되어 있는 검출 회로를 포함하되,
    상기 발생된 이동 신호는 상기 제 1 및 제 2 제어 회로 각각에서 상기 제 1 트랜지스터의 게이트 입력이나 또는 상기 제 2 트랜지스터의 게이트 입력을 턴온시킴으로써 상기 제 1 및 제 2 제어 회로의 출력을 변경시키는
    컴퓨터 메모리.
  8. 제 7 항에 있어서,
    상기 FIFO 메모리는 직렬 접속된 복수의 레지스터를 포함하되, 상기 레지스터들중 제 1 레지스터의 게이트 입력은 상기 제 1 제어 회로의 출력에 접속되어 있고, 상기 레지스터들중 제 2 레지스터의 게이트 입력은 상기 제 2 제어 회로의 출력에 접속되어 있는 컴퓨터 메모리.
  9. 제 8 항에 있어서,
    상기 제 1 및 제 2 제어 회로는
    상기 제 1 및 제 2 트랜지스터에 대해 공통인 노드에 접속되어 있는 입력을 구비하며, 상기 제 1 및 제 2 제어 회로의 각 출력중 하나의 출력을 출력으로서 전송하는 제 1 인버터와,
    상기 제 1 인버터의 출력에 접속된 입력을 구비하며, 상기 공통 노드에 접속된 출력을 구비하는 제 2 인버터를 더 포함하는 컴퓨터 메모리.
  10. 제 9 항에 있어서,
    상기 검출 회로는 NAND 게이트인 컴퓨터 메모리.
  11. 제 10 항에 있어서,
    상기 검출 회로는 인버터에 접속된 NAND 게이트인 컴퓨터 메모리.
  12. 상반되는 방향으로 흐르는 제 1 파이프라인과 제 2 파이프라인을 포함하는 비동기 상류형 파이프라인(an asynchronous counterflow pipeline)을 제어하는 회로에 있어서,
    상기 제 1 파이프라인의 제 1 스테이지의 전송 상태를 제어하는 제 1 제어 회로와,
    상기 제 1 제어 회로와 인접하고 있는 상기 제 2 파이프라인의 제 2 스테이지의 전송 상태를 제어하는 제 2 제어 회로와,
    상기 제 1 및 제 2 제어 회로의 출력들과, 상기 제 2 파이프라인으로부터의 제 2 검출 회로의 출력에 접속되어, 상기 제 1 및 제 2 제어 회로의 출력들과 상기 제 2 검출 회로의 출력에 기초하여 이동 신호를 발생시키고, 상기 이동 신호를 상기 제 1 및 제 2 제어 회로와 상기 제 2 파이프라인으로 전송하는 제 1 검출 회로
    를 포함하는 비동기 상류형 파이프라인 제어 회로.
  13. 제 12 항에 있어서,
    상기 제 1 및 제 2 제어 회로는 교차 접속된 NAND 게이트들이며, 상기 교차 접속된 NAND 게이트들은 두 개의 상반되는 흐름의 파이프라인들중 하나만이 한 번에 이동가능하도록 만드는 상호 배제 회로(a mutual exclusion circuit)로서 구성되어 있는 비동기 상류형 파이프라인 제어 회로.
  14. 제 13 항에 있어서,
    상기 교차 접속된 NAND 게이트들의 각각의 NAND 게이트는,
    소스에는 제 1 입력 신호가 접속되고, 게이트에는 제 2 입력 신호가 접속되며, 드레인에는 상기 NAND 게이트의 출력이 접속되어 있는 제 1 트랜지스터와,
    소스에는 Vdd가 접속되고, 게이트에는 제 3 입력 신호가 접속되며, 드레인에는 상기 NAND 게이트의 출력이 접속되어 있는 제 2 트랜지스터와,
    게이트에는 상기 제 2 입력 신호가 접속되고, 소스에는 상기 NAND 게이트의 출력이 접속되어 있는 제 3 트랜지스터와,
    소스에는 상기 제 3 트랜지스터의 드레인이 접속되고, 게이트에는 상기 제 3 입력 신호가 접속되며, 드레인은 접지되어 있는 제 4 트랜지스터를 더 포함하는 비동기 상류형 파이프라인 제어 회로.
  15. 제 14 항에 있어서,
    상기 제 1 및 제 2 트랜지스터는 PMOS 트랜지스터이고, 상기 제 3 및 제 4 트랜지스터는 NMOS 트랜지스터인 비동기 상류형 파이프라인 제어 회로.
KR1019970050738A 1996-10-01 1997-10-01 비동기 파이프라인 제어 회로 및 비동기 파이프라인을 구비하는 컴퓨터 메모리 KR19980032458A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/720,755 US5937177A (en) 1996-10-01 1996-10-01 Control structure for a high-speed asynchronous pipeline
US8/720,755 1996-10-01

Publications (1)

Publication Number Publication Date
KR19980032458A true KR19980032458A (ko) 1998-07-25

Family

ID=24895160

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970050738A KR19980032458A (ko) 1996-10-01 1997-10-01 비동기 파이프라인 제어 회로 및 비동기 파이프라인을 구비하는 컴퓨터 메모리

Country Status (6)

Country Link
US (1) US5937177A (ko)
EP (2) EP1296221A1 (ko)
JP (1) JPH11167791A (ko)
KR (1) KR19980032458A (ko)
SG (1) SG79221A1 (ko)
TW (1) TW345638B (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6502180B1 (en) * 1997-09-12 2002-12-31 California Institute Of Technology Asynchronous circuits with pipelined completion process
US9092595B2 (en) 1997-10-08 2015-07-28 Pact Xpp Technologies Ag Multiprocessor having associated RAM units
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US6477637B1 (en) * 1999-09-30 2002-11-05 International Business Machines Corporation Method and apparatus for transporting store requests between functional units within a processor
US6574690B1 (en) 1999-12-29 2003-06-03 Sun Microsystems, Inc. Asynchronous pulse bifurcator circuit with a bifurcation path coupled to control fifo and first and second subordinate fifo
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US6420907B1 (en) * 2000-09-29 2002-07-16 Sun Microsystems, Inc. Method and apparatus for asynchronously controlling state information within a circuit
US20020078328A1 (en) * 2000-12-14 2002-06-20 International Business Machines Corporation Pulse-controlled micropipeline architecture
US6925549B2 (en) * 2000-12-21 2005-08-02 International Business Machines Corporation Asynchronous pipeline control interface using tag values to control passing data through successive pipeline stages
US6859873B2 (en) * 2001-06-08 2005-02-22 Infineon Technologies Ag Variable length instruction pipeline
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
JP4531559B2 (ja) * 2002-06-14 2010-08-25 エヌエックスピー ビー ヴィ Fifoレジスタおよびfifoレジスタを備えるデジタル信号プロセッサ
US7423696B2 (en) * 2005-01-07 2008-09-09 Hewlett-Packard Development Company, L.P. Concurrent luminance-saturation adjustment of digital images
CN101258463A (zh) * 2005-09-05 2008-09-03 Nxp股份有限公司 异步脉动流水线
US7890826B2 (en) * 2006-12-11 2011-02-15 Oracle America, Inc. Method and apparatus for test of asynchronous pipelines
US7971043B2 (en) * 2007-11-22 2011-06-28 Andes Technology Corporation Electronic system and method for changing number of operation stages of a pipeline
US20150074353A1 (en) * 2013-09-06 2015-03-12 Futurewei Technologies, Inc. System and Method for an Asynchronous Processor with Multiple Threading
US9385717B1 (en) * 2014-05-30 2016-07-05 Altera Corporation Level-sensitive two-phase single-wire latch controllers without contention
CN112667292B (zh) * 2021-01-26 2024-04-05 北京中科芯蕊科技有限公司 一种异步微流水线控制器

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3510680A (en) * 1967-06-28 1970-05-05 Mohawk Data Sciences Corp Asynchronous shift register with data control gating therefor
US4151609A (en) * 1977-10-11 1979-04-24 Monolithic Memories, Inc. First in first out (FIFO) memory
US4225920A (en) * 1978-09-11 1980-09-30 Burroughs Corporation Operator independent template control architecture
FR2552916B1 (fr) * 1983-09-29 1988-06-10 Thomas Alain File d'attente asynchrone a empilement de registres
US5187800A (en) * 1985-01-04 1993-02-16 Sun Microsystems, Inc. Asynchronous pipelined data processing system
US4791551A (en) * 1985-02-11 1988-12-13 Analog Devices, Inc. Microprogrammable devices using transparent latch
US4805139A (en) * 1987-10-22 1989-02-14 Advanced Micro Devices, Inc. Propagating FIFO storage device
GB9114513D0 (en) * 1991-07-04 1991-08-21 Univ Manchester Condition detection in asynchronous pipelines
US5572691A (en) * 1993-04-21 1996-11-05 Gi Corporation Apparatus and method for providing multiple data streams from stored data using dual memory buffers
US5513224A (en) * 1993-09-16 1996-04-30 Codex, Corp. Fill level indicator for self-timed fifo
EP0650117B1 (en) * 1993-10-21 2002-04-10 Sun Microsystems, Inc. Counterflow pipeline
US5638009A (en) * 1993-10-21 1997-06-10 Sun Microsystems, Inc. Three conductor asynchronous signaling

Also Published As

Publication number Publication date
EP0834802A2 (en) 1998-04-08
TW345638B (en) 1998-11-21
EP1296221A1 (en) 2003-03-26
JPH11167791A (ja) 1999-06-22
SG79221A1 (en) 2001-03-20
EP0834802A3 (en) 1999-05-19
US5937177A (en) 1999-08-10

Similar Documents

Publication Publication Date Title
KR19980032458A (ko) 비동기 파이프라인 제어 회로 및 비동기 파이프라인을 구비하는 컴퓨터 메모리
Day et al. Investigation into micropipeline latch design styles
Seitz System timing
US4414547A (en) Storage logic array having two conductor data column
US5719878A (en) Scannable storage cell and method of operation
JP3869726B2 (ja) 大容量非同期パイプライン処理の回路および方法
US6420907B1 (en) Method and apparatus for asynchronously controlling state information within a circuit
McAuley Four state asynchronous architectures
US6043674A (en) Null convention logic gates with flash, set and reset capability
US20060233006A1 (en) Programmable pipeline array
JPS62168424A (ja) プログラマブル論理アレイ
JP2004512712A (ja) 回路内のデータ転送非同期制御
WO2008152085A1 (en) Data pipeline with large tuning range of clock signals
US6420905B1 (en) Vented CMOS dynamic logic system
Greenstreet et al. Self-timed iteration
TWI528720B (zh) 用於低擺時脈之免競爭位準轉換正反器
US20050007170A1 (en) Asynchronous control circuit and semiconductor integrated circuit device
EP0178419B1 (en) Dynamically selectable polarity latch
McAuley Dynamic asynchronous logic for high-speed CMOS systems
KR100346586B1 (ko) 클럭 펄스 발생기, 공간 광 변조기 및 표시 장치
Farnsworth et al. Utilising dynamic logic for low power consumption in asynchronous circuits
US6574690B1 (en) Asynchronous pulse bifurcator circuit with a bifurcation path coupled to control fifo and first and second subordinate fifo
Varshavsky et al. Self-timed data transmission in massively parallel computing systems
Akram Robustness Comparison of Asynchronous Bounded Delay Micropipelines Utilizing Combinational Logic Versus an Inverter Chain for Delay Matching
Mathew et al. A data-driven micropipeline structure using DSDCVSL

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