KR100965356B1 - 레이턴시에 둔감한 fifo 시그널링 프로토콜 - Google Patents

레이턴시에 둔감한 fifo 시그널링 프로토콜 Download PDF

Info

Publication number
KR100965356B1
KR100965356B1 KR1020077028401A KR20077028401A KR100965356B1 KR 100965356 B1 KR100965356 B1 KR 100965356B1 KR 1020077028401 A KR1020077028401 A KR 1020077028401A KR 20077028401 A KR20077028401 A KR 20077028401A KR 100965356 B1 KR100965356 B1 KR 100965356B1
Authority
KR
South Korea
Prior art keywords
data
domain
signal
fifo
storage device
Prior art date
Application number
KR1020077028401A
Other languages
English (en)
Other versions
KR20080007506A (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 KR20080007506A publication Critical patent/KR20080007506A/ko
Application granted granted Critical
Publication of KR100965356B1 publication Critical patent/KR100965356B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • G06F13/4059Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
    • 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
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/12Indexing scheme relating to groups G06F5/12 - G06F5/14
    • G06F2205/126Monitoring of intermediate fill level, i.e. with additional means for monitoring the fill level, e.g. half full flag, almost empty flag

Abstract

제 1 동작 속도로 동작하는 소스 도메인(311)으로부터의 데이터가 다른 데이터 레이트로 동작하는 다른 도메인(313)의 FIFO(319)에 전송된다. FIFO(319)는 추가적인 처리 또는 저장을 위해서 싱크로 전송하기 이전에 데이터를 버퍼링한다. 소스 측 카운터(325)는 FIFO에서 이용가능한 스페이스를 추적한다. 기재된 예들에서, 초기 카운터 값은 FIFO 깊이에 상응한다. 카운터(325)는 지연이 없이 소스 도메인(311)으로부터의 데이터 준비 신호에 따라 감소한다. 카운터(325)는 FIFO(319)로부터의 데이터 판독에 대한 싱크 도메인(325)으로부터의 시그널링에 따라 증가한다. 따라서, 증가는 도메인들 간의 시그널링 레이턴시에 영향을 받는다. 소스(315)는 카운터(325)가 FIFO(319)가 충만되었음을 나타낼 때 하나 보다 많은 비트(beat)의 데이터를 전송할 수 있다. 마지막 비트의 데이터는, FIFO 위치가 이용가능하게 될 때까지, 소스로부터 계속해서 전송되고, 하나 이상의 FIFO 위치들을 효과적으로 제공한다.

Description

레이턴시에 둔감한 FIFO 시그널링 프로토콜{LATENCY INSENSITIVE FIFO SIGNALING PROTOCOL}
본 발명은 FIFO(first-in-first-out) 저장 장치들을 통한 데이터의 전송에 관련있는 시그널링 및 제어를 위한 프로토콜들과 이러한 시그널링 프로토콜을 구현하는 장치에 관한 것이다.
상이한 도메인들 간의 데이터 전송들을 수반하는 프로세서들 및 통신 애플리케이션들에서는 FIFO(first-in-first-out) 저장 장치들이 사용되는데, 일반적으로 여기서 상기 도메인들은 상이한 데이터 레이트들로 동작할 수 있다. 비록 그 도메인들 간의 데이터 레이터들은 서로 다르고 또한 종종 가변적이지만, 그들 간의 신호들은 동일한 기본 클록 주파수들에 대해서 클록킹될 수 있거나(즉, 동기) 또는 상이한 기본 클록 주파수들에 대해서 클록킹될 수 있다(즉, 비동기). 동기적인 애플리케이션에서는, FIFO에 의해 제공되는 버퍼링이 두 도메인들의 데이터 레이트들 차이를 보상(compensate)한다. 비동기적인 애플리케이션에서는, FIFO에 의해 제공되는 버퍼링이 두 도메인들의 클록 주파수들 및 데이터 레이트들 둘 모두의 차이들을 보상한다. 어느 경우에도, 버퍼링은 수신 도메인이 데이터를 처리할 수 없는 속도 도는 시간에서의 데이터 전송으로 인한 데이터 손실을 방지하거나 및/또는 전송 도메인이 앞선 데이터를 아직 전송하고 있는 동안에 수신 도메인은 추가 데이터를 수신할 것을 예측하여 준비함으로 인한 데이터 중복을 방지하는데 도움을 준다.
그러나, 대부분의 FIFO 구현들은 FIFO 버퍼를 구현하는 메모리 또는 레지스터의 유한한 크기나 깊이(depth)에 의해서 제한된다. 예컨대, FIFO 저장 장치가 수신 도메인의 싱크에 전송하기 위해 대기 중인 데이터로 이미 가득 차여 있을 때 전송 도메인이 더 많은 데이터를 전송한다면, 데이터는 여전히 손실될 수 있다. FIFO의 충만(fill) 레벨 및/또는 기록 상태에 대한 정보를 수신 또는 싱크 도메인으로부터 전송 또는 소스 도메인에 제공하기 위한 다양한 기술들이 개발되었다. 그러나, 이러한 기술들의 추가적인 개선이 여전히 요구되고 있다.
카운터들은 FIFO 내의 이용가능한 스페이스를 추적하고, 소스 측은 데이터의 전송을 제어하기 위해서 카운트를 사용한다. 전송 제어를 향상시키기 위해서, 카운터가 소스 측 상에 구현되는 반면에 FIFO는 수신기 측 상에 구현된다. 카운터는 전송할 데이터의 준비 상태, 예컨대 새로운 데이터가 소스 측 상의 레지스터에 로딩되었고 FIFO 저장 장치에 이용가능하다는 것을 나타내는 소스 측 상의 신호에 반응한다. 카운터가 소스 측 상에 있기 때문에, 이러한 신호를 수신하고 그에 응답하는데 있어서 발생하는 전파 지연(즉, 현재 사이클 미만의 지연)이나 레이턴시(즉, 하나 이상의 사이클들만큼의 지연)가 존재하지 않는다. 카운터는 또한, 예컨대 데이터가 FIFO 저장 장치로부터 출력되어 그 FIFO 저장 장치 내의 스페이스가 클리어되었을 때, FIFO 저장 장치 내에서 스페이스가 이용가능하게 되었다는 것을 알리기 위해 전송되는 신호에 반응한다. 그러나, 이러한 더 늦은 신호는 싱크 도메인으로부터 소스 도메인에 전송되고, 카운터 동작은 그 도메인들 간에 신호를 통신하는데 있어 발생되는 임의의 레이턴시에 영향을 받는다.
예시적인 방법은 제 1 데이터 레이트로 동작하는 소스 도메인과 상기 제 1 데이터 레이트와는 다른 제 2 데이터 레이트로 동작하는 싱크 도메인 간에 상기 싱크 도메인의 FIFO(first-in-first-out) 저장 장치를 통해서 데이터를 전송할 수 있게 한다. 상기 방법은, 소스 도메인이 전송할 준비가 된 데이터를 가지고 있을 때, 상기 데이터를 싱크 도메인에 이용가능하도록 하기 위해서 소스 도메인의 레지스터에 상기 데이터를 로딩하고 또한 데이터 준비 신호를 제공하는 단계를 포함한다. 본 예에서는, 소스 도메인의 카운터에서 유지되면서, FIFO 저장 장치에서 이용가능한 스페이스를 나타내는 값이 데이터 준비 신호에 반응하여 감소된다. 상기 방법은 또한 데이터 준비 신호에 기초해서 데이터 준비 상태를 싱크 도메인에 시그널링하는 단계를 포함한다. 싱크 도메인에서 데이터 준비 상태의 시그널링을 수신하였을 때, FIFO 저장 장치는 소스 도메인의 레지스터로부터 이용가능한 데이터를 상기 FIFO 저장 장치에 로딩하도록 동작된다. 임의의 시점에서, 데이터는 FIFO 저장 장치로부터 데이터 싱크로 출력되고, 그럼으로써 FIFO 저장 장치의 스페이스가 클리어된다. 상기 방법은 또한 FIFO 저장 장치의 스페이스 클리어를 소스 도메인에 시그널링하는 단계를 포함한다. 이러한 시그널링의 수신에 반응하여, 카운터는 FIFO 저장 장치의 이용가능한 스페이스를 나타내는 값을 증가시킨다. 싱크 도메인에서 데이터가 이용가능하도록 하기 위해 소스 도메인의 레지스터에 준비 데이터를 로딩하는 것은 소스 도메인의 카운터에서 유지되면서 FIFO 저장 장치에서 이용가능한 스페이스를 나타내는 값에 반응하여 제어된다.
상이한 두 시그널링 기술들 또는 프로토콜들이 기재된다. 한 가지 기술은 데이터 준비 펄스 신호를 싱크 도메인의 레지스터에 전송하는 것을 포함한다. 비록 각각의 펄스는 단일 사이클로 구성되지만, 싱크 도메인의 레지스터는, FIFO 저장 장치의 클리어에 이어서 그 FIFO 저장 장치로의 새로운 데이터의 로딩이 완료될 때까지, 그 펄스를 보유하며 연속적인 준비 지시를 제공한다.
다른 기재된 기술은 '핑-퐁(ping-pong)' 시그널링을 활용한다. 이러한 기술은 시그널링 상태를 사전 유효 데이터 준비 상태로부터 교호(alternate) 유효 데이터 준비 상태로 변경하는 것을 포함한다. 기본적으로, 레지스터 출력은, 새로운 비트(beats)의 데이터가 전송하기에 계속해서 이용가능하게 될 때, 상기 두 유효 데이터 준비 상태들 사이에서 교호(핑-퐁)적으로 된다. 싱크 측 상의 멀티플렉서(MUX) 등은 두 교호적인 상태들 사이의 각각의 전환에 반응하여, 새로운 비트(beat)의 데이터가 준비되어 있다는 것을 알린다. 싱크 측 상의 제어 엘리먼트는 FIFO로의 입력을 제어하기 위해서 MUX로부터의 이러한 데이터-준비 지시를 사용한다.
데이터를 전송하기 위한 방법의 다른 예는 소스 도메인과 싱크 도메인 간의 잠재적으로 겹치는 다수의 전송 사이클들을 커버한다. 다수의 클록 사이클들에 걸쳐 통상적으로 발생하는 각각의 전송 사이클은 소스로부터의 데이터를 소스 도메인의 레지스터에 로딩하는 단계; 데이터 준비를 싱크 도메인에 시그널링하는 단계; FIFO 저장 장치로부터의 데이터를 싱크 장치에 출력하고 FIFO 저장 장치에서 데이터를 위한 스페이스를 클리어시키는 단계; 및 상기 데이터의 출력 및 상기 FIFO 저장 장치에서의 스페이스 클리어를 소스 도메인에 시그널링하는 단계를 포함한다. 소스 도메인에서 보유되는 카운트 값은 소스 도메인의 레지스터로의 데이터의 각 로딩에 반응하여 제 1 방식(예컨대, 감소 또는 증가되는 방식)으로 변경된다. 카운트 값은 FIFO 저장 장치에서의 스페이스의 클리어링에 대한 소스 도메인로의 각 시그널링에 반응하여 정반대의 방식(즉, 증가 또는 감소되는 방식)으로 변경된다. 연속적인 전송 사이클들에서 소스로부터 소스 도메인의 레지스터로 데이터를 로딩하는 것에 대한 제어는 카운터 값의 현재 상태에 기초한다. 소스 레지스터로부터의 데이터를 FIFO에 로딩하는 단계는 또한 소스 레지스터로부터 FIFO로의 전송이 단일 클록 사이클 내에 물리적으로 발생할 수 없을 때 통상적으로 이루어질 바와 같이 하나 이상의 중간 레지스터들을 통한 준비 신호 및 데이터의 전송을 포함할 수 있다.
도메인들 간에 데이터를 전송하기 위한 방법의 또 다른 예는 다음과 같은 단계들의 여러 번의 반복을 포함하는데, 상기 단계들은 소스로부터의 데이터를 소스 도메인의 레지스터에 로딩하고 그 데이터가 싱크 도메인에서 이용가능하게 만드는 단계; 싱크 도메인의 FIFO(first-in-first-out) 저장 장치에서 스페이스가 이용가능할 때, 소스 도메인의 레지스터로부터의 데이터를 상기 FIFO 저장 장치에 로딩하는 단계; 및 상기 FIFO 저장 장치에서 데이터를 위한 스페이스를 클리어시키기 위해 상기 FIFO 저장 장치로부터 데이터를 싱크 장치에 출력하는 단계를 포함한다. 이러한 방법은 또한 FIFO 저장 장치에서 이용가능한 스페이스를 나타내는 카운트를 소스 도메인에서 보유하는 단계를 포함한다. 그 카운트는 소스 도메인의 레지스터로의 데이터의 각 로딩에 반응하고 또한 FIFO 저장 장치의 스페이스의 각 클리어링에 대한 싱크 도메인으로부터의 시그널링에 반응하여 유지된다. 데이터를 소스 도메인의 레지스터에 로딩하는 상기 단계의 각각의 반복의 경우에는, 카운트의 현재 상태에 기초하여 상기 소스 도메인으로부터의 데이터를 상기 레지스터에 로딩하는 것을 제어하는 관련된 단계가 존재한다. 또한, FIFO 저장 장치가 가득 찼다는 것을 카운트가 알리는 경우에는, 상기 방법은 그 다음으로 이용가능한 비트(beat)의 데이터를 소스 도메인의 레지스터에 로딩하는 것을 허용하고, 그럼으로써 상기 비트의 데이터는 스페이스가 이용가능하게 될 때 FIFO 저장 장치로의 로딩을 위해서 상기 FIFO 저장 장치에 계속해서 이용가능하게 된다.
도메인들 간에 데이터를 전송하기 위해서 이러한 또는 유사한 제어 및 시그널링 기술들을 사용하는 특정 장치가 또한 기재되어 있다. 이러한 장치의 예는 소스로부터 데이터를 수신하고 그 수신된 데이터를 싱크 도메인으로의 전송을 위해 제공하기 위해서 소스 도메인에 판독 데이터 레지스터를 구비할 수 있다. 싱크 도메인의 FIFO(first-in-first-out) 저장 장치는 싱크로의 전송을 위해 판독 데이터 레지스터로부터 데이터를 수신한다. 상기 장치는 또한 소스 도메인에 카운터를 구비한다. 그 카운터는 데이터를 판독 데이터 레지스터에 로딩하는 것과 FIFO 저장 장치로부터 데이터를 오프-로딩하는 것에 반응한다. 카운터에서 유지되는 값은 FIFO 저장 장치에서 이용가능한 스페이스를 나타낸다. 상기 장치는 또한 카운트 값에 반응하여, 싱크 도메인으로의 전송을 위해 데이터를 판독 데이터 레지스터에 로딩하는 것을 제어하기 위한 소스 도메인에서의 제어를 포함한다.
일양상에서는, FIFO 저장 장치가 채워졌다는 것이 카운터의 카운트 값에 의해서 지시될 때, 제어기는 그 다음의 이용가능한 비트(beat)의 데이터를 판독 데이터 레지스터에 로딩하는 것을 가능케 한다. 판독 데이터 레지스터는 스페이스가 이용가능할 경우에 FIFO 저장 장치로의 로딩을 위해서 상기 FIFO 저장 장치에 계속해서 제공되도록 상기 비트(beat)의 데이터를 보유한다.
다른 양상에서, 상기 장치는 FIFO 저장 장치에 의한 데이터의 수신을 제어하기 위해서, 데이터가 상기 FIFO 저장 장치로의 전송을 위해 판독 데이터 레지스터에 있을 때를 싱크 도메인에 시그널링하기 위한 수단을 포함한다. 적절한 시그널링 기술들에 대한 몇 가지 예들이 기재되어 있다.
목적들, 장점들 및 새로운 특징들이 아래의 설명부분에서 부분적으로 설명될 것이고, 부분적으로는 아래의 설명부분 및 첨부 도면들을 검토하였을 때 당업자에게는 자명해지거나 또는 예들의 제작 또는 동작에 의해서 습득될 수 있다. 본 발명의 목적들 및 장점들은 첨부된 청구항들에서 특별히 기재되어 있는 방법들, 수단들 및 결합들의 실행 또는 사용에 의해서 구현되고 획득될 수 있다.
도면들은 단지 예로서 본 발명에 따른 하나 이상의 구현들을 나타낼 뿐 그러한 구현들로 제한되지는 않는다. 도면들에서는 동일한 참조 번호들이 동일하거나 유사한 엘리먼트들을 지칭한다.
도 1은 FIFO(first-in-first-out) 버퍼를 통해 도메인들 간에 데이터를 전송하는 엘리먼트들 및 데이터 교환의 시그널링 및 제어를 위한 엘리먼트들의 기능 블록도.
도 2(a) 내지 도 2(c)는 도 1의 시스템에서 데이터 교환을 이해하는데 유용한 타이밍도들.
도 3은 FIFO(first-in-first-out) 버퍼를 통해서 도메인들 간에 데이터를 전송하는 엘리먼트들 및 데이터 교환의 시그널링 및 제어를 위한 다소 상이한 세트의 엘리먼트들의 기능 블록도.
도 4(a) 및 도 4(b)는 도 3의 시스템에서 데이터 교환을 이해하는데 유용한 타이밍도들.
다음의 상세한 설명에서는, 많은 특정 세부사항들이 관련된 내용의 철저한 이해를 제공하기 위해서 일예들을 통해 설명된다. 그러나, 본 발명이 그러한 세부사항들이 없이도 실행될 수 있다는 것이 당업자에게는 자명할 것이다. 다른 경우들에서는, 널리 공지된 방법들, 절차들, 성분들, 및 회로가 본 발명의 양상들을 불필요하게 불명확하게 하는 것을 막기 위해서 세부적이지 않게 비교적 높은 레벨로 설명된다.
본 명세서에 기재되어 있는 기술은 FIFO(first-in-first-out) 저장 장치들로 그리고 그로부터의 데이터 전송에 관련된 시그널링 및 제어를 위한 프로토콜에 관한 것이며, 또한 이러한 프로토콜들을 사용하는 장치에 관한 것이다. 이제는 첨부 된 도면들에 도시되어 있으면서 아래에서 설명되는 예들이 상세히 참조된다. 도 1은 FIFO-관련 시그널링 프로토콜을 구현하는 시스템의 제 1 예를 나타낸다.
도시된 시스템은 두 가지의 상이한 도메인들, 즉, 데이터를 전송하고자 하는 소스(source) 도메인(11) 및 데이터를 수신하고자 하는 싱크(sink) 도메인(13)의 엘리먼트들을 포함한다. 기본적으로, 데이터 소스(15)로 총칭해서 표현되는 도메인(11)의 엘리먼트는 이용가능한 데이터를 구비하고, 데이터 싱크(17)로 총칭해서 표현되는 도메인(13)의 엘리먼트는 추가적인 처리, 저장 등을 위해 그 데이터를 수신할 필요가 있다.
상기 두 도메인들은 점선(D-D)으로 표현된 도메인 경계에 의해서 분리된다. 상기 두 도메인들은 프로세서 칩의 상이한 코어 부분들과 같이 경계 영역에 의해서 분리되는 단일 반도체 칩의 상이한 영역들일 수 있다. 그 상이한 도메인들은 또한 일련의 하나 이상의 레지스터들이나 다른 인터페이스 수단을 통해서 유선으로 접속되는 상이한 칩들 또는 상이한 장치들일 수 있거나, 또는 LAN 또는 WAN을 통해 통신하는 두 개의 분리된 시스템들일 수 있다. 두 도메인들에서 회로들의 동작들은 동일한 기본 클록 주파수에 대해 클록킹될 수 있거나(즉, 동기) 또는 상이한 기본 클록 주파수들에 대해 클록킹될 수 있다(즉, 비동기).
설명의 편의를 위해서, 두 도메인들은 동시적이며 예컨대 칩의 경계 영역을 통해 상호접속되거나 연결되는 프로세서 칩의 두 섹션들과 같이 경계를 통해 직접적으로 서로 접속되는 근접한 엘리먼트들을 나타낸다는 것이 가정된다. 두 섹션들의 분리는 예컨대 칩의 분리된 두 부분들 또는 영역들과 같이 물리적일 수 있거나, 또는 상기 분리는 제 1 도메인의 데이터 레이트로 동작하는 성분들과 제 2 도메인의 동작 속도로 동작하는 성분들 사이에서 간단히 논리적일 수 있다.
따라서, 두 도메인들의 데이터 레이트들은 서로 상이하다. 소스 도메인(11)의 엘리먼트들은 하나의 데이터 레이트로 동작하는데 반해, 싱크 도메인(13)의 엘리먼트들은 다소 상이한 다른 데이터 레이트로 동작한다. 싱크 도메인(13) 및 그에 따른 데이터 싱크 장치(17)의 데이터 레이트는 도메인(11)의 소스(15)의 데이터 레이트보다 더 느리거나 혹은 더 빠를 수 있다. 또한, 그 데이터 레이트들 및 그에 따른 그 데이터 레이트들의 차이는 예컨대 소스(15) 및 데이터 싱크 장치(17)의 처리 동작들이 변할 때에 시간에 걸쳐 변할 수 있다. 예시적인 타이밍도들(도 2(a) 내지 도 2(c))에서, 싱크 데이터 레이트는 소스 데이터 레이트보다 다소 느리다. 비록 예들에서는 클록 속도들이 동일하지만, 당업자들에게 공지된 기술들을 사용함으로써 클록들이 상이할 때도 이점이 획득될 수 있다.
도 1을 참조하면, 경계(D-D)를 통한 도메인들(11 및 13)의 데이터 레이트 차이를 보상하기 위해서, 싱크 도메인(13)은 기본적으로 소스 도메인(11)으로부터 수신되는 데이터를 버퍼링하기 위해 FIFO(first-in-first-out) 저장 장치(19)를 포함한다. 버퍼링은, 수신 도메인이 데이터를 처리할 수 없는 속도 및 시간에서 데이터를 전송함으로 인해 발생하는 데이터 손실을 막기 위해서 및/또는 전송 도메인(11)이 여전히 앞선 데이터를 전송하고 있는 동안에 수신 도메인(13)이 추가적인 데이터를 수신할 것을 기대하여 준비하고 있기 때문에 발생하는 데이터 중복을 막기 위해서, 두 도메인들(11 및 13)의 데이터 레이트의 차이들을 보상한다.
FIFO 저장 장치(19)는 레지스터들 또는 메모리들과 같이 매우 다양한 물리적인 구조들 중 임의의 구조로 구현될 수 있다. 설명을 위해서, 수신된 데이터가 이동되는 일련의 또는 한 스택의 레지스터들로서 FIFO(19)를 생각하는 것이 편리하다. 그러나, FIFO 장치들은 종종 메모리를 활용하며, 판독 및 기록 동작들 동안에 사용되는 메모리 어드레싱의 적절한 조작에 의해서 선입선출(first-in-first-out) 동작들을 제공한다. 한 레지스터 또는 장소는, 예컨대 128 바이트들인 새로운 비트(beat)의 데이터가 FIFO 저장 장치(19)에 로딩되거나 기록될 때, 채워진다. 다른 레지스터 또는 장소는, 임의의 비트(beat)의 데이터가 FIFO 저장 장치(19)로부터 싱크(17)로 오프로딩되거나 판독될 때, 클리어된다.
소스 또는 전송 측(11) 상에서, 데이터 소스(15)는 본 예에서 128 비트의 데이터인 임의의 비트(beat)의 데이터를 판독 데이터 레지스터로 때로 지칭되는 레지스터(21)에 제공한다. 예에서, 레지스터(21)는 판독 데이터(ReadData) 레지스터로서 지정된다. ReadData 레지스터(21)는 128 비트의 데이터를 보유하고, 경계(D-D)를 통해 데이터를 전송하기 위한 라인 상의 데이터 비트들을 FIFO 저장 장치(19)의 입력에 제공한다. 비록 도면에 도시되지 않았지만, 추가적인 로직이 판독 데이터 레지스터 이후에 그리고 FIFO 이전에 존재할 수 있다. 레지스터(21)가 새로운 비트(beat)(128 바이트들)의 데이터를 보유하는 동안은, 그 데이터는 FIFO 저장 장치(19)의 입력으로의 라인 상에서 이용가능하다. 그러나, 새로운 비트(beat)의 데이터가 먼저 레지스터(21)에 로딩될 때는, 데이터가 싱크 도메인(13)의 FIFO 저장 장치(19)의 입력에 나타나기 이전에 어느 정도의 전파(propagation) 지연이 존재한다.
FIFO 제어부(23)는 ReadData 레지스터(21)로 그리고 그것을 통한 데이터의 흐름을 제어한다. FIFO 제어부(23)는 유한 상태 머신이다. 그 상태 머신은 프로그램가능한 프로세서로서 구현될 수 있지만, 통상적으로는 특정 입력들에 반응하여 원하는 출력들을 생성하기 위해서, 즉, 특정 소스-측 제어 알고리즘을 구현하기 위해서 회로들 및/또는 로직 블록들로 형성된다. 소스(15)가 전송할 새로운 데이터를 가지고 있을 때, FIFO 제어부(23)는 만약 레지스터-사용 카운터(25)에 의해서 지시되는 바와 같이 마지막 비트(beat)의 데이터를 위해 FIFO 저장 장치(19)에 이용가능한 스페이스가 존재한다면, ReadData 레지스터(21)로 하여금 새로운 데이터를 제공하게 한다. 카운터의 범위 또는 초기 값은 FIFO의 깊이에 상응한다. 따라서, 제어부(23)는 카운터의 상태를 검사함으로써 FIFO 내에서 스페이스가 이용가능한지, 예컨대 카운트가 아직 네거티브(어떠한 스페이스도 이용가능하지 않음)가 아닌지를 결정할 수 있다. 더 아래에서 설명되는 바와 같이, 카운터(25)가 소스 도메인(11)의 엘리먼트인 것이 유리하다. 비록 별도의 엘리먼트로서 도시되었지만, 카운터(25)는 FIFO 제어부(23)로서 기능하는 상태 머신의 일부로서 통합될 수 있다.
FIFO 제어부(23)가 ReadData 레지스터(21)로 하여금 FIFO 저장 장치(19)로의 입력을 위한 새로운 데이터를 제공하도록 할 때, FIFO 제어부(23)는 ReadDataReady 신호로서 예에서 지칭되는 준비 펄스를 생성함으로써 싱크 도메인(13)에 시그널링한다. 이러한 신호는 통상적으로 단일 클록 사이클 동안에 나타나는 펄스인데, 이는 그것이 ReadData 레지스터(21)에 의해서 이용가능하게 데이터가 유지되는 시간 동안에 하이(또는 로우)로 유지되는 상태 신호가 아니라는 것을 의미한다. 싱크 도메인에서, ReadDataReady 펄스 신호는 예시적인 도면에서 준비(Rdy) 레지스터로 지정되어 있는 레지스터(27)에 인가된다. 레지스터(27)가 준비 펄스를 수신하였을 때, 그것은 데이터가 싱크 도메인(13)의 FIFO 제어부(29)에 전송하기 위해 준비되었다는 것을 명시하는 상태 신호를 제공한다. 레지스터(27)는 FIFO 제어부(29)에 의해서 클리어될 때까지 준비 상태를 유지한다(펄스를 유지한다).
싱크 도메인(13)에서, FIFO 제어부(29)는 다른 유한 상태 머신이다. 그 상태 머신은 프로그램가능한 프로세서로서 구현될 수 있지만, 통상적으로는 특정 입력들에 반응하여 원하는 출력들을 생성하기 위해, 즉, 특정 싱크-측 제어 알고리즘을 구현하기 위해 회로들 및/또는 로직 블록들로 형성된다. FIFO 제어부(29)는, 예컨대, FIFO 저장 장치(19)로 그리고 그로부터의 데이터의 입력(기록) 및 출력(판독)을 제어하기 위해서 FIFO 저장 장치(19)에 '기록' 및 '판독' 신호들을 제공한다. 판독 기능은 새로운 데이터를 수신하기 위해서 스페이스를 클리어시킨다. 설명된 바와 같이, 레지스터(27)는 소스 도메인 제어부(23)로부터의 준비 펄스에 반응하여 FIFO 제어부(29)에 준비 상태 신호를 제공한다. 만약 준비 데이터를 수신하는데 있어서 FIFO 저장 장치(19)의 스페이스가 이용가능하다면, 제어부(29)는 기록 신호를 생성하여 FIFO 저장 장치(19)로 하여금 소스 도메인(11)의 ReadData 레지스터(21)로부터의 데이터 입력을 수용하게 한다. FIFO 제어부(29)는 자신이 기록 신호를 생성하였을 때, 즉, 자신이 소스로부터의 한 비트(beat)의 데이터(128 비트들)를 수용하도록 FIFO 저장 장치(19)에 지시할 때, 준비 상태 레지스터(27)를 클록시킨다(즉, ReadDataReady 신호의 값에 기초하여 준비 상태 레지스터(27)가 업데이팅하게 함).
도시된 바와 같이, ReadDataReady 신호로서 기능하는 펄스는 카운터(25)를 감소시키는데, 이는 FIFO 저장 장치(19) 내의 1만큼 작은 레지스터 장소가 이용가능하다는 것을 나타낸다. 이와 관련해서, 카운터(25)는 두 도메인들(11 및 13) 간의 신호 전송의 경우에 어떠한 지연이나 레이턴시도 없이 동일한 도메인(11)에서 생성되는 준비 펄스에 반응하여 감소된다. 싱크 측 상에 있는 FIFO 제어부(29)로부터의 판독 신호는 FIFO 저장 장치(19)에게 레지스터 장소들 중 하나로부터의 데이터를 싱크(17)에 출력하고 또한 그 장소를 클리어시키라고 지시한다. 그에 따라서, 판독 신호의 펄스는 경계(D-D)를 통해 싱크 도메인(13)으로부터 공급됨으로써 카운터(25)를 감소시킨다.
제어부(29)에 의한 판독 신호의 발행과 소스 도메인(11)의 카운터(25)에서 FIFO 엔트리 프리(entry free)로서 대응하는 신호의 나타남 사이에는 어느 정도의 레이턴시가 있을 것이다. 시그널링 레이턴시는 시그널링이 칩을 통과하는 필요한 시간으로 인한 것일 수 있다. 그러나, 판독 신호와 FIFO 엔트리 프리 사이에는, 도면에서 지연/타이밍 엘리먼트(28)에 의해 총칭적으로 표현되어 있는 추가적인 상태 회로가 있을 수 있다. 비록 싱크 도메인(13) 내에 도시되어 있지만, 회로(28)는 그 도메인들 중 하나나 또는 둘 모두에서 물리적으로 있을 수 있다. 추가적인 회로, 통상적으로 하나 이상의 플립-플롭들은 도메인들 간의 경계(D)를 통해 적절한 신호 레벨들 및 타이밍 배열을 보장한다. 그러나, 추가 회로(28)는 제어부(29)에 의한 판독 신호의 어서팅(assertion)과 카운터(25)에서 FIFO 엔트리 프리 지시로서 대응하는 신호의 나타남 사이의 레이턴시에 하나 이상의 사이클의 지연을 추가할 것이다. 비록 편의상 도시되지는 않았지만, 당업자라면 이러한 추가 회로가 제공되는 경우에는 유사한 지연/타이밍이 ReadData 라인 및 ReadDataReady 라인과 같은 두 도메인 사이의 다른 라인들 상에 제공될 것이다.
카운터(25)는 경계(D-D)를 통해 새로운 데이터를 전송하기로 결정하는데 있어 사용하기 위해서 소스 도메인(11)의 FIFO 제어부(23)에 FIFO-스페이스-카운트를 제공한다. 데이터가 FIFO(19)에 대해 이용가능할 때마다 카운트를 감소시키고 또한 장소가 클리어될 때마다(데이터가 FIFO(19)로부터 판독될 때) 카운트를 증가시킴으로써, 카운터(25)의 값은 FIFO 저장 장치(19)에서 이용가능하거나 자유 상태인 스페이스의 크기(레지스터 장소들의 수)를 추적한다. 그러나, 카운터(25)는 소스 도메인(11) 내에 있기 때문에, 감소는 싱크 도메인(13)에서의 ReadDataReady 신호 및 그에 대한 응답의 수신에 다소 앞선다. 경계(D-D)를 통해서 레지스터(27)에 펄스 신호를 전송하는데 있어 일정한 지연 또는 레이턴시가 존재한다. 반대로, 소스 도메인(11)에서 카운터(25)의 증가는 경계(D-D)를 통해 판독 신호를 전송하는데 있어서의 지연 또는 레이턴시로 인해 싱크 도메인(13)에 있는 FIFO 저장 장치(19)로부터의 데이터 판독을 다소 끌거나 지연시킨다.
FIFO 제어부(23)는 또한, 데이터 소스(15)가 싱크(17)로의 전송을 위해 이용가능한 데이터를 초기에 갖고 있을 때, 그 데이터 소스(15)에 의해 설정되는 1-비트 레지스터(31)에서의 데이터 유효성 플래그(V)에 반응한다. 다른 방법을 설명하 면, 소스(15)는 ReadData 레지스터(21)에 로딩하기 위해 이용가능한 유효한 새로운 데이터가 있다는 것을 FIFO 제어부(23)에 알리기 위해서 레지스터(31)의 플래그(V)를 설정한다. FIFO 제어부(23)는 데이터 유효성 플래그(V)(31)로서 기능하는 1-비트 레지스터에 클록(인에이블) 신호를 제공한다. 데이터가 싱크 도메인의 FIFO(19)에 성공적으로 전송되었을 때, FIFO 제어부(23)는 레지스터(31)를 로딩하여 유효성 플래그(V)의 상태를 로딩하기 위해서 클록(인에이블) 신호를 제공한다. 동작 중에는, 데이터가 전송될 준비가 되어 있다는 것을 소스 FIFO 제어부(23)에 알리기 위해서 레지스터(31)로부터 소스 FIFO 제어부(23)로 소스 유효 비트가 전송된다. 새로운 데이터가 소스(15)로부터 동시에 이동하지 않는 한, 데이터가 전송될 때는 비트가 레지스터(31)로부터 클리어된다. 이러한 방식으로, FIFO 제어부(23)는 새로운 비트(beat)의 데이터를 위해 이용할 수 있는 공간이 있다는 것을 카운터(25)가 알릴 때 소스(15)로 하여금 플래그를 설정(그리고, ReadData 레지스터(21)로 새로운 비트(beat)의 데이터를 입력)할 수 있도록 레지스터(31)의 V 플래그를 제어한다.
도 1의 시스템에서 데이터 전송을 평가하기 위해서는, 도 2(a) 내지 도 2(c)에 도시된 바와 같은 간단한 타이밍도를 참고하여 시스템의 특정 동작 시퀀스를 고려하는 것이 도움을 줄 수 있다. 각 도면의 상단 라인은 클록 사이클들의 번호를 제공하고, 그 클록의 펄스들이 그 다음 라인에 도시되어 있다. 예들에서, 클록은 두 도메인들에서 동일하다. 3번째 라인은 ReadData 레지스터들(21)에 입력되는 데이터를 나타내고, 4번째 라인은 ReadDataReady 신호(약어로 신호도에서 DataRdy)를 나타낸다.
이제 도 2(a)를 제 1 예로서 고려하자. 본 예에서는, 간략성을 위해서, FIFO는 단일 라인(Fifo[0])으로 구성된다. (5번째 라인에 도시된) 카운트는 전송될 수 있는 비트들(beats)의 데이터의 수를 나타낸다. 카운트는 FIFO 위치들의 수보다 큰 수에서 시작한다. 이러한 추가적인 비트(beat)는 (ReadData 레지스터에서) "플라잇 상태(in flight)"로 유지될 수 있는 데이터를 나타낸다. 제로의 카운트는 소스 데이터가 이전 사이클로부터 유지될 필요가 있다는 것을 나타낸다. 따라서, DataReady 신호는 이러한 사이클에서 어서팅(assert)되지 않아야 한다. 도 2(a)의 예는 단지 하나의 FIFO 위치를 갖기 때문에, 초기에는 카운트가 2로 설정된다.
사이클 2에서는, 데이터(Q0)가 제일 먼저 ReadData 레지스터(21)에서 나타나고, FIFO 제어부(23)는 먼저 ReadDataReady 신호(DataRdy)를 어서팅한다. 그 다음 사이클에서는, 그것이 ReadDataReady 신호를 수신하였기 때문에, 카운터가 이용가능한 FIFO 버퍼 장소의 카운트를 1만큼 감소시킨다. 예에서는, 도면의 제 5 라인에서, 카운트가 제 3 사이클에서 1로 떨어진다.
본 예의 설명에 있어서는 FIFO의 스페이스가 이용가능하다는 것을 가정하다. 사이클 2에서의 ReadDataReady 신호에 반응하여, FIFO는 제 1 비트(beat)(Q0)의 데이터를 수용하고, 이를 그 다음 사이클인 사이클 3에서 라인 Fifo[0]로 이동시킨다. 동시에, 본 예에서는, 싱크가 이 사이클에서 준비되어 그 비트의 데이터를 수용하고(도면의 하단 라인), 그럼으로써 FIFO 제어부(29)가 판독 신호를 어서팅함으로써(도면에서 마지막 라인의 다음) 싱크에서 FIFO로부터 상기 비트의 데이터를 판독하는 것을 가능케 한다.
이러한 제 1 예에서는, 시스템이 도메인들 간에 단일 사이클의 레이턴시를 나타낸다. 도메인들 간의 그러한 레이턴시로 인해서, FIFO 제어부(29)로부터의 판독 신호가 도 1에 도시된 FIFO 엔트리 프리 신호 또는 도 2(a)의 화살표로서 그 다음 (제 4) 사이클에서 카운터에 도달한다. 그 신호는 FIFO로부터 엔트리의 클리어링을 나타내는데, 이는 일반적으로 카운터가 증가되도록 할 것이다. 그러나, 계속되는 ReadDataReady 신호에 의해 지시되는 바와 같이, 새로운 비트(beat)의 데이터가 동일한 사이클에서 또한 이용가능하다. ReadDataReady 신호에 따른 감소가 판독 신호에 따른 증가와 오프셋됨으로써, 카운트는 1로 유지된다(카운트 라인에서 음영으로 표시된 바와 같이). 유사한 형태로, 카운트는 사이클 11 동안에 (즉, 새로운 데이터가 이용가능하게 되고 데이터가 싱크 도메인에서 FIFO로부터 판독되고 있는 한) 1로 유지된다.
사이클 10에서는, 마지막 비트(beat)의 데이터(Q8)가 ReadData 레지스터에 로딩되고, ReadDataReady 신호(DataRdy)가 하이(high)로 유지된다. 그러나, 사이클 11에서는, 그 비트의 데이터가 FIFO로 이동할 때, 어떠한 새로운 비트의 데이터도 이용가능하지 않다. 제어부(23)는 ReadDataReady(도 2(a)에서 DataRdy) 신호를 어서팅해제(de-assert)한다. 그 다음 사이클에서는, 제어부(29)로부터의 판독 신호가 카운터에 도달할 때, 카운터는 증가한다(새로운 데이터가 이용가능하지 않기 때문에 감소할 어떠한 대응하는 필요성도 없음). 이러한 간단한 예에서는, 마지막 비트의 데이터가 FIFO를 통해 싱크로 이동한 이후에, 카운트는 사이클 12에서 2까지 돌아간다.
도 2(b)는 유사한 예에 대한 타이밍을 나타내는데, 여기서 FIFO는 3개의 라인 깊이(위치들 Fifo[0], Fifo[1] 및 Fifo[2])이고, 추가적인 FIFO 엔트리 프리 라인에 의해 도시된 바와 같이, 두 도메인들 간의 시그널링 시에는 두 사이클들의 레이턴시가 존재한다. 그 추가적인 레이턴시는 제어부(29)로부터의 판독 신호와 카운터(25)의 FIFO 엔트리 프리 신호 입력 사이에 예컨대 플립-플롭과 같은 추가적인 상태 회로(28)를 포함시킴으로 인한 것일 수 있다. 유사성 측면에서, 당업자라면 이 도면에 도시된 시그널링 도면에 의해 표현되는 동작들을 알아야 한다.
도 2(c)는 도 2(a)와 유사한 다른 단일 사이클 레이턴시 예인데, 그러나 도 2(c)에서는 FIFO가 3개의 라인 깊이(위치들 Fifo[0], Fifo[1] 및 Fifo[2])이다. 또한, 도 2(c)는 싱크에 의한 더 느린 판독 및 그로 인해서 FIFO의 라인들을 통해 이동하는 데이터를 나타낸다. 또한, 도면의 상단 라인은 클록 사이클들의 넘버링을 제공하고, 그 클록의 펄스들이 그 다음 라인에 도시되어 있다. 제 3 라인은 ReadData 레지스터(21)에 입력되는 데이터를 나타낸다. 예컨대 사이클들 2, 3 및 4에서 데이터가 소스로부터 이용가능하고 또한 FIFO의 스페이스가 이용가능할 때, 데이터는 한 사이클 내에 ReadData 레지스터로 이동하고 그 다음 사이클에서 그 레지스터로부터 FIFO로 이동한다. 예컨대, 데이터 비트들(data beats)(Q0, Q1 및 Q2)이 각각 단지 한 사이클 동안에 그 레지스터 내에 존재한다. 그러나, 데이터가 ReadData 레지스터 내에 있지만 FIFO의 스페이스가 이용가능하지 않을 때는, 그 데이터 비트가 둘 이상의 사이클 동안에 그 레지스터에 존재한다. 예에서는, Q3에서 시작하는 그 비트들의 데이터가 적어도 두 사이클 동안에 그 레지스터에 존재한다.
또한, (제 5 라인에 도시된) 카운트는 전송될 수 있는 그 비트 데이터들의 수를 나타낸다. 카운트는 FIFO 위치들의 수보다 큰 수에서 시작하는데, 즉, 도 2(c)의 3 라인 FIFO 예의 경우에 4에서 시작한다. 이러한 추가적인 비트(beat)는 ReadData 레지스터에서 "플라잇 상태"로 유지될 수 있는 데이터를 나타낸다. 제로인 카운트는, 적어도 두 사이클들 동안에 레지스터에서 Q3에서 시작하는 비트들의 데이터 각각을 유지함으로써 표현되는 바와 같이, 소스 데이터가 이전 사이클로부터 유지될 필요가 있다는 것을 나타낸다. 또한, DataReady 신호는 카운트가 '0'일 때 사이클에서 어서팅되지 않아야 한다.
언급된 바와 같이, 본 예에서, FIFO는 3 개의 라인들로 구성되고, 따라서 초기에는 제 5 라인에 도시된 카운트가 4로 설정된다. 사이클 2에서는, 데이터(Q0)가 제일 먼저 레지스터(21)에서 나타날 때, FIFO 제어부(23)는 먼저 도면의 제 4 라인에 도시된 ReadDataReady 신호를 어서팅한다. 그 다음 사이클(사이클 3)에서는, 그것이 소스 도메인 제어부(23)로부터 ReadDataReady 신호를 수신하기 때문에, 카운터(25)가 이용가능한 버퍼 위치의 카운트를 1만큼 감소시킨다. 예에서, 도면의 제 5 라인에서는, 카운트가 제 3 사이클에서 3으로 떨어진다. 초기에, FIFO 라인들은 비어있고, 따라서 제 1 비트(beat)의 데이터가 제 3 사이클에서 FIFO로 이동될 수 있으며 FIFO의 하단 라인, 즉 라인 Fifo[0]으로 직접 이동될 수 있다. 싱크는 도면의 하단에 도시된 바와 같이, 어느 정도의 시간 이후(예컨대, 사이클 6)까지는 그 데이터를 수신할 준비가 되지 않는다. 따라서, Fifo[0]이 수 개의 사이클들 동안에 제 1 비트(beat)의 데이터(Q0)를 유지한다.
그러나, 사이클 3에서는, 제 2 비트(beat)의 데이터(Q1)가 ReadData 레지스터로 이동하고, 소스 측 제어부(23)가 ReadDataReady(DataRdy) 신호를 하이로 유지한다. 카운터는 싱크 도메인으로부터 판독 또는 FIFO 엔트리 프리 신호를 아직 수신하지 않았기 때문에, 이 경우에는 사이클 4에서 카운트를 2인 값으로 감소시킨다. 본 예의 이 시점에서, FIFO 라인들 중 두 개는 비어 있고, 따라서 상기 제 2 비트의 데이터가 제 4 사이클에서 FIFO로 이동할 수 있고 또한 다음으로 FIFO의 마지막 라인으로 이동할 수 있다. 싱크는 도면의 하단에 도시된 바와 같이 어느 정도의 시간 이후(예컨대 사이클 6)까지는 데이터를 수신할 준비가 되지 않는다. 따라서, Fifo[1]이 수 개의 사이클 동안에 상기 제 2 비트의 데이터(Q1)를 유지한다.
사이클 4에서, 제 3 비트의 데이터(Q1)는 ReadData 레지스터로 이동하고, 소스 측 제어부(23)는 ReadDataReady(DataRdy) 신호를 하이로 유지한다. 또한, 카운터는 그 다음 사이클에서 싱크 도메인으로부터 판독 또는 FIFO 엔트리 프리 신호를 수신하지 않고, 그로 인해서 사이클 5에서 카운터는 카운트를 1만큼 더 감소시키는데, 이 경우에는 1인 값으로 감소한다. 본 예의 이 시점에서, FIFO 라인들 중 하 나는 비어 있고, 따라서 제 2 비트의 데이터가 제 5 사이클에서 라인 Fifo[0]의 FIFO로 이동할 수 있다. 싱크는 어느 정도의 시간 이후까지는 그 데이터를 수신할 준비가 되지 않기 때문에, Fifo[0]은 초기에 제 3 비트의 데이터(Q2)를 유지한다.
사이클 5에서는, 다른 비트(beat)의 데이터(Q3)가 ReadData 레지스터로 이동하고, 소스 측 제어부(23)는 ReadDataReady(DataRdy) 신호를 하이로 유지한다. 이 때에는, 어떠한 데이터도 FIFO로부터 이동하지 않기 때문에, 사이클 6에서는, 카운터가 카운트를 0인 값까지 더 감소시킨다. 본 예의 이 시점에서는, FIFO 라인들 중 어느 것도 비어있지 않고, ReadData 레지스터에 데이터가 존재한다. 따라서, DataReady 신호는 이 사이클에서 어서팅되지 않는다. 그러나, 제 4 비트의 데이터(Q3)는 ReadData 레지스터에서 "플라잇 상태"로 유지된다.
예에서, 싱크는 제일 먼저 제 6 사이클(도면의 하단 라인)에서 임의의 비트(beat)의 데이터를 수용할 준비가 되고, 따라서 FIFO 제어부(29)가 판독 신호(도면에서 마지막 라인 다음)를 어서팅함으로써 Fifo[0]로부터의 그 비트의 데이터가 싱크로 판독되게 한다. 본 예에서, 시스템은 도메인들 사이에 단일 사이클의 레이턴시를 나타낸다. 그 도메인들 사이의 레이턴시로 인해서, FIFO 제어부(29)로부터의 판독 신호는 도 1에 도시된 FIFO 엔트리 프리 신호 또는 도 2가 화살표와 같이 다음 (제 7) 사이클에서 카운터에 도달한다. 이러한 신호는 FIFO로부터 엔트리의 클리어링을 나타내고, 이는 카운터로 하여금 1 값으로 다시 증가하게 한다.
제 1 비트(beat)의 데이터(Q0)가 사이클 6에서 싱크로 이동할 때, Fifo[0]의 스페이스는 자유로운 상태이고, 따라서 FIFO의 다른 데이터가 사이클 7에서 아래로 이동한다(Fifo[0]으로는 Q1 그리고 Fifo[1]로는 Q2). 상단 라인 Fifo[2]는 비어 있고, 이제는 ReadData 레지스터로부터 그 다음 비트(beat)의 데이터, 즉, 본 예에서 이 시점에서는 비트(beat)(Q3)를 수신할 수 있다. 상기 비트(Q3)는 FIFO로 이동하기 때문에, ReadData 레지스터는 이제 그 다음 비트(beat)의 데이터(Q4)를 수용한다.
예에서, 싱크는 모든 다른 사이클에서 FIFO로부터 데이터를 수용하고, 그럼으로써 사이클들 6 및 7의 동작과 유사한 동작들이 선택적으로 발생하는데, 그럼으로써 카운터가 교호적으로 감소하였다가 증가하기 때문에 카운트는 1과 0 사이에서 교호적으로 발생한다. 도시된 바와 같이, DataRegister는 2 개의 연속적인 사이클들 동안에, 즉, FIFO에서 스페이스가 이용가능하게 될 때까지, 각각의 새로운 비트(beat)의 데이터를 "플라잇 상태"로 유지한다. 이러한 방식으로, ReadData 레지스터는 비록 자신이 소스 도메인 내에서 이러한 기능을 제공할지라도 기본적으로는 가외의 FIFO 라인이다.
위에서 언급한 바와 같이, 카운터(25)는 도메인(13)에 FIFO(19) 자체와 위치하기보다는 오히려 도메인(11)에 소스(15)와 위치된다. 이러한 사실은 FIFO로부터 소스로의 신호들에 대한 통상적인 레이턴시가 존재할 때 유리한데, 이는 FIFO가 준비된 이후에 일부 수의 사이클들까지 소스가 데이터를 전송할 수 없다는 것을 의미한다. 도시된 예에서, 카운터(25)는 FIFO(19)에 무엇이 있는지에 대해서 적시에 정확한 스냅샷(snapshot)을 제공하지 않는데, 그 이유는 카운터가 증가에 있어서 레이턴시 패널티(latency penalty)를 초래하기 때문이다. 그러나, FIFO 스페이스 엠프티(empty) 신호가 소스 FIFO 제어부(23)에 (레이턴시가 없이) 즉시 이용될 수 있다. 따라서, 통상적인 상황들의 경우에, 카운터(25)는 도메인들(11 및 13) 간의 필요한 시그널링을 위해서 레이턴시를 "이팅(eat)"하는 것이 확인될 수 있다.
그로 인해서 실제로 FIFO 저장 장치(19)에는 공간이 없을 때는 데이터가 전송될 수 없다는 것이 종종 말해질 수 있다는 점에서 카운터(25)는 비관적인데, 그 이유는 제어부(29)로부터의 프리 신호가 아직 카운터(25)에 전달되지 않았기 때문이다. 그러나, 이는 "프리" 신호 레이턴시에 따른 FIFO 깊이의 크기를 조정함으로써 도시된 설계에서 극복될 수 있고, 따라서 데이터는 계속해서 전달된다. 소스-측 제어부(23)의 로직에 대한 적절한 설계에 의해서 또는 카운터를 N+1(여기서 N은 FIFO 깊이이고, 예컨대 FIFO(19)에서 장소들의 수임)로 크기를 조정함으로써, 소스-측 제어부(23)가 FIFO(19)가 충만되었다고 믿을 때 하나의 마지막 데이터 비트(beat)를 전송할 수 있게 되어서 적은 대역폭을 구입하는 것이 또한 가능하게 된다.
로컬 카운터 및 FIFO의 깊이를 통해서, 소스(15)는 계속해서 데이터를 전송할 수 있다. 따라서, FIFO의 크기를 적절히 조정함으로써, 신호들의 레이턴시에 상관없이 전송들이 이루어질 수 있고, 따라서 시스템은 실질적으로 "레이턴시에 둔감적(latency insensitive)"이다. 특별히 목적지 또는 싱크 측이 충분히 빠르게 FIFO(19)를 비우지 않을 때는 레이턴시가 발생하기 시작할 수 있고 또한 시스템은 그 레이턴시와 동일한 버퍼링을 감소시킨다는 것을 주시하자. 이는 FIFO(19)가 비워지는 통상적인 데이터 레이트들을 커버하도록 FIFO(19)를 더 깊게 만듬으로써 보상될 수 있다. 따라서, 통상적인 상황들에서는, 데이터가 계속해서 전송된다.
또한, 시스템은 정확히 카운터(25)를 감소시킬 때 FIFO(19)로부터 데이터를 판독할 필요가 없다. 대신에, 소스 측이 새로운 데이터에 반응하고 전송할 수 있기 이전에, 싱크 측이 FIFO 장치(19)로부터 임의의 비트(beat)의 데이터를 판독하고 새로운 데이터를 위한 스페이스를 클리어시키는 것을 타이밍 및 레이턴시가 보장할 수 있는 한, 카운터를 감소시키라는 신호가 판독을 유도함으로써 카운터가 어느 정도는 더 일찍 감소한다.
위에서 설명한 바와 같이, FIFO 깊이의 크기를 적절히 조정함으로써, 두 도메인들 간의 거의 연속적인 데이터 전송을 제공하는 것이 가능하다. 이를 위해서, FIFO 깊이는 FIFO 스페이스 엠프티가 소스에서 확인될 때까지는 적어도 왕복 시그널링 레이턴시, 즉, ReadDataReady로부터 사이클 카운트만큼 커야 한다. 이러한 수는 ReadData 레지스터(21)와 FIFO(19) 사이의 임의의 중재 스테이지들 및 FIFO와 싱크로부터의 판독 요청 사이의 중재 레이턴시에 의해서 영향을 받는다.
FIFO의 크기를 조정하는 것은 소스가 데이터를 전송하는 것만큼 빠르게 싱크가 데이터를 판독할 수 없을 때에는 더욱 복잡해질 수 있다. 예컨대, 싱크는 데이터가 소싱되는(souced) 속도의 절반으로 데이터를 소모할 수 있다. 추가되는 스테이지들의 수는 동시에 전송되는 데이터의 양(버스트), 왕복 시그널링 레이턴시, 및 싱크에 의한 소모 속도에 따라 좌우된다. 기껏해야, FIFO 크기는 버스트의 크기 (사이클 카운트)만큼 증가될 필요가 있을 것이다. 그러나, 싱크가 데이터를 판독할 때는 추가적인 공간이 FIFO에서 이용가능할 것이기 때문에, 실질적인 FIFO는 어느 정도는 더 작아질 것이다. 버스트 크기 및 버스트들 사이의 간격이 변하는 경우에는, 최적의 크기를 결정하는 것은 두 도메인들 간의 원하는 연속적인 데이터전송을 달성하기 위해서 다양한 FIFO 깊이들을 갖는 시뮬레이션들을 포함할 수 있다.
카운터는 FIFO 저장 장치(19)의 크기로 초기화되고, 데이터가 FIFO 저장 장치(19)로 입력되고 그로부터 출력될 때 감소 및 증가된다. 따라서, 허용가능한 카운트 값들의 범위는 장소들의 수(N), 즉 FIFO 저장 장치(19)의 깊이에 상응한다. 심지어 자유로운 공간이 없다고 카운터가 나타낼 때도('0'인 카운트), 제어부(23)는 소스로 하여금 데이터를 레지스터(21)에 로딩하게 할 것이고, 또한 추가적인 세트의 128비트 데이터들을 FIFO 입력 라인들에 제공할 것이다. 제어부는 레지스터(27)에서 보유되는 ReadDataReady 펄스를 공급할 것이다. 효과적으로, 레지스터(21) 및 전송 라인들은 FIFO 저장 장치(19)에 대한 가외의 레지스터 장소를 제공한다. 또한, 이러한 메커니즘은 기본적으로 소스와 싱크 간의 시그널링 레이턴시를 마스킹하기 위해서(통상적인 경우에) FIFO를 이용한다.
도 1의 예에서, 소스 측 상의 FIFO 제어부(23)는 새로운 유효 비트(beat)의 데이터가 이용가능하고 FIFO(19)로의 전송을 위해 준비가 되었다는 것을 나타내는 신호로서 단일 펄스를 제공하였다. 그러나, 소스 도메인으로부터 싱크 도메인으로의 ReadDataReady 상태의 이러한 펄스 시그널링을 대신해서, 핑-퐁(ping-ping) 시그널링 방법과 같은 다른 기술들을 활용하는 개념들이 채택될 수 있다. 이러한 핑-퐁 시그널링 방법은 소스 FIFO 제어부와 Sink Ready 로직 간에 두 개의 신호들을 이용한다. 기껏해야, 이러한 두 신호들 중 하나만이 참(true)이다. 데이터가 전송될 때, 제 1 신호가 어서팅된다. 그 다음 비트(beat)의 데이터는 제 1 신호가 클리어되게 하는 반면에 제 2 신호는 어서팅된다. 상기 그 다음 비트의 데이터는 제 2 신호로 하여금 클리어되게 하는 반면에 제 1 신호는 어서팅된다. 싱크 측은 하나의 신호를 통해 데이터를 수신한 이후에 교호적인 신호를 찾기 위해 인지하고 있다. 이러한 해결법은, FIFO가 충만되었다고 소스가 믿은 이후에 가외적인 비트(beat)의 데이터가 전송될 때, 신호는 카운터가 증가되고 다른 비트(beat)의 데이터가 전송될 때까지 어서팅된 채로 있다. 따라서, 펄스를 포착할 필요성이 없다. 기본적으로, 유효 데이터가 FIFO로의 전송을 위해 준비되고 이용가능하게 될 때는, 지시된 경계를 통해 연속적인 신호가 어서팅된다.
도 3은 도 1의 시스템과 전반적으로 유사하지만 핑-퐁 시그널링 기술을 활용하는 시스템의 기능 블록도이다. 제 1 예와 같이, 이러한 제 2의 도시된 시스템은 두 개의 상이한 도메인들, 즉, 데이터를 전송하고자 하는 소스 도메인(311)과 데이터를 수신할 예정인 싱크 도메인(313)의 엘리먼트들을 포함한다. 기본적으로, 데이터 소스(315)로 총칭해서 표현되는 도메인(311)의 엘리먼트는 이용가능한 데이터를 구비하고, 데이터 싱크(317)로 총칭해서 표현되는 도메인(313)의 엘리먼트는 추가적인 처리, 저장 등을 위해 그 데이터를 수신할 필요가 있다.
상기 두 도메인들은 점선(D-D)으로 표현된 도메인 경계에 의해서 분리된다. 또한, 상기 두 도메인들은 일련의 하나 이상의 레지스터들이나 다른 인터페이스 수 단을 통해서 유선으로 접속되는 단일 반도체 칩, 상이한 칩들 또는 상이한 장치들의 상이한 영역들일 수 있거나, 또는 LAN 또는 WAN을 통해 통신하는 두 개의 분리된 시스템들일 수 있다. 앞선 설명에와 같이, 두 도메인들에서 회로들의 동작들은 동일한 기본 클록 주파수에 대해 클록킹될 수 있거나(즉, 동기) 또는 상이한 기본 클록 주파수들에 대해 클록킹될 수 있다(즉, 비동기).
설명의 편의를 위해서, 두 도메인들은 동시적이며 예컨대 칩의 경계 영역을 통해 직접 접속되는 서로 근접하여 있는 엘리먼트들, 예컨대 칩의 경계 영역을 통해 서로 접속되거나 연결되는 프로세서 칩의 두 코어 섹션들을 나타낸다는 것이 가정된다. 두 섹션들의 분리는 예컨대 칩의 분리된 두 부분들 또는 영역들과 같이 물리적일 수 있거나, 또는 상기 분리는 간단히 제 1 도메인의 데이터 레이트로 동작하는 성분들과 제 2 도메인의 동작 속도로 동작하는 성분들 사이에서 순전히 논리적일 수 있다.
앞선 설명처럼, 두 도메인들은 상이한 데이터 레이트들로 동작한다. 경계(D-D)를 통한 도메인들(311 및 313)의 데이터 레이트 차이를 보상하기 위해서, 싱크 도메인(313)은 기본적으로 소스 도메인(311)으로부터 수신되는 데이터를 버퍼링하기 위해서 FIFO(first-in-first-out) 저장 장치(319)를 포함한다. 또한, FIFO 저장 장치는 레지스터들 또는 메모리들과 같은 매우 다양한 물리적인 구조들 중 임의의 구조로 구현될 수 있다. 설명을 위해서, FIFO(319)는 수신된 데이터가 이동하도록 하는 일련의 또는 스택의 레지스터들로 생각하는 것이 편리하다. 하나의 레지스터 또는 장소는 새로운 비트(beat)의 데이터가 장치(319)에 로딩 또는 기록될 때 채워지고, 하나의 레지스터 또는 장소는 임의의 비트(beat)의 데이터가 장치(319)로부터 싱크(317)로 오프로딩되거나 판독될 때 클리어된다.
소스 또는 전송 측(311) 상에서는, 데이터 소스(315)가 판독 데이터 레지스터로 종종 지칭되는 레지스터(321)에 본 예에서는 128 비트의 데이터인 임의의 비트(beat)의 데이터를 공급한다. 예에서, 레지스터(321)는 판독 데이터(ReadData) 레지스터로서 지정된다. ReadData 레지스터(321)는 128 비트의 데이터를 보유하고, 경계(D-D)를 통해 FIFO 저장 장치(319)의 입력에 상기 128 비트의 데이터를 전송하기 위해 라인들을 통해서 상기 128 비트의 데이터를 제공한다. 비록 도면에서 도시되어 있지 않지만, 추가적인 로직이 판독 데이터 레지스터의 이후 및 FIFO 이전에 존재할 수 있다. 레지스터(321)가 새로운 비트(beat)의 데이터를 보유하고 있는 동안에, 그 데이터는 FIFO 저장 장치(319)의 입력에 라인들을 통해서 이용될 수 있다. 그러나, 상기 새로운 비트의 데이터가 레지스터(321)에 제일 먼저 로딩될 때는, 그 데이터가 싱크 도메인(313)의 FIFO 저장 장치(319)의 입력에 나타나기 이전에 어느 정도의 전파 지연이 존재한다.
FIFO 제어부(323)는 ReadData 레지스터(321)로의 데이터 흐름을 그것을 통해 제어한다. FIFO 제어부(323)는 아래의 설명으로부터 자명해질 바와 같이, 비록 제어부(323)의 상태 머신의 로직이 약간 상이할지라도, 도 1의 제어부(23)와 유사하게 유한한 상태 머신이다. 소스(315)가 전송할 새로운 데이터를 가지고 있을 때, 그것은 레지스터(331)에서 (V) 플래그를 설정하고, FIFO 제어부(323)는 소스 도메인(321)의 레지스터-사용 카운터(325)에 의해서 지시되는 바와 같이, 마지막 비트(beat)의 데이터를 위해 FIFO 저장 장치(319)의 이용가능한 스페이스가 존재하는 경우에 ReadData 레지스터(321)로 하여금 새로운 데이터를 제공하도록 한다. 카운터(325)의 초기 값 및 그로 인한 카운터 값들의 허용가능한 범위는 FIFO(319)에서 장소들의 수, 즉, FIFO 깊이에 상응한다. 제어부(323)는 예컨대 카운트가 네거티브가 아닌지를 확인하기 위해서 카운트의 상태를 검사함으로써 새로운 비트(beat)의 데이터를 수신할 FIFO 저장 장치(319)의 스페이스가 존재하는지를 결정할 수 있다. 비록 개별적인 엘리먼트로 도시되어 있지만, 카운터(325)는 FIFO 제어부(323)로서 기능하는 상태 머신의 일부로서 통합될 수 있다.
FIFO 제어부(323)가 ReadData 레지스터(321)로 하여금 FIFO 저장 장치(319)에 입력을 위한 새로운 데이터를 제공하도록 하는 경우에는, FIFO 제어부(323)는 싱크 도메인(313)에 시그널링할 필요가 있다. 그러나, 이 경우에는, 제어부(323)가 ReadDataReady 신호를 소스 도메인(311)의 핑-퐁 레지스터(326)에 공급한다. 핑-퐁 레지스터(326)는 기본적으로 예컨대 둘 이상의 플립-플롭들을 사용하여 구현된 2-비트 레지스터이다. 레지스터(326)는 다음과 같이 3 개의 유효 상태들을 갖도록 제어된다. '0,0' 상태는 아직 준비된 유효 데이터가 없을 나타낸다. '0,1' 상태는 FIFO(319)로 전송할 준비가 된 데이터가 있음을 나타내는 두개의 가능한 유효 상태들 중 제 1 상태이다. '1,0' 상태는 FIFO(329)로 전송할 준비가 된 데이터가 있음을 나타내는 두개의 가능한 유효 상태들 중 제 2 상태이다. 아래에 설명되는 바와 같이, 데이터 준비 상태들은 '0,1' 상태와 '1,0' 상태 사이에서 전환함으로써 순서대로 지시된다. 제어부(323) 및 레지스터(326)는 '1,1' 상태를 생성하지 않도록 구성되는데, 그 상태는 이 프로토콜에서 유효 시그널링 상태가 아니기 때문이다.
데이터가 전송을 위해 이용가능하게 되었을 때, 소스 도메인(311)의 FIFO 제어부(323)는 핑-퐁 레지스터(326)의 상태들을 유도하기 위해서 ReadDataReady 펄스 신호를 제공한다. FIFO 제어부(323)는 또한 ReadDataReady 펄스 신호를 FIFO 스페이스 사용 카운터(325)의 감소 입력(-)에 공급한다. 어떠한 데이터도 이용가능하지 않거나 전송할 준비가 되어 있지 않고 또한 카운터가 전송되는 마지막 데이터를 위해서 FIFO에 충분한 스페이스가 없다고 나타낼 때, FIFO 제어부(323)는 핑-퐁 레지스터(326)를 ('0,0' 상태로) 클리어시킨다. 이제는, 임의의 비트(beat)의 데이터가 현재 사이클에서 이용가능하게 되었고, 더 많은 데이터가 나중의 사이클들에서 이용가능하게 되었다고 가정하자. 만약 어떠한 데이터도 이전 사이클에서 이용가능하지 않았고, 이전 전송을 위해 FIFO에서 충분한 스페이스가 있었다면, 레지스터(326)는 '0,0' 상태로 된다. 다음으로, ReadDataReady 신호의 제 1 펄스는 레지스터(326)로 하여금 '0,1' 데이터 준비 상태로 변하게 하고, ReadDataReady 신호의 제 2 펄스는 레지스터(326)로 하여금 '1,0' 데이터 준비 상태로 변하게 하며, ReadDataReady 신호의 제 3 펄스는 레지스터(326)로 하여금 '0,1' 상태로 변하게 하며, 계속해서 이러한 방식을 따른다. 이러한 방식을 통해, ReadDataReady 신호의 연속적인 펄스들은 레지스터(326)로 하여금, 소스(315)가 전송을 위해 이용가능한 새로운 데이터를 갖지 않고 모든 이전 데이터가 포착되었을 때 FIFO 제어부(323)가 레지스터(326)를 클리어시킬 때까지, 두 유효 데이터 준비 상태들 사이에서 번갈아 발생하거나 '핑-퐁'되게 한다.
레지스터(326)는 FIFO 제어부(323)로부터 새로운 펄스 신호나 클리어 명령을 수신할 때까지 각각의 상태를 유지한다. 이로써, 각각의 상태는, FIFO 제어부(323)가 레지스터(326)의 상태를 변경하지 않는 한, 레지스터(326)의 2-비트 출력 라인들 상에 계속해서 나타날 것이다. 레지스터(326)의 출력 라인들은 싱크 도메인(313)의 멀티플렉서(MUX)(327)에 경계(D-D)를 통해서 2-비트들의 유효 데이터 상태 정보를 공급한다. MUX(327)는 상태 정보를 싱크 도메인(313)의 FIFO 제어부(329)에 공급하고, MUX 동작은 FIFO 제어부(329)에 의해서 제어된다. 싱크 도메인 FIFO 제어부(329)로부터의 제어 하에서, MUX(327)는 FIFO가 데이터를 포착할 때까지 자신의 입력 상에서 전환이 나타날 때마다 자신의 출력 상에 '1'을 나타낸다; 즉, MUX(327)는, 소스 도메인(311)이 새로운 비트(beat)의 데이터가 존재하거나 또는 FIFO 저장 장치(19)로 전송될 준비가 된 기존 데이터가 아직 포착되지 않았다는 것을 알릴 때마다, '1'을 나타낸다. 만약 MUX가 자신의 입력들 상에서 '0'을 수신하면(전송할 준비가 된 유효 데이터가 없음), 상기 MUX는 항상 '0'을 출력한다.
싱크 도메인(313)에서는, FIFO 제어부(329)가 다른 유한한 상태 머신이다. 그 상태 머신은 아래의 설명으로부터 자명해질 바와 같이, 비록 그 상태 머신의 로직이 약간 다를지라도, 제어부(29)와 유사하다. FIFO 제어부(329)는, 예컨대, FIFO 저장 장치(319)로의 입력(기록) 및 그로부터의 출력(판독)을 제어하기 위해서 FIFO 저장 장치(319)에 '기록' 및 '판독' 신호들을 제공한다. 설명된 바와 같이, MUX(327)는 소스 도메인 제어부(323)의 레지스터(326)로부터의 각각의 새로운 핑-퐁 상태에 반응하여 '1' 신호를 FIFO 제어부(329)에 제공하는데, 그 신호는 새로운 비트(beat)의 데이터가 전송을 위해 이용가능하다는 것을 나타낸다. 만약 준비 데이터를 수신하기 위해 FIFO 저장 장치(319)에서 스페이스가 이용가능하다면, 제어부(329)는 기록 신호를 야기함으로써, FIFO 저장 장치(319)로 하여금 소스 도메인(311)의 ReadData 레지스터(321)로부터 데이터의 입력을 수용하게 한다.
핑-퐁 시그널링의 교호적인 형태는 단일-비트 신호를 통해 구현될 수 있다. 이러한 경우에, 비트의 토글링은 새로운 데이터의 전송을 나타낸다. 이러한 방식은 '0,0' 상태를 제거하여 그것을 전환의 부족(lack)으로 대체한다. 토글링은 도 3의 MUX를 XOR 게이트로 대체함으로써 펄스로 변할 수 있다. XOR의 출력은 FIFO에 의해서 포착되어질 데이터, 즉, 아직 포착되지 않은 새로운 데이터나 혹은 기존 데이터가 존재하는 각각의 사이클 동안에는 참(true)이 될 것이다.
초기의 예에서와 같이, ReadDataReady 신호로서 기능하는 펄스는 카운터(325)를 감소시키는데, 이는 하나 적은 레지스터 장소가 FIFO 저장 장치(319)에서 이용가능하다는 것을 나타낸다. 이 점에 관해서, 카운터(325)는, 두 도메인들(311 및 313) 간의 신호 전송의 경우에 임의의 지연이나 레이턴시가 없이 동일한 도메인(311)에서 생성되는 준비 펄스에 반응하여 감소된다. 싱크 측 상의 FIFO 제어부(329)로부터의 판독 신호는 FIFO 저장 장치(319)에게 그의 레지스터 장소들 중 하나로부터 싱크(317)로 데이터를 출력하고 또한 그 장치(319)의 그 장소를 클리어시키도록 지시한다. 따라서, 판독 신호의 펄스가 경계(D-D)를 통해 싱크 도메인(313)으로부터 공급됨으로써 카운터(325)를 증가시킨다.
소스 도메인(311)의 카운터(325)에서 FIFO 엔트리 프리 지시로서 대응하는 신호의 출현과 제어부(329)에 의한 판독 신호의 발행 사이에는 어느 정도의 레이턴시가 존재할 것이다. 시그널링 레이턴시는 칩을 통한 시그널링에 필요한 시간으로 인한 것이다. 그러나, 판독 신호와 FIFO 엔트리 프리 사이에는 도면에서 지연/타이밍 엘리먼트(328)로 일반적으로 표현된 추가적인 상태 회로가 존재할 수 있다. 비록 싱크 도메인(313)에 도시되어 있지만, 회로(328)는 도메인들 중 하나나 또는 둘 모두에서 물리적으로 존재할 수 있다. 상기 추가적인 회로, 통상적으로는 하나 이상의 플립-플롭들은 도메인들 사이의 경계(D)를 통해서 적절한 신호 레벨들 및 타이밍 정렬을 보장한다. 그러나, 상기 추가적인 회로(328)는 제어부(329)에 의한 판독 신호의 어서팅과 카운터(325)에서 FIFO 엔트리 프리 지시로서 대응하는 신호의 출력 사이의 레이턴시에 하나 이상의 사이클들의 지연을 추가할 것이다. 비록 편의상 도시되지는 않았지만, 당업자라면 이러한 추가적인 회로가 제공되는 경우에는 유사한 지연/타이밍 엘리먼트들이 ReadData 라인 및 ReadDataReady 라인과 같은 두 도메인들 사이의 다른 라인들을 통해 제공될 것이라는 것을 알 것이다.
카운터(325)는 경계(D-D)를 통해 새로운 데이터를 전송할 목적으로 자신의 결정에 있어 사용하기 위해 소스 도메인(311)의 FIFO 제어부(323)에 FIFO 스페이스 프리 카운트를 공급한다. 데이터가 FIFO(319)에 이용가능하게 될 때마다 카운트를 감소시키고 또한 장소가 클리어될 때마다(데이터가 FIFO(319)로부터 판독될 때) 카운트를 증가시킴으로써, 카운터(325)의 값은 FIFO 저장 장치(319)에서 이용가능하거나 자유로운 상태인 스페이스의 양(레지스터 장소들의 수)을 추적한다. 그러나, 카운터(325)는 소스 도메인(311)에 위치하기 때문에, 감소는 레지스터(326)로부터의 상태 정보의 수신 및 싱크 도메인(313)에서의 그에 대한 반응에 다소 선행한다. 경계(D-D)를 통해 2-비트들의 상태 정보를 MUX(327)에 전송하는데 있어서 어느 정도의 지연이나 레이턴시가 존재한다. 역으로, 소스 도메인(311)에서 카운터(325)의 증가는 경계(D-D)를 통한 판독 신호의 전송에 있어서 지연 또는 레이턴시로 인해, 싱크 도메인(313)의 FIFO 저장 장치(319)로부터의 데이터 판독을 어느 정도 길게 끌거나 지연시킨다.
FIFO 제어부(323)는, 데이터 소스(315)가 처음에 싱크(317)로 전송하기 위해 이용가능한 데이터를 가질 때, 그 데이터 소스(315)에 의해서 설정되는 1-비트 레지스터(331)의 데이터 유효성 플래그(V)에 또한 반응한다. 다른 방식을 말하자면, 데이터 소스(315)는 ReadData 레지스터(321)에 로딩하기 위해 이용가능한 유효한 새로운 데이터가 있다는 것을 FIFO 제어부(323)에 알리기 위해서 레지스터(331)의 플래그(V)를 설정한다. FIFO 제어부(323)는 데이터 유효성 플래그(V)(31)로서 기능하는 1-비트 레지스터에 클록(인에이블) 신호를 제공한다. 데이터가 싱크 도메인의 FIFO(319)에 성공적으로 전송되었을 때, FIFO 제어부(323)는 레지스터(331)를 로딩하여 그에 따른 유효성 플래그(V)의 상태를 로딩하기 위해 클록(인에이블) 신호를 제공한다. 동작시에, 소스 유효 비트는 데이터가 전송될 준비가 되었다는 것을 소스 FIFO 제어부(323)에 알리기 위해서 레지스터(331)로부터 그 소스 FIFO 제어부(323)에 전송된다. 새로운 데이터가 소스(315)로부터 동시에 이동하지 않는 한, 데이터가 전송될 때는 비트가 레지스터(331)로부터 클리어된다. 이러한 방식 으로, FIFO 제어부(323)는, 새로운 비트(beat)의 데이터를 위해 이용가능한 공간이 있다는 것을 카운터(325)가 알릴 때, 소스(315)로 하여금 플래그를 설정하도록(그리고 ReadData 레지스터(321)에 새로운 비트(beat)의 데이터를 입력함) 허용하기 위해서 레지스터(331)의 V 플래그를 제어한다.
도 4(a) 및 도 4(b)는 도 3의 시스템의 동작에 대한 간단한 예들의 타이밍도들이다. 일반적으로, 이러한 예들은 도 2(a) 및 도 2(c)에 관련하여 위에서 설명된 것과 유사하지만, 여기서는 소스 도메인으로부터의 판독 데이터 준비에 대한 시그널링이 도 4(a) 및 도 4(b)의 제 4 및 제 5 라인들에 도시된 바와 같은 '핑' 및 '퐁' 신호들의 형태를 취한다. 도면들에 도시된 바와 같이, 두 유효 핑-퐁 상태 신호들 데이터 중 하나로의 각각의 전환('0,1'로 또는 '1,0'으로)이 레지스터에서 준비된다.
이러한 예들에서, 카운터는 전송될 수 있는 비트(beats) 데이터의 수를 나타내고, 그 카운트는 FIFO 위치들의 수보다 더 큰 수에서 시작된다(이 도면들 각각에서의 제 5 라인 참조). 이러한 추가적인 비트(beat)는 소스 도메인의 ReadData 레지스터에서 "플라잇 상태"로 유지될 수 있는 데이터를 나타낸다. '0'인 카운트는 소스 데이터가 이전 사이클로부터 유지될 필요가 있다는 것을 나타낸다. 따라서, 핑-퐁 프로토콜 예들에서는, 상태 변화가 이러한 사이클에서 발생하지 않아야 한다.
위에 언급된 바와 같이, 카운터(325)는 도메인(313)에 FIFO(319) 자체와 위치하기보다는 오히려 도메인(311)에 소스(315)와 위치된다. 위의 설명 및 도 3에 도시된 바와 같이, 제 2 예는 마찬가지로 FIFO 저장 장치(319)의 스페이스 사용을 추적하기 위해서 소스 도메인의 카운터(325)에 의존한다. 제 1 예에서와 같이, 카운터는 도메인들(311 및 313) 간의 시그널링 레이턴시를 효과적으로 "이팅(eat)"한다. 데이터는 이용가능하게 될 때 즉시 레지스터(321)를 통해서 인가되고 또한 FIFO에서 판독될 때까지 그 FIFO에 이용가능하게 거기서 유지되고, 그럼으로써 기본적으로 FIFO 레지스터 스택을 위한 추가적인 저장 장소를 제공한다. 카운터(325)는 증가를 위한 레이턴시 페널티를 초래하지만, 소스 측에 즉시 이용가능하다.
그로 인해서, 실제로 FIFO 저장 장치(319)에 공간이 없을 때는 데이터가 전송될 수 없다는 것이 종종 말해질 수 있다는 점에서 카운터(325)는 비관적인데, 그 이유는 프리 신호가 아직 카운터(325)에 전달되지 않았기 때문이다. 이는 "프리" 신호 레이턴시에 따른 FIFO 깊이의 크기를 조정함으로써 극복될 수 있고, 따라서 데이터는 계속해서 전달될 수 있다. 또한, 로직(323)의 적절 설계에 의해서나 또는 카운터를 N+1(여기서, N은 FIFO 깊이인데, 예컨대 FIFO(319)의 장소들의 수임)로 그 크기를 조정함으로써, FIFO가 채워졌다고 소스가 믿을 때, 레지스터(321)를 통해 하나의 마지막 데이터 비트(beat)를 전송할 수 있음으로써 적은 대역폭을 구입하는 것이 가능하다.
로컬 카운터 및 FIFO의 깊이를 통해서, 소스(315)는 계속해서 데이터를 전송할 수 있다. 따라서, FIFO의 크기를 적절히 조정함으로써, 신호들의 레이턴시에 상관없이 전송들이 이루어질 수 있고, 따라서 처리는 실질적으로 "레이턴시에 둔감적(latency insensitive)"이다. 특별히 목적지가 충분히 빠르게 FIFO(319)를 비우지 않을 때는 레이턴시가 발생하기 시작할 수 있고 또한 그 레이턴시와 동일한 버퍼링을 감소시킨다. 이는 FIFO(319)가 비워지는 통상적인 데이터 레이트들을 커버하도록 FIFO(319)를 더 깊게 만듬으로써 보상된다. 따라서, 통상적인 상황들에서는, 데이터가 계속해서 전송된다. FIFO의 깊이는, 도메인들 간의 실질적으로 연속적인 전송을 달성하기 위해서, 도 1의 예와 관련하여 설명된 것과 유사할 것이다.
또한, 시스템은 정확히 카운터(325)를 감소시킬 때 FIFO(319)로부터 데이터를 판독할 필요가 없다. 대신에, 소스 측이 새로운 데이터에 반응하고 전송할 수 있기 이전에, 싱크 측이 FIFO 장치(319)로부터 임의의 비트(beat)의 데이터를 판독하고 새로운 데이터를 위한 스페이스를 클리어시키는 것을 타이밍 및 레이턴시가 보장할 수 있는 한, 카운터를 감소시키라는 신호가 판독을 유도함으로써 카운터가 어느 정도는 더 일찍 감소한다.
제 2 예의 이러한 장점들은 제 1 예의 장점들과 거의 유사하다. 그러나, 핑-퐁 시그널링 기술들은 일부 고유한 이점을 추가한다. 핑-퐁 해결법을 통해서는, FIFO가 채워졌다고 소스가 믿은 이후에 가외적인 비트(beat)의 데이터가 전송되고, 카운터(325)가 증가되고 다른 비트(beat)가 전송될 때까지는 신호가 계속해서 어서팅된다. 따라서, 싱크 측에서 ReadDataReady 펄스를 포착하여 보유하는 것이 불필요하다.
비록 위의 설명은 최상의 모드 및/또는 다른 예들인 것으로 고려되는 것을 설명하였지만, 본 발명에 대한 여러 변경들이 이루어질 수 있고 또한 기재된 발명 은 여러 형태들 및 예들을 통해 구현될 수 있으며 발명의 내용들은 그 중 일부가 여기서 설명되어진 많은 애플리케이션들에 적용될 수 있다는 것이 이해된다. 본 발명의 올바른 범위 내에 있는 임의의 및 모든 애플리케이션들, 변경들 및 변형들을 청구하도록 다음의 청구항들에 의해서 의도된다.

Claims (30)

  1. 제 2 도메인의 저장 장치로의 입력에서 제 1 도메인으로부터의 데이터를 수신하는 단계 ― 상기 제 1 도메인 및 제 2 도메인은 상이한 데이터 레이트들에서 동작함 ―;
    상기 제 1 도메인으로부터 수신되는 제 1 신호에 응답하여 상기 제 2 도메인의 제어기에서 연속적인 준비 신호를 수신하는 단계 ― 상기 제 1 신호는 상기 데이터가 상기 저장 장치로의 입력에서 사용가능함을 표시함 ―;
    상기 연속적인 준비 신호에 응답하여 상기 저장 장치에 상기 데이터를 로딩(load)하는 단계;
    상기 저장 장치에 상기 데이터를 로딩하는 것과 동시에 상기 연속적인 준비 신호를 클리어(clear)하는 단계; 및
    데이터 엔트리가 상기 저장 장치로부터 판독될 때 상기 제 1 도메인에서 카운터를 증가(increment)시키기 위해 제 2 신호를 전송하는 단계를 포함하고,
    여기서, 상기 데이터를 저장하기 위해 상기 저장 장치에 있는 공간이 사용가능하지 않은 경우, 상기 데이터는 상기 저장 장치가 상기 데이터를 저장할 때까지 상기 제 1 도메인의 제 1 레지스터에 의해 상기 제 2 도메인의 저장 장치로의 입력에서 유지(hold)되고, 그리고
    상기 연속적인 준비 신호는 상기 제 2 도메인의 제 2 레지스터에 의해 제공되고, 상기 제 2 레지스터는 상기 제 1 신호를 수신하도록 구성되고, 상기 연속적이 준비 신호를 클리어하는 단계는 상기 제 2 레지스터로 상기 제어기로부터의 클리어 신호를 제공하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서, 상기 저장 장치는 FIFO(first-in-first-out) 저장 장치인, 방법.
  3. 제 1 항에 있어서, 상기 제 1 도메인 및 상기 제 2 도메인은 경계 영역(boundary region)에 의하여 분리되는 단일 반도체 칩의 상이한 영역들인, 방법.
  4. 제 1 항에 있어서, 상기 신호는 상기 제 1 도메인의 단일 클록 사이클에 대응하는 펄스를 포함하는, 방법.
  5. 제 2 도메인의 저장 장치로의 입력에서 제 1 도메인으로부터의 데이터를 수신하는 단계 ― 상기 제 1 도메인 및 상기 제 2 도메인은 상이한 데이터 레이트들 에서 동작함 ―;
    상기 제 1 도메인으로부터 수신되는 제 1 신호에 응답하여 제 2 도메인의 제어기에서 준비 신호를 수신하는 단계 ― 상기 제 1 신호는 상기 데이터가 상기 저장 장치로의 입력에서 사용가능함을 표시함 ―;
    상기 준비 신호에 응답하여 상기 저장 장치에 상기 데이터를 로딩하는 단계;
    데이터 엔트리가 상기 저장 장치로부터 판독되는 경우 상기 제 1 도메인의 카운터를 조정하기 위해 제 2 신호를 전송하는 단계를 포함하고,
    여기서, 상기 데이터를 저장하기 위해 상기 저장 장치에 있는 공간이 사용가능하지 않은 경우, 상기 데이터는 공간이 사용가능하게 된 이후에 상기 저장 장치가 상기 데이터를 저장할 때까지 상기 제 1 도메인의 제 1 레지스터에 의해 상기 제 2 도메인의 상기 저장 장치로의 입력에서 유지되고, 상기 준비 신호는 상기 데이터가 상기 저장 장치로 로딩될 때까지 상기 제어기에서 연속적으로 수신되며, 그리고,
    상기 제 1 신호는 상기 제 1 도메인의 단일 클록 사이클에 대응하는 펄스를 포함하고, 상기 준비 신호는 상기 제 2 도메인의 제 2 레지스터로부터 수신되고, 상기 제 2 레지스터는 상기 펄스의 수신에 응답하여 상기 준비 신호를 연속적으로 제공하도록 구성되는, 방법.
  6. 제 5 항에 있어서,
    상기 제 2 신호를 전송하는 단계 이후에 상기 저장 장치로의 입력에서 상기 제 1 레지스터로부터의 제 2 데이터를 수신하는 단계를 더 포함하고,
    상기 제 2 데이터를 저장하기 위해 상기 저장 장치에 있는 공간이 사용가능하지 않은 경우, 상기 제 2 데이터는 상기 저장 장치가 상기 제 2 데이터를 저장하도록 상기 공간이 사용가능하게 될 때까지 상기 제 1 레지스터에 의해 상기 저장 장치로의 입력에서 유지되는, 방법.
  7. 제 5 항에 있어서, 상기 제 1 레지스터 및 상기 저장 장치는 직접 연결되고 단일 프로세싱 장치 내에 있는, 방법.
  8. 제 1 도메인의 레지스터로 데이터 소스로부터의 제 1 데이터를 로딩하는 단계;
    제 2 도메인의 FIFO(first-in-first-out) 저장 장치의 입력으로 상기 레지스터로부터의 상기 제 1 데이터를 제공하는 단계 ― 상기 제 2 도메인은 상기 제 1 도메인의 데이터 레이트와 상이한 데이터 레이트를 가짐 ―;
    상기 FIFO 저장 장치가 상기 제 1 데이터를 저장하기 위해 사용가능한 공간을 가지지 않은 경우, 상기 제 1 데이터가 상기 FIFO 저장 장치에 그후에(subsequently) 저장될 때까지 상기 FIFO 저장 장치의 입력에서 상기 제 1 데이터를 유지하는 단계 ― 상기 제 1 데이터는 상기 레지스터에 의해 상기 FIFO 저장 장치의 입력에서 유지됨 ―;
    상기 FIFO 저장 장치의 사용가능한 저장 공간의 감소를 표시하기 위해 상기 제 1 도메인의 카운터를 제어하는 단계;
    상기 제 2 도메인으로 제 1 신호를 전송하는 단계 ― 상기 제 1 신호는 상기 FIFO 저장 장치에 상기 제 1 데이터가 사용가능함을 표시하고, 상기 제 1 신호는 상기 제 2 도메인의 멀티플렉서의 제 1 입력에 제공되는 연속적인 신호임 ―;
    제 2 데이터가 상기 데이터 소스로부터 사용가능하고, 상기 카운터가 상기 FIFO 저장 장치에 있는 공간이 사용가능함을 표시하는 경우:
    상기 레지스터로 상기 제 2 데이터를 로딩하는 단계; 및
    상기 제 2 데이터가 상기 FIFO 저장 장치에 사용가능함을 표시하기 위해 상기 멀티플렉서의 제 2 입력으로 제 3 신호를 전송하는 단계를 포함하는, 방법.
  9. 제 8 항에 있어서,
    상기 제 2 도메인으로부터 제 2 신호를 수신하는 단계 ― 상기 제 2 신호는 상기 FIFO 저장 장치의 사용가능한 저장 공간의 증가에 대응함 ―; 및
    상기 제 2 신호에 응답하여 상기 카운터를 조정하는 단계를 더 포함하는, 방법.
  10. 제 9 항에 있어서, 상기 카운터는 상기 사용가능한 저장 공간의 감소를 표시하기 위해 감소(decremet)되고, 상기 카운터는 상기 제 2 신호에 응답하여 증가(increment)되는, 방법.
  11. 제 8 항에 이어서,
    상기 데이터 소스로부터 상기 레지스터에 로딩되는 연속적인(consecutive) 데이터 펄스들을 표시하기 위해 상기 제 1 신호 및 상기 제 3 신호 사이를 교대(alternate)하는 단계를 더 포함하는, 방법.
  12. 제 2 도메인의 저장 장치의 입력에서 제 1 도메인으로부터의 데이터를 수신하는 단계 ― 상기 제 1 도메인 및 제 2 도메인은 상이한 데이터 레이트들에서 동작함 ―;
    상기 제 1 도메인으로부터 수신되는 제 1 신호에 응답하여 상기 제 2 도메인의 제어기에서 연속적인 준비 신호를 수신하는 단계 ― 상기 제 1 신호는 상기 데이터가 상기 저장 장치로의 입력에서 사용가능함을 표시함 ―;
    상기 연속적인 준비 신호에 응답하여 상기 저장 장치로 데이터를 로딩하는 단계;
    상기 저장 장치로 상기 데이터를 로딩하는 것과 동시에 상기 연속적인 준비 신호를 클리어하는 단계;
    데이터 엔트리가 상기 저장 장치로부터 판독되는 경우 상기 제 1 도메인의 카운터를 증가하기 위해 제 2 신호를 전송하는 단계;
    상기 제 1 도메인으로부터 제 3 신호를 수신하는 단계를 포함하고,
    상기 제 1 신호 및 상기 제 3 신호는 둘 다 상기 제 1 도메인의 제 1 레지스터의 데이터 사용가능한 상태에 대응하고;
    상기 연속적인 준비 신호는 상기 제 2 도메인의 멀티플렉서에 의해 제공되며, 상기 멀티플렉서는 제 1 입력에서 상기 제 1 신호를 수신하고 제 2 입력에서 상기 제 3 신호를 수신하도록 구성되고, 상기 연속적인 준비 신호를 클리어하는 단계는 상기 멀티플렉서로 상기 제 2 도메인의 상기 제어기로부터 제어 신호를 전송하는 단계를 포함하며,
    상기 데이터를 저장하기 위해 상기 저장 장치에 있는 공간이 사용가능하지 않은 경우, 상기 데이터는 상기 저장 장치가 상기 데이터를 저장할 때까지 상기 제 1 도메인의 제 1 레지스터에 의해 상기 제 2 도메인의 저장 장치로의 입력에서 유지되는, 방법.
  13. 데이터 소스로부터의 데이터를 저장하고 저장 장치의 입력으로 데이터를 연속적으로 제공하도록 구성되는 레지스터 ― 상기 레지스터는 제 1 데이터 레이트에서 동작하는 제 1 도메인에 있고, 상기 저장 장치는 상기 제 1 데이터 레이트와 상이한 제 2 데이터 레이트로 동작하는 제 2 도메인에 있음 ―;
    상기 저장 장치의 사용가능한 저장 공간의 양을 표시하도록 구성된 상기 제 1 도메인의 카운터;
    상기 레지스터로 하여금 상기 저장 장치가 사용가능한 저장 공간을 가진다는 것을 표시하는 상기 카운터에 응답하여 상기 데이터 소스로부터 데이터를 로드하도록 하고, 상기 레지스터로 하여금 상기 데이터가 사용가능한 때를 표시하기 위한 제 1 신호를 생성하도록 구성되는 제어기;
    상기 제 2 도메인으로 데이터 준비 상태를 시그널링 하기 위한 수단을 포함하고,
    상기 카운터는 상기 제 1 신호에 응답하여 상기 사용가능한 저장 공간의 감소된 양을 표시하고, 상기 제 2 도메인으로부터 수신되는 제 2 신호에 응답하여 사용가능한 저장 공간의 증가된 양을 표시하도록 구성되고; 그리고
    상기 데이터 준비 상태를 시그널링 하기 위한 수단은, 제 1 데이터 준비 상태 신호, 제 2 데이터 준비 상태 신호 및 노 데이터(no data) 상태 신호를 상기 제 2 도메인으로 전송하도록 구성되는 2-비트 레지스터를 포함하고, 상기 제 1 데이터 준비 상태 신호 및 상기 제 2 데이터 준비 상태 신호 각각은 상기 레지스터의 상태에 대응하는, 장치.
  14. 제 13 항에 있어서,
    상기 2-비트 레지스터는 연속적인 데이터 펄스들이 레지스터에서 수신되는 경우 상기 제 1 데이터 준비 상태 신호의 전송 및 상기 제 2 데이터 준비 상태 신호의 전송 사이에서 교대(alternate)하도록 구성되는, 장치.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
KR1020077028401A 2005-05-11 2006-05-08 레이턴시에 둔감한 fifo 시그널링 프로토콜 KR100965356B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/128,135 US7454538B2 (en) 2005-05-11 2005-05-11 Latency insensitive FIFO signaling protocol
US11/128,135 2005-05-11

Publications (2)

Publication Number Publication Date
KR20080007506A KR20080007506A (ko) 2008-01-21
KR100965356B1 true KR100965356B1 (ko) 2010-06-23

Family

ID=37420511

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077028401A KR100965356B1 (ko) 2005-05-11 2006-05-08 레이턴시에 둔감한 fifo 시그널링 프로토콜

Country Status (8)

Country Link
US (2) US7454538B2 (ko)
EP (1) EP1880299A4 (ko)
JP (2) JP4681046B2 (ko)
KR (1) KR100965356B1 (ko)
CN (1) CN101213534B (ko)
BR (1) BRPI0608975A2 (ko)
IL (1) IL187298A0 (ko)
WO (1) WO2006124410A2 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7613909B2 (en) * 2007-04-17 2009-11-03 Xmos Limited Resuming thread to service ready port transferring data externally at different clock rate than internal circuitry of a processor
JP5532724B2 (ja) * 2009-07-30 2014-06-25 株式会社リコー インタフェース回路及びそれを備えた半導体装置
KR20110061189A (ko) * 2009-12-01 2011-06-09 삼성전자주식회사 데이터 프로세싱 시스템에서의 비동기 통합 업사이징 회로
TWI466016B (zh) * 2011-07-01 2014-12-21 Realtek Semiconductor Corp 先入先出裝置及其實現方法
CN104038306B (zh) * 2013-03-05 2017-09-29 上海航天测控通信研究所 低延时实时传输多码率位流数据的方法及其异步fifo
US9880961B2 (en) * 2013-11-27 2018-01-30 Arm Limited Asynchronous bridge circuitry and a method of transferring data using asynchronous bridge circuitry
JPWO2016158063A1 (ja) * 2015-03-30 2018-01-25 ソニーセミコンダクタソリューションズ株式会社 非同期インタフェース
TWI680466B (zh) 2015-05-28 2019-12-21 日商東芝記憶體股份有限公司 半導體裝置
CN108280437B (zh) * 2018-01-30 2021-06-15 四川新先达测控技术有限公司 脉冲信号处理方法、装置及用户终端
CN111008002B (zh) * 2019-12-06 2022-04-08 苏州盛科通信股份有限公司 自动计算并更新fifo深度的装置和方法
CN113220607B (zh) * 2021-05-26 2023-05-12 浙江赛思电子科技有限公司 一种基于fifo的数据处理方法
CN114443524A (zh) * 2022-01-28 2022-05-06 山东云海国创云计算装备产业创新中心有限公司 一种数据传输方法、系统、存储介质及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020172156A1 (en) * 2001-05-15 2002-11-21 Sandbote Sam B. Adaptive control of multiplexed input buffer channels
US6529570B1 (en) * 1999-09-30 2003-03-04 Silicon Graphics, Inc. Data synchronizer for a multiple rate clock source and method thereof

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3213345C2 (de) * 1982-04-08 1984-11-22 Siemens Ag, 1000 Berlin Und 8000 Muenchen Datenübertragungseinrichtung zwischen zwei asynchron gesteuerten Datenverarbeitungssystemen
US4525649A (en) * 1982-07-12 1985-06-25 Gte Products Corporation Drive scheme for a plurality of flourescent lamps
JPS62219390A (ja) * 1986-03-20 1987-09-26 Fujitsu Ltd Fifoメモリ
JPS63308447A (ja) * 1987-06-10 1988-12-15 Nec Corp 送信fifoメモリ制御装置
US5098139A (en) * 1988-12-20 1992-03-24 Larsson Leif T High security lock and latch for sliding doors
US5513224A (en) * 1993-09-16 1996-04-30 Codex, Corp. Fill level indicator for self-timed fifo
US5604866A (en) * 1993-09-30 1997-02-18 Silicon Graphics, Inc. Flow control system having a counter in transmitter for decrementing and incrementing based upon transmitting and received message size respectively for indicating free space in receiver
US5506969A (en) * 1993-11-29 1996-04-09 Sun Microsystems, Inc. Method and apparatus for bus bandwidth management
JP3093583B2 (ja) * 1994-11-04 2000-10-03 沖電気工業株式会社 メモリ制御回路
JPH0997164A (ja) * 1995-10-02 1997-04-08 Oki Electric Ind Co Ltd 非同期バーストデータ受信回路
US6101329A (en) * 1997-02-18 2000-08-08 Lsi Logic Corporation System for comparing counter blocks and flag registers to determine whether FIFO buffer can send or receive data
US6098139A (en) * 1998-05-27 2000-08-01 3Com Corporation Frequency independent asynchronous clock crossing FIFO
US6115760A (en) * 1998-08-24 2000-09-05 3Com Corporation Intelligent scaleable FIFO buffer circuit for interfacing between digital domains
US6389489B1 (en) * 1999-03-17 2002-05-14 Motorola, Inc. Data processing system having a fifo buffer with variable threshold value based on input and output data rates and data block size
US6389469B1 (en) * 2000-03-27 2002-05-14 Targetize Innovative Solutions Ltd. System and method for customized content delivery
JP3815948B2 (ja) * 2000-04-20 2006-08-30 シャープ株式会社 Fifoメモリ制御回路
JP3525867B2 (ja) * 2000-07-07 2004-05-10 日本電気株式会社 通信装置および通信端末
EP1182543B1 (en) * 2000-08-17 2005-08-24 Texas Instruments Incorporated Maintaining remote queue using two counters in transfer controller with hub and ports
CN1153217C (zh) * 2001-06-07 2004-06-09 扬智科技股份有限公司 非同步fifo控制器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6529570B1 (en) * 1999-09-30 2003-03-04 Silicon Graphics, Inc. Data synchronizer for a multiple rate clock source and method thereof
US20020172156A1 (en) * 2001-05-15 2002-11-21 Sandbote Sam B. Adaptive control of multiplexed input buffer channels

Also Published As

Publication number Publication date
KR20080007506A (ko) 2008-01-21
US7725625B2 (en) 2010-05-25
WO2006124410A2 (en) 2006-11-23
CN101213534B (zh) 2012-02-15
JP2008541623A (ja) 2008-11-20
US7454538B2 (en) 2008-11-18
BRPI0608975A2 (pt) 2010-02-17
WO2006124410A3 (en) 2007-09-20
US20080281996A1 (en) 2008-11-13
JP4681046B2 (ja) 2011-05-11
IL187298A0 (en) 2009-02-11
CN101213534A (zh) 2008-07-02
EP1880299A4 (en) 2009-07-08
US20060259669A1 (en) 2006-11-16
EP1880299A2 (en) 2008-01-23
JP2011101390A (ja) 2011-05-19
JP4976537B2 (ja) 2012-07-18

Similar Documents

Publication Publication Date Title
KR100965356B1 (ko) 레이턴시에 둔감한 fifo 시그널링 프로토콜
KR0145321B1 (ko) 2방향 데이타 전송장치
US6209072B1 (en) Source synchronous interface between master and slave using a deskew latch
US8352774B2 (en) Inter-clock domain data transfer FIFO circuit
EP1124179B1 (en) An apparatus for signal synchronization between two clock domains
US20090323728A1 (en) Asynchronous data fifo that provides uninterrupted data flow
US8867573B2 (en) Transferring data between asynchronous clock domains
JP2002523857A (ja) 非同期型論理を用いたfifo
US7197582B2 (en) Low latency FIFO circuit for mixed clock systems
US8001409B2 (en) Synchronization device and methods thereof
US6055597A (en) Bi-directional synchronizing buffer system
US5539739A (en) Asynchronous interface between parallel processor nodes
KR102427775B1 (ko) 포인터 오프셋이 있는 비동기식 버퍼
WO2012024699A1 (en) Data synchronization for circuit resources without using a resource buffer
US9880961B2 (en) Asynchronous bridge circuitry and a method of transferring data using asynchronous bridge circuitry
US6510477B2 (en) Bus system
US6067629A (en) Apparatus and method for pseudo-synchronous communication between clocks of different frequencies
US11119530B1 (en) Electronic device having relaxed timing constraints for management accesses
US9069906B2 (en) Method for sharing a resource and circuit making use of same
US6282149B1 (en) Circuit and method for synchronized data banking
JP2004326222A (ja) データ処理システム
EP2515443A1 (en) Data serializer
JPH0713924A (ja) バスドライバレシーバ集積回路

Legal Events

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

Payment date: 20130531

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140529

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 9