KR100761430B1 - 혼합형 비동기 및 동기 시스템을 위한 낮은 대기시간fifo 회로 - Google Patents

혼합형 비동기 및 동기 시스템을 위한 낮은 대기시간fifo 회로 Download PDF

Info

Publication number
KR100761430B1
KR100761430B1 KR1020027016784A KR20027016784A KR100761430B1 KR 100761430 B1 KR100761430 B1 KR 100761430B1 KR 1020027016784 A KR1020027016784 A KR 1020027016784A KR 20027016784 A KR20027016784 A KR 20027016784A KR 100761430 B1 KR100761430 B1 KR 100761430B1
Authority
KR
South Korea
Prior art keywords
cell
token
signal
foot
empty
Prior art date
Application number
KR1020027016784A
Other languages
English (en)
Other versions
KR20030066333A (ko
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 KR20030066333A publication Critical patent/KR20030066333A/ko
Application granted granted Critical
Publication of KR100761430B1 publication Critical patent/KR100761430B1/ko

Links

Images

Classifications

    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)
  • Time-Division Multiplex Systems (AREA)

Abstract

FIFO 설계는 상이한 시간 영역에서 동작하는 송신기 서브시스템과 수신기 서브시스템을 인터페이스 한다. 송신기 서브시스템과 수신기 서브시스템은 동기식이거나 비동기식일 수 있다. FIFO 회로는 송신기 시간 영역에 따라서 동작하도록 구성된 풋 인터페이스(put interface)와, 수신기 시간 영역에 따라서 동작하도록 구성된 겟 인터페이스(get interface)를 포함한다. FIFO 회로는 레지스터와 셀의 상태를 나타내는 상태 제어기를 가지는 셀들로 이루어지는 셀 어레이를 포함한다. 각 셀은 또한 풋 토큰 전달 회로(put token passing circuit) 및 풋 제어기 회로를 포함하며, 송신기 시간 영역에 따라 동작하도록 구성된 풋 구성요소(put component part)를 갖는다. 각 셀은 겟 토큰 전달 회로 및 겟 제어기 회로를 포함하며, 수신기 시간 영역에 따라 동작하도록 구성된 겟 구성요소를 갖는다. 혼합형 클록 중계국(mixed-clock relay station) 설계는 상이한 시간 영역에서 동작하는 송신기 서브시스템 및 수신기 서브시스템을 인터페이스하며, 송신기와 수신기간의 대기시간(latency)이 크다.
FIFO, 인터페이스, 동기식, 비동기식, 대기시간, 처리량, 중계국

Description

혼합형 비동기 및 동기 시스템을 위한 낮은 대기시간 FIFO 회로 {LOW LATENCY FIFO CIRCUITS FOR MIXED ASYNCHRONOUS AND SYNCHRONOUS SYSTEMS}
이 출원은 2000년 6월 9일에 "Low-Latency FIFO For Mixed-Clock Systems"을 발명의 명칭으로 하여 출원된 미국 가특허출원 제60/210,642호를 기초로 우선권을 주장하며, 그것은 본 명세서에 온전히 참조로 통합된다.
본 발명은 FIFO 회로에 관한 것이며, 특히 상이한 속도로 동작하는 서브시스템들을 인터페이스하고(interface), 동기식 또는 비동기식일 수 있으며, 서브시스템들 사이에 매우 긴 상호연결 지연을 갖는 낮은 대기시간(low latencty)을 갖는 FIFO 설계에 관한 것이다.
VLSI는 매우 많은 클록 영역을 포함하는 "시스템온칩(system-on-a-chip)"으로 가고 있는 추세이다. 도전적인 문제는 이들 영역을 강건하게(robustly) 인터페이스하는 것이다. 특히 신뢰성 있는 낮은 대기시간 통신을 제공하는 몇 가지 적절한 해법이 있다. 시스템온칩의 설계에는 두 가지 중요한 도전이 있다. 그 첫 번째 도전은 상이한 타이밍 가정하에서의 시스템 운영에 관한 것이다. 이 타이밍 가정들은 동기 및 비동기 환경 둘 다는 물론이고 상이한 클록 속도를 포함한다. 두 번째 도전은 시스템간 통신에서 긴 지연을 갖는 설계에 관한 것이다.
FIFO 회로 및 구성요소의 수는 서브시스템들 사이의 불일치를 조종하도록 개발되었다. 일부 설계는 단일 클록 시스템을 조종하도록 제한된다. 이 접근법들은 클록 스큐(clock skew), 드리프트(drift) 및 지터(jitter)를 취급하도록 제안되었다(R. Kol et al., "Adaptive Synchronization for Multi-Synchronous System," IEEE International Conference on Computer Design (ICCD'98), pp.188-189, October 1998; 및 M. Greenstreet, "Implementing a START Chip," Proceedings IEEE International Conference on Computer Design (ICCD), pp. 38-43, 1995). 긴 상호연결 지연을 취급하기 위하여, "대기시간 무영향 프로토폴(latency- insensitive protocol)"이 제안되었다(L.Carloni et al., "A Methodology for Correct-by-Construction Latency Insensitive Design," ICCAD, 1999). 그러나 이 해법은 단일 클록 영역으로 한정된다.
혼합 타이밍 영역(mixed-timing domain)들을 취급하기 위한 몇 가지 설계 또한 제안되었다. 한 부류의 설계 접근법은 데이터 항목(data item) 및/또는 제어 신호를 수신기에 동기화하기 위하여 시도한다. 특히, 세이조빅(Seizovic)은 비동기 환경과 동기 환경을 "동기화 FIFO"를 통하여 강건하게 인터페이스한다(J. Seizovic, "Pipeline Synchronization", Proceedings International Symposium on Advanced Research in Asynchronous Circuits and Systems, pp. 87-96, November 1994). 그러나, 이 설계의 대기시간은 FIFO 단(段)의 수에 비례하며, 그 구현에는 값비싼 동기 장치(synchronizer)들을 포함한다. 게다가, 그의 설계는 일정한 속도로 데이터 항목을 생성하기 위한 송신기를 필요로 한다.
다른 설계들은 수신기의 클록을 일시적으로 변경하여 혼합형 클록 시스템의 강건한 인터페이스를 실현한다. 동기화 실패는 수신기의 로컬 클록을 일시 정지(pausing)시키거나 신장(stretching)하여 방지한다. 각 통신 동기 시스템은 비동기 논리(logic)로 보호되며, 다른 시스템들과의 통신 및 클록 조정을 책임진다. 이 접근법은 로컬 시스템의 클록들을 변화시키고, 시스템을 재시작할 때에 대기시간 패널티(latency penalty)를 도입할 수도 있다.
제리 젝스(Jerry Jex) 등의 미국 특허 제5,598,113호는 혼합형 클록 FIFO 회로를 기술한다. 그러나, 제리 젝스의 특허에 기술된 FIFO 회로는 동기화 구현에 상당히 넓은 영역 오버헤드(area overhead)를 가진다. 예를 들어, 이 설계는 각 셀마다 두 개의 동기 장치를 가진다.
따라서, 낮은 대기시간과 높은 처리량(throughput)과 혼합형 동기/비동기 환경에서 동작할 수 있는 능력을 갖는 FIFO 회로 기술이 필요하다.
본 발명의 목적은 낮은 대기시간과 높은 처리량을 가지는 FIFO 회로를 제공하는 것이다.
본 발명의 다른 목적은 혼합형 동기/비동기 환경에 유용한 FIFO 회로를 제공하는 것이다.
본 발명의 또 다른 목적은 긴 지연과 혼합형 동기/비동기 환경과 관련하여 중계국(relay station)으로 사용될 수 있는 FIFO 회로를 제공하는 것이다.
본 발명의 또 다른 목적은 특정 동작 프로토콜, 즉 동기 또는 비동기 용도로 구성되며, 다른 구성요소의 동작 프로토콜과 상관없이 다른 구성요소와 관련하여 사용될 수 있는 FIFO 회로 구성요소(부품)를 제공하는 것이다.
본 명세서의 기재로 명백하게 될 본 발명의 상기한 그리고 기타 목적은 제1 동작 프로토콜로 동작하는 송신기 서브시스템 과 제2 동작 프로토콜로 동작하는 수신기 서브시스템 사이에서 데이터 항목의 전송을 인터페이스하는 FIFO 회로에 의해 실현된다.
풋 인터페이스(put interface)는 제1 동작 프로토콜에 따라 동작하도록 구성되고, 송신기 서브시스템으로부터 데이터 항목을 전송하기 위한 풋 데이터 버스(put data bus)를 포함하며, 풋 데이터 버스로부터의 데이터 항목을 넣기(enqueue) 위한 송신기 서브시스템으로부터 풋 요구(put request)를 수신하기 위하여 풋 데이터 요구를 입력한다.
겟 인터페이스(get interface)는 제2 시간 영역에 따라 동작하도록 구성되고, 데이터 항목을 수신기 서브시스템으로 송신하기 위한 겟 데이터 버스(get data bus)와 데이터 항목을 겟 데이터 버스로 꺼내기(dequeue) 위한 수신기 서브시스템으로부터 겟 요구(get request)를 수신하기 위하여 겟 데이터 요구 입력을 포함한다.
셀(cell)들로 이루어지는 어레이(array)가 제공된다. 각 셀은 풋 데이터 버스로부터 데이터 항목을 수신하고 그 데이터 항목을 겟 데이터 버스로 송신하도록 구성된 레지스터, 셀의 상태를 나타내는 상태 제어기, 제1 동작 프로토콜에 따라 동작하도록 구성된 풋 구성요소 및 제2 동작 프로토콜에 따라서 동작하도록 구성된 겟 구성요소를 갖는다.
풋 구성요소는 제1 인접 셀로부터 풋 토큰을 수신하고, 풋 요구, 풋 토큰 및 셀의 상태에 기초하여 풋 데이터 버스로부터 수신된 데이터 항목을 레지스터에 래치하며, 그 풋 토큰을 제2 인접 셀에 전달한다. 겟 구성요소는 제1 인접 셀로부터 겟 토큰을 수신하고, 겟 요구, 겟 토큰 및 셀의 상태에 기초하여 데이터 항목을 레지스터로 꺼내며, 그 겟 토큰을 제2 인접 셀에 전달한다.
본 발명에 따라 상기한 목적들은 충족되었으며, 낮은 대기시간과 높은 처리량 그리고 혼합형 동기/비동기 환경에서 동작할 수 있는 능력을 갖는 FIFO 회로 기술의 필요는 실질적으로 충족되었다. 본 발명의 부가적인 특징, 성질 및 여러 이점은 첨부된 도면 및 이하의 예시적인 실시예의 상세한 설명으로부터 더욱 명백해질 것이다.
도 1은 본 발명에 따른 동기 풋 인터페이스의 개략도이다.
도 2는 본 발명에 따른 동기 겟 인터페이스의 개략도이다.
도 3은 본 발명에 따른 비동기 풋 인터페이스의 개략도이다.
도 2는 본 발명에 따른 비동기 겟 인터페이스의 개략도이다.
도 5는 본 발명의 제1 실시예에 따른 전형적인 FIFO 회로의 개략 블록도이다.
도 6은 도 5에 도시한 FIFO 회로의 더욱 상세한 개략 블록도이다.
도 7은 본 발명의 제2 실시예에 따른 전형적인 FIFO 회로의 개략 블록도이 다.
도 8은 도 7에 도시한 FIFO 회로의 더욱 상세한 개략 블록도이다.
도 9는 본 발명의 제3 실시예에 따른 전형적인 FIFO 회로의 개략 블록도이다.
도 10은 도 9에 도시한 FIFO 회로의 더욱 상세한 개략 블록도이다.
도 11은 본 발명에 따른 동기 풋 프로토콜과 관련하여 인가된 전형적인 신호의 시도표(time plot)이다.
도 12는 본 발명에 따른 동기 겟 프로토콜과 관련하여 인가된 전형적인 신호의 시도표이다.
도 13은 본 발명에 따른 비동기 풋 프로토콜과 관련하여 인가된 전형적인 신호의 시도표이다.
도 14는 본 발명에 따른 비동기 겟 프로토콜과 관련하여 인가된 전형적인 신호의 시도표이다.
도 15는 본 발명에 따라 도 5 및 도 6의 FIFO 회로의 일부분을 확대 도시한 개략 블록도이다.
도 16은 본 발명에 따라 도 15에 도시된 FIFO 회로의 일부분을 더욱 상세하게 나타낸 개략 블록도이다.
도 17은 본 발명에 따라 도 5 및 도 6에 도시된 FIFO 회로의 풀 검출기(full detector)의 개략 블록도이다.
도 18은 본 발명에 따라 도 5 및 도 6에 도시된 FIFO 회로의 제1 엠티 검출 기(first empty detector)의 개략 블록도이다.
도 19는 본 발명에 따라 도 5 및 도 6에 도시된 FIFO 회로의 제2 엠티 검출기(second empty detector)의 개략 블록도이다.
도 20은 본 발명에 따라 도 5 및 도 6에 도시한 FIFO 회로의 다른 부분의 개략 블록도이다.
도 21은 본 발명에 따라 도 5 및 도 6에 도시한 FIFO 회로의 또 다른 부분의 개략 블록도이다.
도 22는 본 발명에 따라 도 7 및 도 8의 FIFO 회로의 일부분을 확대 도시한 개략 블록도이다.
도 23은 본 발명에 따라 도 22에 도시된 FIFO 회로의 일부분을 더욱 상세하게 나타낸 개략 블록도이다.
도 24는 본 발명에 따라 도 23에 도시된 FIFO 일부분에 대한 버스트 모드 명세(burst-mode specification)이다.
도 25a는 본 발명에 따라 도 23에 도시된 FIFO 회로의 일부분을 더욱 상세하게 나타낸 개략 블록도이다.
도 25b는 본 발명에 따라 도 23에 도시된 FIFO 회로의 일부분에 대한 다른 실시예를 더욱 상세하게 나타낸 개략 블록도이다.
도 26은 본 발명에 따라 도 23에 도시된 FIFO 회로의 다른 부분을 더욱 상세하게 나타낸 개략 블록도이다.
도 27은 본 발명에 따라 도 23에 도시된 FIFO 회로의 또 다른 부분을 더욱 상세하게 나타낸 개략 블록도이다.
도 28은 본 발명에 따라 도 23에 도시된 FIFO 회로의 일부분에 대한 페트리 네트 명세(Petri-net specification)이다.
도 29는 본 발명에 따라 도 9 및 도 10의 FIFO 회로의 일부분을 확대 도시한 개략 블록도이다.
도 30은 본 발명에 따라 도 29에 도시된 FIFO 회로의 일부분을 더욱 상세하게 나타낸 개략 블록도이다.
도 31a는 본 발명에 따라 도 30에 도시된 FIFO 회로의 일부분을 더욱 상세하게 나타낸 개략 블록도이다.
도 31b는 본 발명에 따라 도 30에 도시된 FIFO 회로의 일부분에 대한 다른 실시예를 더욱 상세하게 나타낸 개략 블록도이다.
도 32는 본 발명에 따라 도 30에 도시된 FIFO의 일부에 대한 버스트 모드 명세이다.
도 33은 본 발명에 따라 도 30에 도시된 FIFO 회로의 다른 부분을 더욱 상세하게 나타낸 개략 블록도이다.
도 34는 본 발명에 따라 도 30에 도시된 FIFO 회로의 또 다른 부분을 더욱 상세하게 나타낸 개략 블록도이다.
도 35는 본 발명에 따라 도 30에 도시된 FIFO 회로의 일부분에 대한 페트리 네트 명세이다.
도 36은 종래 시스템의 개략 블록도이다.
도 37은 중계국을 통합하는 종래 시스템의 개략 블록도이다.
도 38은 종래 중계국의 개략 블록도이다.
도 39는 본 발명에 따른 FIFO 회로 중계국의 개략 블록도이다.
도 40은 본 발명에 따라 도 39에 도시된 FIFO 회로 중계국을 더욱 상세하게 나타낸 개략 블록도이다.
도 41은 본 발명에 따라 도 40에 도시된 FIFO 회로 중계국의 일부분을 상세하게 나타낸 개략도이다.
도 42는 본 발명에 따라 도 40에 도시된 FIFO 회로 중계국의 다른 부분을 상세하게 나타낸 개략도이다.
도 43은 본 발명에 따른 다른 FIFO 회로 중계국의 개략 블록도이다.
도 44는 본 발명에 따라 도 43에 도시된 FIFO 회로 중계국을 더욱 상세하게 나타낸 개략 블록도이다.
도 45는 본 발명에 따라 도 44에 도시된 FIFO 회로 중계국을 더욱 상세하게 나타낸 개략도이다.
도 46은 본 발명에 따라 도 45에 도시된 FIFO 회로 중계국의 일부분을 상세하게 나타낸 개략도이다.
도 47은 본 발명에 따른 또 다른 FIFO 회로 중계국의 개략 블록도이다.
도 48은 본 발명에 따라 도 47에 도시된 FIFO 회로 중계국을 더욱 상세하게 나타낸 개략 블록도이다.
도 49는 본 발명에 따라 도 48에 도시된 FIFO 회로 중계국을 더욱 상세하게 나타낸 개략도이다.
도 50은 본 발명에 따라 도 49에 도시된 FIFO 회로 중계국의 일부분을 상세하게 나타낸 개략도이다.
본 발명에 따른 FIFO 회로는 두 서브시스템, 즉 데이터 항목을 생성하는 송신기 서브시스템과 데이터 항목을 소비하는 수신기 서브시스템 사이를 중재한다. FIFO 회로는 동일한 셀(identical cell)들로 이루어지는 원형 버퍼(circular buffer)로 구현되고, 각 셀은 공통 데이터 버스들을 사용하여 두 서브시스템과 통신한다. 셀의 입력 및 출력 작용은 데이터를 넣기 위한 것과 데이터를 꺼내기 위한 것인 링 주위의 두 개의 토큰 흐름에 의해 규정된다. 데이터 항목이 일단 넣어지면 링 주위로 이동하지 않는다. 따라서 낮은 대기시간의 기회를 제공하려면 일단 데이터 항목을 넣은 후 곧 꺼낼 수 있어야 한다.
각 FIFO 회로는 다수의 상이한 시스템에서 다른 모듈 구성요소(modular components)들과 같이 사용될 수 있는 모듈 구성요소로 분할된다. 일련의 인터페이스, 또는 FIFO 회로의 일부는 이하에서 설명하는 바와 같이, 송신기측 및 수신기측 모두의 타이밍 가정(timing assumption)을 충족시키는 완전한 FIFO 회로를 얻기 위하여 서로 결합될 수 있다. 여기서 사용된 바와 같이, "시간 영역"은 서브시스템이 동기식인지 비동기식인지를 가리킨다.
본 발명에 따르면, 각 FIFO 회로는 두 개의 인터페이스 또는 환경과 협력하도록 설계된 FIFO 회로 부분을 갖는다. 먼저, 풋 인터페이스는 송신기 서브시스템 과 통신하는 FIFO 회로 부분이다. 도 1에 동기 풋 인터페이스를 도시하고, 도 3에 비동기 풋 인터페이스를 도시한다. 다음에, 겟 인터페이스는 수신기 서브시스템과 통신하는 FIFO 회로 부분이다. 도 2에 동기 겟 인터페이스를 도시하고, 도 4에 비동기 겟 인터페이스를 도시한다. 환경과 인터페이스하는 FIFO 회로는 송신기 서브시스템과 수신기 서브시스템이 모두 동기식이든, 각각 동기식과 비동기식, 또는 비동기식과 동기식이든 나타난 상태에 적절하게 일치하는 풋 인터페이스와 겟 인터페이스를 부가하여 조립될 수 있다.
도 1 및 도 2는 본 발명에 따른 두 개의 동기 인터페이스를 도시한다. 도 1에 도시된 동기 풋 인터페이스(10)는 송신기 클록 신호(12)(CLK_put)에 의해 제어된다. 동기 풋 인터페이스(10)에는 두 개의 입력, 즉 데이터를 넣기 위한 송신기의 통신 요구인 풋 요구 신호(14)(req-put)와 데이터 항목을 위한 버스인 송신기 데이터 버스(16)(data_put)가 있다. 전체 풀 신호(global full signal)(18)(full)는 FIFO 회로가 꽉 찬 경우에만 발생되고(asserted), 그렇지 않으면 발생 해제된다(de-asserted).
도 2는 수신기 클록 신호(22)(CLK_get)에 의해 제어되는 동기 겟 인터페이스(20)를 도시한다. 데이터 항목을 꺼내기 위한 수신기로부터의 하나의 제어 입력은 겟 요구 신호(24)(req-get)이다. 데이터는 수신기 데이터 버스(26)(data_get)에 놓인다. 전체 엠티 신호(global empty singal)(28)(empty)는 FIFO 회로가 빈 경우에만 생성된다. 유효 데이터 신호(30)(valid_get)는 데이터 항목이 유효함을 나타낸다.
도 3 및 도 4에 도시한 비동기 인터페이스는 클록 신호에 동기화되지 않는다. 도 3은 동기 풋 인터페이스(10)(도 1)의 입력과 실질적으로 같은 종류의 두 개의 입력을 갖는 비동기 풋 인터페이스(40)를 도시한다. 먼저, 데이터를 넣기 위한 송신기의 통신 요구인 풋 요구 신호(44)(put_req)가 공급되고, 다음에 송신기 데이터 버스(46)(put_data)가 데이터 항목의 출력을 위하여 공급된다. 동기 풋 인터페이스(10)와는 현저히 다르게, 비동기 풋 인터페이스(40)는 전체 풀 신호를 갖지 않는 대신에 풋 동작이 완료되었을 때 풋 응답 신호(45)(put_ack)를 공급한다.
도 4에 도시된 비동기 겟 인터페이스(50)는 겟 요구 신호(54)(get_req) 및 출력 데이터 버스(58)(get_data)를 가진다. 동기식 대응부와 달리, 이 인터페이스는 데이터 유효 신호 또는 전체 엠티 신호를 갖지 않는다. 비동기 겟 인터페이스(50)는 겟 동작이 완료되었음을 나타내는 겟 응답 신호(55)(get_ack)를 공급한다.
도 1 내지 도 4의 모듈 인터페이스(10, 20, 40, 50) 각각은 상이한 환경 사이에 데이터를 전송할 수 있는 FIFO 회로를 만들기 위하여 본 발명에 따라 부가될 수 있다. 예를 들어, 예시적인 실시예 FIFO 회로(100)와 관련하여 기술하는 것처럼 본 명세서에서 "동기-동기" FIFO 회로라고 하는 FIFO 회로를 구성하기 위하여, 동기 송신기 서브시스템과 동기 수신기 서브시스템 사이를 인터페이스하는 FIFO 회로를 동기 풋 인터페이스(10)와 동기 겟 인터페이스(200)를 사용하여 구성할 수 있다. 유사하게, "비동기-동기" FIFO라고 할 수 있는, 비동기 송신기 서브시스템과 동기 수신기 서브시스템 사이를 인터페이스하는 FIFO 회로는 비동기 풋 인터페이스(40)를 동기 겟 인터페이스(20)와 함께 통합하였으며, 예시적인 실시예 FIFO 회로(200)와 관련하여 더욱 상세하게 설명할 것이다. 또, 예시적인 실시예 FIFO 회로(300)와 관련하여 본 명세서에 기술된 바와 같이 "동기-비동기" FIFO 회로라고 할 수 있는, 동기 송신기 서브시스템과 비동기 수신기 시스템을 인터페이스하기 위한 FIFO 회로는 동기 풋 인터페이스(10)와 비동기 겟 인터페이스(50)를 사용할 수 있다.
도 6, 도 8 및 도 10의 FIFO 회로(100, 200, 300) 각각은 실질적으로 유사하며, 여기에 언급한 차이가 있다. 예를 들어, 각 FIFO 회로(100, 200, 300)는 공통 데이터 버스로 풋 인터페이스 및 겟 인터페이스와 통신하는 동일한 셀들로 이루어지는 원형 어레이를 갖는다. 각 동작의 제어 논리는 셀들 사이에 분배되고, 두 인터페이스 사이의 동시성(concurrency)을 허용한다. 데이터는 셀 어레이에서 이동할 수 없다. 따라서, 일단 데이터 항목이 넣어지면 이동되지 않고, 오직 제자리에서 꺼내진다.
항상, FIFO 회로(100, 200, 300)에는 두 개의 토큰, 즉 풋 토큰과 겟 토큰이 존재한다. FIFO 회로(100, 200, 300)의 입력 및 출력 작용은 이들 토큰에 의해 제어된다. 풋 토큰은 데이터 항목의 넣기를 허용하기 위하여 사용되고, 겟 토큰은 데이터 항목의 꺼내기를 허용하기 위하여 사용된다. 풋 토큰을 가지는 셀을 큐(queue)의 "테일(tail)"로 간주할 수 있고, 겟 토큰을 가지는 셀을 큐의 "헤드(head)"로 간주할 수 있다. 정상적인 동작에서, 풋 토큰은 보통 겟 토큰보다 앞에 있다. 일단 셀이 데이터 동작을 위하여 토큰을 사용하였다면 그 토큰은 각각 의 작업이 완료된 후에 다음 셀에 전달된다. 토큰은 이하에 더욱 자세하게 설명하는 것처럼, 이동은 FIFO 회로의 상태, 즉 빈 상태(empty satate)인지 꽉 찬 상태(full state)에 의해서는 물론 인터페이스 요구에 의해서도 제어된다.
FIFO 회로(100, 200, 300)의 아키텍처에는 공통적인 몇 가지 이점이 있다. 데이터가 셀들간에 입력에서 출력으로 전달되지 않기 때문에, 이 FIFO 회로는 잠재적은 낮은 대기시간을 가진다. 따라서, 데이터 항목을 넣자마자 꺼내는 것 또한 가능하다. 다음으로, 데이터 항목이 FIFO 회로에 있는 동안 움직일 수 없기 때문에 FIFO 회로는 잠재적으로 낮은 전력을 공급한다. 끝으로, 이 아키텍처는 매우 스케이러블(scalable)하다, 즉 FIFO 회로의 용량과 데이터 항목의 폭은 매우 적은 설계 변경으로 변화될 수 있다.
제1 예시적인 실시예에 따른 FIFO 회로(100)를 도 5 및 도 6에 도시한다. FIFO 회로(100)는 송신기 서브시스템이 동기식이고 수신기 서브시스템 또한 동기식인 경우에 사용될 수 있다. 따라서, 도 5에 도시한 바와 같이 모듈형 동기 풋 인터페이스(10)가 모듈형 겟 인터페이스(20)와 관련하여 사용된다. 송신기 서브시스템은 송신기 클록 신호(12)(CLK_put)에서 동작하고 수신기 서브시스템은 수신기 클록 신호(22)(CLK_get)에서 동작한다.
도 6에 도시한 바와 같이, FIFO 회로(100)는 동일한 셀들(170a ∼ 170d)로 구성되는 원형 어레이로 구성되고, 두 개의 외부 인터페이스, 즉 송신기 데이터 버스(16)(data_put)에 대한 동기 풋 인터페이스(10) 및 수신기 데이터 버스(26)(data_get)에 대한 동기 겟 인터페이스(20)와 통신한다.
동기 인터페이스(10, 20)는 두 가지 부가형(additional type) 구성요소, 즉 (1) FIFO 회로(100)의 현재 상태, 즉 엠티(empty, 빈 상태) 또는 풀(full, 꽉 찬 상태)을 결정하는 검출기, 및 (2) 조건부로 데이터 동작에 대한 요구를 셀 어레이에 전달하는 외부 제어기를 갖는다. 이 기술분야에 알려져 있는 바와 같이, 동기 인터페이스에서의 데이터 동작은 하나의 클록 사이클 내에 완료되므로, 이 환경에서는 명백한 응답 신호는 필요하지 않다. 그러나, FIFO 회로(100)가 풀(또는 엠티)이 되면, 이 환경은 풋(또는 겟) 인터페이스에서의 통신을 중단하여야 할 필요가 있다. 검출기와 제어기는 예외적인 경우를 검출하기 위하여 FIFO 회로(100)에서 동작하고, 데이터 동작을 수행하는 것이 불안전하면 각 인터페이스 기능을 정지한다(stall). 도 6에 도시한 바와 같이, 풀 검출기(72)와 엠티 검출기(74)는 모든 셀(170a ∼ 170d)의 상태를 관찰하여 FIFO 회로(100)의 전체 상태, 즉 풀 또는 엠티를 계산한다. 풀 검출기(72)의 출력은 풋 인터페이스(10)에 전달될 수 있고, 엠티 검출기(74)의 출력은 겟 인터페이스(20)에 전달될 수 있다. 풋 제어기(176) 및 겟 제어기(178)는 FIFO 회로(100)에 대한 데이터 동작 요구를 필터링한다. 따라서 풋 제어기(176)는 보통 송신기 서브시스템에서의 풋 요구를 전달하지만, FIFO 회로가 꽉 찬(풀) 경우에는 풋 요구의 전달을 불가능하게 한다. 유사하게, 겟 제어기(178)는 보통 송신기 서브시스템으로부터의 겟 요구를 전송하지만 FIFO 회로(100)가 빈(엠티) 경우 겟 요구의 전송을 차단하다. 검출기(72, 74), 제어기(176, 178), 및 "엠티" 및 "풀"에 대한 정의는 이하에 더욱 상세하게 기술한다.
도 7 및 도 8에 제2 예시적인 실시예에 따른 FIFO 회로(200)를 도시한다. FIFO 회로(200)는 송신기 서브시스템이 비동기식이고 수신기 서브시스템이 동기식인 경우에 사용될 수 있다. 따라서 도 7에 도시한 바와 같이, 모듈형 비동기 풋 인터페이스(40)가 모듈형 동기 겟 인터페이스(20)와 관련하여 사용된다. 송신기 서브시스템은 비동기적으로 동작하고, 수신기 서브시스템은 수신기 클록 신호(22)(CLK_get)에 따라 동작한다.
도 8에 도시한 바와 같이, FIFO 회로(200)는 동일한 셀들(270a ∼ 270d)로 이루어지는 원형 어레이로 구성되고, 공통 데이터 버스, 즉 송신기 데이터 버스(46)(data_put) 및 수신기 데이터 버스(16)(data_get)에 대한 두 개의 외부 인터페이스, 비동기 풋 인터페이스(40) 및 동기 겟 인터페이스(20)와 통신한다.
도 6과 관련하여 전술한 바와 같이, 동기 겟 인터페이스(20)는 엠티 검출기(74)와 겟 제어기(278)를 포함한다. 겟 제어기(278)는 일반적으로 수신기 서브시스템으로부터의 겟 요구를 전달하지만, FIFO 회로(200)가 엠티인 경우에는 그러한 요구를 불가능하게 한다. 동기 인터페이스와는 대조적으로, 비동기 풋 인터페이스(40)와 같은 비동기 인터페이스는 풀 또는 엠티 검출기나 외부 제어기를 포함하지 않는다. 비동기 인터페이스는 클록 신호에 따라 동작하지 않기 때문에, 일시적으로 데이터 동작을 정지하는 "풀" 또는 "엠티"와 같은 예외를 발생시킬 필요가 없다. 그러므로, 비동기 인터페이스를 가지는 FIFO 회로가 풀(또는 엠티)이 되면, 데이터 동작을 안전하게 실행할 수 있을 때까지 풋(또는 겟) 응답이 무한히 보류될 수 있다. FIFO 회로(200)의 경우에, 풋 응답 신호(45)(put_ack)는 FIFO 회 로(200)가 풀인 경우에 보류되고, 풋 동작을 안전하게 실행할 수 있을 때 전송된다.
도 9 및 도 10은 제3 예시적인 실시예에 따른 FIFO 회로(300)를 도시한다. FIFO 회로(300)는 송신기 서브시스템이 동기식이고 수신기 서브시스템이 비동기식인 경우에 사용될 수 있다. 도 9에 도시한 바와 같이 동기 풋 인터페이스(10)가 비동기 겟 인터페이스(50)와 관련하여 사용된다. 송신기 서브시스템은 송신기 클록 신호(12)(CLK_put)에 따라 동작하고, 수신기 서브시스템은 비동기적으로 동작한다.
도 10에 도시한 바와 같이, FIFO 회로(300)는 동일한 셀들(370a ∼ 370d)로 이루어지는 원형 어레이를 포함하고, 공통 데이터 버스, 즉 송신기 데이터 버스(16)(data_put) 및 수신기 데이터 버스(56)(data_get)에 대한 두 개의 외부 인터페이스, 동기 풋 인터페이스(10) 및 비동기 겟 인터페이스(50)와 통신한다.
도 6과 관련하여 전술한 바와 같이 동기 풋 인터페이스(10)는 풀 검출기(72)와 풋 제어기(376)를 포함한다. FIFO 회로(300)는 엠티 검출기를 구비하는 대신에, FIFO 회로(300)가 엠티인 경우에 겟 승신 신호(55)(get_ack)는 보류되고, 안전하게 데이터 동작을 실행할 수 있을 때 전송된다.
동기 풋 프로토콜을 도 11에 나타내며, 도 1과 관련하여 설명하였다. 동기 풋 인터페이스(10)는 풋 요구 신호(14)(put_req)를 수신한 때에 풋 동작을 시작하여 송신기 클록 신호(CLK_put)의 상승 에지(12) 이후에 바로 풋 데이터 버스(16)(data_put)에 데이터 항목을 싣는다. FIFO 회로가 꽉 차게 되면, 도 11에 도시한 바와 같이 전체 풀 신호(18)(full)를 다음 클록 사이클 이전에 발생시키고, 동기 풋 인터페이스(10)는 모든 추가적인 작업을 막는다.
도 12는 도 2와 관련하여 설명한 동기 겟 프로토콜을 나타낸다. 동기 겟 동작은 수신기 클록신호(22)(CLK_get)의 상승 에지 이후에 바로 발생되는 겟 요구 신호(24)(req_get)에 의해 인에이블(enable)된다. 클록 사이클의 끝에, 데이터 항목은 그 유효 신호(30)(valid_get)와 함께 겟 데이터 버스(28)(data_get)에 놓인다. 그 클록 사이클 동안에 FIFO 회로가 비게 되면, 전체 엠티 신호(28)(empty)는 다음 클록 사이클의 상승 에지 이후에 즉시 발생된다. 겟 요구(24)(req_get)에 이은 유효 신호(valid_get)와 전체 엠티 신호(28)(empty)는 세 가지 결과를 나타낼 수 있다. 즉 (a) 데이터 항목을 꺼낼 수 있고, 더 많은 데이터 항목을 이용할 수 있다(즉, valid_get=1, empty=0), (b) 데이터 항목을 꺼낼 수 있고, FIFO 회로는 비었다(즉, valid_get=1, empty=1), 또는 (c) FIFO 회로가 비었고, 꺼낼 데이터 항목이 없다(즉, valid_get=0, empty=1).
비동기 풋 및 겟 프로토콜은 도 13 및 도 14에 도시하였다. 비동기 인터페이스는 클록이 없기 때문에, 이 기술분야에 알려진 바와 같이 4상 묶음 데이터 방식(4-phase bundle data style)의 통신을 이용한다(묶음 데이터 통신에 대해 더욱 상세한 것은 S. Furber, "Asynchronous Design," Proceedings of Submicron Electronics, pp. 461-492, 1997; I. Sutherland, "Micropipelines," Communications of the ACM, 32(6), pp. 720-738, June 1989; H. van Gageldonk et al., "An Asynchronous Low-Power 805C51 Microcontroller," Proceedings International Symposium on Advanced Research in Asynchronous Circuits and System, pp. 96-107, 1998에 기술되어 있으며, 이들은 본 명세서에 온전히 참조로서 통합된다). 데이터 항목은 데이터 동작이 요구되기 이전에 데이터 버스에서 안정된 값을 가져야 한다.
도 13에 도시된 바와 같이, 송신기는 데이터 항목을 송신 데이터 버스(46)(put_data)에 놓아 풋 동작을 시작하고, 풋 요구 신호(44)(put_req)를 생성함으로써 데이터 항목을 넣도록 FIFO 회로에 요구를 발생시킨다. 넣기 동작의 완료는 풋 응답 신호(45)(put_ack)의 발생에 의해 나타난다. 이어서 두 개의 제어선이 아이들 상태(idle state)로 리세트(reset)되는데, 먼저 풋 요구(44)(put_req)가, 그 다음에 풋 응답(45)(put_ack)이 리세트된다.
유사하게, 비동기 겟 동작을 도 14에 도시한다. 겟 동작은 겟 요구 신호(54)(get_req)를 발생시켜 데이터 항목을 겟 데이터 버스(56)(get_data)로 꺼냄으로써 시작된다. 이 동작이 완료됨에 따라, 겟 응답 신호(55)(get_ack)가 발생된다. 후속하여, 겟 요구 신호(54)(get_req)가 발생 해제된 다음, 겟 응답 신호(55)(get_ack) 또한 발생이 해제된다.
동기 및 비동기 시스템으로 정확하게 동작하는 FIFO 회로(100, 200, 300)를 구성하기 위하여, 각 셀은 송신기 또는 수신기 환경과의 인터페이스를 위하여 선택된 4개의 개별 교환 가능한(interchangeable) 구성요소, 즉 (1) 풋 동작을 하며 송신기 환경, 즉 동기식 또는 비동식으로 동작하도록 구성되는 풋 구성요소, (2) 겟 동작을 하며 수신기 환경, 즉 동기식 또는 비동식으로 동작하도록 구성되는 겟 구 성요소, (3) 셀이 데이터 항목을 갖고 있는지를 나타내며, 송신기 및 수신기 환경 둘 다로 동작하도록 구성된 데이터 유효성(data valitity, DV) 제어기, 및 (4) 송신기 및 수신기 환경 둘 다로 동작하도록 구성된 레지스터를 갖는다. 따라서, 셀(170a ∼170d, 370a ∼ 370d) 내의 풋 구성요소는 동기 송신기 환경에서 동작하도록 구성되기 때문에 실질적으로 동일할 것이다. 셀(270a ∼270d)의 풋 구성요소는 비동기 송신기 환경에서 동작하도록 구성되고, 셀(370a ∼ 370d)의 겟 구성요소는 비동기 수신기 환경에서 동작하도록 구성된다.
데이터 유효성 제이기의 목적은 셀이 풀인 경우 및 셀이 엠티인 경우를 나타내는 것이다. 각 셀의 레지스터는 하나는 풋 구성요소(쓰기 포트)에 속하고 다른 하나는 겟 구성요소(읽기 포트)에 속하는 두 부분으로 나누어진다. 풋 구성요소, 겟 구성요소, 데이터 유효성 제어기 및 레지스터는 완전한 셀을 얻기 위하여 함께 부가된다.
동기 송신기와 동기 수신기와 관련하여 사용된 FIFO 회로(100)는 도 5 및 도 6과 관련한 동일한 셀(170a ∼ 170d)로 이루어지는 셀과 함께 앞서 설명하였다. FIFO 회로(100)의 셀(170a)과 같은 예시적인 개별 셀은 도 15 및 도 16에 도시하였다. 다음의 셀 170a에 대한 설명은 셀 170b, 170c, 170d에도 적용할 수 있다. 각 셀(170a)은 네 개의 인터페이스, (1) 동기 풋 인터페이스(171), (2) 동기 겟 인터페이스(172), (3) 셀 어레이의 오른쪽 셀을 갖는 인터페이스(173), 및 셀 어레이의 왼쪽 셀을 갖는 인터페이스(174)를 갖는다. 동기 풋 인터페이스(171)에서, 셀(170a)은 공통 풋 데이터 버스(16)(data_put) 상의 데이터를 수신한다. 이것은 풋 제어기(76)(도 6 참조)의 출력인 풋 인에이블 신호(80)(en_put)에 의해 풋 동작을 수행하기 위하여 인에이블된다. 풋 요구 신호(14)(req_put)는 이 실시예에서 항상 생성되는 데이터 유효성을 나타낸다. 도면이 복잡해지는 것을 피하기 위하여 풋 요구 신호(14)(req_put)를 셀(170a)로 전달하는 것은 도 6에서 생략되었다. 셀(170a)은 셀(170a)이 빈 경우에 발생되는 엠티 비트(182)(e_i)를 사용하여 풀 검출기(72)와 통신한다. 예시적인 셀(170a)의 상태는 비동기식 SR 래치(180)와 같은 데이터 유효성(DV) 제어기로 나타낸다. 동기 겟 인터페이스(172)(도 15)에서, 셀(170a)은 데이터를 이 실시예에서는 항상 발생되는 그 유효성 신호(184)(valid_i)와 함께 공통의 겟 데이터 버스(26)(data_get)로 출력한다. 도 6에 도시한 바와 같이, 유효성 신호(184)(valid_i)는 FIFO 회로(100)에서는 사용되지 않지만, 이하에 기술하는 몇 개의 실시예에서는 사용될 것이다. 동기 겟 인터페이스(172)는 겟 제어기(78)(도 6 참조)의 출력인 겟 인에이블 신호(get enable signal)(186) (en_get)에 의해 인에이블된다. 셀(170a)은 셀(170a)이 꽉 찬 경우에 발생되는 풀 비트(188a)(f_i)를 사용하여 엠티 검출기(74)와 통신한다. 오른쪽 셀을 갖는 인터페이스(173)로 각 셀(170a ∼ 170d)은 풋 토큰 입력(190)(ptok_in)에 따라 토큰을 수신하고 오른쪽 셀로부터 겟 토큰 입력(192)(gtok_in)을 수신한다. 왼쪽 셀을 갖는 인터페이스(174)에서, 각 셀(170a)은 풋 토큰 출력(194)(ptok_out) 및 겟 토큰 출력(196)(gtok_out) 상의 토큰을 왼쪽 셀로 전달한다.
또한 제1 실시예에 따른 셀(170a)을 도 16에 도시한다. 셀(170a)의 작용은 셀(170a)을 통한 풋 동작을 추적하고 그 다음에 겟 동작을 추적함으로써 설명할 수 있다. 처음에, 셀(170a)은 엠티 상태(즉, e_i=1, f_i=0)로 시작하고, 어떤 토큰도 없다. 셀(170a)은 송신기 클록 신호(12)(CLK_put)의 상승 에지에서 오른쪽 셀로부터 풋 토큰 입력(190)(ptokn_in) 상의 풋 토큰을 수신하기를 기다리고, 송신기가 유효 데이터 항목을 풋 데이터 버스(16)(data_put)에 놓기를 기다린다. 유효 데이터 항목은 풋 제어기(176)(도 6 참조)의 출력인 풋 인에이블 신호(180)(en_put=1)에 의해 모든 셀에 대해 나타난다.
유효 데이터가 있고 셀이 풋 토큰(즉 AND(181))을 획득한 경우, 셀(170a)은 다음의 세 가지 활동을 실행한다. (1) 데이터 항목 및 풋 요구 신호(14)(req_put)를 래치하도록 레지스터(191)(REG)를 인에이블시킨다, (2) 셀(170a)이 유효 데이터 항목을 가지고 있음을 나타낸다(비동기적으로 f_i=1 세트), 그리고 (3) 풋 토큰 출력(194)(ptok_out) 상의 토큰을 왼쪽 셀로 전달하도록 상부 왼쪽 에지 트리거형 D형 플립플롭(edge-triggered D-type flip-flop, ETDFF)(193)(en_put=1)을 인에이블한다. 송신기 클록 신호(12)(CLK_put)의 다음 클록 사이클의 상승 에지에서, 데이터 항목 및 유효성 비트는 마침내 래치되고 풋 토큰은 왼쪽 셀로 전달된다.
셀(170a)에 의한 데이터 꺼내기는 실질적으로 동일한 방식으로 진행되고, 그 차이점을 여기에 기재한다. 셀(170a)은 오른쪽 셀로부터 겟 토큰 입력(192)(gtok_in=1) 상의 겟 토큰을 수신하기 위하여 기다린다. 수신이 발생하는 경우, 셀(170)은 유효 비트(183)(v_i), 즉 래치된 풋 요구 신호(14)(req_put)의 유효 버스(184)(valid_i)에의 방송을 인에이블한다. 겟 토큰 입력(192) (gtok_in=1)에 따라 겟 토큰이 수신되고, 수신기가 겟 인에이블 신호(186)(en_get=1)를 사용하여 데이터 항목을 요구하는 경우, AND 게이트(181)에 의해 구현된 것처럼, 셀(170a)은 비동기적으로 공통 겟 데이터 버스(26)(data_get) 상에 놓일 데이터 항목을 인에이블시키고, 셀(170)이 비었음(비동기적으로 e_i=1 세트)을 나타낸다. 발생된 겟 인에이블(186)(en_get)의 도달은 겟 토근 출력(196)(gtok_out) 상의 겟 토큰을 전달하도록 하부 왼쪽 에지 트리거형 D형 플립플롭(ETDFF, 195)을 인에이블시킨다. 다음 클록 사이클의 시작점에서 겟 토큰은 그 후 왼쪽 셀에 전달된다.
FIFO 회로(100, 200, 300) 각각은 적어도 하나의 동기 인터페이스를 가질 수 있다. 그러므로, FIFO 회로 동작은 동기화되어야 한다. 혼합형 클록 FIFO 회로는 고도로 동시에 발생하는 동작을 가지는데, 언제나 FIFO 회로의 상태, 즉 풀 또는 엠티는 풋 인터페이스(10) 및/또는 겟 인터페이스(20)에 의해 변경될 수 있으며, 그 각각은 다른 클록 또는 비동기적으로 동작될 수 있다. 동시에, 각 인터페이스는 FIFO 회로의 상태를 자체 클록 하에서 "읽는다". 전체 풀 신호(18)(full)(도 6 및 도 10)는 겟 인터페이스에 의해 판독된다. 그러므로, 판독이 불일치하는 것을 피하기 위하여 동기 장치(synchronizer)가 두 개의 전체 제어 신호, 즉 풀 신호(18)(full)와 엠티 신호(28)(empty) 각각에 부가되었다. 각 동기 장치는 적절한 클록에 대응하는 전체 신호라는 조건 설정한다. 예시적인 실시예에서, 강인함(robustness)을 증가시키기 위하여 동기화 래치 쌍이 사용되지만, 두 개 이상의 래치가 사용될 수 있음에 유의하여야 한다. 도 17, 도 18 및 도 19에 도시한 바와 같이, 아래에 동기 장치가 풀 검출기(72) 및 엠티 검출기(74)에 부가되고, 송신 클록 신호(12)(CLK_put) 및 수신기 클록 신호(22)(CLK_get)에 의해 제어된다.
여기에 기술된 동기 장치는 현재의 FIFO 회로의 현재 상태를 판독하기 위하여 부가적인 지연 클록 사이클을 추가한다. 따라서, FIFO 회로의 즉각적인 상태를 단지 나타내는 단순한 풀 검출기 및 엠티 검출기는 실패, 즉 오버플로(overflow) 또는 언더플로(underflow)를 초래할 수 있다. 예를 들어, 한 쌍의 동기 래치를 사용하는 FIFO 회로가 꽉 차게 되는 경우, 송신기 인터페이스는 두 클록 사이클 뒤에 기능 정지된다. 다음 클록 사이클에서, 송신기는 판독되지 않은 데이터 항목에 효과적으로 겹쳐 쓰기(overwrite) 하여 새로운 데이터 항목을 저장할 수 있다. 반대로, FIFO 회로가 비게 되는 경우, 수신기 인터페이스는 두 클록 사이클 뒤에 기능 정지되므로 다음 클록 사이클에서 수신기는 빈 셀을 판독할 수 있다.
본 발명에 따른 해법은 "급박한(imminent)" 풀 또는 엠티 상태를 예상하기 위하여, 인터페이스를 너무 이르거나 너무 늦지 않는 적절한 시기에 중단하기 위한 전체 풀 신호(18)(full) 및 전체 엠티 신호(28)(empty)의 정의과 구현을 변경하는 것이다. 정의에 따라, FIFO 회로는 미리 정해진 수보다 적은 셀이 엠티 상태이면 "풀"로 간주한다("엠티"에 대한 정의는 이하에 더욱 상세하게 고찰한다.) 제1 예시적인 실시예 따라, FIFO 회로는 빈 셀이 없거나 하나의 셀이 빈 경우, 풀 상태로 간주한다. 따라서, 빈 셀이 두 개보다 적을 경우, FIFO 회로는 풀을 선언하고, 송신기 서브시스템은 안전하게 마지막 데이터 항목을 저장할 수 있으며, 두 클록 사이클 후에 기능 정기지 이전에 새로운 미응답 요구(unanswered request)를 발생시 킨다. 도 11 및 도 12와 관련하여 전술한 프로토콜은 변경되지 않는다. 때로 두 시스템이 n-위치 FIFO 회로를 n-1 위치 FIFO 회로로 볼 수 있는 효과가 있을 뿐이다.
도 17에 도시한 풀 검출기(72)는 전술한 "풀"에 대한 정의를 구현한다. FIFO 회로(100)는 미리 정해진 수보다 더 적은 연속 셀(consecutive cell)이 엠티 상태인 경우에 풀을 선언한다. 도 17에 도시한 바와 같이 연속 셀들에 대한 엠티 비트(182)(e_i), 즉 e_0 및 e_1, e_1 및 e_2, e_2 및 e_3, e_3 및 e_0를 구하고, 이 연속하는 셀 쌍들에 엠티 상태가 발견되지 않는 경우 풀을 선언한다. 전체 풀 신호(18)(full)를 송신기 클록 신호(12)(CLK_put)에 동기화하기 위하여 래치 쌍(171, 173)이 추가되었다.
유사한 "엠티"에 대한 정의는 FIFO 회로(100)에서 미리 정해진 셀의 수보다 더 적은 수의 셀이 풀인 경우에 적용한다. 예시적인 실시예에서, 데이터 항목이 두 개 미만인 경우 FIFO 회로는 엠티로 선언될 수 있다. 이러한 환경 하에서, 수신기 서브시스템은 그 후 마지막 데이터 항목을 제거할 수 있고, 두 클록 사이클 후, 기능 정지 이전에 새로운 미응답 요구를 발생시킨다. 그러나, 전술한 바와 같이 엠티 상태의 조기 검출은 FIFO 회로(100)를 교착 상태로 만들 수 있다. (FIFO 회로에 데이터 항목이 하나 이하인) "거의 엠티(nearly empty)"(ne) 정의의 단점은 수신기의 요구는 여전히 정지된 상태이지만 하나의 데이터 항목을 포함하고 있음에도 불구하고 엠티로 선언될 수 있다는 것이다.
잘 알려진 것처럼 엠티에 대한 정의의 대안은 회로 내에 어떠한 데이터 항목 이라도 존재하는 지를 나타내는 "진정 엠티(ture empty)"(oe)이다. 진정 엠티 신호(oe)는 일반적으로 동기화를 통해 지연되기 때문에, 진정 엠티 신호의 단점은 언더플로를 초래할 수 있다는 것이다.
본 발명에 따른 해법은 2방식 검출기(bi-modal detector)(74)를 사용하는 것이다(도 18 및 도 19에 도시된 그 구성요소는 이하에서 상세히 설명할 것이다). 2방식 검출기는 "진정 엠티"(oe) 상태는 물로 "거의 엠티"(ne) 상태도 결정한다. 이 두 개의 엠티 신호는 그 후 송신기에 동기화되고 전체 엠티 신호(28)(empty)로 결합된다. 그러나, 거의 엠티 정의는 대개 진정 엠티(oe)에 우선한다.
2방식 엠티 검출기는 부분적으로 수신기로부터 최근에 발생한 겟 요구에 기초하여 전체 엠티 신호(28)(empty)를 나타낸다. 적어도 한 클록 사이클동안에 최근 겟 요구가 없었다면 진정 엠티 신호(oe)가 우세하다(dominate). 이것은 FIFO 회로(100) 내에 데이터 항목이 없는 경우에 중요해진다. 거의 엠티 신호(ne)는 FIFO 회로가 엠티임을 나타내고, 진정 엠티 신호(oe)는 FIFO 회로가 엠티가 아님을 나타낸다. 이러한 조건에서, 겟 인터페이스(20)는 데이터 항목을 수신하여야 하므로 진정 엠티 신호(oe)는 FIFO 상태, 즉 "엠티 아님"을 나타내기 위하여 사용되고, 발생이 해제된다. 그러나, 겟 인터페이스가 데이터 항목을 방금 제거한 경우, FIFO 언더플로를 방지하기 위하여 거의 엠티 신호(ne)가 상태, 즉 "엠티"를 나타내는 데 사용되어야 하며, 진정 엠티 신호(oe)에 대한 동기화 지연이 발생할 수도 있다.
다른 사나리오에 따르면, FIFO 회로는 적어도 한 사이클동안 엠티 상태가 될 수 있다, 즉 전체 엠티 신호(28)(empty)가 발생된다. 다음 클록 사이클동안 진정 엠티 신호(oe)가 우세하다.
제1 예시적인 실시예 따르면, 2방식 엠티 검출기(74)는 두 개의 검출기, 거의 엠티 검출기(120)(도 18)와 진정 엠티 검출기(130)(도 19)로 구현된다. 도 19에 관하여 이하에 설명되는 바와 같이, 두 신호는 전체 엠티 신호(38)(empty)를 생성하기 위하여 결합된다. 도 18에 도시된 거의 엠티 검출기(120)는 전술한 풀 검출기(72)와 유사하며, 연속 셀 쌍에 대한 풀 비트(188)(f_i), 즉 f_0 및 f_1, f_1 및 f_2, f_2 및 f_3, f_3 및 f_0를 구한다. FIFO 회로(100)는 각각 데이터 항목을 가지는 것으로 밝혀진 두 개의 연속 셀 쌍이 없으면 신호(121)(empty_p)에 따라 엠티를 선언한다. 래치 쌍(124, 126)은 거의 엠티 신호(122)(ne)를 겟 클록 신호(22)(CLK_get)에 동기화하는 데 사용된다.
도 19에 도시한 진정 엠티 검출기(130)는 FIFO 회로의 "진정 엠티"(oe) 상태를 결정한다. 이 결정에 따라, 데이터 항목이 없으면 FIFO 회로(100)는 엠티이고, 이 경우에 진정 엠티 신호(132)(oe)가 발생된다. 따라서, 진정 엠티 검출기(130)는 임의의 데이터 항목이 존재하는지를 결정하기 위하여 각 풀 비트(f_i)를 구한다. 진정 엠티 신호(132)(oe)는 동기화를 통해 지연되며, 언더플로를 초래할 수 있다. 이 조건을 방지하기 위하여, 진정 엠티 신호(132)(oe)는 동기적으로 중립 "FIFO 회로 엠티"로 설정될 수 있다. 이것은 제2 래치(136) 전에 겟 인에이블 신호(186)(en_get)로 제1 래치(134)를 통해 클록킹된 후의 출력 신호(138)를 논리합(OR'ing)하여 구현된다. 각각의 겟 동작 후에 "진정 엠티"를 설정한 결과, "진정 엠티" 신호(oe)는 반드시 FIFO 회로에 데이터 항목이 없음을 나타내지는 않는다. 명확하게는, 하나 이상의 데이터 항목이 존재하고 겟 인에이블 신호(186)(en_get)가 발생되면, 진정 엠티 검출기(130)는 진정 엠티 신호(132)(oe)를 출력할 것이다.
잠재적인 교착(deadlock) 문제는 거의 엠티 신호(122)와 진정 엠티 신호(132)의 조합에 의하여 본 발명에 따라 해결된다. 대부분의 경우에, 거의 엠티 검출기(120)와 진정 엠티 검출기(130)는 동일한 결과를 생성한다, 즉 거의 엠티 신호(122)(ne)와 진정 엠티 신호(132)(oe)는 동일하다. FIFO 회로(100)는 데이터 항목을 약간 포함하고 겟 인에이블 신호(186)(en_get)가 래치(134)가 클록킹된 때와 래치(136)가 클록킹된 때 사이의 간격동안에 발생되지 않는 경우에, 진정 엠티 신호(132)(oe)와 거의 엠티 신호(132)(ne) 모두 FIFO 회로가 엠티가 아님을 나타낸다. 즉, 두 신호 모두가 발생 해제된다. 유사하게, FIFO 회로(100)가 데이터 항목을 하나도 포함하지 않는 경우, 진정 엠티 신호(132)(oe)와 거의 엠티 신호(132)(ne) 둘 다는 FIFO회로가 엠티임을 나타낸다, 즉 두 신호가 모두 발생된다.
FIFO 회로(100)가 정확히 하나의 데이터 항목을 포함하는, 즉 거의 엠티 신호(122)가 FIFO 회로 "엠티"(ne=1)를 나타내고, 전술한 기간동안에 겟 인에이블 신호(186)(en_get)의 부재로 진정 엠티 신호(132)가 FIFO 회로 "엠티 아님"(oe=0)을 나타내는 경우에 다른 상황이 발생한다. 이 조건은 겟 인터페이스가 인에이블되어 FIFO에서 최종 데이터 다음을 제거한 후에 발생할 수 있다. 다음 단계는 다른 겟 요구가 존재하는지 여부에 따라 좌우될 것이다. 즉, (1) 현재 클록 사이클에서 다른 겟 요구가 없으면, 이 요구는 충족되고 거의 엠티 검출기(120)는 FIFO 엠티(즉, 거의 엠티 신호(ne)가 발생된다)를 선언할 것이고, 다음 클록 사이클에서 겟 인터페이스의 기능을 정지시킬 것이다. (2) 겟 요구가 없으면, 진정 엠티 검출기(130)는 다음 클록 사이클에서 우세할 것이고, FIFO 엠티 아님(즉, 진정 엠티 신호(oe)가 발생되지 않는다)을 선언하여, 후속하는 겟 요구가 충족되도록 한다. 최종 데이터 항목이 빼내질 때마다, 거의 엠티 신호(ne)는 다시 즉각적으로 우세하고 겟 인터페이스의 기능을 시간에 맞게 정지시킨다. 이 시점에서 충족되는 추가 겟 요구는 없으므로 거의 엠티 신호(ne)는 다시 FIFO 회로(100)의 상태를 나타내기 위하여 사용된다.
도 20에 풋 제어기(176)를 도시한다. 풋 제어기(176)는 풋 동작 및 FIFO 회로(100) 내의 풋 토큰의 이동을 인에이블 및 디스에이블 시킨다. 도 20에 나타낸 바와 같이, 이 작업은 data_put에 따라 유효 데이터 항목이 존재하는 경우, 즉 풋 요구 신호(18)가 발생되었고 FIFO 회로가 풀이 아닌, 다시 말해 전체 풀 신호(18)(full)가 발생되지 않은 경우에만 인에이블된다.
전술한 시나리오에서, 적어도 한 사이클동안 FIFO 회로가 엠티가 되면, 겟 요구 신호(24)(req_get)는 수신기에 의해 생성되었는지에 상관없이 겟 인에이블 신호(186)(en_get)는 발생되지 않는다. 이러한 경우에, 진정 엠티 신호(18)(oe)는 다음 클록 사이클에 리세트되지 않고 우세할 수 있다. 이 경우에, 일단 FIFO가 엠티이면, 풋 인터페이스에 의해 하나의 데이터 항목이 넣어지는 경우에 진정 엠티 신호(oe)는 여전히 우세하고, 결국 oe는 발생 해제될 것이고 전체 엠티 신호(28)(empty)는 차례로 발생 해제될 것이며, 겟 인터페이스(20)는 데이터 항목을 제거할 수 있게 될 것이므로 교착 상태를 방지한다.
도 21에 도시된 겟 컨트롤러(178)는 겟 동작과 FIFO 회로(100) 내의 겟 토큰의 이동을 인에이블 및 디스에이블 시킨다. 겟 인에이블 신호(186)(en_get)는 수신기로부터 요구가 있는 경우, 즉 겟 요구 신호(24)(req_get)가 발생되고 적어도 하나의 거의 엠티 검출기(120) 및 진정 엠티 검출기(130)가 FIFO 회로(100)가 엠티가 아님을 나타내는 경우에만 발생된다.
본 발명의 제2 실시예에 따른 각 FIFO 회로(도 7 및 도 8)와 본 발명의 제3 실시예에 따른 FIFO 회로(300)(도 9 및 도 10)는 하나의 비동기 인터페이스와 하나의 동기 인터페이스를 갖는다. 도 7 및 도 8과 관련하여 전술한 바와 같이, FIFO 회로(200)는 동기 풋 인터페이스와 동기 겟 인터페이스를 갖고, 도 9 및 도 10과 관련하여 전술한 바와 같이 FIFO 회로(300)는 동기 풋 인터페이스와 비동기 겟 인터페이스를 갖는다. 그러므로, 각 FIFO 회로(200, 200)는 전술한 FIFO 회로(100)로부터 어떤 동기식 구성요소를 사용한다. 더욱 상세하게는, 동기 풋 인터페이스(10)는 FIFO 회로(300)의 풋 인터페이스로 사용된다. 유사하게, FIFO 회로(100)의 동기 겟 인터페이스(20)는 FIFO 회로(200)에서 겟 인터페이스로 또한 사용된다.
전술한 바와 같이, 각 셀은 4개의 개별 부분, 즉 풋 구성요소, 겟 구성요소, 데이터 유효성(DV) 제어기 및 레지스터를 갖는다. 각 셀(270a∼270d, 370a∼370d)은 데이터 유효성 제어기의 변형을 사용한다, 즉 데이터 유효성 제어기(280) 및 데이터 유효성 제어기(380)를 각각 사용한다. 전술한 셀(170a)에서(도 16),
동기 및 비동기 구성요소를 모두 갖는 FIFO 회로(200, 300)의 경우, 그 작용은 더욱 복잡하다. 이들 설계는 동일 셀에 대한 쓰기 동작과 읽기 동작 사이의 동시성(concurrency)을 더 허용한다. 그러므로, 데이터 유효성 제어기는 이하에서 설명하는 증가된 동시성을 허용하여야 한다.
제2 실시예 따른 FIFO 회로, 즉 비동기-동기 FIFO 회로(200)의 인터페이스는 도 7과 관련하여 앞서 설명하였다. 인터페이스는 비동기 풋 인터페이스(40)(도 3)와 동기 겟 인터페이스(20)(도 2)를 사용하여 얻는다. 이들 인터페이스에 대한 FIFO 회로 프로토콜은 도 12 및 도 13과 관련하여 설명하였으며, FIFO 회로(200)의 아키텍처는 도 7 및 도 8에 도시하였다. 도 8과 관련하여, FIFO 회로(200)는 전술한 바와 같은 다수의 구성요소, 즉 겟 제어기(278), 엠티 검출기(74) 및 동기식 셀 구성요소와 같은 인터페이스 구성요소를 사용한다. 셀(270a∼270d)의 나머지 구성요소, 즉 비동기 풋 구성요소 및 데이터 유효성 제어기는 도 22 및 도 23을 참조하여 여기서 설명한다.
도 23에 도시한 셀(270a)의 동기부(synchronous parts)는 FIFO 회로(100)(도 6)의 셀(170a)(도 16)의 대응 구성요소와 동일하다. 셀(270a)의 비동기부(asynchronous parts)는 몇 개의 블록으로 분해된다. 풋 구성부(put component part)는 풋 토큰 취득 블록(293)(OPT)과 C 소자(C-element)(295)를 포함 한다. 풋 토큰 취득 블록(293)(OPT)은 풋 토큰 입력(290)(wel)에 따라 오른쪽 인터페이스로부터 개개의 풋 토큰을 취득한다. 이것은 도 24에 나타낸 바와 같은 버스트 모드 장치(burst-mode machine)로 구현된다(버스드 모드 장치는 또한 T. Chelcea et al., "Low-Latency Asynchronous FIFOs using Token Rings," IEEE ASYNCH'00 Symp., pp. 210-220에 더욱 상세하게 기재되어 있으며, 여기에 온전히 참조로서 통합된다.) 도 24의 버스트 모드 명세(400)에서 도시한 바와 같이, 풋 토큰 취득 블록(293)은 오른쪽 셀을 관찰하고 풋 동작을 기다린다.
완전한 토큰 전달은 오른쪽 셀에 의해 나타내는데, 단계 402에서 먼저 풋 토큰 입력(290)(wel)을 세트(set)한 다음, 단계 404에서 풋 토큰 입력(290)(wel)을 리세트(reset)한다. 동작이 발생한 후, 풋 토큰은 현재 셀에 있다, 즉 풋 토큰 신호(297)(ptok)는 세트된다(단계 404). 풋 토큰 신호(297)(ptok)가 세트된 경우, 다른 풋 동작이 발생할 수 있다. 일단 풋 동작을 시작하면 풋 토큰 신호(297)(ptok)는 리세트되고, 풋 토큰 출력(294)(we)은 단계 406에서 세트된다. 풋 동작이 끝났을 때에, 풋 토큰 출력(294)(we)은 리세트되고, 풋 토큰은 다음 셀로 전송되고 사이클은 다시 계속된다. 풋 토큰 취득 블록(293)(OPT)의 제1 예시적인 실시예는 도 25a에 나타낸다. 풋 토큰 취득 블록(293')(OPT)의 제2 예시적인 실시예는 도 25b에 나타낸다.
풋 동작은 도 26에 도시된 바와 같이 C 소자(295)에 의해 제어된다. 이 기술분야에서 알려진 바와 같이, 비대칭 C 소자(295)는 모든 입력이 1인 경우에 출력이 1이고, 모든 입력이 0이 되는 경우에는 출력이 0이 된다. 비대칭 C 소자에서, 입력 중 일부('+' 부기)가 단지 소자의 출력을 1로 설정하는데 참여하고, 그것들의 값은 다른 출력 변이(output transition)와 무관하다.
비동기 풋 동작에 대한 셀(270)(도 23)의 작용은 다음과 같이 진행된다. 처음에, 셀(270a)은 엠티 상태(e_i=1 및 f_i=0)에서 시작하고, 풋 토큰도 겟 토큰도 존재하지 않는다.
풋 토큰 입력(290)(we1)에 따라 한 쌍의 변화 후에, 풋 토큰이 셀 내에 있다(ptok=1). 환경이 풋 요구 신호(44)(put_req=1)에 따라 풋 동작을 요구하고 셀이 엠티(e_i=1)인 경우, 풋 토큰 출력(294)(we1)은 세트된다. 이 사건(event)은 몇 가지 동작을 병렬로 발생시킨다. 즉, 데이터 유효성 제어기(280)(DV_as)에 의해 셀의 상태를 풀로 변경하고(즉 풀 비트(288a)(f_i)가 발생된다), 레지스터(291)(REG)는 래치 데이터를 인에이블시키고, 셀(270a)은 왼쪽 셀에의 풋 토큰 전송과 OPT 리세트(ptok=0) 둘 다를 시작한다. 풋 요구 신호(44)(put_req)가 발생 해제되는 경우, 풋 토큰 출력(294)(we) 또한 발생 해제된다. 이 사건은 왼쪽 셀로의 풋 토큰 전송을 완료한다. 이제 셀(270a)이 레지스터(291)(REG) 내의 데이터가 꺼내진 후에 다른 풋 동작을 시작하기 위하여 준비된다.
셀(270a)에서 동기 겟 동작은 데이터 항목이 셀에 존재한 후에 시작한다. 일단 풀 비트(288a)(f_i)가 세트되면, 엠티 검출기(74)(도 8)는 FIFO 회로(200)의 상태를 "엠티 아님"으로 계산하고, 겟 요구(24)(req_get)는 겟 인에이블 신호(86)(en_get)에 따라 전달된다. 셀(270a)이 겟 토큰을 가지는 경우, 레지스터(291)(REG)의 내용은 겟 데이터 버스(26)(data_get) 상에 출력되고, 수신 기 클록 신호(22)(CLK_get)의 다음 상승 에지에서 겟 토큰은 다음 셀에 전달된다. 동시에, 셀의 상태는 데이터 유효성 제어기(280)(DV_as)에 의해 "엠티"로 변경된다. 셀이 겟 토큰을 가지는 경우(gtok=1), 겟 요구(86)(en_get)에 대한 신호와 무관하게 셀의 유효성 비트는 유효성 데이터 버스(284)(valid_i)에 방송된다. 이것은 유효성 데이터 버스(284)(valid_i) 상의 신호가 항상 어떤 값이 되는 것을 보증한다.
도 27에 도시한 바와 같이 데이터 유효성 제어기(280)(VD_as)는 셀이 데이터 항목을 포함하는 경우를 나타내고, 따라서 풋 및 겟 동작을 제어한다. 이것은 풋 동작이 일어나는 신호인 풋 토큰 출력(294)(we)과 겟 동작이 일어나는 신호인 읽기 인에이블 신호(299)(rw)를 입력으로 받아들인다. 데이터 유효성 제어기(280)(DV-as)의 출력은 셀(270a)이 엠티임을 나타내는 엠티 비트(282a)(e_i)(이 실시예서는 내부적으로만 사용됨)와 셀(270a)이 풀임을 나타내는 풀 비트(288a)(f_i)이다(이 실시예에서는 엠티 검출기에서 사용됨).
데이터 유효성 제어기(280)(DV_as)의 프로토콜은 도 28에 페트리 네트(410)로써 도시한다. (페트리 네트는 병렬 작용를 설명하기 위하여 보통 사용되는 그래픽 표현 기술로 잘 알려져 있다.) 이것은 라벨이 붙은 사건에 의해 나타내는 상태 변이(transition)를 구성하고, 검은 점으로 나타낸 토큰들을 저장하는 장소이다. 상태 변이는 들어오는 모든 아크(arc)가 토큰을 가지는 경우에 시작하며(fire), 그런 다음 모든 나가는 아크에 따라 저장된다(페트리 네트 더욱 상세한 것은 Tadao Murata, "Petri nets: Properties, Analysis and Applications," Proceedings of the IEEE, 77(4), April,1989; L.Y. Rosenbium and A.V. Yakolev, "Signal Graphs: From Self-Timed to Timed Ones," Proceedings of International Workshop on Timed Petri nets, Torino, Italy, pp. 199-207, july 1985; 그리고, Tam-Anh Chu, "On the Models for Designing VLSI Asynchronous Digital Circuits," Integration, the VLSI Journal, 4(2):99-1 13, June, 1986에 논의되어 있으며, 이것들은 본 명세서에 온전히 참조로서 통합된다.)
일단 풋 동작이 시작되면, 데이터 유효성 제어기(280)(DV_as)는 엠티 비트(282a)(e_i=0)를 리세트하고 풀 비트(288a)(f_i=1)를 세트하므로, 단계 412에서 겟 동작을 가능하게 하는 셀 풀을 선언한다. 414에서 겟 동작을 시작한 후(re+), 단계 415에서 CLK_get 클록 사이클의 중간에 비동기적으로 셀은 "풀 아님"(fi=0)으로 선언된다. 416에서 CLK_get의 다음 상승 에지에서 겟 동작이 끝나는 경우, 데이터 유효성 제어기(280)(DV_as)는 417에서 셀(270a)을 "엠티"(ei=1)로 세트한다. 418에서 풋 토큰 출력(294)(we)은 리세트되고, 작용은 다시 시작된다. 이 비대칭 작용은 겟 동작이 여전히 발생하고 있는 동안에 풋 동작에 의한 데이터 파손(data corruption)을 방지하기 위하여 풋 토큰의 전달을 지연시킨다.
제3 예시적인 실시예에 따른 FIFO 회로, 즉 동기-비동기 FIFO 회로(300)(도 9 및 도 10)를 여기서 더욱 상세하게 설명한다. FIFO 회로(300)의 인터페이스들은 도 9와 관련하여 앞서 설명하였다. 그것들은 동기 풋 인터페이스(10)(도 1 참조)와 비동기 겟 인터페이스(50)(도 4 참조)를 "부가"하여 얻는다. 이들 인터페이스의 FIFO 회로 프로토콜은 도 11 및 도 14와 관련하여 설명하였으며, FIFO 회로(300)의 아키텍처는 도 9 및 도 10에 도시하였다. 도 10을 참조하면, FIFO 회로(300)는 전술한 바와 같은 다수의 구성요소, 즉 풋 제어기(376), 풀 검출기(72) 및 동기식 셀 구성요소들과 같은 인터페이스 구성요소를 사용한다. 셀(370a)에서 나머지 구성요소, 예를 들어 비동기 겟 구성요소 및 데이터 유효성 제어기(DV_as)는 도 29 및 도 30과 관련하여 여기서 설명한다.
예시적인 셀(370a)의 인터페이스는 도 29에 도시한다. 각 셀(370a∼370d)은 동일하다. 셀(370a)은 네 개의 인터페이스, 즉 (1) 동기 풋 인터페이스(371), (2) 비동기 겟 인터페이스(372), (3) 토큰을 획득하기 위하여 왼쪽(즉, 이전) 셀을 갖는 인터페이스(374), 및 (4) 토큰을 전달하기 위하여 왼쪽(즉, 다음) 셀을 갖는 인터페이스(374)에서 통신한다. 동기 풋 인터페이스에서, 셀(370a)은 공통 풋 데이터 버스(16)(data_put) 상의 데이터를 수신한다. 풋 제어기(76)(도 10 참조)의 출력인 풋 인에이블 신호(80)(en_put)에 의해 풋 동작을 실행할 수 있다. 풋 요구 신호(14)(req_put)는 (항상 본 이 실시예에서 발생되는) 데이터 유효성을 나타낸다. 셀(370a)은 셀(370a)이 빈 경우에 "하이(high)"로 발생되는 엠티 비트(82)(e_i)를 사용하여 풀 검출기(72)(도 10)와 통신한다. 풋 동작은 송신기 클록 신호(12)(CLK_put)에 의해 제어된다. 각 셀(370a∼370d)은 겟 데이터 버스(56)(get_data) 상의 데이터를 전송하기 위하여 비동기 겟 인터페이스(372)와 통신하고, 겟 동작(54)(get_req)에 대한 전체 요구(global request)를 수신하며, 각 셀(370a)은 꺼내기 동작(55)(get_ack)의 끝을 나타낸다. 비동기 겟 인터페이스(50)는 오직 유효 데이터(도 4 참조)만을 전달하기 때문에, 셀(370a)의 비동기 겟 인터페이스에서는 유효 비트를 사용하지 않는다. 각 셀은 풋 토큰 입력(90)(ptok_in) 상의 풋 토큰 및 겟 토큰 입력(392)(rel) 상의 겟 토큰을 수신하여, 그 토큰을 풋 토큰 출력(94)(ptok_out)에 전달하고 겟 토큰을 겟 토큰 출력(396)(re)에 전달한다.
셀(370a)의 동기부는 FIFO 회로(100)의 셀(170)의 대응하는 구성요소와 동일하다(도 16 참조). 도 30을 참조하면, 셀(370a)의 비동기부는 몇 개의 블록, 예를 들어 겟 토큰 취득 블록(393)(OGT) 및 비대칭 C 소자(395)로 분해된다. 겟 토큰 취득 블록(393)(OGT)은 겟 토큰 입력(393)(rel)에 따라 오른쪽 인터페이스로부터 개별 겟 토큰을 취득한다. 겟 토큰 취득 블록(393)(OGT)은 도 31a에 도시한 바와 같이 버스트 모드 비동기식 상태 장치로 구현된다. 겟 토큰 취득 블록(393')(OGT)의 다른 예시적인 구현예를 도 31b에 도시한다. 버스트 모드 명세(420)는 도 32에 나타낸다. 겟 토큰 취득 블록(393)(OGT)은 오른쪽 셀을 관찰하고, 겟 동작을 기다린다. 오른쪽 셀은 단계 422 및 424에서 각각 먼저 겟 토큰 입력(392)(rel)(도 30)을 세트하고 리세트하여 토큰 전달 완료를 나타낸다. 이 동작들이 완료됨에 따라, 현재 셀에 겟 토큰이 있게 된다, 즉 도 32에서 겟 토큰 신호(397)(gtok)가 세트된다(단계 424). 겟 토큰 출력(396)(re)(도 30)은 대칭 C 소자(395)(도 30)에 의해 제어될 때 단계 426에서 세트된다(도 32). 셀이 풀인 경우, 겟 토큰을 갖는 경우 및 수신기가 데이터 항목을 요구하는 경우에 겟 동작을 시작한다. 일단 대기행렬에서 제거가 완료되면, 요구를 리세트한 다음 응답하여 수신기와의 통신을 끝낸다. 단계 427에서 현재 셀의 겟 토큰 신호(397)(gtok)와 함께 겟 토큰 출력(366)(re)이 리세트된다.
셀(370a)은 셀(170a)과 동일한 방식으로 풋 동작을 수행한다. 셀이 풋 인에이블 신호(80)(en_put)에 따라 인에이블되고 풋 토큰 ptok_in=1인 경우, 레지스터(391)(REG)는 유효성 비트로 사용되는 풋 요구(14)(req_put)는 물론 데이터를 넣기 위하여 인에이블된다. 동시에, 데이터 유효성 제어기(380)(DV_sa)는 셀(370) 풀을 선언한다. 송신기 클록(12)(CLK_put)의 클록 사이클 시작 시점에서, 데이터는 레지스터에 래치되고 겟 토큰은 다음 셀로 전달된다.
겟 동작은 다음과 같이 실행된다. 처음에, 셀(370a)은 겟 토큰없이 시작한다(gtok=0). 겟 토큰 취득 블록(393)(OGT)은 겟 토큰 입력(392)(rel)의 상승 및 하강 변이동안 기다리고, 일단 발생되면 겟 토큰이 셀에 있게 되며(gtok=1), 레지스터(391)(REG)의 출력은 겟 데이터 버스(56)(get_data)로 보내진다. 래치된 유효성 비트는 비동기 겟 인터페이스에 의해 사용되지 않는다. 셀(370a)은 데이터 항목을 요구하여 겟 요구 신호(54)가 발생되도록(get_req=1) 하기 위하여 수신기 서브시스템(또는 환경)을 기다린다.
이것이 발생되면, 셀이 데이터 항목을 포함하는 경우, 즉 풀 비트(388a)가 발생되는 경우(f_i=1)에만 셀(370a)은 그것을 응답한다. 세 가지 조건, 즉 gtok=1, get_req=1 및 f_i=1인 경우, 겟 토큰 출력(396)(re)은 세트되고, 이 사건은 데이터 동작을 환경에 응답하며, 겟 토큰 취득 블록(393)(OGT)의 리세트 시작, 데이터 유효성 제어기(380)(DV_sa)에서 셀 상태 리세트 시작, 및 겟 토큰을 다름 셀로 전송하기 시작한다. 겟 인터페이스에서의 동작 사이클은 겟 토큰 출력(396)(re)의 발생 해제시키고 겟 토큰 출력(396)9re)의 상승 에지에서 시작된 모든 동작을 완료시키는 겟 요구 신호(54)(get_req)의 발생 해제에 의해 완료된다.
데이터 유효성 제어기(380)(DV_sa)는 셀이 풀 또는 엠티인 경우를 나타내며, 도 34에 도시한다. 데이터 유효성 제어기(380)(DV_sa)의 프로토콜은 도 35에 페트리 네트(430)로 도시한다. 정상적인 엠티 상태에서, 엠티 비트(382a)는 발생되고(e_i=1) 풀 비트(388)는 발생 해제된다(f_i=0). 풋 동작을 시작하는 경우, 데이터 유효성 제어기(380)(DV_sa)는 동시에 단계 431에서 엠티 비트(382)(e_i)를 리셋하고 단계 432에서 풀 비트(388)(f_i)를 세트하므로(즉 셀(370a)의 상태가 "풀"이 된다), 겟 동작을 인에이블시킨다. 풋 동작의 끝, 즉 쓰기 인에이블 신호(394)(we)의 발생 해제(단계 433)는 겟 동작과 동시에 수행될 수 있다. 겟 동작은 re에 따라 하강 변이가 발생한 후에, 겟 토큰 출력(396)(re)(단계 434 및 435)에 대한 한 쌍의 변이에 의해 신호를 보내고, 단계 436 및 437에서 셀의 상태를 "엠티"(e_i=1 및 f_i=0)로 변경시키고, 정상적인 동작을 다시 시작한다.
여기서 설명하는 몇 가지 추가적인 실시예는 실질적으로 전술한 FIFO 회로(100, 200, 300)와 유사하지만, 송신기와 수신기 사이에서 중계국으로 동작하도록 변경하였다. 도 36에 나타낸 바와 같이, 시스템(450)은 매우 긴 전선(456, 459)으로 연결된 송신기 서브시스템(452) 및 수신기 서브시스템(454)과 같은 두 개의 서브시스템을 포함할 수 있다. 이 구성에서 서브시스템들(452, 454) 사이의 신호 이동에는 수 개의 클록 사이클이 걸릴 수 있고, 지연 패널티를 채용할 수 있다. 도 37에 도시된 바와 같이, 변경된 시스템(460)은 둘 다 동일 클록 하에서 동작하여야 하는 서브시스템(464, 466) 사이의 연결 지연 패널티를 완화시키기 위하여 중계국(462a∼462d)(RS)을 도입한다. 중계국(462a∼462d)의 삽입은 긴 전선을 각각 한 클록 사이클 지연보다 작은 것에 상당하는 세그먼트(468, 470)로 나눈다. 중계국 체인(relay station chain)은 하나의 시스템에서 다른 시스템으로 패킷을 전송하여 FIFO 회로와 유사한 방식으로 동작한다.
중계국(462b)과 같은 이 기술분야에 알려져 있는 단일 클록 중계국의 구현예는 도 38에 도시한다. 보통, 왼쪽 중계국으로부터의 패킷은 오른쪽 중계국에 전달된다. 도 37에서, 패킷은 일반적으로 중계국(462a)에서 중계국(462b)으로 전달된다. 오른쪽 중계국, 즉 중계국(462b)은 또한 왼쪽 중계국, 즉 중계국(462a)을 중지시킴으로써 데이터 흐름에 대해 외부 압력(counter_pressure)을 만드는 능력(capability)을 갖는다. 도 38에 도시한 바와 같이 예시적인 중계국(462b)은 중계국(462a)과 중계국(462c) 사이에 위치된다. 도 38을 참조하면, 중계국(462b)은 레지스터를 두 개 갖는다. 주 레지스터(472)(MR)는 정상적인 동작에 사용되고, 보조 레지스터(474)(AR)는 여분의 패킷(extra packet)을 저장하기 위하여 사용된다. 혼합형 클록 사이클 FIFO 회로와 달리, 중계국은 풀 및 엠티 신호를 포함하지 않고, 또한 풋 요구와 겟 요구도 포함하지 않는다. 대신에, 명목상의 동작(nominal operation)에서 데이터는 매 클럭 사이클에서 전달된다. 데이터 전달이 보통 연속하기 때문에, 유효 데이터 및 무효 데이터 모두가 전송되며, 유효 데이터는 무효 데이터가 넣어질 때마다 전달된다. 따라서, 유효 비트는 풋 데이터 버스와 겟 데이터 버스 모두에 부가되고, 각 인터페이스에 대한 데이터 패킷을 형성한다.
도 37 및 도 38을 참조하면, 중계국(462b)(실질적으로 중계국(462b, 462c, 462d)과 동일하다)은 다음과 같이 동작한다. 정상적인 동작에서, 매 클록 사이클의 시작 시점에서 왼쪽 중계국(462a)으로부터 패킷 입력 신호(468)(packetIN)에 따라 수신된 데이터 패킷은 주 레지스터(472)(MR)에 복사된 다음, 패킷 출력 신호(470)(packetOut)에 따라 오른쪽 중계국(462c)으로 전달된다. 패킷은 데이터 버스 상의 데이터 항목과 패킷 내의 데이터의 유효성을 나타내는 유효 비트로 구성된다. 수신기 시스템(466)이 데이터 수신의 중단을 원하면 stopIn(476)을 발생시킨한다. 다음 클록의 에지에서, 중계국(462b)은 stopOut(478)을 발생시키고, 다음 패킷을 보조 레지스터(474)(AR)에 래치한다. 이 시점에서, 셀은 기능이 중단될 것이다. 중계국(462b)이 기능 중단에서 해제되는 경우, 주 레지스터(472)(MR)의 패킷을 먼저 오른쪽 중계국(462c)으로 보낼 것이고, 후속하여 보조 레지스터(474)(AR)의 패킷을 보낼 것이다.
도 39를 참조하면, FIFO 회로(500)는 혼합형 클록 중계국으로 동작한다. FIFO 회로(500)는 실질적으로 도 5 및 도 6에 도시한 FIFO 회로(100)와 동일하며, 그 차이점을 여기에 기재한다. 중계국을 구비한 FIFO 회로(500)의 인터페이스는 도 39에 도시한다. FIFO 회로(500)는 도 37에 도시한 바와 같은 중계국 체인 내에 위치하고, 중계국(462a) 및 중계국(462b)을 포함하는 왼쪽 중계국 체인과 중계국(462c)및 중계국(462d)을 포함하는 오른쪽 중계국 체인 사이를 인터페이스한 다. 단일 클록 하에서 동작하는 도 37에 도시한 중계국(460)과 달리, 각 중계국 체인은 예를 들어 중계국 체인 426a/426b는 제1 클록 영역(502) 하에서 동작하고, 중계국 체인 426c/426d는 제2 클록 영역(504) 하에서 동작하는 것처럼 상이한 클록 하에서 동작될 수 있다.
전술한 FIFO 회로(100)와는 대조적으로, FIFO 회로(500)는 항상 왼쪽, 풋 인터페이스(506)로부터의 유효 데이터 항목을 오른쪽, 겟 인터페이스(508)로 전달한다. FIFO 회로(500)의 프로토콜에서, 어느 쪽 인터페이스에 대해서도 활성화 요구는 없다. 대신에, 겟 인터페이스(508) 및 풋 인터페이스(506)는 연속적이 데이터 항목의 흐름을 능동적으로 중단 또는 인터럽트하도록 구성된다. 겟 인터페이스(508)는 데이터 항목을 수신기 클록(22)(CLK_get)의 매 클록 사이클마다 패킷 출력 신호(470)(packetOut)에 따라 FIFO 회로(500)에서 제거한다. 따라서, FIFO 회로(100)와 달리 풋 요구 신호(514)(req_put)는 데이터 유효성을 나타내기 위하여 단독으로 사용되고, 제어 신호라기 보다는 패킷 입력 신호(468)(packetIN)의 일부로서 취급된다. 풀되면, FIFO 회로(500)는 전체 풀 신호(18)(full)인 stopOut(512)을 발생시켜 풋 인터페이스(506)를 중단시킨다. 따라서 단일 클록 중계국 시스템(460)과 달리, 혼합형 클록 FIFO 회로 중계국(500)은 비록 겟 인터페이스(508)에서 stopIn(476)이 발생되지 않았다 하더라도 풋 인터페이스(506) 및 stopOut(478)에 따라 기능 정지될 수 있다.
FIFO 회로(500)는 FIFO 회로(100)와 유사하며, 여기서 몇 가지 변형예를 기재한다. 도 40과 관련하여, 풀 검출기(72)는 실질적으로 도 17 내지 도 19와 관련 하여 설명한 바와 같이 각 셀(570a∼570d)의 엠티 비트(582a∼582d)(e_i)의 수를 결정하도록 구현된다. FIFO 회로(100)의 2방식 엠티 검출기(74)(도 18 및 도 19 참조)는 FIFO 회로 중계국이 보통 데이터를 매 클록 사이클마다 전송하여 교착 상태가 발생할 수 없기 때문에 불필요하다. 대신에 엠티 검출기(574)가 앞서 도 18에 도시한 거의 엠티 검출기(120)와 실질적으로 동일하다.
도 20 및 도 21과 관련하여 앞서 설명한 FIFO 회로(100)의 풋 제어기(176) 및 겟 제어기(178)는 FIFO 회로(500)에서 변경된다. FIFO 회로(100)에서, 풋 제어기(176)는 풋 요구 신호(14)(req_put)를 수신한 경우에 유효 데이터 항목의 넣기를 인에이블한다. FIFO 회로(500)의 풋 제어기(576)는 단순히 유효 데이터 항목의 전달을 허용한다. 풋 제어기(576)는 FIFO 회로(500)가 풀이 아닌 한, 데이터 항목을 연속적으로 넣는다. 따라서, 예시적인 실시예에서 풋 제어기(576)는 전체 풀 신호(18)(full)에 대한 인버터로 구현된다(도 41 참조). 꺼내기가 요구에 따라 실행되는 FIFO 회로(100)의 겟 제어기(178)와는 현저히 다르게, 겟 제어기(578)는 데이터 항목의 연속적인 꺼내기가 가능한다. 도 42에 도시한 바와 같이, FIFO 회로(500)가 비게 되는 경우(전술한 바와 같이 거의 엠티 신호(122)가 발생됨) 또는 겟 인터페이스 신호가 stopIn(476)을 발생시킴으로써 데이터 항목을 더 이상 받아들일 수 없는 경우에만 꺼내기가 인터럽트된다. 유효 데이터와 무효 데이터 모두 전달될 수 있기 때문에, 겟 제어기(78)는 또한 유효성 신호(30)(valid_get)를 계산하기 위하여 유효 비트(584)(valid_i)를 사용한다.
도 43 내지 도 49를 참조하면, FIFO 회로(600, 700)는 혼합형 비동기-동기 인터페이스와 동기-비동기 인터페이스로 각각 동작하도록 구성된 중계국으로 동작하는 두 개의 추가적인 실시예이다. FIFO 회로(600, 700)는 동시에 혼합형 비동기식/동기식 환경들과 긴 상호 연결 지연 사이의 인터페이스 능력이라는 두 개의 중요한 설계 도전을 제기한다.
중계국을 갖는 동기 수신기(466)와 비동기 송신기(490)간 통신의 기본 아키텍처를 도 43에 도시한다. 비동기 영역은 데이터 패킷을 (여기서 더욱 상세하게 논의하는 어쩌면 비동기식 중계국(ARS)(494a, 494b)) 체인을 통해) FIFO 회로(600)로 전송한다. 이 패킷은 그런 다음 동기 영역으로 전송되고, 동기식 중계국(462a, 462b) 체인을 통해 수신기(466)로 보내진다.
원칙적으로, 비동기 인터페이스에서의 통신은 임의적으로 강건하게 이루어질 수 있어 비동기 영역에서의 출력이 필요한 중계국은 없다. 그러나 실제로, 정확성(correctness)과 성능(performance) 문제는 FIFO 설계에서 제기되어야 한다. 이 기술분야에서 두 가지 공통 비동기식 데이터 부호화 방식, 듀얼 레일(dual-rail) 묶음 데이터 및 싱글 레일(single-rail) 묶음 데이터 방식이 알려져 있다(싱글 레일 묶음 데이터에 대한 더 상세한 것은 S. Furber, "Asynchronous Design," Proc. of Submicron Electronics, pp. 461-492, 1997에 기재되어 있으며, 이것은 본 명세서 온전히 참조로서 통합된다).
한 쌍의 전선 상의 각 데이터 비트의 유효성과 값 모두를 부호화하는 듀얼 레일 방식은 전선의 지연에 대해 임의적으로 강건하고(그러나 상당한 오버헤드를 갖는다) ARS 체인을 필요로 하지 않는다. 싱글 레일 묶음 데이터 방식은 데이터 그 자체와 제어선 사이에 타이밍 가정(timing assumption)을 가지므로 단(stage) 사이의 전선 길이를 짧은 홉(short hop)으로 한정하는 데 바람직할 수 있다. 끝으로 성능 문제의 경우, ARS는 필요하지는 않지만 이것이 처리량을 증가시키는 데 바람직하다. ARS 체인은 보통 마이크로파이프라인(micro-pipeline)으로 알려져 있는 비동기식 FIFO 회로를 사용하여 직접적으로 구현될 수 있다.(마이크로파이프라인에 대한 더욱 상세한 것은, I Sutherland, "microcropipelines," Communications of the ACM, 32(6), pp. 720-73 8, 1989와 M. Singh et al., "MOUSETRAP: Ultra High-Speed Transition-Signaling Asynchronous Pipelines," ACM TAU-OO Workshop, 2000에 기술되어 있으며, 이들은 본 명세서에 참조로서 온전히 통합된다.)
동기 데이터 패킷과 달리, 비동기 데이터 패킷은 유효성 비트가 필요 없다. 오히려, 유효 데이터 패킷의 존재가 제어 요구선 상에 신호로 보내지고 ARS는 수신 데이터 패킷들 사이에서 무기한 기다릴 수 있다. 그러므로 표준 마이크로파이프라인이 바람직한 ARS 작용을 구현한다.
도 44 및 도 45에 도시된 FIFO 회로(600)는 비동기 영역(602)과 동기 영역(604) 사이에 동작한다. 비동기 인터페이스(640)는 이전에 기술한 FIFO 회로(200)의 비동기 인터페이스(40)와 같고 동일한 통신 프로토콜을 지원한다. 유사하게, 동기 인터페이스(620)는 FIFO 회로(500)의 동기 겟 인터페이스(508)와 같고 동일한 통신 프로토콜을 지원한다. 도 45를 참조하면, 아키텍처 레벨에서 FIFO 회로(600)는 도 8에 도시된 FIFO 회로(200)와 동일하다. 셀(670a∼670d)은 셀(270a∼270d)와 실질적으로 동일하다. 겟 제어기(678)는 이하에 설명하는 바와 같이 (실질적으로 겟 제어기(178)와 동일한) 겟 제어기(278)와 상이하다. 엠티 검출기(674)는 FIFO 회로(500)의 엠티 검출기(574)와 실질적으로 동일하고 전술한 도 18에 도시된 거의 엠티 검출기(120)에 대응한다.
FIFO 회로(600)는 다음과 같이 동작한다. 데이터 항목이 비동기 인터페이스(640)에 존재할 때마다 FIFO 회로(600)는 데이터 항목을 넣는다. 동기 인터페이스(620)에 대해 FIFO 회로(600)는 엠티 또는 오른쪽 중계국에 의해 중단되지 않는 한 매 클록 사이클마다 데이터 항목을 출력한다. 따라서 FIFO 회로(500)와 달리, 데이터 패킷은 FIFO 회로(600)가 기능 중지된 경우에만 무효이다. FIFO 회로(600)가 엠티 또는 오른쪽에 의해 중단된 경우에 겟 인터페이스(620)는 기능 정지된다. 그러나 FIFO 회로(600)는 무효 데이터 패킷을 넣지 않기 때문에 오른쪽 인터페이스는 FIFO 회로(600)가 기능 정지되지 않는 한 유효 데이터 패킷만을 수신한다.
겟 제어기(678)의 구현예를 도 46에 도시한다. 겟 제어기(678)는 오른쪽에 의해 중단되지 않는 경우(stopIn=0) 및 중계국이 엠티가 아닌 경우(ne=0), 겟 동작을 인에이블한다(en_get=1). 이것은 FIFO 회로(100)의 겟 제어기(178)와 동일한 방식으로 동작한다. 오른쪽으로 전송된 패킷은 중계국이 중단되거나 엠티이면 무효이다. 그러므로, 비동기 인터페이스로부터 수신된 모든 패킷은 유효하고, 따라서 별개의 유효성 비트는 필요 없는 대신에 겟 인에이블 신호(686)(en_get)가 유효성 신호(30)(valid_get)로 사용된다.
동기 송신기(464)와 비동기 수신기(492) 사이에 중계국을 구비하는 통신의 기본 아키텍처는 도 47에 도시한다. 동기 영역은 데이터 패킷을 동기 중계국(462a, 462b) 체인을 통해 전송한다. 패킷은 그 후 비동기 수신기(292)로 전송되는데, 바람직하게는 비동기 영역의 ARS(494a, 494b) 체인을 통하여 전송된다.
FIFO 회로(700)의 인터페이스는 도 48에 도시한다. 비동기 인터페이스(750)는 도 9에 도시한 FIFO 회로(500)의 비동기 인터페이스(50)와 실질적으로 동일하고, 동일한 통신 프로토콜을 지원한다. 유사하게, 도 48에 도시한 동기 인터페이스(710)는 FIFO 회로(300)의 동기 인터페이스(10)와 실질적으로 동일하고 동일한 통신 프로토콜을 지원한다. 도 49에 도시한 FIFO회로(700)의 셀(770a∼770d)은 도 10에 도시한 FIFO 회로(700)의 셀(370a∼370d)과 실질적으로 동일하다. FIFO 회로(700)와 FIFO 회로(300) 사이의 중요한 차이점은 각 FIFO 회로의 풋 제어기뿐이다.
정상적으로 동작하는 동안, FIFO 회로(700)는 데이터 패킷을 동기 인터페이스에서 비동기 인터페이스로 송신한다. 오른쪽 비동기 중계국은 FIFO 회로(700)가 데이터를 공급할 때마다 데이터 패킷을 넣는다. 그러나, 동기 인터페이스 대해 FIFO 회로(700)는 모든 비동기 데이터 패킷이 유효하여야 하므로 필터로 작용한다. 들어오는 동기 패킷의 유효성 비트(14)(valid_put)는 그것들을 필터링하는 데 사용된다. 더욱 자세하게는, 패킷이 유효한 경우 FIFO 회로(700)는 패킷을 넣도록 구성되고, 그렇지 않으면 패킷을 무시하도록 구성된다. FIFO 회로(700)는 오직 유효한 데이터 패킷만 넣고 FIFO 회로(700)가 풀인 경우 풋 인터페이스의 기능을 정지 시킨다. 전술한 바와 같이, FIFO 회로(500)는 수신된 모든 패킷을 넣고, 더 이상 풀 상태인 셀이 없는 경우에 정지한다. 현저하게 달리, FIFO 회로(700)는 (1) FIFO가 풀인 경우 및/또는 (2) 무효 데이터 패킷이 수신된 경우에 기능이 정지된다.
풋 제어기(776)의 예시적인 구현예는 도 50에 주어진다. 풋 제어기(776)는 중계국이 풀이 아니고(full=0) 들어오는 데이터 패킷이 유효한 경우(valid_put=1)에만 풋 동작을 인에이블한다(en_put=1). 풋 제어기(776) 구현은 풋 제어기(176)의 구현과 유사하지만, (req_put과 같은) 명시적인(explict) 풋 요구 신호의 역할은 모든 패킷에 수반하는 내재하는(implicit) 유효 비트(14)(valid_put)에 의해 획득되었다.
예(Example)
여러 FIFO 회로 설계에 대한 성능을 평가하기 위하여, 예시적인 IFO 회로(100∼700)를 시뮬레이션 하였다. 각 FIFO 회로는 공업용 및 연구용 도구 둘 다를 사용하여 시뮬레이션 하였다. 설계는 라이브러리 및 주문 회로 모두를 사용하여 하였으며, Cadence HSPICE를 사용하여 시뮬레이션 하였다. 버스트 모드 제어기는 Minimalist를 사용하여 합성하였으며(Minimalist에 대한 더욱 상세한 것은 R. Fuhrer et al., "MINIMALIST: An Environment for Synthesis, Verification and Testability of Burst-Mode Asynchronous Machines," CUCS-020-99, 1999에 기술되어 있으며, 본 명세서에 온전히 참조로서 통합된다) 및 페트리 네트 제어기는 Petrify를 사용하여 합성하였다(Petrify에 대한 더욱 상세한 것은 J. Cortadella et al., "Petrify: A Tool for Manipulating Concurrent Specifications and Synthesis of Asynchronous Controllers," JEICE Transactions on Information and Systems, Vol. E80-D, Number 3, pp. 315-325, March 1997에 기술되어 있으며, 본 명세서에 온전히 참조로서 통합된다.). FIFO 회로 설계는 3.3V 및 300K에서 0.6μ HP CMOS 기술로 시뮬레이션 하였다.
다음은 제어 및 데이터 전체 버스의 모델링에서의 특별 고려사항이다: 제어 버스(put_req/en_put, get_req/en_get)는 적합한 버퍼링을 사용하여 삽입된다. 응답 신호(put_ack, get_ack)는 개별 응답을 단일 전체 응답으로 합치는 OR 게이트의 트리로 구축된다. get_data 및 data_get의 모델링에서, 버스 내의 각 비트는 3 상태 버터에 의해 구동된다. 환경에 의해 기여되는 부하와 FIFO 회로 내의 긴 전성에 의해 부여되는 부하 모두 모델링된다. 모델은 환경이 (대략 래치에 대응하는) 두 개의 인버터를 갖는 부하에 기여하고, 각 전선은 셀당 두 개의 인버터(전선당 대략 2n 인버터)에 대한 커패시턴스를 갖도록 기여한다고 가정하였다.
각 설계에 대하여 두 가지 미터법, 즉 대기시간 및 처리량을 시뮬레이션 하였다. 대기시간은 빈 FIFO 회로에서 풋 인터페이스 상의 데이터 입력으로부터 겟 인터페이스 상의 데이터 출력에 존재하는 지연이다. 처리량과 대기시간은 상이한 FIFO 회로 용량 및 데이터 항목 폭에 대해 계산되었다. FIFO 회로의 용량은 4, 8, 8 또는 16 셀로 설정하였다. 이 FIFO 회로 각각에 대하여, 데이터 항목 폭은 8비트 또는 16비트로 설정하였다. 동기 인터페이스의 경우, 처리량은 인터페이스가 클록킹될 수 있는 최대 클록 주파수로 나타내었다. 비동기 인터페이스는 클록이 없기 때문에, 처리량은 MegaOps/s(인터페이스가 1초에 실행할 수 있는 데이터 동작의 수)로 주어진다.
[표 1]
Figure 112002040826310-pct00001
[표 2]
Figure 112002040826310-pct00002
처리량 결과는 FIFO 회로 설계와 일치한다. 동기 겟 이터페이스는 엠티 검출기(74)의 복잡성 때문에 동기 풋 이터페이스보다 느리다. 또한 중계국 동기 풋 인터페이스는 이전 풋 검출기의 단순화로 인해 그 FIFO 회로의 대응부(counterpart)보다 약간 빠르다. 동기 측면에서, 겟 인터페이스는 레지스터의 출력이 일찍 데이터 버스 상에 인에이블되기 때문에 풋 인터페이스보다 빠른 경 향이 있다.
빈 FIFO 회로을 통한 대기시간(ns)은 8비트 데이터 항목으로 설계된 것에 대해서만 나타냈다(표 3). 실험적인 대기시간의 셋업은 다음과 같다:
[표 3]
Figure 112002040826310-pct00003
빈 FIFO에서 회로에서, 겟 인터페이스는 데이터 항목을 요구한다. 임의 시간 후에, 풋 인터페이스는 데이터 항목을 놓는다(place), 대기시간은 풋 데이터 버스가 유효 데이터를 갖는 순간에서 겟 인터페이스가 그 데이터 항목을 수신하여 그것을 사용할 수 있는 순간 사이의 경과 시간으로 계산된다.
동기 수신기를 갖는 FIFO 회로의 대기시간은 유일한 것으로 한정되지 않는다. 대기시간은 데이터 항목이 셀에 안전하게 넣어지는 순간과 함께 변화한다. 만약 데이터 항목이 CLK_get의 상승 에지 후에 즉시 풋 인터페이스에 의해 넣어지면, 대기시간은 증가된다(표의 최대란). 만약 데이터 항목인 엠티 검출기가 계산을 시작하기 바로 직전에 넣어지면, 대기시간은 감소된다(최소란). 그러나, 비동기 수신기는 데이터 항목을 넣은 후에 바로 데이터 항목을 얻을 수 있으므로, 대기 시간은 유일한 것으로 한정된다. 더욱 흥미롭게도, 비동기 수신기는 동기화가 필요하지 않기 때문에 비동기 영역으로의 통신의 대기시간은 훨씬 더 빨리 수행될 수 있다.
처리량 및 대기시간 결과는 버스 기판 설계의 경우 매우 우수하다. 예상된 바와 같이, FIFO 회로 용량 또는 데이터 항목 폭이 증가하는 경우에 처리량 및 대기시간 모두 감소되었다. 처리량은 비동기 인터페이스보다 동기 인터페이스의 경우 더 많은 경향이 있다. 빈 FIFO 회로에 의한 대기시간은 수신기가 비동기식인 경우에 더 작다.
이상에서 설명한 것은 본 발명의 원리를 예시적으로 나타낸 것이며, 본 발명의 기술적 사상과 범위를 벗어나지 않고 기술분야의 당업자에 의해 다양한 변경이 이루어질 수 있음을 알 것이다.

Claims (38)

  1. 제1 시간 영역에서 동작하는 송신기 서브시스템과 제2 시간 영역에서 동작하는 수신기 서브시스템 사이의 데이터 항목의 전송을 인터페이스하고, 상기 제1 시간 영역과 상기 제2 시간 영역은 상이하며, 상기 시간 영역 중 적어도 하나는 클록 신호에 따라 동작하는 FIFO 회로로서,
    상기 제1 시간 영역에 따라 동작하도록 구성되며, 상기 송신기 서브시스템으로부터의 데이터 항목을 송신하는 풋 데이터 버스(put data bus)와 상기 풋 데이터 버스로부터의 상기 데이터 항목을 넣기(enqueue) 위하여 상기 송신기 서브시스템으로부터 풋 요구(put request)를 수신하는 풋 데이터 요구 입력(put data request input)을 포함하는 풋 인터페이스(put interface),
    상기 제2 시간 영역에 따라 동작하도록 구성되며, 상기 수신기 서브시스템으로 데이터 항목을 송신하는 겟 데이터 버스(get data bus)와 상기 겟 데이터 버스로 상기 데이터 항목을 꺼내기(dequeue) 위하여 상기 송신기 서브시스템으로부터 겟 요구(get request)를 수신하는 겟 데이터 요구 입력(get data request input)을 포함하는 겟 인터페이스(get interface), 및
    셀들로 이루어지는 셀 어레이(cell array)
    를 포함하며,
    상기 각 셀은
    상기 풋 데이터 버스로부터 상기 데이터 항목을 수신하고, 상기 데이터 항목 을 상기 겟 데이터 버스로 송신하도록 구성된 레지스터,
    상기 셀의 상태를 나타내는 상태 제어기,
    상기 제1 시간 영역에 따라 동작하도록 구성되며, 제1 인접 셀로부터 풋 토큰(put token)을 수신하고, 상기 풋 요구, 상기 풋 토큰 및 상기 셀의 상태에 기초하여 상기 풋 데이터 버스로부터 수신된 상기 데이터 항목을 상기 레지스터에 래치하며, 상기 풋 토큰을 제2 인접 셀로 전달하기 위한 풋 구성요소(put component), 및
    상기 제2 시간 영역에 따라 동작하도록 구성되며, 상기 제1 인접 셀로부터 겟 토큰(get token)을 수신하고, 상기 겟 요구, 상기 겟 토큰 및 상기 셀의 상태에 기초하여 상기 데이터 항목을 상기 레지스터에서 상기 겟 데이터 버스로 꺼내며, 상기 겟 토큰을 상기 제2 인접 셀로 전달하기 위한 겟 구성요소(get component)
    를 포함하는 FIFO 회로.
  2. 제1항에서,
    상기 풋 인터페이스는 동기식이고 제1 클록 신호에 의해 제어되며,
    상기 풋 인터페이스는
    미리 정해진 수보다 적은 수의 상기 셀 어레이 내의 연속 셀이 엠티 상태(empty state)인 경우에 발생되는(asserted) 상기 제1 클록 신호에 동기화된 전체 풀 신호(global full signal)를 생성하는 풀 검출기(full detector), 및
    상기 전체 풀 신호가 발생되지 않는 경우에 상기 풋 요구를 상기 셀 어레이 내의 각 셀의 풋 구성요소로 전달하도록 구성된 풋 제어기
    를 더 포함하는 FIFO 회로.
  3. 제2항에서,
    상기 셀 어레이 내의 각 셀의 상기 풋 구성요소는
    상기 풋 토큰을 상기 제2 인접 셀로 전달하기 위하여 상기 풋 요구에 의해 인에이블되는 동기 래치, 및
    상기 풋 요구 및 상기 풋 토큰에 응답하여 상기 셀의 엠티 상태의 발생 해제(de-asserting)를 나타내기 위하여 상기 상태 제어기에 신호를 보내도록 구성된 회로
    를 더 포함하는 FIFO 회로.
  4. 제2항에서,
    상기 레지스터는 상기 데이터 항목을 수신하기 위하여 상기 풋 요구에 의해 인에이블되는 FIFO 회로.
  5. 제2항에서,
    상기 겟 인터페이스는 동기식이고 제2 클록 신호에 의해 제어되며,
    상기 겟 인터페이스는
    미리 정해진 수보다 적은 수의 상기 셀 어레이 내의 연속 셀이 풀 상태(full state)인 경우에 발생되는 상기 제2 클록 신호에 동기화된 제1 전체 엠티 신호(first global empty signal)를 생성하는 제1 엠티 검출기(first empty detector),
    제2 전체 엠티 신호를 생성하는 제2 엠티 검출기, 및
    상기 제1 전체 엠티 신호 및 상기 제2 전체 엠티 신호 중 하나가 발생 해제되는 경우에 상기 겟 요구를 상기 셀 어레이 내의 각 셀의 상기 겟 구성요소로 전달하도록 구성된 겟 제어기
    를 더 포함하고,
    상기 제2 엠티 검출기는
    상기 셀 어레이 내의 셀 중 어느 것도 풀 상태가 아닌 경우에 발생되는 제1 중간 신호(first intermediate signal)를 생성하는 회로,
    상기 제1 중간 신호를 상기 제2 클록 신호에 동기화하는 제1 래치 및 제2 래치, 및
    상기 제1 래치와 상기 제2 래치 사이에서 제2 중간 신호를 상기 제1 중간 신호와 결합하는 결합 소자
    를 더 포함하며,
    상기 제2 중간 신호가 발생 해제되는 경우 상기 제2 전체 엠티 신호는 상기 제1 중간 신호이고, 상기 제2 중간 신호가 발생되는 경우 상기 제2 전체 엠티 신호는 상기 제2 중간 신호인
    FIFO 회로.
  6. 제5항에서,
    상기 셀 어레이 내의 각 셀의 상기 겟 구성요소는
    상기 겟 토큰을 상기 제2 인접 셀로 전달하기 위하여 상기 겟 요구에 의해 인에이블되는 동기 래치, 및
    상기 겟 요구 및 상기 겟 토큰에 응답하여 상기 셀의 풀 상태의 발생 해제를 나타내기 위하여 상기 상태 제어기에 신호를 보내도록 구성된 회로
    를 더 포함하는 FIFO 회로.
  7. 제5항에서,
    상기 레지스터는 상기 데이터 항목을 상기 겟 데이터 버스로 송신하기 위하여 상기 겟 요구 및 상기 겟 토큰에 의해 인에이블되는 FIFO 회로.
  8. 제2항에서,
    상기 겟 인터페이스는 비동기식이고,
    상기 셀 어레이 내의 각 셀의 상기 겟 구성요소는 상기 제1 인접 셀의 상기 레지스터에서 상기 겟 데이터 버스로의 상기 데이터 항목의 꺼내기를 나타내는 상기 제1 인접 셀로부터의 신호에 응답하여 상기 셀 어레이 내의 개별 셀에 상기 겟 토큰을 수신하도록 구성되는 겟 토큰 전달 회로를 포함하는 FIFO 회로.
  9. 제8항에서,
    상기 레지스터는 상기 데이터 항목을 상기 겟 데이터 버스로 꺼내기 위하여 상기 겟 토큰에 의해 인에이블되는 FIFO 회로.
  10. 제9항에서,
    상기 겟 인터페이스는 겟 응답 신호(get acknowledgement signal)를 더 포함하고,
    상기 겟 구성요소는 상기 겟 응답 신호를 발생시키기 위하여 상기 셀의 상태를 리세트하도록 상기 상태 제어기에 신호를 보내도록 상기 겟 토큰, 상기 겟 요구 및 상기 셀의 풀 상태에 의해 인에이블되는 겟 제어 회로를 더 포함하는 FIFO 회로.
  11. 제10항에서,
    상기 겟 제어 회로는 상기 겟 토큰을 상기 제2 인접 셀로 전달하기 위하여 상기 겟 요구의 발생 해제에 의해 디스에이블되는 FIFO 회로.
  12. 제1항에서,
    상기 풋 인터페이스 비동기식이고,
    상기 셀 어레이 내의 각 셀의 풋 구성요소는 상기 풋 데이터 버스에서 상기 제1 인접 셀의 상기 레지스터로의 상기 데이터 항목의 래치를 나타내는 상기 제1 인접 셀로부터의 신호에 응답하여 상기 셀 어레이 내의 개별 셀로 상기 풋 토큰을 수신하도록 구성되는 풋 토큰 전달 회로를 포함하는 FIFO 회로.
  13. 제12항에서,
    상기 풋 인터페이스는 풋 응답 신호를 더 제공하고,
    상기 풋 구성요소는 상기 셀 상태의 리세트를 나타내기 위한 신호를 상기 상태 제어기로 보내며, 상기 풋 응답 신호를 발생시키기 위하여 상기 레지스터가 상기 풋 데이터 버스로부터 상기 데이터 항목을 수신하도록 인에이블하도록 상기 풋 토큰, 상기 풋 요구 및 상기 셀의 엠티 상태에 의해 인에이블되는 풋 제어 회로를 더 포함하는 FIFO 회로.
  14. 제12항에서,
    상기 풋 제어 회로는 상기 풋 토큰을 상기 제2 인접 셀로 전달하기 위하여 상기 풋 요구의 발생 해제에 의해 디스에이블되는 FIFO 회로.
  15. 제12항에서,
    상기 제2 시간 영역은 동기식이고 제2 클록 신호에 의해 제어되며,
    상기 겟 인터페이스는
    미리 정해진 수보다 적은 수의 상기 셀 어레이 내의 연속 셀이 풀 상태인 경우에 발생되는 상기 제2 클록 신호에 동기화된 제1 전체 엠티 신호를 생성하는 제1 엠티 검출기,
    제2 전체 엠티 신호를 생성하는 제2 엠티 검출기, 및
    상기 제1 전체 엠티 신호 및 상기 제2 전체 엠티 신호 중 하나가 발생 해제되는 경우에 상기 겟 요구를 상기 셀 어레이 내의 각 셀의 상기 겟 구성요소로 전달하도록 구성된 겟 제어기를 더 포함하고,
    상기 제2 엠티 검출기는
    상기 셀 어레이 내의 셀 중 어느 것도 풀 상태가 아닌 경우에 발생되는 제1 중간 신호를 생성하는 회로,
    상기 제1 중간 신호를 상기 제2 클록 신호에 동기화하는 제1 래치 및 제2 래치, 및
    상기 제1 래치와 상기 제2 래치 사이에서 제2 중간 신호를 상기 제1 중간 신호를 결합하는 결합 소자를 더 포함하며,
    상기 제2 중간 신호가 발생 해제되는 경우 상기 제2 전체 엠티 신호는 상기 제1 중간 신호이고, 상기 제2 중간 신호가 발생되는 경우 상기 제2 전체 엠티 신호는 상기 제2 중간 신호인
    FIFO 회로.
  16. 제15항에서,
    상기 셀 어레이 내의 각 셀의 상기 겟 구성요소는
    상기 겟 토큰을 상기 제2 인접 셀로 전달하기 위하여 상기 겟 요구에 의해 인에이블되는 동기 래치, 및
    상기 겟 요구 및 상기 겟 토큰에 응답하여 상기 셀의 엠티 상태의 발생 해제를 나타내기 위하여 상기 상태 제어기에 신호를 보내도록 구성된 회로
    를 더 포함하는 FIFO 회로.
  17. 제16항에서,
    상기 레지스터는 상기 데이터 항목을 상기 겟 데이터 버스로 송신하기 위하여 상기 겟 요구 및 상기 겟 토큰에 의해 인에이블되는 FIFO 회로.
  18. 제1 클록 신호에 의해 제어되는 송신기 서브시스템에서 제2 클록 신호에 의해 제어되는 수신기 서브시스템으로 데이터 항목의 전송을 인터페이스하고, 상기 데이터 항목의 전송은 상기 송신기 서브시스템과 상기 수신기 서브시스템 사이에서 지연되는 회로로서,
    풋 데이터 버스 상의 상기 데이터 항목을 송신하기 위하여 상기 송신기 서브시스템에 장착되고 제1 동작 프로토콜을 갖는 제1 중계국 체인(first chain of relay station),
    겟 데이터 버스 상의 상기 데이터 항목을 수신하기 위하여 상기 수신기 서브시스템에 장착되고 제2 동작 프로토콜을 갖는 제2 중계국 체인(second chain of relay station), 및
    상기 제1 클록 신호 및 상기 제2 클록 신호를 수신하고, 상기 제1 중계국 체 인의 동작 프로토콜 및 상기 제2 중계국 체인의 동작 프로토콜에 따라 상기 데이터 항목을 상기 제1 중계국 체인에서 상기 제2 중계국 체인으로 송신하는 혼합형 클록 중계국(mixed clock relay station)
    을 포함하고,
    상기 혼합형 클록 중계국은
    셀들로 이루어지는 셀 어레이,
    미리 정해진 수보다 적은 수의 상기 셀 어레이 내의 연속 셀이 엠티 상태인 경우에 발생되는 상기 제1 클록 신호에 동기화된 풀 신호를 생성하는 풀 검출기,
    소정의 풀 신호가 발생되지 않는 경우에 상기 제1 클록 신호의 각 클록 사이클에 따라 데이터 항목의 넣기를 인에이블하도록 구성된 풋 제어기,
    미리 정해진 수보다 적은 수의 연속 셀이 풀 상태인 경우에 발생되는 상기 제2 클록 신호에 동기화된 엠티 신호를 생성하는 엠티 검출기, 및
    상기 혼합형 클록 중계국에 접속된 상기 제2 중계국 체인의 중계국으로부터 중단 신호(stop signal)를 수신하도록 구성되며, 상기 엠티 신호 및 상기 중단 신호가 발생되지 않는 경우에 상기 제2 클록 신호의 각 클록 사이클에 따라 데이터 항목의 꺼내기를 인에이블하도록 구성되는 겟 제어기
    를 포함하는 회로.
  19. 제18항에서,
    상기 셀 어레이 내의 각 셀은
    상기 풋 데이터 버스로부터 상기 데이터 항목을 수신하고, 상기 데이터 항목을 상기 겟 데이터 버스로 송신하도록 구성된 레지스터,
    상기 셀의 상태를 나타내는 상태 제어기,
    상기 제1 동작 프로토콜에 따라 동작하도록 구성되며, 제1 인접 셀로부터 풋 토큰을 수신하고, 상기 풋 요구, 상기 풋 토큰 및 상기 셀의 상태에 기초하여 상기 풋 데이터 버스로부터 수신된 상기 데이터 항목을 상기 레지스터에 래치하며, 상기 풋 토큰을 제2 인접 셀로 전달하기 위한 풋 구성요소, 및
    상기 제2 동작 프로토콜에 따라 동작하도록 구성되며, 상기 제1 인접 셀로부터 겟 토큰을 수신하고, 상기 겟 요구, 상기 겟 토큰 및 상기 셀의 상태에 기초하여 상기 데이터 항목을 상기 레지스터에서 상기 겟 데이터 버스로 꺼내며, 상기 겟 토큰을 상기 제2 인접 셀로 전달하기 위한 겟 구성요소
    를 포함하는 회로.
  20. 제19항에서,
    상기 제1 중계국 체인의 중계국은 풋 요구를 제공하고,
    상기 셀 어레이 내의 각 셀의 상기 풋 구성요소는
    상기 풋 토큰을 상기 제2 인접 셀로 전달하기 위하여 상기 풋 요구에 의해 인에이블되는 동기 래치, 및
    상기 풋 요구 및 상기 풋 토큰에 응답하여 상기 셀의 엠티 상태의 발생 해제를 나타내기 위하여 상기 상태 제어기에 신호를 보내도록 구성된 회로
    를 더 포함하는 회로.
  21. 제20항에서,
    상기 레지스터는 상기 데이터 항목을 수신하기 위하여 상기 풋 요구 및 상기 풋 토큰에 의해 인에이블되는 회로.
  22. 제21항에서,
    상기 제2 중계국 체인의 중계국은 겟 요구를 제공하고,
    상기 셀 어레이 내의 각 셀의 상기 겟 구성요소는
    상기 겟 토큰을 상기 제2 인접 셀로 전달하기 위하여 상기 겟 요구에 의해 인에이블되는 동기 래치, 및
    상기 겟 요구 및 상기 겟 토큰에 응답하여 상기 셀의 풀 상태의 발생 해제를 나타내기 위하여 상기 상태 제어기에 신호를 보내도록 구성된 회로
    를 더 포함하는 회로.
  23. 제22항에서,
    상기 레지스터는 상기 데이터 항목을 상기 겟 데이터 버스로 송신하기 위하여 상기 겟 요구 및 상기 겟 토큰에 의해 인에이블되는 회로.
  24. 비동기 송신기 서브시스템에서 클록 신호에 의해 제어되는 동기 수신기 서브 시스템으로 데이터 항목의 전송을 인터페이스하고, 상기 데이터 항목의 전송은 상기 송신기 서브시스템과 상기 수신기 서브시스템 사이에서 지연되는 회로로서,
    풋 데이터 버스 상의 상기 데이터 항목을 송신하기 위하여 상기 송신기 서브시스템에 장착되고 비동기 동작 프로토콜을 갖는 제1 중계국 체인,
    겟 데이터 버스 상의 상기 데이터 항목을 수신하기 위하여 상기 수신기 서브시스템에 장착되고 동기 동작 프로토콜을 갖는 제2 중계국 체인, 및
    상기 클록 신호를 수신하고, 상기 제1 중계국 체인의 비동기 동작 프로토콜 및 상기 제2 중계국 체인의 동기 동작 프로토콜에 따라 상기 데이터 항목을 상기 제1 중계국 체인에서 상기 제2 중계국 체인으로 송신하는 중계국
    을 포함하고,
    상기 중계국은
    셀들로 이루어지는 셀 어레이,
    미리 정해진 수보다 적은 수의 연속 셀이 풀 상태인 경우에 발생되는 상기 제2 클록 신호에 동기화된 엠티 제어 신호를 생성하는 엠티 검출기,
    상기 혼합형 클록 중계국에 접속된 상기 제2 중계국 체인의 중계국으로부터 중단 신호를 수신하도록 구성되며, 상기 엠티 신호 및 상기 중단 신호가 발생되지 않는 경우에 상기 제2 클록 신호의 각 클록 사이클에 따라 데이터 항목의 꺼내기를 인에이블하도록 구성되는 겟 제어기
    를 포함하는 회로.
  25. 제24항에서,
    상기 셀 어레이 내의 각 셀은
    상기 풋 데이터 버스로부터 상기 데이터 항목을 수신하고, 상기 데이터 항목을 상기 겟 데이터 버스로 송신하도록 구성된 레지스터,
    상기 셀의 상태를 나타내는 상태 제어기,
    상기 제1 동작 프로토콜에 따라 동작하도록 구성되며, 제1 인접 셀로부터 풋 토큰을 수신하고, 상기 풋 요구, 상기 풋 토큰 및 상기 셀의 상태에 기초하여 상기 풋 데이터 버스로부터 수신된 상기 데이터 항목을 상기 레지스터에 래치하며, 상기 풋 토큰을 제2 인접 셀로 전달하기 위한 풋 구성요소, 및
    상기 제2 동작 프로토콜에 따라 동작하도록 구성되며, 상기 제1 인접 셀로부터 겟 토큰을 수신하고, 상기 겟 요구, 상기 겟 토큰 및 상기 셀의 상태에 기초하여 상기 데이터 항목을 상기 레지스터로부터 상기 겟 데이터 버스로 꺼내며, 상기 겟 토큰을 상기 제2 인접 셀로 전달하기 위한 겟 구성요소
    를 포함하는 회로.
  26. 제25항에서,
    상기 셀 어레이 내의 각 셀의 상기 풋 구성요소는 상기 풋 데이터 버스에서 상기 제1 인접 셀의 상기 레지스터로의 상기 데이터 항목의 래치를 나타내는 상기 제1 인접 셀로부터의 신호에 응답하여 상기 셀 어레이 내의 개별 셀로 상기 풋 토큰을 수신하도록 구성된 풋 토큰 전달 회로를 포함하는 회로.
  27. 제26항에서,
    상기 제1 중계국 체인의 중계국은 풋 요구를 제공하고,
    상기 풋 인터페이스는 풋 응답 신호를 더 제공하며,
    상기 풋 구성요소는 상기 셀 상태의 리세트를 나타내기 위한 신호를 상기 상태 제어기로 보내며, 상기 풋 응답 신호를 발생시키기 위하여 상기 레지스터가 상기 풋 데이터 버스로부터 상기 데이터 항목을 수신하도록 인에이블하도록 상기 풋 토큰, 상기 풋 요구 및 상기 셀의 엠티 상태에 의해 인에이블되는 풋 제어 회로를 더 포함하는 회로.
  28. 제26항에서,
    상기 풋 제어 회로는 상기 풋 토큰을 상기 제2 인접 셀로 전달하기 위하여 상기 풋 요구의 발생 해제에 의해 디스에이블되는 회로.
  29. 제28항에서,
    상기 제2 중계국 체인의 중계국은 겟 요구를 제공하고,
    상기 셀 어레이 내의 각 셀의 상기 겟 구성요소는
    상기 겟 토큰을 상기 제2 인접 셀로 전달하기 위하여 상기 겟 요구에 의해 인에이블되는 동기 래치, 및
    상기 겟 요구 및 상기 겟 토큰에 응답하여 상기 셀의 엠티 상태를 나타내기 위하여 상기 상태 제어기에 신호를 보내도록 구성된 회로
    를 더 포함하는 회로.
  30. 제29항에서,
    상기 레지스터는 상기 데이터 항목을 상기 겟 데이터 버스로 송신하기 위하여 상기 겟 요구 및 상기 겟 토큰에 의해 인에이블되는 회로.
  31. 클록 신호에 의해 제어되는 동기 송신기 서브시스템에서 비동기 수신기 서브시스템으로 데이터 항목의 전송을 인터페이스하고, 상기 데이터 항목의 전송은 상기 송신기 서브시스템과 상기 수신기 서브시스템 사이에서 지연되는 회로로서,
    풋 데이터 버스 상의 상기 데이터 항목을 송신하기 위하여 상기 송신기 서버시스템에 장착되고 동기 동작 프로토콜을 갖는 제1 중계국 체인,
    겟 데이터 버스 상의 상기 데이터 항목을 수신하기 위하여 상기 수신기 서브시스템에 장착되고 비동기 동작 프로토콜을 갖는 제2 중계국 체인, 및
    상기 클록 신호를 수신하고, 상기 제1 중계국 체인의 동기 동작 프로토콜 및 상기 제2 중계국 체인의 비동기 동작 프로토콜에 따라 상기 데이터 항목을 상기 제1 중계국 체인에서 상기 제2 중계국 체인으로 송신하는 중계국
    을 포함하고,
    상기 중계국은
    셀들로 이루어지는 셀 어레이,
    미리 정해진 수보다 적은 수의 상기 셀 어레이 내의 연속 셀이 엠티 상태인 경우에 발생되는 상기 제1 클록 신호에 동기화되는 풀 신호를 생성하는 풀 검출기, 및
    소정의 풀 신호가 발생되지 않고 유효성 신호가 발생되는 경우에 상기 제1 클록 신호의 각 클록 사이클에 따라 데이터 항목의 넣기를 인에이블하도록 구성되는 풋 제어기
    를 포함하는 회로.
  32. 제31항에서,
    상기 셀 어레이 내의 각 셀은
    상기 풋 데이터 버스로부터 상기 데이터 항목을 수신하고, 상기 데이터 항목을 상기 겟 데이터 버스로 송신하도록 구성된 레지스터,
    상기 셀의 상태를 나타내는 상태 제어기,
    상기 제1 동작 프로토콜에 따라 동작하도록 구성되며, 제1 인접 셀로부터 풋 토큰을 수신하고, 상기 풋 요구, 상기 풋 토큰 및 상기 셀의 상태에 기초하여 상기 풋 데이터 버스로부터 수신된 상기 데이터 항목을 상기 레지스터에 래치하며, 상기 풋 토큰을 제2 인접 셀로 전달하기 위한 풋 구성요소, 및
    상기 제2 동작 프로토콜에 따라 동작하도록 구성되며, 상기 제1 인접 셀로부터 겟 토큰을 수신하고, 상기 겟 요구, 상기 겟 토큰 및 상기 셀의 상태에 기초하여 상기 데이터 항목을 상기 레지스터에서 상기 겟 데이터 버스로 꺼내며, 상기 겟 토큰을 상기 제2 인접 셀로 전달하기 위한, 겟 구성요소
    를 포함하는 회로.
  33. 제32항에서,
    상기 제1 중계국 체인의 중계국은 풋 요구를 제공하고,
    상기 셀 어레이 내의 각 셀의 상기 상기 풋 구성요소는
    상기 풋 토큰을 상기 제2 인접 셀로 전달하기 위하여 상기 풋 요구에 의해 인에이블되는 동기 래치, 및
    상기 풋 요구 및 상기 풋 토큰에 응답하여 상기 셀의 엠티 상태를 나타내기 위하여 상기 상태 제어기에 신호를 보내도록 구성된 회로
    를 더 포함하는 회로.
  34. 제33항에서,
    상기 레지스터는 상기 데이터 항목을 수신하기 위하여 상기 풋 요구에 의해 인에이블되는 회로.
  35. 제34항에서,
    상기 셀 어레이 내의 각 셀의 상기 겟 구성요소는 상기 제1 인접 셀의 상기 레지스터에서 상기 겟 데이터 버스로의 상기 데이터 항목의 꺼내기를 나타내는 상기 제1 인접 셀로부터의 신호에 응답하여 상기 셀 어레이 내의 개별 셀에 상기 겟 토큰을 수신하도록 구성된 겟 토큰 전달 회로를 포함하는 회로.
  36. 제35항에서,
    상기 레지스터는 상기 데이터 항목을 상기 겟 데이터 버스로 꺼내기 위하여 상기 겟 토큰에 의해 인에이블되는 회로.
  37. 제36항에서,
    상기 제2 중계국 체인의 중계국은 겟 요구를 제공하고,
    상기 겟 인터페이스는 겟 응답 신호를 더 포함하며,
    상기 겟 구성요소는 상기 겟 응답 신호를 발생시키기 위하여 상기 셀 상태를 리세트하도록 상기 상태 제어기에 신호를 보내도록 상기 겟 토큰, 상기 겟 요구 및 상기 풀의 엠티 상태에 의해 인에이블되는 겟 제어 회로를 더 포함하는 회로.
  38. 제37항에서,
    상기 겟 제어 회로는 상기 겟 토큰을 상기 제2 인접 셀로 전달하기 위하여 상기 겟 요구의 발생 해제에 의해 디스에이블되는 회로.
KR1020027016784A 2000-06-09 2001-06-08 혼합형 비동기 및 동기 시스템을 위한 낮은 대기시간fifo 회로 KR100761430B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US21064200P 2000-06-09 2000-06-09
US60/210,642 2000-06-09
PCT/US2001/018667 WO2001095089A2 (en) 2000-06-09 2001-06-08 Low latency fifo circuits for mixed asynchronous and synchronous systems

Publications (2)

Publication Number Publication Date
KR20030066333A KR20030066333A (ko) 2003-08-09
KR100761430B1 true KR100761430B1 (ko) 2007-09-27

Family

ID=22783678

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027016784A KR100761430B1 (ko) 2000-06-09 2001-06-08 혼합형 비동기 및 동기 시스템을 위한 낮은 대기시간fifo 회로

Country Status (9)

Country Link
EP (1) EP1374032B1 (ko)
JP (2) JP4849763B2 (ko)
KR (1) KR100761430B1 (ko)
CN (1) CN100429616C (ko)
AT (1) ATE370448T1 (ko)
AU (1) AU2001266808A1 (ko)
CA (1) CA2412438A1 (ko)
DE (1) DE60130039T2 (ko)
WO (1) WO2001095089A2 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2407491A1 (en) 2000-04-25 2001-11-01 The Trustees Of Columbia University In The City Of New York Circuits and methods for high-capacity asynchronous pipeline processing
CA2407407A1 (en) 2000-04-26 2001-11-01 The Trustees Of Columbia University In The City Of New York A low latency fifo circuit for mixed clock systems
KR100783687B1 (ko) 2000-10-23 2007-12-07 더 트러스티스 오브 콜롬비아 유니버시티 인 더 시티 오브 뉴욕 래치 제어기를 갖는 비동기 파이프라인
KR20020094129A (ko) * 2001-06-11 2002-12-18 이문기 데이터 전송을 위한 토큰링 방식의 데이터 전송 시스템
WO2004066142A2 (en) 2003-01-24 2004-08-05 Koninklijke Philips Electronics N.V. Pipeline synchronisation device and method
CN100463443C (zh) * 2005-07-01 2009-02-18 中兴通讯股份有限公司 一种异步fifo实现系统及实现方法
FR2890766B1 (fr) * 2005-09-12 2007-11-30 Arteris Sa Systeme et procede de communication asynchrone sur circuit, entre des sous-circuits synchrones
FR2899413B1 (fr) 2006-03-31 2008-08-08 Arteris Sa Systeme de commutation de message
FR2900017B1 (fr) 2006-04-12 2008-10-31 Arteris Sa Systeme d'interconnexions de blocs fonctionnels externes sur puce muni d'un unique protocole parametrable de communication
FR2902957B1 (fr) 2006-06-23 2008-09-12 Arteris Sa Systeme et procede de gestions de messages transmis dans un reseau d'interconnexions
US7913007B2 (en) 2007-09-27 2011-03-22 The University Of North Carolina Systems, methods, and computer readable media for preemption in asynchronous systems using anti-tokens
WO2010039312A2 (en) 2008-06-27 2010-04-08 The University Of North Carolina At Chapel Hill Systems, pipeline stages, and computer readable media for advanced asynchronous pipeline circuits
CN102053815B (zh) * 2009-11-05 2012-10-31 上海华虹集成电路有限责任公司 同步fifo电路系统
CN102754072B (zh) 2009-12-14 2016-10-19 起元技术有限责任公司 规定用户界面元素
CN101739500B (zh) * 2010-02-10 2012-06-06 龙芯中科技术有限公司 一种多时钟数字系统及其时钟确定装置和方法
WO2015192062A1 (en) 2014-06-12 2015-12-17 The University Of North Carolina At Chapel Hill Camera sensor with event token based image capture and reconstruction
CN104298634B (zh) * 2014-09-24 2017-06-30 四川九洲电器集团有限责任公司 基于fpga和dsp的数据传输系统
US9703526B2 (en) * 2015-03-12 2017-07-11 Altera Corporation Self-stuffing multi-clock FIFO requiring no synchronizers
US11423083B2 (en) 2017-10-27 2022-08-23 Ab Initio Technology Llc Transforming a specification into a persistent computer program
CN108268238A (zh) * 2018-01-24 2018-07-10 深圳市风云实业有限公司 数据处理方法、装置、计算机存储介质及fifo设备
CN111274171B (zh) * 2018-12-04 2022-02-11 珠海格力电器股份有限公司 一种数据传输装置及方法
CN110825344A (zh) * 2019-11-12 2020-02-21 天津飞腾信息技术有限公司 一种异步数据传输方法和结构

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0645696A1 (en) * 1993-09-29 1995-03-29 Kabushiki Kaisha Toshiba Semiconductor memory device using serial pointer

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55127637A (en) * 1979-03-24 1980-10-02 Nec Corp Data transfer buffer circuit
JPS587932A (ja) * 1981-07-08 1983-01-17 Kyosan Electric Mfg Co Ltd カウンタ回路
JPS63167949A (ja) * 1986-12-30 1988-07-12 Fanuc Ltd デ−タ転送システム
JP2577926B2 (ja) * 1987-02-20 1997-02-05 日本テキサス・インスツルメンツ株式会社 画像データの書き込み及び読み出し方法
JPH0277936A (ja) * 1988-09-14 1990-03-19 Meidensha Corp Fifoバッファメモリの制御方式
JPH03141092A (ja) * 1989-10-25 1991-06-17 Hitachi Ltd 半導体メモリ
JP2597040B2 (ja) * 1990-09-12 1997-04-02 シャープ株式会社 Fifoメモリ装置
JP2703668B2 (ja) * 1991-03-18 1998-01-26 株式会社日立製作所 データ転送制御装置および磁気ディスク制御装置
JPH05197520A (ja) * 1992-01-22 1993-08-06 Japan Radio Co Ltd Fifoメモリ
JPH065220U (ja) * 1992-06-17 1994-01-21 横河電機株式会社 遅延回路
CA2106271C (en) * 1993-01-11 2004-11-30 Joseph H. Steinmetz Single and multistage stage fifo designs for data transfer synchronizers
JPH0877125A (ja) * 1994-09-09 1996-03-22 Hitachi Ltd 非同期データの同期化転送方式
DE69615471T2 (de) * 1995-07-07 2002-05-08 Sun Microsystems Inc Verfahren und Vorrichtung zur dynamischen Berechnung von Füllungsgraden eines synchronen Fifo-Puffer
JPH09180434A (ja) * 1995-12-27 1997-07-11 Canon Inc データ処理装置
JPH10315548A (ja) * 1997-05-21 1998-12-02 Canon Inc データ処理装置および方法ならびに、印刷装置
JPH11175310A (ja) * 1997-12-09 1999-07-02 Toshiba Tec Corp FiFoメモリ制御回路
US6208703B1 (en) * 1998-05-15 2001-03-27 Hewlett Packard Company First-in-first-out synchronizer
US6128678A (en) * 1998-08-28 2000-10-03 Theseus Logic, Inc. FIFO using asynchronous logic to interface between clocked logic circuits

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0645696A1 (en) * 1993-09-29 1995-03-29 Kabushiki Kaisha Toshiba Semiconductor memory device using serial pointer

Also Published As

Publication number Publication date
JP2004510216A (ja) 2004-04-02
DE60130039T2 (de) 2008-05-15
WO2001095089A3 (en) 2003-10-16
JP4849763B2 (ja) 2012-01-11
DE60130039D1 (de) 2007-09-27
EP1374032B1 (en) 2007-08-15
CN100429616C (zh) 2008-10-29
CA2412438A1 (en) 2001-12-13
EP1374032A2 (en) 2004-01-02
ATE370448T1 (de) 2007-09-15
JP5379826B2 (ja) 2013-12-25
AU2001266808A1 (en) 2001-12-17
KR20030066333A (ko) 2003-08-09
JP2011227919A (ja) 2011-11-10
WO2001095089A2 (en) 2001-12-13
CN1478226A (zh) 2004-02-25

Similar Documents

Publication Publication Date Title
KR100761430B1 (ko) 혼합형 비동기 및 동기 시스템을 위한 낮은 대기시간fifo 회로
Chelcea et al. Robust interfaces for mixed-timing systems with application to latency-insensitive protocols
US6850092B2 (en) Low latency FIFO circuits for mixed asynchronous and synchronous systems
JP4520742B2 (ja) 非同期及び同期領域間の変換を促進する手法
Chelcea et al. Robust interfaces for mixed-timing systems
Chelcea et al. A low-latency FIFO for mixed-clock systems
US20040128413A1 (en) Low latency fifo circuits for mixed asynchronous and synchronous systems
US10355851B2 (en) Methods and systems for synchronization between multiple clock domains
US8352774B2 (en) Inter-clock domain data transfer FIFO circuit
US7308593B2 (en) Interlocked synchronous pipeline clock gating
EP1124179B1 (en) An apparatus for signal synchronization between two clock domains
US5920899A (en) Asynchronous pipeline whose stages generate output request before latching data
US7197582B2 (en) Low latency FIFO circuit for mixed clock systems
US7971038B2 (en) Asynchronous ripple pipeline
TW201944258A (zh) 異步多時鐘域資料流接合及再同步系統及方法
JP2003263883A (ja) 自己同期型fifoメモリ装置、これを用いたデータ転送用インターフェイスを有するシステムおよび非同期型情報処理装置
US8760324B1 (en) Synchronous multi-clock protocol converter
Mekie et al. Interface design for rationally clocked GALS systems
Jackson et al. Gradual synchronization
Kessels et al. Bridging clock domains by synchronizing the mice in the mousetrap
JP2002141922A (ja) ループ型バスシステム
US20230087576A1 (en) Domain-selective control component
WO2024086641A1 (en) Data lane deskew and rate adaptation in a package containing multiple circuit dies
US7076680B1 (en) Method and apparatus for providing skew compensation using a self-timed source-synchronous network
Mekie et al. Interfaces for Rationally clocked Globally Asynchronous Locally Synchronous (GALS) systems

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120905

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130909

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee