KR19980032148A - 바이트-기입가능한 2차원 fifo 버퍼 - Google Patents

바이트-기입가능한 2차원 fifo 버퍼 Download PDF

Info

Publication number
KR19980032148A
KR19980032148A KR1019970023403A KR19970023403A KR19980032148A KR 19980032148 A KR19980032148 A KR 19980032148A KR 1019970023403 A KR1019970023403 A KR 1019970023403A KR 19970023403 A KR19970023403 A KR 19970023403A KR 19980032148 A KR19980032148 A KR 19980032148A
Authority
KR
South Korea
Prior art keywords
data
storage
fifo
fifo buffer
data group
Prior art date
Application number
KR1019970023403A
Other languages
English (en)
Other versions
KR100276648B1 (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 KR19980032148A publication Critical patent/KR19980032148A/ko
Application granted granted Critical
Publication of KR100276648B1 publication Critical patent/KR100276648B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • 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/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

FIFO 저정회로는 데이터 버스를 통해 전송된 데이터를 하나 또는 그 이상의 데이터 유닛으로 구성된 데이터 그룹으로 저장한다. FIFO 버퍼는 각각 단일 데이터 저장유닛을 저장하기 위하여 배치되는 다수의 기억장소를 포함한다. 데이터 버스상의 각 데이터 그룹은 데이터 사이즈정보를 수반한다. 기억장소 사용가능도 디코더는 데이터 사이즈정보를 받아 FIFO 저장회로의 다수의 연속적인 빈 기억장소를 할당하여서, 입력하는 데이터 그룹을 저장하도록 한다. 그 다음, FIFO 는 연속적인 기억장소에 각 유닛에 공통인 데이터 태그와 함께, 각 유닛 데이터 그룹을 저장한다. 다음 저장된 데이터 그룹은 새로운 데이터 태그가 새로이 할당된다. FIFO 저장회로는 데이터 태그 순서대로 기억장소로부터 독출한다. 등가의 데이터 태그용 연속적인 기억장소를 체크하는 것은 FIFO 저장회로를 인에이블시켜 각 데이터 그룹용 적합한 유닛수를 출력한다. 게다가, 각 데이터 그룹에 유일한 순차 데이터 태그를 할당하는 것은 FIFO 저장회로가 적합한 순서로 FIFO 버퍼(200)의 내용을 독출하도록 한다.

Description

바이트-기입가능한 2차원 FIFO 버퍼
본 발명은 일반적인 직렬 데이터를 저장하기 위한 저장버퍼에 관한 것으로서, 보다 상세하게는, FIFO 버퍼에 관한 것이다.
도 1A 는 데이터가 길이가 변하는 데이터 그룹으로서 전달되는 대표적인 데이타 스트림을 나타낸다. 예시된 예에서, 단일 데이터 그룹은 1, 2, 또는 4 8-바이트 데이터 유닛 길이일 것이다.
도 1B 는 4개의 32-바이트 기억소자(102, 104, 106, 108)을 구비하는 통상적인 FIFO(first in first out) 버퍼(100)를 나타낸다. 각 기억소자는 각 기억소자가 유효 데이터를 포함하는 것을 나타내는 로직 1(one) 또는 기억소자가 과도기입되었음을 나타내는 로직 0(zero)을 저장하는 유효비트 V를 포함한다.
데이터는 입력버스(110)를 통해 FIFO 버퍼(100)로 기입되고, 출력버스(112)를 통해 독출된다. 통상적인 FIFO 제어블럭(도시되지 않음)은 FIFO 버퍼(100)용 기입 및 독출 포인터를 발생한다. 기입포인터는 현재 기입되고 있는 메모리소자를 가리키고, 독출 포인터는 독출되고 있는 메모리소자를 가리킨다. 유효비트 V 는 FIFO 버퍼(100)가 데이터로 오버플로우되는 것을 피하기 위하여 통상적인 로직을 사용하여 논리적으로 결합된다.
FIFO 버퍼(100)에는 도 1A 의 데이터 스트림의 내용이 포함되어 있음을 나타낸다. 4유닛길이의 제1데이타 그룹 D000 는 기억소자(108)에 저장된다. 데이터 그룹 D000 는 최초로 FIFO 버퍼에 기입되기(즉, 최초로 입력되기) 때문에, 데이터 그룹 D000 는 역시 FIFO 버퍼로부터 최초로 독출된다(즉, 최초로 출력된다). 다음의 3 데이터 그룹 D001, D010, D011 은 순차적으로 각 기억소자(106, 104, 102)에 저장된다.
FIFO 버퍼(100)의 음영진 기억장소는 길이가 변하는 데이터 그룹에 데이터를 저장하는 것은 FIFO 버퍼(100)를 비능률적인 패킹(packing)을 초래함을 나타낸다. FIFO 버퍼(100)의 유효비트 V 는 FIFO 버퍼(100)가 5개의 빈(empty) 기억소자가 존재함에도 불구하고 가득찼음을 나타낸다. 결과적으로, 입력버스(110)로부터 입력되는 그 다음 데이터는 데이터 그룹 D000 가 FIFO 버퍼(100)로부터 독출될 때까지 지연되어야만 한다.
도 1A 는 데이터가 길이가 변하는 데이터 그룹으로 전달되는 대표적인 데이타 스트림을 설명하기 위한 도면.
도 1B 는 통상적인 FIFO(first in, first out) 버퍼(100)를 설명하기 위한 도면.
도 2A 는 본 발명에 따른 FIFO 버퍼(200)를 설명하기 위한 도면.
도 2B 는 FIFO 버퍼(200)의 특별한 기억장소에 관련된 유효비트 V, 데이터 태그 DTAG 및 8-바이트(64비트)데이타 워드 저장영역을 설명하기 위한 도면.
도 3 은 FIFO 버퍼(200)의 실시예의 블록도.
도 4 는 FIFO 버퍼를 포함하는 저장회로(400)의 블록도.
도 5 는 데이터를 FIFO 버퍼(200)로 보내는 기입제어회로의 블록도.
도 6A, 6B 및 도 6C 는 도 5 의 V-비트 디코드 로직(510)의 동작을 설명하기 위한 플로우챠트.
도 7 은 도 4 의 독출제어회로(440)의 동작을 설명하기 위한 플로우챠트.
* 도면의 주요 부분에 대한 부호의 설명 *
110 : 고속 메모리120 : 캐쉬 메모리
130 : 스크래치 패드150 : 어드레스 공간
160, 170 : 어드레스200 : 멀티 프로세서
210 : 범용 프로세서220 : 벡터 프로세서
212, 214, 216 : 직접라인218 : 확장 레지스터
230 : 캐쉬 서브시스템240, 250 : 시스템버스
262, 266 : 명령 캐쉬264, 268 : 데이터 캐쉬
270 : 롬 캐쉬280 : 제어회로
310 : 데이터 파이프라인320 : 어드레스 파이프라인
330 : 태그 메모리340 : 멀티플렉서
360 : SRAM362, 364, 366, 368 : 메모리 섹션
FIFO 저장회로는 데이타 유닛의 수의 표시에 의해 선행되는 하나이상의 데이터 유닛으로 구성된 데이터 그룹으로 데이터 버스를 통해 전송된 데이터를 저장한다. 기억장소 이용가능도 디코더는 데이터-사이즈 정보를 받으며, FIFO 저장회로에 다수의 연속적인 빈 기억장소를 할당하여 입력되는 데이터 그룹의 저장을 허용한다. 데이터 그룹은 반드시 연속적인 메모리장소에 저장해야 하는 것은 아니며, 또한 특별한 크기의 메모리소자에 반드시 저장해야 하는 것은 아니다. 대신에, 기억장소의 필요한 수가 선택되어 FIFO 버퍼의 데이터 저장밀도를 향상시킨다. 예를 들면, FIFO 저장회로는 4개의 1-유닛 데이터 그룹, 1쌍의 2-유닛 데이터 그룹 또는 하나의 4-유닛 데이터 그룹을 단일 기억소자에 저장하게 될 것이다.
데이터 그룹은 길이가 가변되고 반드시 순차적으로 저장되어야 하는 것이 아니기 때문에, 각 데이터 그룹에 FIFO 버퍼로부터 독출될 때 데이터 그룹이 저장되는 것을 허용하는 단일의 데이터 태그가 할당된다. 주어진 데이터그룹용 데이터 태그는 그 데이터 그룹의 각 데이터 유닛과 함께 저장되어, 데이터 유닛이 그룹에 속하는 것으로 식별되어질 수 있다.
본 발명에 따른 FIFO 저장회로는 그들이 입력되는 순서 대신에 사이즈에 따라 기억장소를 할당한다. 그렇게 함으로써, 신규한 FIFO 저장회로는 종래보다 개선된 밴드폭 및 기억효율을 제공한다.
이하, 첨부한 도면을 참조로 하여 본 발명의 바람직한 실시예를 상술하며, 도면 전체를 통하여 동일한 부분에는 동일한 도면부호를 사용하기로 한다.
도 2A 는 본 발명에 따른 FIFO 버퍼(200)를 나타낸다. 도 1B 의 FIFO 버퍼(100)처럼, FIFO 버퍼(200)는 4개 32-바이트 기억소자 00XX, 01XX, 11XX를 포함한다. 데이터는 입력버스(210)을 통해 FIFO 버퍼(200)로 기입되고, 출력버스(220)를 통해 독출된다. 도 4 에 도시된 신규한 기입제어회로(430)는 FIFO 버퍼(200)를 인에이블시키는 기입 포인터(WPTR)을 발생하여, 데이터가 효율적으로 저장되어질 FIFO 버퍼(200)로 데이타를 기입하도록 한다. 역시 도 4 에 도시된 신규한 독출제어회로(440)는 데이터가 독출될 때 데이터의 시퀀스를 복원한다.
FIFO 버퍼(200)는 FIFO 버퍼(100)처럼, 도 1A 의 데이터 스트림의 내용을 포함하고 있음을 나타낸다. 그러나, 데이터 스트림은 FIFO 버퍼(200)에서 보다 효율적으로 저장되어, 기억소자의 수를 증가시킴없이 부가 데이터용 장소를 허용한다. 처음 두 데이터 그룹 D000 와 D001 은 FIFO 버퍼(100) 에서 처럼 저장된다. 하지만 세 번째 데이터 그룹 D010 는 빈기억소자내에 저장되지 않고 대신 기억소자 10XX 내의 한쌍의 이용가능한 기억장소내에 저장된다. 이것은 이용가능한 기억소자 10XX가 4 유닛 길이가 될 데이터 그룹 D011을 저장하도록 한다. 결과적으로, 기억소자 11XX 가 부가 데이터를 저장하는 것을 가능케 한다. 예를 들면, FIFO 버퍼(200)는 8, 16, 또는 32바이트 (즉, 1, 2, 또는 3 데이타 유닛)의 부가 데이터 그룹을 받아 들인다.
도 2A 의 예에서, FIFO 버퍼(200)는 통상적인 FIFO 버퍼(100)와 비교하여 볼 때, 적어도 하나의 부가 데이터 그룹을 저장할 수 있다. 게다가, 보다 작은 데이터 그룹을 저장할 때, 저장효율의 증가가 실현된다. 예를 들면, 오직 4개의 연속적인 단일-유닛 데이터 그룹의 데이터 스트림이 종래의 FIFO 버퍼(100)를 채운다. 이와는 달리, FIFO 버퍼(200)는 할애된 하나의 32-바이트 기억소자로 3배 긴 데이터 스트림을 저장할 수 있었다.
도 2A 의 실시예에서, 데이터 그룹은 데이터 그룹을 저장하기에 충분한 수의 빈 기억장소를 갖는 소자 00XX - 11XX 중 첫 번째 이용가능한 소자에 기입된다. 때때로, 이러한 기억구조는 시퀀스를 벗어나 데이터 그룹을 저장한다.
시퀀스를 벗어나 데이터 그룹을 FIFO 버퍼(200)로 저장하는 것은 본래의 데이터 순서를 복원시키기 위하여 FIFO 버퍼(200)내에 저장된 데이터를 시퀀스를 벗어나 독출하는 것을 요구한다. 이를 달성하기 위하여, 각 기억장소 0000 - 1111 는 FIFO 버퍼(200)내의 다른 데이터에 관하여 저장된 데이터의 저장순서를 나타내는 4-비트 데이터 태그(DTAG)를 구비한다. 게다가, 각 기억소자내의 개개의 기억장소는 유효 데이터를 포함하고 반면 동일소자의 다른 기억장소는 유효 데이터를 포함하고 있지 않기 때문에, 각 기억장소 0000 - 1111는 지정된 유효비트 V를 포함한다. 기억장소 0000 에 관련된 유효비트 V, 데이터 태그 DTAG, 및 8-바이트(64비트)워드가 도 2B 에 도시되어 있다.
도 3 은 16개의 유일한(unique) 기억장소 0000 - 1111 를 구비한 FIFO 버퍼(200)의 실시예의 개략도이다. 기억장소용 수치 기술자(記述子)는 그들의 4-비트 바이너리 어드레스로서 이중으로 한다. 기억장소 0000 - 1111 은 각각 69 입력단자를 구비하고, 병렬로 입력버스(210)의 64라인과 버스(DTAG/V)의 유효비트 라인과 4 데이터 태그라인에 연결된다. 각 기억장소 0000-1111 은 역시 선택될 때 입력버스(210)와 버스 DTAG/V 상의 데이터로 과도기입될 선택기억장소를 인에이블시키는 기입단자를 통상적으로 구비한다. 16 기입단자는 선택기억장소 0000를 나타내는 통상의 기입포인터 WPTR 로서 도 3 에 설명되어져 있다.
5비트 버스(310)는 기억장소 0000 - 1111 의 각 유효비트 기억장소에 연결된다. 도 4 내지 도 6 에 관련하여 설명된 바와같이, 유효비트의 스태터스는 기입콘트롤회로가 빈 기억장소중 해당하는 것을 선택하도록 한다.
FIFO 버퍼(200)는 기억장소 0000 - 1111 중 해당하는 기억소자를 선택적으로 독출하는 2레벨 멀티플렉싱을 포함한다. 4개의 멀티플렉서(320, 325, 330, 335)은 독출 포인터(RPTR)의 상위 2비트에 의해 제어되어 4개의 기억소자(00XX, 01XX, 10XX, 11XX)들중 해당하는 기억소자를 선택한다. 예를 들면, 만약 독출 포인터(RPTR)의 상위 비트가 00 이면, 기억장소 0000, 0001, 0010, 0011이 선택된다. 각 멀티플렉서(320, 325, 330, 335)는 각각 단일 기억장소에 연결된 4개의 69-비트 입력포트를 구비한다. 예를 들면, 멀티플렉서(335)는 기억장소 0011, 0111, 1011, 1111 에 연결된다.
제 5 멀티플렉서(350)는 독출 포인터(RPTR)의 하위 2비트에 의해 제어되어, 멀티플렉서(320, 325, 330, 335)로부터의 69-비트 출력포트들중 해당하는 출력포트를 선택하고, 선택된 포트로부터의 신호를 출력버스(212) 및 버스 DTAG/V 상에 제공한다. 즉, 멀티플렉서(320, 325, 330, 335, 350)의 결합은 독출 포인터(RPTR)을 인에이블시켜 기억장소 0000 - 1111 중 어느 하나를 선택한다.
도 4 는 통상적인 SDRAM 메모리 콘트롤 회로(410)에 출력버스(212)와 로드-스트로브 라인(415)를 통해 연결된 저장회로의 블록도이다. 로드-스트로브 라인(415)은 SDRAM 콘트롤 회로(410)가 출력버스(212)상의 데이타를 받을 준비가 되었는가를 나타내는 통상의 로드 스트로브를 SDRAM 콘트롤 회로(410)로부터 실어 나른다. SDRAM 콘트롤 회로(410)는 예시적이고, 저장회로(400)는 순차적인 버퍼링을 요구하는 다른 응용에 사용될 수도 있다.
저장회로(400)는 FIFO 버퍼(200)(도 3 에 도시), 데이터 그룹-사이즈 레지스터(420), 기입콘트롤회로(430) 및 독출콘트롤회로(440)를 포함한다. 사이즈 레지스터(420)는 입력버스(210)에 연결되고, 입력버스(210)상의 순차적인 방송데이타 그룹의 사이즈를 나타내는 정보를 데이터 유닛의 수로 받을 수 있도록 통상적으로 배치된다. 이 사이즈정보는 통상적으로 디코드되어 버스(445)를 통해 기입콘트롤회로에 전달한다.
기입콘트롤회로(430)는 버스(445)를 통해 주어진 데이터 그룹을 위한 디코드된 사이즈 정보를 받으며, 16라인 버스(450)상의 기억장소 0000 - 1111 에 대응하는 유효비트의 스태이트를 독출한다. 다음 기입콘트롤회로(430)는 사이즈 정보 및 다양한 유효 비트의 스태터스를 사용하여 데이터 그룹을 저장할 수 있는 단일의 기억소자내의 연속적인 시퀀스의 기억장소를 결정한다. 적절한 시퀀스의 기억장소(또는 단일-유닛 소자용 단일기억장소)가 결정되면, 기입콘트롤회로(430)는 버스(455)에 대해 FIFO 버퍼(200)로 전달된 기입 포인터(WPTR)을 사용하여, 차례로 이러한 장소를 선택한다. 기억장소 0000 - 1111 중 주어진 하나를 위한 기입 포인터를 선택하는 것은 그 저장위치를 기입 인에이블시킨다. 다음 기입 인에이블된 기억장소는 입력버스상에 존재하는 데이터, 각 선택된 기억장소에 공통인 데이터 태그 및 기억장소가 현재 유효 데이터를 포함하고 있는 가를 나타내는 유효비트를 저장한다. 데이터 태그 및 유효비트는 5-라인 버스 DTAG/V를 통해 FIFO 버퍼(200)로 전달된다.
데이터가 FIFO 버퍼(200)내에 저장될 때, 독출콘트롤회로(440)를 독출하기 위한 SDRAM 콘트롤회로(410)로부터의 로드 스트로브는 FIFO 버퍼(200)로부터 독출을 나타낸다. 기입콘트롤회로(440)는 최종 독출 데이터(LDTAG)용 데이터 태그를 기억하고, 버스(460)상의 4비트신호인 독출포인터(RPTR)을 기억장소 0000 - 1111 중 이전 데이터 태그값보다 1 큰 데이터 태그값과 세트 유효비트를 갖는 하나의 기억장소로 1 증가시킨다. 즉, 독출콘트롤회로(440)는 데이터가 입력버스(210)에 도달하는 순서대로 FIFO 버퍼(200)내에 저장된 데이터를 독출한다.
도 5 는 기입콘트롤회로(430)의 블록도로서, 기입콘트롤회로(430)는 데이터-그룹 사이즈 디코더(500), 유효비트 디코드 로직(510), 기입 포인터 발생기(520), 기입 인에이블 게이트(530) 및 데이터 태그 발생기(540)를 구비한다. 사이즈 디코더(500)는 라인(445)상의 그룹 사이즈 정보를 디코드하고, (버스(545)를 통해) 디코드 로직(510) 및 DTAG 발생기(540)로 FIFO 버퍼(200)에 의해 입력된 각 데이터 스트림용 데이터 유닛의 수를 나타낸다.
기입 포인터 발생기(520)는 기입 포인터(WPTR)을 디코드 로직(510)에 전달하는 출력버스(550)를 갖는 통상적인 로드가능한 4-비트 카운터이다. 기입 포인터(WPTR)는 역시 데이터 유닛이 FIFO 버퍼(200)에 저장될 때마다 게이트(530)를 통해 FIFO 버퍼(200)로 전달된다. FIFO 버퍼(200)로 기입 포인터(WPTR)를 게이팅하는 것은 라인(532)을 통해 초기화되고, 선택된 기억장소를 통상적으로 기입 인에이블시킨다.
유효비트 디코더 로직(510)는 FIFO 버퍼(200)로부터 16 유효비트를 디코드하여 FIFO 버퍼(200)가 채워져 부가 데이터를 수용할 수 없는가를 결정한다. 디코드로직(510)은 FIFO 버퍼(200)의 오버플로우를 피하는 것이 요구되는 경우, 모든 기억장소가 채워지기 전에 FIFO 버퍼(200)가 채워졌음을 나타내도록 배치되어질 수 있다. 예를 들면, 일실시예에서, 전체 기억소자가 빈상태로 되어 연속적인 기입명령에 대한 충분한 기억을 확보하였지만, FIFO 버퍼(200)는 완전히 채워진 것으로 간주된다.
FIFO 버퍼(200)가 채워지지 않았다고 가정하면, 디코드로직(510)은 유효비트의 스태터스, 기입포인터(WPTR)의 장소 및 입력하는 데이터 스트림에 근거하여, 의 장소를 디코드하고, 기입 포인터(WPTR)에 의해 어드레스된 기억장소 또는 일련의 이웃하는 기억장소가 입력되는 데이터 스트림을 저장할 수 있는 용량을 갖고 있는가를 결정한다. 그다음, 기입 포인터(WPTR)에 의해 지시된 장소가 이용가능하다면, 디코드로직(510)은 라인(555)을 통해 WPTR 발생기(520), 게이트(530) 및 DTAG 발생기(540)로 인에이블명령을 발행한다. 인에이블명령은:
1. 현재 기입 포인터(WPTR)를 FIFO 버퍼(200)로 게이트하여 어드레스된 기억장소의 로드를 초기화한다;
2. 기입 포인터(WPTR)를 다음 기억장소로 증분한다;
3. 마지막 유닛 데이터 그룹의 접수시 DTAG 발생기(540)내의 카운터(도시되지 않음)를 증분한다.
DTAG 발생기(540)는 각데이타 그룹마다 1 증분하는 카운터회로이다. 데이터 그룹은 사이즈가 다르기 때문에, DTAG 발생기는 라인(555)을 통해 기입 인에이블 게이트(530)에 의해 지시된 저장된 유닛의 수를 라인(545)상에 지시된 데이터 그룹 사이즈에 의해 분할된다. 즉, 데이터 태그는 각 데이터 그룹마다 한번씩 증분하여, 멀티-유닛 데이터 그룹을 저장하기 위하여 사용된 각 기억장소는 동일한 데이터 태그를 포함한다. DTAG 발생기(540)는 선택된 기억장소의 유효비트 기억장소에 로직 1을 제공하여, 기억소자내에 데이터와 데이터 태그가 저장될 때마다 대응하는 유효비트가 세트된다.
결합된 도 6A, 6B 및 6C 는 도 5 의 유효비트 디코드로직(510)의 동작을 설명하는 플로우챠트이다. FIFO 버퍼(200)가 채워지지 않았다고 가정하면, 기입콘트롤회로(430)가 라인(433)상의 기입 스트로브를 받을 때 스텝(600)에서 프로세스가 시작된다. 유효비트 디코드로직(510)은 입력되는 데이터 그룹의 그룹 사이즈를 검사하여 그룹이 1, 2, 또는 4 유닛 길이인가를 결정한다.
1-유닛 데이타 그룹은 데이터장소 0000 - 1111 중 첫 번째 이용가능한 장소에 저장된다. 즉, 데이터 그룹이 1유닛길이이면, 유효비트 디코드로직(510)은 기입 포인터(WPTR)에 의해 지적된 기억장소가 요휴 데이터를 포함하는 가를 점검한다(스텝 604). 만약 그렇다면, 기입포인터(WPTR)는 1 증분하고(스텝 606), 다음 기억장소의 유효비트를 검사한다(스텝 604).
기입 포인터(WPTR)는 기입포인터(WPTR)가 빈 기억장소(즉, 유효 데이터가 부족한 기억장소)를 지정할 때까지 증분한다. 그 다음, 프로세스는 스텝 608 로 이동하여 입력버스(210)상에서 이용가능한 데이터 유닛이 현재 데이터 태그와 함께 지시된 기억장소로 로드한다. 지시된 기억장소의 유효비트는 역시 스텝 608에서 세트된다. 그 다음, 다음 데이터 그룹의 접수를 위한 준비시, DTAG 발생기(540)와 WPTR 발생기(520)는 각각 1 증분한다(스텝 610과 612). 단일 유닛 데이터 그룹의 저장으로, 기입 프로세스는 중단되고(스텝 614), 기입콘트롤회로(430)는 다음 기입명령을 접수하는 동안 아이들 상태로 남아있게 된다.
스텝 612으로 되돌아 가서, 데이터 그룹이 1 유닛 길이가 아니면, 프로세스는 도 6B 의 스텝 620 으로 이동한다. 도 3 의 실시예에서, 멀티 유닛 데이터 그룹은 기억소자 00XX, 01XX, 10XX, 11XX 중 하나의 기억소자내의 연속적인 기억장소에 저장된다. 단일 기억소자내에 멀티유닛 그룹을 저장하는 것이 엄밀하게 필요한 것은 아니지만, 유효비트 디코드로직(510)의 디코드 로직을 단순하게 한다. 기입 포인터(WPTR)이 기억소자중 최우측 기억장소를 지정하면 (즉 기억장소 0011을 지정하면), 2 또는 그이상의 데이터 유닛의 데이터 그룹을 저장하는 것은 하나이상의 기억소자내의 그 데이터 그룹을 위치시킨다. 그러한 사건을 방지하기 위하여, 프로세스는 2-유닛 데이터 그룹에 대해, 기입 포인터의 하위 2비트 WPTR1, 0 가 고려되는 스텝 604 을 계속한다. 2비트가 로직 1이면, 기입 포인터(WPTR)은 1 증분한다.
일단 기입 포인터(WPTR)이 기억소자의 마지막 기억장소를 지정하지 않으면, 유효비트 디코드로직(510)은 2개의 연속적인 기억장소가 2개의 데이터 유닛을 저장할 수 있는 가를 결정한다. 이를 수행하기 위하여, 유효비트 디코드 로직(510)은 기입 포인터(WPTR)에 의해 지정된 기억장소의 유효비트 스태터스와 WPTR+1 의 어드레스를 갖는 기억장소의 유효비트 스태터스를 체크한다(스텝 626). 만약 그러한 기억장소중 하나 또는 모두가 유효 비트를 포함한다면, 기입 포인터는 1 증분하고(스텝 624), 프로세스는 스텝 622로 복귀한다. 한편, 그러한 기억장소 모두가 비어있다면,
1. 유효비트는 세트되고 기입 포인터(WPTR)에 의해 지정된 기억장소에 첫 번째 데이터 유닛을 저장한다;
2. 기입 포인터(WPTR)는 1 증분하여, 이웃하는 기억장소를 선택한다(스텝 630);
3. 유효비트는 세트되고 제2데이타 유닛을 증가된 기입 포인터에 의해 지금 선택된 이웃하는 기억장소에 저장한다(스텝 632).
다음 데이터 그룹의 수신을 위한 준비시, DTAG 발생기(540)와 WPTR 발생기(520)는 각각 1 증분한다(스텝 634와 스텝 636). 2-유닛 데이터 그룹의 저장으로, 기입 프로세스는 중단되고(스텝 638), 기입콘트롤회로(430)는 다음 기입명령을 수신하는 동안, 아이들상태로 남아있다.
스텝 620 으로 복귀하면, 데이터 그룹이 1유닛길이 그리고 2유닛 길이가 모두 아니면, 프로세스는 데이터 그룹이 4-유닛 길이라고 가정된 도 6C의 스텝 644 으로 이동한다. 4-유닛 데이타 그룹이 기억소자 00XX, 01XX, 10XX, 11XX 중 하나의 기억소자 전체를 차지하기 때문에, 기입포인터는 제1데이타 유닛을 기입하기전에 주어진 기억소자의 제1기억장소를 지정해야 한다. 즉, 유효비트 디코드로직(510)은 기입포인터(WPTR)의 상위 2비트를 조사하여 WPTR 이 00XX 의 어드레스를 갖는 기억장소를 지정하는 가를 결정한다(스텝 644). 그렇지 않으면, 기입 포인터(WPTR)이 1 증분하고(스텝 646), 프로세스는 스텝 644 로 복귀한다. 기입 포인터(WPTR)이 어드레스 00XX 를 지정하면, 유효비트 디코드 로직(510)은 선택된 기억소자내의 각 기억장소의 유효비트를 검사하여 모든 기억장소가 비어있는가를 확인한다(스텝 648). 하나 또는 그 이상의 기억장소가 유효데이타를 포함하고 있으면, 기입포인터(WPTR)은 4(2진 100) 증분하여, 기입포인터(WPTR)은 다음 기억소자의 첫 번째 기억장소를 지정한다. 유효비트 디코드 로직(510)은 빈 기억장소의 위치가 결정될 때까지 스텝 648과 650을 순환한다. 위치가 결정된 빈 기억소자가 있다면,
1. 유효비트는 세트되고, 제1유효 데이터 유닛은 기입 포인터(WPTR)에 의해 지정된 기억장소에 저장된다 (스텝 652);
2. 기입 포인터(WPTR)은 1 증분하여 기억소자의 다음 제2기억장소를 선택한다(스텝 654);
3. 유효비트는 세트되고 제2데이타 유닛은 제2기억장소에 저장된다(656);
4. 기입 포인터(WPTR)은 1 증분하여 제3기억장소를 선택한다(스텝 658);
5. 유효비트 세트되고 제3데이타 유닛은 제3기억장소에 저장된다(660);
6. 기입포인터(WPTR)는 1 증분하여 기억소자의 제4(마지막)기억장소를 선택한다(스텝 662);
7. 유효비트가 세트되고, 제4데이타 유닛이 제4기억장소에 저장된다(664).
다음 데이터 그룹의 수신을 위한 준비시, DTAG 발생기(540)와 WPTR 발생기(520)는 각각 1 증분한다(스텝 666과 스텝 668). 제 4-유닛 데이터 그룹의 저장으로, 기입 프로세스는 중단되고(스텝 670), 기입 콘트롤회로(430)는 다음 기입명령을 접수하는 동안 아이들 상태로 남아있다.
도 7 은 도 4 의 독출 콘트롤회로의 동작을 설명하는 플로우챠트이다. 프로세스는 저장회로(400)가 SDRAM 제어회로(410)로부터 라인(415)를 통해 로드 스트로브(LOAD STROBE)를 수신할 때 시작된다(도 4 참조). 독출 콘트롤회로는 FIFO 버퍼(200)로부터 독출될 데이터 그룹의 최종 데이터 태그값의 카운트 LDTAG를 유지한다. 스텝 710 에서, 기입 콘트롤회로(440)는 독출 포인터(RPTR)에 의해 선택된 기억장소에 저장된 유효비트 및 데이터 태그(DTAG)를 조사한다. 유효비트가 유효 데이터가 없음을 나타내는 로직 0 이거나 또는 데이터 태그가 최종 데이터 태그(DTAG) 값 LDTAG 보다 정확하게 1이 크지 않으면, 프로세스는 스텝 710으로 복귀하기 전에 독출 포인터를 1 증분하는 스텝 720으로 이동한다.
스텝 710에서 유효비트가 유효 비트가 존재함을 나타내는 로직 1이거나 또는 데이터 태그 DTAG 가 최종 데이터 태그값 LDTAG 보다 1이 크면, 프로세스는 스텝 730으로 간다. 독출 포인터 RPTR 는 스텝 710으로 이동하기 전에 증분하여, 독출 콘트롤회로(440)는 다음 기억장소의 유효비트와 DTAG 비트를 검사할 수 있다.
독출 콘트롤회로(440)는 유효 데이터와 정확한 데이터 태그 DTAG 를 갖는 기억장소의 위치를 결정할 때까지 스텝 710과 720을 순환한다. 그 다음 프로세스는 독출 콘트롤회로(440)가 SRAM 콘트롤 회로(410)가 선택된 기억장소로부터 공급된 출력버스(212)상의 데이터를 독출하도록 명령하는 스텝730으로 이동한다.
스텝 740에서 독출 콘트롤회로(440)는 다음 기억장소에 저장된 유효비트와 데이터 태그 DTAG를 조사한다. 그 기억장소가 유효데이타를 포함하고 (즉, 유효비트가 로직 1 이고), 데이터 태그 DTAG 가 다시 한번 LDTAG+1 과 같다면, 선택된 기억장소내에 저장된 데이터 유닛은 이전에 택된 기억장소에 저장된 데이터 유닛으로서 동일 데이터 그룹의 일부분이다. 결과적으로, 선택된 기억정소는 역시 동일 로드 스트로브에 응답하여 독출된다. 스텝 730과 740은 독출 포인터 RPTR 이 유효비트를 포함하지 않는 기억장소 또는 최종 DTAG 값 LDTAG 보다 1 큰 데이터 태그 DTAG를 포함하지 않는 기억장소중 하나에 도달할 때까지 계속된다. 프로세스는 스텝 700으로 복귀하여 다음 로드 스트로브를 기다린다.
각 멀티-유닛 데이터 그룹은 각각 공통의 데이터 태그를 갖는 연속적인 기억장소에 저장되기 때문에, 등가의 데이터 태그용 연속되는 기억장소를 체크하는 것은 독출 콘트롤회로(440)를 인에이블시켜 각 데이터 그룹의 적절한 유닛수를 출력한다. 게다가, 각 데이터 그룹에 유일한 순차 데이터 태그를 할당하는 것은 기입 독출회로(440)가 적절한 순서로 FIFO 버퍼(200)의 내용을 독출하도록 한다.
본 발명을 특정의 바람직한 실시예에 관련하여 도시하고 설명하였지만, 본 발명이 그에 한정되는 것은 아니고 이하의 특허청구의 범위에 의해 마련되는 본 발명의 정신이나 분야를 이탈하지 않는 한도내에서 본 발명이 다양하게 개조 및 변화될 수 있다는 것을 당 업계에서 통상의 지식을 가진 자는 용이하게 알 수 있다. 예를 들면, 본 발명은 FIFO 버퍼의 내용에 대해 설명되었지만, 본 발명은 LIFO(last-in, first-out) 버퍼와 같은 다른 형태의 순차 버퍼에도 동일하게 적용가능하다. 게다가, 본 발명은 상기에서 설명된 것외에, 다양한 사이즈의 데이터 유닛 및 그룹에도 적용가능하다.

Claims (1)

  1. 적어도 하나의 데이터 유닛을 포함하는 데이터 그룹에 데이터가 전송되고, 유닛은 데이터 비트의 시퀀스이며, 데이터 버스를 통해 받은 상기 데이터를 저장하는 저장회로에 있어서,
    각각 데이터 버스에 연결되고 데이터 유닛을 저장하기 위하여 배치되는 복수개의 기억장소와;
    데이터 버스에 연결되고 전송된 데이터 그룹의 데이터 유닛수를 나타내도록 배치되는 데이터 그룹사이즈 디코더와;
    각 기억장소와 데이터 그룹 사이즈 디코더에 연결되고, 각 기억장소가 주어진 사이즈의 전송된 데이터 그룹을 받을 수 있음을 나타내도록 배치되는 기억장소 이용가능도 디코더를 포함하는 것을 특징으로 하는 저장회로.
KR1019970023403A 1996-10-18 1997-06-05 바이트-기입가능한2차원fifo버퍼 KR100276648B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/733,510 US5974516A (en) 1996-10-18 1996-10-18 Byte-writable two-dimensional FIFO buffer having storage locations with fields indicating storage location availability and data ordering
US8/733,510 1996-10-18

Publications (2)

Publication Number Publication Date
KR19980032148A true KR19980032148A (ko) 1998-07-25
KR100276648B1 KR100276648B1 (ko) 2001-01-15

Family

ID=24947918

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970023403A KR100276648B1 (ko) 1996-10-18 1997-06-05 바이트-기입가능한2차원fifo버퍼

Country Status (2)

Country Link
US (1) US5974516A (ko)
KR (1) KR100276648B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100954904B1 (ko) * 2001-12-11 2010-04-27 에멀럭스 디자인 앤드 매뉴팩처링 코포레이션 Fifo 메모리에서 인터리브된 다수의 동시트랜잭션으로부터의 데이타의 수신

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415338B1 (en) * 1998-02-11 2002-07-02 Globespan, Inc. System for writing a data value at a starting address to a number of consecutive locations equal to a segment length identifier
US6453365B1 (en) * 1998-02-11 2002-09-17 Globespanvirata, Inc. Direct memory access controller having decode circuit for compact instruction format
US6269413B1 (en) * 1998-10-30 2001-07-31 Hewlett Packard Company System with multiple dynamically-sized logical FIFOs sharing single memory and with read/write pointers independently selectable and simultaneously responsive to respective read/write FIFO selections
US6304936B1 (en) * 1998-10-30 2001-10-16 Hewlett-Packard Company One-to-many bus bridge using independently and simultaneously selectable logical FIFOS
US6611891B1 (en) 1998-11-23 2003-08-26 Advanced Micro Devices, Inc. Computer resource configuration mechanism across a multi-pipe communication link
US6457081B1 (en) * 1998-11-23 2002-09-24 Advanced Micro Devices, Inc. Packet protocol for reading an indeterminate number of data bytes across a computer interconnection bus
US6782486B1 (en) 2000-08-11 2004-08-24 Advanced Micro Devices, Inc. Apparatus for stopping and starting a clock in a clock forwarded I/O system depending on the presence of valid data in a receive buffer
US6556495B2 (en) 2001-07-09 2003-04-29 International Business Machines Corporation 2-D FIFO memory having full-width read/write capability
US6987775B1 (en) * 2001-08-15 2006-01-17 Internet Machines Corp. Variable size First In First Out (FIFO) memory with head and tail caching
US7457894B2 (en) * 2001-08-29 2008-11-25 Nxp B.V. Synchronization of non-sequential moving pointers
US6967951B2 (en) 2002-01-11 2005-11-22 Internet Machines Corp. System for reordering sequenced based packets in a switching network
US7028131B1 (en) * 2002-10-24 2006-04-11 Emulex Design & Manufacturing Corporation Reverse message writes and reads
GB0228110D0 (en) * 2002-12-02 2003-01-08 Goodrich Control Sys Ltd Apparatus for and method of transferring data
EP1505489B1 (en) * 2003-08-07 2006-07-19 Texas Instruments Incorporated Overflow protected first-in first-out architecture
US7170433B1 (en) 2005-06-20 2007-01-30 The Mathworks, Inc. Analog I/O board providing analog-to-digital conversion and having a two-level buffer that allows demand based access to converted data
US9348750B1 (en) * 2006-12-14 2016-05-24 Xilinx, Inc. Circuit for and method of realigning data at a receiver
US8555026B2 (en) * 2010-09-06 2013-10-08 Lsi Corporation Methods and systems for storing variable width stack elements in a single memory stack
JP5583563B2 (ja) * 2010-12-06 2014-09-03 オリンパス株式会社 データ処理装置
JP5738618B2 (ja) * 2011-02-08 2015-06-24 オリンパス株式会社 データ処理装置
US10372413B2 (en) * 2016-09-18 2019-08-06 International Business Machines Corporation First-in-first-out buffer
KR20220051750A (ko) * 2020-10-19 2022-04-26 삼성전자주식회사 장치간 물리적 인터페이스의 트레이닝을 위한 장치 및 방법
CN117951049B (zh) * 2024-03-27 2024-06-07 沐曦集成电路(上海)有限公司 一种标签的处理方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63226762A (ja) * 1987-03-16 1988-09-21 Hitachi Ltd デ−タ処理方式
US5465079A (en) * 1992-08-14 1995-11-07 Vorad Safety Systems, Inc. Method and apparatus for determining driver fitness in real time
US5535369A (en) * 1992-10-30 1996-07-09 Intel Corporation Method for allocating memory in a solid state memory disk
US5563920A (en) * 1993-02-17 1996-10-08 Zenith Electronics Corporation Method of processing variable size blocks of data by storing numbers representing size of data blocks in a fifo

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100954904B1 (ko) * 2001-12-11 2010-04-27 에멀럭스 디자인 앤드 매뉴팩처링 코포레이션 Fifo 메모리에서 인터리브된 다수의 동시트랜잭션으로부터의 데이타의 수신

Also Published As

Publication number Publication date
KR100276648B1 (ko) 2001-01-15
US5974516A (en) 1999-10-26

Similar Documents

Publication Publication Date Title
KR100276648B1 (ko) 바이트-기입가능한2차원fifo버퍼
EP0100943B1 (en) Hierarchical memory system
US4949301A (en) Improved pointer FIFO controller for converting a standard RAM into a simulated dual FIFO by controlling the RAM's address inputs
US4866603A (en) Memory control system using a single access request for doubleword data transfers from both odd and even memory banks
US5133062A (en) RAM buffer controller for providing simulated first-in-first-out (FIFO) buffers in a random access memory
KR100227419B1 (ko) 외부기억장치 및 그의 메모리 액세스 제어방법
US4507731A (en) Bidirectional data byte aligner
US6131151A (en) Processing high-speed digital datastreams with reduced memory
US4633440A (en) Multi-port memory chip in a hierarchical memory
US4096565A (en) Integrated circuit data handling apparatus for a data processing system, having a plurality of modes of operation
KR930008637A (ko) 개선된 처리능력을 가지고 메모리로 부터/로 데이타를 비동기적으로 판독/기록하는 직접 기억장소 액세스 제어기 및 방법
WO2000038045A1 (en) Fifo unit with single pointer
EP0460853B1 (en) Memory system
US4718039A (en) Intermediate memory array with a parallel port and a buffered serial port
GB2259592A (en) A selectable width, burstable FIFO
EP1000398B1 (en) Isochronous buffers for mmx-equipped microprocessors
KR970002600A (ko) 집적회로 장치, 디지탈 데이타 처리 및 영상 디스플레이 신호 발생 장치, 프로세서 컴플렉스
US6507899B1 (en) Interface for a memory unit
US4796222A (en) Memory structure for nonsequential storage of block bytes in multi-bit chips
US4803654A (en) Circular first-in, first out buffer system for generating input and output addresses for read/write memory independently
US5375208A (en) Device for managing a plurality of independent queues in a common non-dedicated memory space
US5276838A (en) Dynamically repositioned memory bank queues
US20050278510A1 (en) Pseudo register file write ports
CA2000145C (en) Data transfer controller
US20030053367A1 (en) 2-D FIFO memory having full-width read/write capability

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: 20120925

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20130930

Year of fee payment: 14

LAPS Lapse due to unpaid annual fee