KR100954904B1 - Fifo 메모리에서 인터리브된 다수의 동시트랜잭션으로부터의 데이타의 수신 - Google Patents

Fifo 메모리에서 인터리브된 다수의 동시트랜잭션으로부터의 데이타의 수신 Download PDF

Info

Publication number
KR100954904B1
KR100954904B1 KR1020047009125A KR20047009125A KR100954904B1 KR 100954904 B1 KR100954904 B1 KR 100954904B1 KR 1020047009125 A KR1020047009125 A KR 1020047009125A KR 20047009125 A KR20047009125 A KR 20047009125A KR 100954904 B1 KR100954904 B1 KR 100954904B1
Authority
KR
South Korea
Prior art keywords
memory
data
fifo
bus
fifo memory
Prior art date
Application number
KR1020047009125A
Other languages
English (en)
Other versions
KR20040080436A (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 KR20040080436A publication Critical patent/KR20040080436A/ko
Application granted granted Critical
Publication of KR100954904B1 publication Critical patent/KR100954904B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/14Merging, i.e. combining at least two sets of record carriers each arranged in the same ordered sequence to produce a single set having the same ordered sequence
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C21/00Digital stores in which the information circulates continuously
    • 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/06Indexing scheme relating to groups G06F5/06 - G06F5/16
    • G06F2205/066User-programmable number or size of buffers, i.e. number of separate buffers or their size can be allocated freely

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)
  • Bus Control (AREA)

Abstract

FIFO 메모리(100)는 데이타가 FIFO 메모리에 저장되기 전에 데이타 전송 요청을 수신한다. 인터리브된 다수의 동시 트랜잭션으로서 FIFO 메모리에 전달된, 다수의 동시 데이타 전송은 FIFO 메모리에 의해 수용될 수 있다(즉, 분산된 버스트들로 송신하는 상이한 소스들 사이의 멀티플렉싱). 진행중인 데이타 전송과 관련된 전송 길이(130, 132, 134) 요구는, FIFO 메모리의 총 이용가능한 공간과 함께 탐지된다. 프로그램가능한 버퍼 영역은 또한 추가의 오버플로우 방지를 위해 및/또는 FIFO 깊이(depth)의 동적인 크기측정을 가능하게 하기 위해 FIFO 메모리에 포함될 수 있다.
선입선출(FIFO) 메모리, 전송 요청, 버스 인터페이스, FIFO 공간

Description

FIFO 메모리에서 인터리브된 다수의 동시 트랜잭션으로부터의 데이타의 수신{RECEIVING DATA FROM INTERLEAVED MULTIPLE CONCURRENT TRANSACTIONS IN A FIFO MEMORY}
본 출원은 2001년 12월 11일자로 출원되었으며, 제목이 "PCI/X TRANSMIT FIFO"인 미국특허 가출원 제60/339,643호의 우선권의 이익을 주장합니다.
본 출원은 선입선출(FIFO) 메모리 설계, 예를 들어 인터리브된 다수의 동시 트랜잭션들로부터 버스를 통해 데이타를 수신하도록 설계된 FIFO에 관한 시스템 및 기술에 관한 것이다.
FIFO 메모리 설계 분야에 있어서, FIFO 오버플로우에 대한 잠재성 및 데이타의 결과적인 손실을 처리하는 것은 중요한 설계상의 고려사항이다. 한가지 전통적인 접근은, 데이타가 FIFO 메모리에 기입되는 것보다 빠르게 데이타가 FIFO 메모리로부터 항상 판독되도록 FIFO 메모리를 배치하는 시스템 및/또는 장치를 설계하는 것이다.
그밖의 종래의 접근들은 FIFO 메모리에 추가 회로를 포함하여 FIFO 메모리의 현재 상태에 관한 정보를 출력하는 것이다. 이 정보는 그 다음에 FIFO 메모리로의 데이타 기입 및 FIFO 메모리로부터의 데이타 판독을 조정하는데 있어서 외부 컴포 넌트들에 의해 사용될 수 있다. 이러한 FIFO 상태 출력들의 전형적인 예들은 풀 플래그(full flag), 엠프티 플래그(empty flag), 거의 풀 플래그(almost full flag) 및 거의 엠프티 플래그(almost empty flag)를 포함한다. 또한, 일부 FIFO 메모리들은 거의 풀 플래그 및/또는 거의 엠프티 플래그를 프로그램가능하게 만드는 회로를 포함한다.
<발명의 개요>
본 출원은 오버플로우 방지를 갖는 FIFO 메모리를 교시한다. 일 특징에 따르면, FIFO 메모리는 데이타가 FIFO 메모리에 저장되기 전에 데이타 전송 요청들을 수신한다. 데이타 전송 요청들은 개시되어질 데이타 전송의 크기들을 지정하여, FIFO 메모리가 데이타들을 수용하기에 충분한 공간을 가졌는지의 여부를 판정하는 것을 가능하게 한다. 일단 데이타 전송이 개시되면, 그 전송을 위한 FIFO 메모리의 공간은 이미 전송 요청에 의해 예약된다. 데이타는 비동기적으로 FIFO 메모리에 기입되고 FIFO 메모리로부터 판독될 수 있다.
인터리브된 다수의 동시 트랜잭션들로서 FIFO 메모리에 전달된 다수의 동시 데이타 전송들은 FIFO 메모리에 의해 수용될 수 있다(즉, 분산된 버스트들로 송신하는 서로다른 소스들 사이의 멀티플렉싱). 진행중인 데이타 전송과 연관된 전송 길이 요구는, FIFO 메모리의 총 이용가능한 공간과 함께 탐지된다. 프로그램가능한 버퍼 영역은 또한 추가의 오버플로우를 방지하기 위해 및/또는 FIFO 깊이(depth)의 동적인 크기측정을 가능하게 하기 위해 FIFO 메모리에 포함될 수 있다.
하나 이상의 이하의 이점들이 제공될 수 있다. 서술된 시스템 및 기술들은 단일 FIFO 메모리의 사용을 가능하게 하여 다수의 데이타 전송들에 대해 인터리브된 다수의 동시 트랜잭션들로부터 데이타를 수신하고, 여전히 FIFO 오버플로우를 방지하면서 개별적인 FIFO 메모리들에서 가능한 것보다 효과적으로 더 큰 메모리 깊이를 제공한다. 또한, 서술된 시스템 및 기술들은 FIFO 메모리를 공유가능하게 만들면서 FIFO 깊이를 동적으로 크기측정할 수 있는 능력을 발생시킬 수 있으며, 기입 및 판독 레이트들의 다양한 조합들을 위해 조정될 수 있는 FIFO를 발생시킬 수 있다.
이하의 첨부 도면들 및 설명에서 일 이상의 구현들에 대한 상세한 설명이 기술된다. 그외의 특징들 및 이점들은 상세한 설명 및 도면들로부터 및 특허청구범위들로부터 명백할 것이다.
이들 및 그외의 특징들은 이제 이하의 도면들을 참조하여 상세히 설명될 것이다.
도 1은 다수의 데이타 전송들에 대한 전송 길이 요청들을 수신하고 데이타 전송들을 허가하는 FIFO 메모리를 도시하는 블록도.
도 2는 도 1의 FIFO 메모리에 사용될 수 있는 메모리 회로 구성을 도시하는 블록도.
도 3A는 다수의 데이타 전송들에 대한 전송 길이 요청들을 수신하고 데이타 전송들을 허가하는 FIFO 메모리에서 수행된 동작들을 도시하는 조합된 흐름도 및 상태도.
도 3B는 프로그램가능한 버퍼 영역을 갖는 FIFO 메모리를 구성하는 것을 도시하는 흐름도.
도 4A는 버스 어댑터를 도시하는 블록도.
도 4B는 일 구현에 따른 호스트 버스 어댑터를 도시하는 블록도.
도 5는 예시의 데이타 프로세싱 시스템을 도시하는 블록도.
도 6은 일 구현에 따른 FIFO 메모리를 위한 동작 환경을 도시하는 블록도.
상이한 도면들의 유사한 참조 기호들은 유사한 구성요소를 나타낸다.
본 명세서의 시스템 및 기술들은 인터리브된 다수의 동시 트랜잭션들로부터 데이타를 수신하는 FIFO 메모리에 관한 것이다. 이하의 설명에서는 종종 PCI-X(Peripheral Component Interconnect Extended) 버스를 통해 데이타를 수신하는 환경에서 FIFO 메모리에 대해 논할 것이지만, 다른 환경에서도 적용될 수 있다.
도 1은 다수의 데이타 전송들에 대한 전송 길이 요청들을 수신하고 데이타 전송들을 허가하는 FIFO 메모리(100)를 도시하는 블록도이다. FIFO 메모리(100)는 FIFO 제어 회로(110) 및 FIFO 메모리 회로(150)를 포함한다. FIFO 제어 회로(110)는 FIFO 메모리 회로(150)에 비동기 판독 및 기입 동작들을 가능하게 하는 어드레싱 로직을 포함한다.
어드레싱 로직은 FIFO 메모리 회로(150)에 기입 어드레스(112) 및 판독 어드레스(114)를 제공한다. 또한, FIFO 제어 회로(110)는 차동 회로를 포함하여 메모 리 회로(150)의 이용가능한 공간을 탐지한다. 이 차동 회로는 레지스터와 같은 스토리지 로케이션을 포함할 수 있으며, 이것은 이용가능한 공간이나 FIFO 메모리 회로(150)의 사용된 공간 중의 하나를 나타내는 값을 보유한다. 차동 회로는 또한 출력 라인(120) 상에 풀 플래그를, 출력 라인(122) 상에 비_엠프티(not_empty) 플래그를 생성하여 출력하기 위한 로직을 포함할 수 있다.
FIFO 메모리(100)는 인터리브된 다수의 동시 트랜잭션들로부터의 데이타를 수락할 수 있다. 이 트랜잭션들은, 서로 다른 데이타 레이트에서 발생할 수 있는 다수의 특정 데이타 전송들에 대응한다. 트랜잭션들은, 예를 들어 데이타 전송 A에 대응하는 제1 트랜잭션, 제2 데이타 전송에 대응하는 제2 트랜잭션, 제1 데이타 전송에 대응하는 제3 트랜잭션, 및 제2 데이타 전송에 대응하는 제4 트랜잭션을 전송하는 것 같이, 그들의 대응하는 데이타 전송들에 대해 인터리브될 수 있다. 예를 들면, PCI-X에서, 시퀀스로 알려진 다수의 데이타 전송은 버스를 통하여 동시에 시작되고 수신될 수 있다. PCI-X의 시퀀스는 요청자에 의해 단일 논리 전송을 수행하는 것과 연관된 하나 이상의 데이타 트랜잭션들이며, 이 트랜잭션들은 33, 66, 100, 또는 133 Mhz(메가헤르쯔)에서 구동되도록 프로그램될 수 있다. 따라서, 1000 바이트의 데이타에 대한 요청은 모두 한번에 전달될 수 있거나, 또는 가변 시간에 가변적인 크기의 작은 버스트들로서 전달될 수 있다.
FIFO 메모리(100)는 FIFO 오버플로우를 방지하면서, 이러한 유형들의 인터리브된 다수의 동시 트랜잭션들로부터 데이타를 수락할 수 있다. FIFO 제어 회로(110)는 2개 이상의 전송 길이 입력 라인들(130, 132, 134)을 포함한다. 이들 전송 길이 입력 라인들은 데이타 전송이 개시되기 전에 전체 데이타 전송을 위한 FIFO 공간의 예약을 허용한다. 준비된 출력 라인(136)은 메모리 공간 요청들의 합이 FIFO 메모리(100)의 이용가능한 공간을 초과하지 않을 때 어써트(assert)될 수 있다.
예를 들면, 요청 라인 A(130)는 1000 바이트 데이타 전송을 위한 요청을 수신할 수 있다. 이 요청 A는 FIFO 제어 회로(110)에 저장될 수 있으며, 차동 회로는 이 요청을, 동시에 이용가능한 공간 및 임의의 이전에 예약된 공간과 비교한다. 전송 데이타량(1000 바이트)에 임의의 이전에 예약된 데이타량을 더한 값이 이용가능한 FIFO 공간 보다 작거나 같으면, 요청은 허가되고 준비된 출력 라인은 어써트 됨으로써, 데이타 전송의 시작을 허용할 수 있다.
요청 A에 대응하는 데이타가 FIFO 메모리 회로(150)에 기입될 때에, 요청 A에 대한 저장된 전송 데이타량이 감소되어 FIFO 메모리(100)에 예약된 공간의 양의 감소를 나타낸다. 제2 전송 요청이 요청 라인 B(132) 상에서 수신되는 경우, 차동 회로는 동일한 논리 동작들을 수행하며, 이때 요청 A에 대해 저장된 전송 데이타량은 비교에 사용된 이전에 예약된 데이타량의 일부분이다.
따라서, 판독 및 기입 사이클에서, FIFO 제어 회로(110)는 FIFO 메모리 회로(150)의 이용가능한 공간 및 진행중인 데이타 전송들과 연관된 전송 길이 요구를 계속해서 탐지한다. 또한, 대응하는 다수의 동시 트랜잭션들을 갖고 2개 이상의 진행중인 데이타 전송을 가능하게 하면서, 2개 이상의 요청 라인들이 구현될 수 있다.
FIFO 제어 회로(110)는 프로그램가능할 수 있다. 일 구현에 있어서, FIFO 제어 회로(110)는 엄격한 선착우선(first-come-first-serve) 규칙에 기초하여 요청자들(requestors)에게 응답하도록 프로그램될 수 있거나, 또는 FIFO 제어 회로(110)는 동시에 이용가능한 공간을 초과하지 않는 제1 요청자가 제일 처음에 서브되는 경우에 수정된 선착우선 규칙을 사용하도록 프로그램될 수 있다. 스킵된 요청자들은 FIFO 메모리(100)의 내부에 있거나 외부에 있을 수 있는 레지스터 블록에서 계속 탐지할 수 있다.
FIFO 메모리(100)는 빅 엔디안/리틀 엔디안(big-endian/little-endian) 및 바이트-레인 스와핑(byte-lane swapping)에 대한 제어들을 포함할 수 있다. FIFO 메모리(100)는 패리티 에러들을 삽입하고 FIFO 오버플로우 조건을 강요하는 테스트 특징들을 포함할 수 있다. FIFO 메모리(100)는 그것의 입력 및 출력에 각각 데이타 압축/복원 로직을 포함하여 추가의 오버플로우 방지를 제공할 수 있다.
FIFO 메모리(100)는 FIFO 자원들에 대한 데이타 전송 요청들을 수락하고 그 다음에 데이타 전송이 개시되어야 하는지의 여부를 나타내는 준비 플래그(ready flag)를 출력함으로써 오버플로우를 방지할 수 있다. 이것은 인터리브된 다수의 동시 트랜잭션으로 데이타가 전달되는 버스를 통하여 데이타를 수신하는 경우에 유용할 수 있다. 예를 들면, PCI-X에서, 다수의 동시 트랜잭션들로부터의 데이타는 FIFO 메모리에 버스트 모드로 기입될 수 있으며, 이때 대기 상태의 삽입은 허용되지 않으며, 임의의 하나의 전송의 정확한 길이는 모른다. 이러한 유형의 상황에서, 큰 양의 데이타를 갖는 다수의 트랜잭션들은 빠르게 연속하여 도착할 수 있다. 이것은 이들 멀티-트랜잭션 버스트 사이클이 수용되지 않으면, FIFO 오버플로우를 야기시킬 수 있다. 준비된 출력 라인(136)은 FIFO 메모리(100)로의 비동기 판독 및 기입 중에 데이타 전송 요청들에 대해 꼭 필요한 만큼의 홀드-오프(just-long-enough hold-off)를 가능하게 한다.
FIFO 제어 회로(110)는 또한 프로그램가능한 버퍼 영역의 크기를 수신하는데 사용된 버퍼 입력 라인(138)을 포함할 수 있다. 프로그램가능한 버퍼 영역의 크기는 제외된 FIFO 메모리(100)의 양을 지정한다. 버퍼 영역의 크기는 FIFO 메모리(100)의 레지스터 세트에 저장될 수 있다. 버퍼 영역의 크기는 차동 회로에 의해 수행된 논리 동작들에 포함되어 준비된 출력을 생성할 수 있으며, 버퍼 영역이 풀 및 비_엠프티 출력들에 반영되어야만 하는지의 여부에 따라, 이전에 예약된 양의 일부분으로서 또는 이용가능하지 않은 공간으로서 포함될 수 있다.
버퍼 영역의 크기는 양 또는 음의 값으로 프로그램될 수 있다. 양의 버퍼 영역의 크기는 추가의 오버플로우 방지를 제공하는데 사용될 수 있다. 이것은 요청 라인 상에 수신된 전송 데이타량이 FIFO 메모리에 저장될 데이타의 양에 정확히 대응하지 않는 경우에 유용할 수 있다. 예를 들면, 이하에서 더 설명될 바와 같이, 특정 데이타가 어느 트랜잭션에 속하는지를 식별하는 태그들이 FIFO 메모리의 데이타 로케이션들에 저장될 수 있다.
버퍼 영역의 크기는 음의 값으로 프로그램되어 FIFO 메모리(100)에 기입되어질 데이타의 양을 크게 할 수 있다. 음의 버퍼 영역은 FIFO 메모리(100)가 실제로 이용가능한 공간보다 FIFO 메모리 회로 내의 더 많은 이용가능한 공간을 통지할 수 있게 한다. 그러므로, FIFO 메모리(100)는 FIFO 메모리 용량을 실제로 확장하지 않으면서 더 크고 더 많은 데이타 전송들을 수용하도록 프로그램될 수 있다.
버퍼 영역의 크기는 외부 펌웨어를 액세스할 수 있는 레지스터 세트에 저장될 수 있다. 이 레지스터 세트의 비트 패턴들은 버퍼 영역의 크기에 있어서 큰 변동을 가능하게 하도록 프로그램될 수 있다(즉, 8비트 레지스터는 256(28)개의 값들의 고정된 세트를 나타내는 것에 한정되지 않는다). FIFO 메모리(100)로부터의 판독은 다양한 클럭 주파수들에서 구동되도록 만들어질 수 있다. 따라서, 일부 구현에서는, 판독 및 기입 속도의 차이가 FIFO 오버플로우에 대해 보호하기 위해 사용될 수 있다. 이러한 경우에는, 음의 버퍼 영역은 강요된 상한을 여전히 가짐에 따라 오버플로우 방지에 대한 동시 제어와 함께 FIFO 메모리 공유를 가능하게 하면서, FIFO 깊이를 논리적으로 증가시키도록 프로그램될 수 있다.
FIFO 메모리 회로(150)는 듀얼 포트 랜덤 액세스 메모리(RAM) 또는 레지스터 파일을 사용하여 구현될 수 있다. FIFO 메모리 회로(150)는 데이타 입력 라인(152), 기입 인에이블 입력 라인(154), 및 기입 클럭 입력(156)을 포함한다. FIFO 메모리 회로(150)는 또한 판독 클럭 입력(160) 및 데이타 출력 라인(162)을 포함한다. FIFO 메모리 회로(150)는 제어 비트 및 데이타 비트용의 스토리지 로케이션들을 포함할 수 있다.
더욱이, FIFO 메모리(100)의 입력 및 출력들은 직렬 및/또는 병렬 입력/출력일 수 있다. 예를 들면, 버퍼 입력 라인(138)은 8 비트 병렬 입력일 수 있으며, 전송 길이 입력 라인들(130, 132, 134)의 각각은 직렬 입력 라인일 수 있다.
도 2는 도 1의 FIFO 메모리에 사용될 수 있는 메모리 회로 구성을 도시하는 블록도이다. 듀얼 포트 RAM(200)은 제어 비트(210) 및 데이타 비트(250)를 포함한다. 제어 비트는 데이타 비트(250)에 저장된 데이타가 대응하는 데이타 전송들을 식별하는 태그들을 저장하는데 사용될 수 있다(예를 들어, 5 비트 PCI-X 태그).
대안으로, 제어 비트(210)는 태그들을 저장하는데 사용되는 데이타 비트(250)를 식별하는데 사용될 수 있다. 예를 들면, 제어 비트(212)는 데이타 비트(252)가 데이타 태그를 포함하는 것을 나타낸다. 이 방식으로, 서로 다른 전송들을 위한 데이타들은 그들이 수신될 때 메모리에 저장될 수 있으며, 큰 태그 값들(예를 들어, 24 비트 태그들)은 큰 수의 제어 비트들을 필요로 하지 않으면서 저장될 수 있다. 예를 들면, 제어 비트(212)는 트랜잭션을 위한 데이타의 시작을 식별하고, 데이타 비트(252)는 이 트랜잭션을 데이타 전송 A에 속하는 것으로서 식별한다. 제어 비트(214)는 이 데이타 트랜잭션의 종료를 식별한다. 제어 비트(216)는 다른 트랜잭션을 위한 데이타의 시작을 식별하고, 데이타 비트(256)는 이 트랜잭션을 데이타 전송 B에 속하는 것으로서 식별한다. 제어 비트(218)는 또 다른 트랜잭션을 위한 데이타의 시작을 식별하고, 데이타 비트(258)는 이 트랜잭션을 데이타 전송 A에 속하는 것으로서 식별한다.
이러한 방식으로 데이타 태그들이 FIFO 메모리에 저장되는 경우에, 양의 버퍼 영역의 크기는 FIFO 오버플로우를 방지하기 위해 사용될 수 있다. 예를 들면, PCI-X에 있어서, 각 트랜잭션은 트랜잭션이 속하는 시퀀스를 식별하는 태그를 포함 한다. 단일의 시퀀스는 하나의 트랜잭션 또는 다수의 트랜잭션들로 구성될 수 있다. 양의 버퍼 영역은 각 시퀀스와 연관된 가변하는 수의 태그들의 스토리지를 차지하는 공간(room)을 생성한다.
듀얼 포트 RAM(200)은 1280 X 80일 수 있다. 제어 비트(210)는 16 비트 폭일 수 있으며, 데이타 비트(250)는 64 비트 폭일 수 있다. 제어 비트는 패리티 비트들(예를 들어, 8 패리티 비트들, 데이타의 각 바이트당 하나), 유효 비트들(예를 들어, 데이타의 바이트들이 유효함을 지정하는 3개의 유효 비트들), 및 구분자(delimiter) 비트들(예를 들어, 데이타 비트들이 블록에 태그, 데이타 또는 데이타의 최종 워드들을, 가능한 그외의 정보와 함께 포함하는지의 여부를 지정하는 4개의 구분자 비트들)을 포함할 수 있다. 제어 비트는 또한 오버플로우 상태 비트를 포함할 수 있으며, 이 오버플로우 상태 비트는 풀 플래그를 갖는 기입 데이타가 설정될 때 설정된다. 이 상황에서, 에러 복구가 트리거될 수 있으며, 오버플로우 상태 비트들은 에러 복구 중에 사용될 수 있다.
도 3A는 다수의 데이타 전송들에 대한 전송 길이 요청들을 수신하고 데이타 전송을 허가하는 FIFO 메모리에서 수행된 동작들을 도시하는 혼합된 흐름도 및 상태도이다. FIFO 메모리는 유휴 상태(300)를 갖는다. 이 상태(300)로부터, 전송 길이 입력 라인 상에 요청이 어써트되는 경우, 305에서 현재의 전송 요청은 수신된다. 현재의 전송 요청은 데이타 전송 길이 요청을 나타낸다. 예를 들면, 요청되는 전송 길이를 나타내는 값은 FIFO 메모리로 래치될 수 있다.
그 다음에, 310에서 요청 내의 현재의 전송량은 이전에 예약된 FIFO 공간의 양과 비교된다. 상술한 바와 같이, 이전에 예약된 양은 하나 이상의 기존 데이타 전송들에 대한 예약 양들 및 버퍼 영역에 대해 지정된 양 모두를 포함할 수 있다. 다음에, 전송량에 예약된 양을 합한 값(승낙된 전송 요청(들) 더하기 임의의 버퍼 공간(양 또는 음))이 FIFO 메모리에서 이용가능한 공간과 같거나 작은 경우에만, 예를 들어 준비 플래그를 어써트함으로써, 현재의 요청에 대한 데이타의 검색이 개시된다.
데이타가 FIFO 메모리에 기입될 때, 320에서는 수신된 데이타에 대응하는 예약된 FIFO 공간은 감소된다. 예를 들면, FIFO 메모리로 기입되고 있는 데이타에 대응하는 래치-인(latch-in) 전송 길이 값은 FIFO 메모리에서의 그것의 스토리지 로케이션에서 감소된다. 또한, 데이타가 FIFO 메모리에 기입될 때, 이용가능한 FIFO 공간은 325에서 감소된다. FIFO 메모리로부터 데이타를 판독할 때는, 이용가능한 FIFO 공간은 330에서 증분된다.
도 3B는 프로그램가능한 버퍼 영역을 갖는 FIFO 메모리를 구성하는 것을 도시하는 흐름도이다. 350에서, 인터리브된 동시 트랜잭션들에 대한 하나 이상의 데이타 기입 레이트들은 식별된다. 이것은 이러한 데이타가 저장되는 정의된 로케이션을 액세스하는 것, 그러한 데이타를 요청하는 것, 및/또는 다른 소스로부터 이러한 데이타를 수신하는 것을 수반할 수 있다. 예를 들면, PCI-X에 있어서, 가능한 데이타 기입 레이트들은 PCI-X 표준에 의해 정의된다. 이 기입 레이트들, 또는 이 레이트들의 서브세트는 펌웨어 및/또는 소프트웨어로 저장될 수 있다.
다음에, 355에서 프로그램가능한 버퍼 영역을 갖는 FIFO 메모리로부터 판독 되어질 데이타를 위해 하나 이상의 데이타 판독 레이트들이 식별된다. FIFO 메모리는 다양한 클럭 주파수에서 구동되도록 만들어질 수 있는 클럭 도메인을 포함하는 시스템의 부분일 수 있다. 또한, FIFO 메모리는 다수의 프로세서들에 의해 판독될 수 있다.
마지막으로, 식별된 하나 이상의 데이타 기입 레이트들 및 하나 이상의 데이타 판독 레이트들에 기초하여, 360에서 버퍼 영역의 크기가 설정된다. 이 프로세스는 FIFO 깊이의 동적인 크기측정을 가능하게 하고, FIFO 메모리를 공유가능하게 만든다. FIFO 메모리의 프로그램가능한 버퍼 영역이 양 또는 음의 값 중 어느 하나로서 지정될 수 있기 때문에, FIFO 메모리는 서로 다른 판독 및 기입 데이타 레이트들의 다양한 조합에서 동작하도록 효과적으로 조정될 수 있다.
도 4A는 버스 어댑터를 도시하는 블록도이다. 버스 어댑터는 시스템-상호접속(system-interconnect) 버스 인터페이스(407)와 스토리지 커넥션(417)을 사용하여 시스템-상호접속 버스와 스토리지 사이의 인터페이스를 제공한다. 버스 어댑터(400)는 네트워크 서버와 같은 컴퓨팅 시스템을 스토리지 영역 네트워크(storage area network)에 접속하는데 사용될 수 있으며, 이하에서 더 설명될 것이다. 버스 어댑터(400)는 버스 데이타 송신 FIFO(405)를 포함하며, 이것은 상술된 기능을 포함한다. 따라서, 시스템-상호접속 버스는 인터리브된 다수의 동시 트랜잭션들을 사용하는 데이타 전송들을 제공하는 PCI-X 버스일 수 있다.
버스 어댑터(400)는 송신 프로세서를 포함하며 버스 데이타 송신 FIFO(405)에 결합되어 있는 관리 회로(도시되지 않음)를 포함할 수 있다. 이 관리 회로는 버스 데이타 송신 FIFO(405)의 활동들을 조정할 수 있으며, 버스 데이타 송신 FIFO(405)와 버스 어댑터(400)의 나머지 사이의 인터페이스를 제공하여, 시스템-상호접속 버스 인터페이스(407)로부터 데이타 상에서 작용하는 그외의 논리 블록들로의 데이타의 전송을 가능하게 한다. 예를 들면, 송신 프로세서는 버스 데이타 송신 FIFO(405)로의 명령어들을 래치-인하는데 사용될 수 있으며, 버스 데이타 송신 FIFO(405)로 데이타의 길이를 식별하여 시스템-상호접속 버스, 소스 메모리 어드레스, 및 로컬 메모리(410)의 목적지 어드레스를 획득한다. 이 관리 회로 기능은 FIFO(405)로 통합될 수 있다.
버스 데이타 송신 FIFO(405)가 그것이 데이타 전송 요청을 처리하기에 충분한 공간을 가졌다고 결정하면, 버스 데이타 송신 FIFO(405)는, 시스템-상호접속 버스 인터페이스(407)에 대한 액세스를 제어하는 DMA(Direct Memory Access) 중재기(440)로부터 데이타 전송을 요청한다. DMA 중재기(440)가 FIFO(405)에 시스템-상호접속 버스 인터페이스(407)를 제공하면, FIFO(405)로 데이타가 기입된다.
데이타는 FIFO(405)로부터 판독되어 메모리(410)로 기입된다. 메모리(410)로부터, 페이로드 송신 FIFO(415)로 데이타가 기입되고, 그 다음에 데이타는 스토리지 커넥션(417)(예를 들어, 네트워크 인터페이스를 사용하여 송신된 데이타 패킷들로서) 상에서 FIFO(415)로부터 판독된다. 스토리지 커넥션(417)은 파이버 채널 스토리지 영역 네트워크와 같은 스토리지 영역 네트워크로 연결하는 네트워크 인터페이스의 일부분일 수 있다.
데이타는 스토리지 커넥션(417)을 통하여 페이로드(payload) 수신 FIFO(430) 로 교대로 수신되고 메모리(410)에 전송될 수 있다. 이 데이타는 그 다음에 버스 데이타 수신 FIFO(432)로 기입되고, FIFO(405)로부터 시스템-상호접속 버스 인터페이스(407) 상으로 판독될 수 있다.
버스 어댑터(400)는 반도체 기판 상에 집적 회로로서 형성될 수 있으며, 버스 어댑터(400) 및 레지스터 버스(422)의 활동을 조정하고 편성하기 위한 제어기와 같은 다양한 컴포넌트들을 포함할 수 있다. 또한, 버스 어댑터(400)는 대형 시스템의 일부분일 수 있다.
도 4B는 일 구현에 따른 호스트 버스 어댑터 카드(450)를 도시하는 블록도이다. 호스트 버스 어댑터 카드(450)는 기존의 컴퓨팅 시스템으로 삽입되도록 구성되어 스토리지 영역 네트워크에 인터페이스를 제공하고, 블록-레벨 입력/출력(I/O) 서비스들을 제공한다. 호스트 버스 어댑터(450)는 SA-110 StrongARM 프로세서일 수 있는 프로세서(455)를 포함하며, 이것은 미국 95052-8119 캘리포니아주 산타클라라 미션 콜리지 불러바드 2200에 위치한 인텔사(Intel Corporation)에 의해 제공된 것이다.
호스트 버스 어댑터(450)는 또한 불휘발성 메모리(460) 및 휘발성 메모리(465)를 포함한다. 이 메모리들은 상술한 방법을 구현하기 위한 명령어들을 저장하는데 사용될 수 있다. 불휘발성 메모리(460)는 플래시 메모리일 수 있다. 휘발성 메모리(465)는 예를 들어 전용 판독 포트 및 전용 기입 포트를 갖는 QDR(Quad Data Rate) SRAM과 같은 고속-SRAM(Static Random Access Memory) 계열의 메모리 장치일 수 있다. 휘발성 메모리(465)는 네트워크와 버스 콘택스트 정보 및 프로세서 데이타(예를 들어, 코드, 스택 및 스크래치 데이타)를 저장하는 것 뿐만 아니라 송신 및 수신 페이로드 데이타를 저장하는데 사용될 수 있다.
호스트 버스 어댑터(450)는 또한 버스 어댑터 ASIC(application specific integrated circuit)(470)을 포함한다. 이 버스 어댑터 ASIC(470)은 프로세서(455), 불휘발성 메모리(460) 및 휘발성 메모리(465)를 버스 인터페이스(475) 및 네트워크 인터페이스(480)와 연결시킨다. 버스 어댑터 ASIC(470)은 도 4A와 관련하여 도시되고 위에 서술된 것들을 포함하는 다양한 회로 컴포넌트들을 사용하여 구현될 수 있으며, 다수의 제조업자들의 설계들을 에뮬레이트하도록 만들어져서 호스트 버스 어댑터(450)에 연결된 다양한 컴포넌트들과의 상호운영성(interoperability)을 개선시킬 수 있다.
버스 인터페이스(475)는 PCI-X 버스와 접속되도록 구성될 수 있다. 네트워크 인터페이스(480)는 파이버 채널 네트워크와 접속되도록 구성될 수 있다.
위에서 도 4A 및 도 4B와 관련하여 도시되고 기술된 버스 어댑터들은 실시예로서 제공된다. 완전히 다른 장치들 뿐만 아니라 그외의 버스 어댑터들은 여기에서 서술되는 시스템 및 기술들을 사용할 수 있다. 일반적으로, 버스 어댑터는 서버같은 데이타 프로세싱 시스템과 스토리지 사이의 I/O 프로세싱 및 물리적 접속성을 제공한다. 스토리지는 다양한 직접 부착 또는 스토리지 네트워크 기술들을 사용하여 부착될 수 있으며, 이들은 파이버 채널, iSCSI(Small Computer System Interface over Internet Protocol), VI/VP(Virtual Interface over Internet Protocol), FICON(Fiber Connection), 또는 SCSI(Small Computer System Interface)를 포함한다. 버스 어댑터는 I/O 프로세싱 성능을 제공하며, 버스 어댑터가 부착되는 데이타 프로세싱 시스템의 중앙 프로세서 상의 처리 부하를 감소시킨다.
대조적으로, 네트워크 인터페이스 카드는 일반적으로 프로토콜 프로세싱을 위한 시스템의 중앙 프로세서에 크게 의존하며, 패킷 시퀀스 순서 유지, 세그먼트화(segmentation) 및 재조합(re-assembly), 에러 검출 및 정정, 및흐름 제어와 같은 기능들을 포함한다. 버스 어댑터는 시스템 내의 중앙 프로세서를 연루되지 않게 하거나 적게 연루시켜 전체의 I/O 트랜잭션들을 관리한다. 위의 도 4B에 도시되고 서술된 예시의 호스트 버스 어댑터에 있어서, 호스트 버스 어댑터는 프로세서, 프로토콜 제어기 ASIC, 및 데이타 흐름을 유지하기 위한 버퍼 메모리를 포함한다. 이 호스트 버스 어댑터는 병렬 I/O 채널(예를 들어, PCI-X)로부터 블록 레벨 데이타를 취하여 그것을 라우팅가능한 프로토콜(예를 들어, 파이버 채널)에 매핑한다.
도 5는 예시의 데이타 프로세싱 시스템을 도시하는 블록도이다. 데이타 프로세싱 시스템(500)은 중앙 프로세서(510)를 포함하며, 이 중앙 프로세서(510)는 프로그램을 실행하고, 데이타 조작을 수행하며, 시스템(500)의 작업들을 제어한다. 중앙 프로세서(510)는 다수의 프로세서들 또는 프로세싱 유닛들을 포함할 수 있으며, 단일 칩(예를 들어, 마이크로프로세서 또는 마이크로제어기)에 또는 하나 이상의 인쇄 회로 기판 및/또는 그외의 프로세서간 통신(inter-processor communication) 링크들(즉, 다수의 프로세서 시스템을 구성하는 2개 이상의 이산 프로세서들(discrete processors))을 사용하여 멀티 칩에 하우징될 수 있다.
중앙 프로세서(510)는 시스템-상호접속 버스(515)에 결합되어 있다. 시스템-상호접속 버스(515)는 시스템(500)의 일부분 중에서 그것을 통하여 데이타를 송신하는 하나 이상의 경로들을 제공한다. 시스템-상호접속 버스(515)는 병렬 및/또는 직렬 버스들일 수 있는 다수의 개별적인 버스들, 버스 인터페이스들, 및/또는 버스 브리지들(bus bridges)을 포함할 수 있다. 각 버스는 어드레스 버스 및 데이타 버스를 가질 수 있다. 시스템-상호접속 버스(515)는 내부 컴포넌트들을 중앙 프로세서(510) 및 메모리에 연결하기 위한 내부 버스, 및 확장 보드 및/또는 주변 장치들을 중앙 프로세서(510)에 연결하기 위한 확장 버스를 포함한다. 시스템-상호접속 버스(515)는 PCI-X와 같이, 인터리브된 다수의 동시 트랜잭션들을 사용하여 데이타 전달을 가능하게 하는 적어도 하나의 버스 아키텍처를 포함하며, 임의의 그외의 공지된 버스 아키텍처(예를 들어, PCI, ISA(industry standard architectures), EISA(확장 ISA), AGP(Accelerated Graphics Port), USB(Universal Serial Bus), SCSI, 미래의 버스 아키텍처들)를 더 포함할 수 있다.
데이타 프로세싱 시스템(500)은 시스템-상호접속 버스(515)와 결합되어 있는 메모리(520)를 포함한다. 시스템(500)은 또한 하나 이상의 캐쉬 메모리들을 포함할 수 있다. 이 메모리 장치들은 검색 및 실행을 위해 명령어들 및 데이타의 스토리지를 중앙 프로세서(510)에 가깝게 할 수 있다.
메모리(520)는 불휘발성 메모리 및 휘발성 메모리를 포함할 수 있다. 예를 들면, 불휘발성 메모리는 시스템 펌웨어를 저장하는데 사용될 수 있으며, 이 시스 템 펌웨어는 데이타 프로세싱 시스템(500)의 초기화, 및 미국 98052-6399 워싱턴주 원 마이크로스프트 웨이 레드몬드에 위치한 마이크로소프트사(Microsoft Corporation)가 제공한 Windows? NT 4.0 Enterprise Edition 등의 오퍼레이팅 시스템(OS)의 로딩을 처리하는데 사용될 수 있다. 저장된 데이타를 보유하기 위하여 일정한 전기의 흐름을 요구하는 휘발성 메모리는 일단 시스템(500)이 기동하면 명령어들 및 데이타를 저장하는데 이용될 수 있다.
데이타 프로세싱 시스템(500)은 시스템(500) 또는 시스템(500)의 컴포넌트들이 동작들을 수행하게 하기 위한 명령어들과 같은 기계 명령어들을 포함하는 기계-판독가능한 매체인 매체(535)를 액세스하기 위한 스토리지 장치(530)를 포함할 수 있다. 매체(535)는 제거가능하며, OS 명령어들을 갖는 부트 매체(boot media) 및 시스템(500)이 부팅되었을 때 휘발성 메모리로 로드되는 데이타를 포함할 수 있다. 매체(535)는 판독 전용(read-only) 또는 판독/기입 매체일 수 있으며, 자기 계열(magnetic-based), 광 계열(optical-based), 반도체 계열 매체, 또는 이들의 조합일 수 있다. 스토리지(530) 및 매체(535)의 예들은 제거할 수 있는 하드 디스크 드라이브 및 하드 디스크 플래터들(platters), 플로피 디스크 드라이브 및 플로피 디스크, 테이프 드라이브 및 테이프, 광 디스크 드라이브 및 광 디스크(예를 들어, 레이저 디스크, 콤팩트 디스크, 디지탈 다기능 디스크(digital versatile disk))를 포함한다.
데이타 프로세싱 시스템(500)은 또한 하나 이상의 주변 장치들(540(1)- 540(n))(집합적으로, 장치들(540)), 하나 이상의 제어기들 및/또는 인터페이스 기능을 제공하기 위한 어댑터들을 포함할 수 있다. 장치들은 상술한 추가의 스토리지 장치들 및 매체들, 그외의 스토리지 인터페이스 및 스토리지 유닛들, 어댑터들, 입력 장치들 및/또는 출력장치들일 수 있다. 예를 들면, 시스템(500)은 디스플레이 장치(예를 들어, 디스플레이를 구동하기 위한, VRAM(video random access memory), 버퍼, 및 그래픽 엔진을 포함하는 컴포넌트들을 갖는 비디오 디스플레이 어댑터)를 갖는 디스플레이 시스템을 포함할 수 있다.
시스템(500)은 또한 시스템(500)과 외부 장치들, 네트워크들 또는 정보 소스들 사이에서 소프트웨어 및 데이타를 신호(554)의 형태로 전송될 수 있게 하는 통신 인터페이스(550)를 포함한다. 신호(554)는 채널(552)(예를 들어, 배선, 케이블, 광 파이버, 전화선, IR(infrared) 채널, RF(radio frequency) 채널 등) 상에서 수신될 수 있는 임의의 신호(예를 들어, 전기, 전자기, 광학)일 수 있다. 신호(554)는 시스템(500) 또는 시스템(500)의 컴포넌트들이 동작을 수행하게 하는 명령어들을 구현할 수 있다.
통신 인터페이스(550)는 통신 포트, 전화 모뎀 또는 무선 모뎀일 수 있다. 통신 인터페이스(550)는 네트워크 인터페이스 카드(예를 들어, 이더넷 허브(Ethernet Hub)와 연결된 이더넷 카드)일 수 있으며, 특정 유형의 네트워크, 프로토콜 및 채널 매체용으로 설계될 수 있거나, 또는 다수의 네트워크들, 프로토콜들 및/또는 채널 매체에 소용이 되도록 설계될 수 있다.
또한, 시스템(500)은 소프트웨어 및 데이타가 시스템(500)과 스토리지 영역 네트워크 사이에서 신호(564)의 형태로 전송되도록 하는 스토리지 네트워크 인터페이스(560)를 포함한다. 신호(564)는 채널(562) 상에서 송신되고 수신될 수 있는, 신호(554)와 같은 임의의 신호일 수 있다. 신호(564)는 시스템(500), 또는 스토리지 네트워크 인터페이스(560)같은 시스템(500)의 컴포넌트들이 동작을 수행하게 하는 명령어들을 구현할 수 있다. 스토리지 네트워크 인터페이스(560)는 예를 들어 위에서 도 4B와 관련하여 도시되고 설명된 호스트 버스 어댑터일 수 있다.
전체적으로 보았을 때, 시스템(500)은 프로그램가능한 기계이다. 시스템(500)이 나타내는 예시의 기계들은 서버(예를 들어, 네트워크 호스트), 퍼스널 컴퓨터, 메인프레임, 및 슈퍼 컴퓨터를 포함한다. 기계(500)는 내장된 제어기들, PLD(Programmable Logic Devices)(예를 들어, PROM(Programmable Read Only Memory), PLA(Programmable Logic Array), GAL/PAL(Generic Array Logic/Programmable Array Logic)), FPGA(Field Programmable Gate Arrays), ASIC, 단일 칩 컴퓨터들, 스마트 카드들 등과 같은 다양한 장치들을 포함할 수 있다.
기계 명령어들은(프로그램, 소프트웨어, 소프트웨어 어플리케이션 또는 코드로서도 알려짐) 스토리지 네트워크 인터페이스(480)에서 기계(500)에 저장될 수 있으며, 및/또는 통신 인터페이스를 통하여 기계(500)에 전달될 수 있다. 이들 명령어들은, 실행될 때, 기계(500)가 상술한 특징들 및 기능들을 수행하게 한다. 이 명령어들은 기계(500)의 제어기들을 나타내며, 높은 레벨의 절차적 및/또는 객체 지향의 프로그래밍 언어로, 및/또는 어셈블리/기계 언어로 구현될 수 있다. 이러한 언어들은 컴파일 언어 및/또는 인터프리트(interpreted) 언어일 수 있다.
여기에서 사용되는 바와 같이, 용어 "기계-판독가능한 매체"는 임의의 컴퓨터 프로그램 제조물, 기계 명령어들 및/또는 데이타를 기계(500)에 제공하기 위해 사용된 기구(apparatus) 및/또는 장치를 나타내며, 기계 명령어들을 기계-판독가능한 신호로서 수신하는 기계-판독가능한 매체를 포함한다. 기계-판독가능한 매체의 예로는 매체(535) 및 유사물, 메모리(520), 및/또는 PLD, FPGA, ASIC 등을 포함한다. 용어 "기계-판독가능한 신호"는 기계(500)에 기계 명령어들 및/또는 데이타를 제공하기 위해 사용된, 신호(554) 등의 임의의 신호를 나타낼 수 있다.
도 6은 일 구현에 따른 FIFO 메모리를 위한 동작 환경을 도시하는 블록도이다. 다수의 서버들(600)은 스토리지 영역 네트워크에 연결되어 있다. 각 서버(600)는 위에서 도시되고 설명된 방식으로 구현될 수 있다. 예를 들면, 서버(600)는 4개의 550-MHz Pentium? Ⅲ Xeon™ 프로세서들 및 1GB (기가바이트) RAM을 갖는 Intel? AC450NX 시스템일 수 있거나, 또는 서버(600)는 8개의 550-MHz Pentium? Ⅲ Xeon™ 프로세서들 및 1GB RAM을 갖는 Intel? OCPRF100 시스템일 수 있다.
스토리지 영역 네트워크는 다수의 스토리지 장치들(610) 및 스토리지 네트워크(620)를 포함한다. 스토리지 네트워크(620)는 데이타 스토리지에 전용인 고속의 네트워크일 수 있다. 예를 들면, 스토리지 네트워크(620)는, 예를 들어 파이버 채널 중개 루프(Fibre Channel Arbitrated Loop) 또는 파이버 채널 스위치 구조(Fibre Channel Switched Fabric) 등의 파이버 채널 네트워크일 수 있다. 각 스토리지 장치(610)는 SCSI, PCI-X 또는 그외의 버스 아키텍처를 사용하는 스토리지 어레이, JBOD(Just a Bunch of Disks), RAID(Redundant Array of Inexpensive Disks) 인클로져, 또는 그외의 대용량의 스토리지 장치일 수 있다. 일반적으로, 스토리지 장치(610)는 위에서 정의된 바와 같이 적어도 하나의 기계-판독가능한 매체를 포함하며, 스토리지 영역 네트워크는 서버(600)용의 공유된 스토리지 장치(610)에 대한 블록 레벨의 I/O 액세스를 포함한다.
서버(600)는 네트워크(630)에 연결되어 있으며, 네트워크(630)는 이더넷 네트워크, IP(Internet Protocol) 네트워크 및 ATM(Asynchronous Transfer Mode) 네트워크 등의 다수의 기계 네트워크들을 포함할 수 있다. 네트워크(630)는 개인용 네트워크, 가상의 개인용 네트워크, 기업 네트워크, 공중 네트워크 및/또는 인터넷일 수 있다. 네트워크(630)는 다수의 클라이언트(640)와 서버(600) 사이의 통신 링크를 제공한다.
여기에서 서술된 시스템 및 기술들의 다양한 구현들은 디지탈 전자 회로, 집적 회로, 특수 설계의 ASIC(application specific integrated circuits), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합으로 실현될 수 있다. 상술된 다양한 구현들은 오직 예시로서 제공된 것이며, 한정을 하는 것은 아니다. 그외의 시스템들, 아키텍처들, 및 도시된 장치들, 기계들 및 시스템들의 변경들 및/또는 재구성이 또한 가능하다.
이하의 특허청구범위의 범위 내에서 그외의 실시예들이 있을 수 있다.

Claims (35)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 인터리브된 다수의 동시 트랜잭션들로부터 수신되어, 프로그램가능한 버퍼 영역을 갖는 FIFO 메모리로 기입되어질 데이타에 대한 하나 이상의 데이타 기입 레이트들을 식별하는 단계;
    상기 FIFO 메모리로부터 판독될 데이타에 대한 하나 이상의 데이타 판독 레이트들을 식별하는 단계; 및
    상기 식별된 하나 이상의 데이타 기입 레이트들과 상기 하나 이상의 데이타 판독 레이트들에 기초하여 상기 FIFO 메모리의 상기 프로그램가능한 버퍼 영역에 대해 버퍼 영역의 크기를 설정하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서,
    상기 하나 이상의 데이타 기입 레이트들을 식별하는 단계는, 시스템-상호접속 버스를 통해 수신될 데이타에 대한 하나 이상의 데이타 기입 레이트들을 식별하는 단계를 포함하는 방법.
  10. 제9항에 있어서,
    상기 버퍼 영역의 크기를 설정하는 단계는 상기 버퍼 영역의 크기를 음수(negative number)로 설정하는 단계를 포함하는 방법.
  11. 제10항에 있어서,
    상기 하나 이상의 데이타 판독 레이트들을 식별하는 단계는 2개 이상의 데이타 판독 레이트들을 식별하는 단계를 포함하는 방법.
  12. 제11항에 있어서,
    상기 시스템-상호접속 버스는 PCI 확장 버스를 포함하는 방법.
  13. 제12항에 있어서,
    상기 하나 이상의 데이타 기입 레이트들을 식별하는 단계 및 상기 하나 이상의 데이타 판독 레이트들을 식별하는 단계는 디폴트 레이트들(default rates)을 식별하는 단계를 포함하는 방법.
  14. FIFO(first in first out) 메모리에 있어서,
    메모리 회로; 및
    상기 메모리 회로에 결합된 제어 회로 - 상기 제어 회로는 상기 메모리 회로 내의 이용가능한 공간을 탐지하기 위한 차동 회로, 다수의 데이타 전송을 위한 메모리 공간 요청들을 수신하기 위한 전송 길이 입력 라인들, 및 상기 메모리 공간요청들의 합이 상기 이용가능한 공간을 초과하는지의 여부를 나타내는 준비된 출력 라인을 포함함 -
    을 포함하는 메모리.
  15. 제14항에 있어서,
    상기 메모리 회로는 제어 비트들 및 데이타 비트들을 포함하는 메모리.
  16. 제15항에 있어서,
    상기 제어 회로는 버퍼 영역의 크기를 수신하기 위한 하나 이상의 버퍼 입력 라인들을 더 포함하며, 상기 준비된 출력 라인은 상기 버퍼 영역의 크기와 상기 메모리 공간 요청들의 합이 상기 이용가능한 공간을 초과하는지의 여부를 나타내는 메모리.
  17. 제16항에 있어서,
    데이타 압축 회로 및 데이타 복원 회로를 더 포함하는 메모리.
  18. 제16항에 있어서,
    상기 제어 회로는 상기 수신된 버퍼 영역의 크기를 유지하기 위한 레지스터 세트를 더 포함하며, 상기 레지스터 세트는 버퍼 영역의 크기의 큰 변화를 나타내기 위한 프로그램가능한 비트 패턴들을 포함하는 메모리.
  19. 제16항에 있어서,
    상기 메모리 회로는 듀얼 포트 랜덤 액세스 메모리를 포함하는 메모리.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 프로세서;
    상기 프로세서에 결합된 어댑터 메모리;
    FIFO 메모리를 통하여 상기 어댑터 메모리에 결합된 버스 인터페이스 - 상기 버스 인터페이스는 다수의 동시 데이타 전송들을 지원함 -;
    상기 어댑터 메모리에 결합된 스토리지 커넥션(storage connection);
    상기 버스 인터페이스와 상기 어댑터 메모리에 결합된 상기 FIFO 메모리 - 상기 FIFO 메모리는 메모리 회로 및 제어 회로를 포함하고, 상기 제어 회로는 상기 메모리 회로 내의 이용가능한 공간을 탐지하기 위한 차동 회로, 다수의 데이타 전송을 위한 메모리 공간 요청들을 수신하기 위한 전송 길이 입력 라인들, 버퍼 영역의 크기를 수신하기 위한 하나 이상의 버퍼 입력 라인들 및 상기 버퍼 영역 크기와 상기 메모리 공간 요청들의 합이 상기 이용가능한 공간을 초과하는지의 여부를 나타내는 준비된 출력 라인을 포함함 - ; 및
    상기 FIFO 메모리와 결합되어 있으며, 상기 전송 길이 입력 라인들에 상기 메모리 공간 요청들을 제공하고 상기 다수의 데이타 전송들의 개시를 조정하기 위한 관리 회로
    를 포함하는 버스 어댑터.
  25. 제24항에 있어서,
    상기 메모리 회로는, 상기 메모리 회로에 저장된 데이타 트랜잭션들을 식별하는 태그들을 저장하기 위한 제어 비트들 및 데이타 비트들을 포함하는 버스 어댑 터.
  26. 제25항에 있어서,
    상기 버스 인터페이스는 PCI 확장 버스 표준을 따르는 버스 어댑터.
  27. 제26항에 있어서,
    상기 스토리지 커넥션은 파이버 채널(Fibre Channel) 표준을 따르는 네트워크 인터페이스를 포함하는 버스 어댑터.
  28. 제27항에 있어서,
    상기 관리 회로는 상기 FIFO 메모리에 의해 스킵된 메모리 공간 요청들을 저장하기 위한 레지스터 블록을 포함하는 버스 어댑터.
  29. 제28항에 있어서,
    상기 FIFO 메모리는 데이타 압축 회로 및 데이타 복원 회로를 더 포함하는 버스 어댑터.
  30. 인터리브된 다수의 동시 트랜잭션들을 지원하는 시스템-상호접속 버스를 포함하는 프로그램가능한 기계;
    스토리지 영역 네트워크; 및
    상기 시스템-상호접속 버스 및 상기 스토리지 영역 네트워크에 결합되어 있는 버스 어댑터 - 상기 버스 어댑터는 프로세서, 상기 프로세서에 결합된 어댑터 메모리, 및 상기 시스템-상호접속 버스 및 FIFO 메모리를 통하여 상기 어댑터 메모리에 결합되는 버스 인터페이스를 포함하고, 상기 FIFO 메모리는 메모리 회로 및 제어 회로를 포함하며, 상기 제어 회로는 상기 메모리 회로 내의 이용가능한 공간을 탐지하기 위한 차동 회로, 다수의 데이타 전송들을 위한 메모리 공간 요청들을 수신하기 위한 전송 길이 입력 라인들, 및 상기 메모리 공간 요청들의 합이 상기 이용가능한 공간을 초과하는지의 여부를 나타내는 준비된 출력 라인을 포함함 -
    를 포함하는 시스템.
  31. 제30항에 있어서,
    상기 메모리 회로는, 상기 메모리 회로에 저장된 데이타 트랜잭션들을 식별하기 위한 태그들을 저장하는 제어 비트들 및 데이타 비트들을 포함하는 시스템.
  32. 제31항에 있어서,
    상기 제어 회로는 버퍼 영역 크기를 수신하기 위한 하나 이상의 버퍼 입력 라인들을 더 포함하며, 상기 준비된 출력 라인은 상기 버퍼 영역의 크기와 상기 메모리 공간 요청들의 합이 상기 이용가능한 공간을 초과하는지의 여부를 나타내는 시스템.
  33. 제32항에 있어서,
    상기 제어 회로는 상기 수신된 버퍼 영역의 크기를 유지하기 위한 레지스터 세트를 더 포함하며, 상기 레지스터 세트는 버퍼 영역의 크기의 큰 변화를 나타내기 위한 프로그램가능한 비트 패턴들을 포함하는 시스템.
  34. 제32항에 있어서,
    상기 시스템-상호접속 버스는 PCI 확장 버스(Peripheral Component Interconnect Extended bus)를 포함하는 시스템.
  35. 제32항에 있어서,
    상기 스토리지 영역 네트워크는 파이버 채널 네트워크 및 복수의 대용량 스토리지 장치들을 포함하는 시스템.
KR1020047009125A 2001-12-11 2002-05-09 Fifo 메모리에서 인터리브된 다수의 동시트랜잭션으로부터의 데이타의 수신 KR100954904B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US33964301P 2001-12-11 2001-12-11
US60/339,643 2001-12-11
US10/120,733 US7080169B2 (en) 2001-12-11 2002-04-10 Receiving data from interleaved multiple concurrent transactions in a FIFO memory having programmable buffer zones
US10/120,733 2002-04-10
PCT/US2002/014815 WO2003050684A1 (en) 2001-12-11 2002-05-09 Receiving data from interleaved multiple concurrent transactions in a fifo memory

Publications (2)

Publication Number Publication Date
KR20040080436A KR20040080436A (ko) 2004-09-18
KR100954904B1 true KR100954904B1 (ko) 2010-04-27

Family

ID=26818705

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047009125A KR100954904B1 (ko) 2001-12-11 2002-05-09 Fifo 메모리에서 인터리브된 다수의 동시트랜잭션으로부터의 데이타의 수신

Country Status (6)

Country Link
US (1) US7080169B2 (ko)
EP (1) EP1463996A1 (ko)
JP (1) JP2005512227A (ko)
KR (1) KR100954904B1 (ko)
CA (1) CA2468232A1 (ko)
WO (1) WO2003050684A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10795614B2 (en) 2018-02-14 2020-10-06 SK Hynix Inc. Memory controller and operating method thereof

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785284B1 (en) * 2000-08-10 2004-08-31 Infineon Technologies North America Corp. Interleavement for transport of frames and cells
US6877049B1 (en) * 2002-05-30 2005-04-05 Finisar Corporation Integrated FIFO memory management control system using a credit value
US6874054B2 (en) * 2002-12-19 2005-03-29 Emulex Design & Manufacturing Corporation Direct memory access controller system with message-based programming
US7380080B2 (en) * 2004-05-17 2008-05-27 Hewlett-Packard Development Company, L.P. Calculating unneeded data storage credits for a data transmission to a pair of storage devices
US9264384B1 (en) 2004-07-22 2016-02-16 Oracle International Corporation Resource virtualization mechanism including virtual host bus adapters
US9813283B2 (en) 2005-08-09 2017-11-07 Oracle International Corporation Efficient data transfer between servers and remote peripherals
US20080235462A1 (en) * 2005-09-20 2008-09-25 Freescale Semiconductor, Inc. Device Having a Low Latency Single Port Memory Unit and a Method for Writing Multiple Data Segments to a Single Port Memory Unit
US8384753B1 (en) 2006-12-15 2013-02-26 At&T Intellectual Property I, L. P. Managing multiple data sources
US8683126B2 (en) * 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
KR101496340B1 (ko) 2008-10-31 2015-03-04 삼성전자주식회사 프로세서 및 메모리 제어 방법
US9489326B1 (en) 2009-03-09 2016-11-08 Cypress Semiconductor Corporation Multi-port integrated circuit devices and methods
US9973446B2 (en) 2009-08-20 2018-05-15 Oracle International Corporation Remote shared server peripherals over an Ethernet network for resource virtualization
US8543838B1 (en) * 2009-12-23 2013-09-24 Marvell International Ltd. Cryptographic module with secure processor
US8942248B1 (en) * 2010-04-19 2015-01-27 Altera Corporation Shared control logic for multiple queues
US9331963B2 (en) 2010-09-24 2016-05-03 Oracle International Corporation Wireless host I/O using virtualized I/O controllers
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN103562866B (zh) * 2011-03-25 2018-03-30 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
US9083550B2 (en) 2012-10-29 2015-07-14 Oracle International Corporation Network virtualization over infiniband
KR101994672B1 (ko) 2012-12-04 2019-07-01 삼성전자 주식회사 저장 장치 및 저장 장치의 동작 방법
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
US9384257B2 (en) 2013-06-24 2016-07-05 International Business Machines Corporation Providing multiple concurrent transactions on a single database schema using a single concurrent transaction database infrastructure
US20150324136A1 (en) * 2014-05-07 2015-11-12 Lsi Corporation Storage system having fifo storage and reserved storage
US9798685B1 (en) 2016-09-22 2017-10-24 International Business Machines Corporation Multi-source data pass through using an elastic FIFO and a completion queue
TWI697003B (zh) * 2018-10-15 2020-06-21 大陸商合肥沛睿微電子股份有限公司 記憶體裝置與控制方法
US10838868B2 (en) 2019-03-07 2020-11-17 International Business Machines Corporation Programmable data delivery by load and store agents on a processing chip interfacing with on-chip memory components and directing data to external memory components
CN110472411B (zh) * 2019-08-20 2021-05-07 杭州和利时自动化有限公司 一种内存溢出处理方法、装置、设备及可读存储介质
US11687246B2 (en) * 2020-09-29 2023-06-27 Western Digital Technologies, Inc. Elastic buffer based asymmetric pipeline FIFO process

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980032148A (ko) * 1996-10-18 1998-07-25 윤종용 바이트-기입가능한 2차원 fifo 버퍼
KR19990034371A (ko) * 1997-10-29 1999-05-15 유기범 카운터를 이용한 데이터 전송 장치
KR20010031430A (ko) * 1997-10-27 2001-04-16 에멀럭스 코포레이숀 상이한 주파수로 동작하는 버스사이에 전송되는 데이터를버퍼링하는 디바이스 및 방법

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4703340A (en) * 1986-05-02 1987-10-27 Rca Corporation Frequency division multiplexed analog to digital converter
US5121479A (en) * 1988-01-27 1992-06-09 Storage Technology Corporation Early start mode data transfer apparatus
US5504899A (en) 1991-10-17 1996-04-02 Digital Equipment Corporation Guaranteeing global serializability by applying commitment ordering selectively to global transactions
US5450546A (en) * 1992-01-31 1995-09-12 Adaptec, Inc. Intelligent hardware for automatically controlling buffer memory storage space in a disk drive
US5388238A (en) * 1992-07-24 1995-02-07 At&T Corp. System and method for monitoring the validity of circulating pointers in a FIFO memory
US5522050A (en) * 1993-05-28 1996-05-28 International Business Machines Corporation Bus-to-bus bridge for a multiple bus information handling system that optimizes data transfers between a system bus and a peripheral bus
US5513126A (en) 1993-10-04 1996-04-30 Xerox Corporation Network having selectively accessible recipient prioritized communication channel profiles
US5975383A (en) * 1993-10-07 1999-11-02 E-Z Bowz, L.L.C. Bow making apparatus
US5561823A (en) * 1994-03-14 1996-10-01 Conner Peripherals, Inc. Monitor system for determining the available capacity of a READ buffer and a WRITE buffer in a disk drive system
JPH08298643A (ja) * 1995-04-25 1996-11-12 Sony Corp 符号化方法および符号化装置、復号化方法および復号化装置、記録媒体、伝送方法、並びに符号化復号化システム
US5761444A (en) 1995-09-05 1998-06-02 Intel Corporation Method and apparatus for dynamically deferring transactions
US6029226A (en) * 1996-09-30 2000-02-22 Lsi Logic Corporation Method and apparatus having automated write data transfer with optional skip by processing two write commands as a single write command
US5860119A (en) * 1996-11-25 1999-01-12 Vlsi Technology, Inc. Data-packet fifo buffer system with end-of-packet flags
US5870567A (en) 1996-12-31 1999-02-09 Compaq Computer Corporation Delayed transaction protocol for computer system bus
JPH11161466A (ja) * 1997-11-27 1999-06-18 Ricoh Co Ltd データ転送制御装置
JPH11175312A (ja) * 1997-12-08 1999-07-02 Ricoh Co Ltd データ転送制御装置
US6044368A (en) 1998-04-30 2000-03-28 Genesys Telecommunications Laboratories, Inc. Method and apparatus for multiple agent commitment tracking and notification
US6263410B1 (en) 1998-09-15 2001-07-17 Industrial Technology Research Institute Apparatus and method for asynchronous dual port FIFO
US6101575A (en) * 1998-10-20 2000-08-08 Hewlett-Packard Company Tape drive data buffering
US6397287B1 (en) * 1999-01-27 2002-05-28 3Com Corporation Method and apparatus for dynamic bus request and burst-length control
US6470463B1 (en) * 1999-03-29 2002-10-22 Inventec Corporation Method and apparatus for testing integrity of data transfer of a hardware
JP2001005724A (ja) * 1999-06-11 2001-01-12 Internatl Business Mach Corp <Ibm> ライト・キャッシュ転送の制御方法およびディスク装置
US6360300B1 (en) * 1999-08-31 2002-03-19 International Business Machines Corporation System and method for storing compressed and uncompressed data on a hard disk drive
US6690523B1 (en) * 2001-04-30 2004-02-10 Western Digital Technologies, Inc. Disk drive for updating operating zone parameters with adapted zone parameters calibrated in the field

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980032148A (ko) * 1996-10-18 1998-07-25 윤종용 바이트-기입가능한 2차원 fifo 버퍼
KR20010031430A (ko) * 1997-10-27 2001-04-16 에멀럭스 코포레이숀 상이한 주파수로 동작하는 버스사이에 전송되는 데이터를버퍼링하는 디바이스 및 방법
KR19990034371A (ko) * 1997-10-29 1999-05-15 유기범 카운터를 이용한 데이터 전송 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10795614B2 (en) 2018-02-14 2020-10-06 SK Hynix Inc. Memory controller and operating method thereof

Also Published As

Publication number Publication date
US20030110364A1 (en) 2003-06-12
EP1463996A1 (en) 2004-10-06
KR20040080436A (ko) 2004-09-18
CA2468232A1 (en) 2003-06-19
WO2003050684A1 (en) 2003-06-19
JP2005512227A (ja) 2005-04-28
US7080169B2 (en) 2006-07-18

Similar Documents

Publication Publication Date Title
KR100954904B1 (ko) Fifo 메모리에서 인터리브된 다수의 동시트랜잭션으로부터의 데이타의 수신
US5870627A (en) System for managing direct memory access transfer in a multi-channel system using circular descriptor queue, descriptor FIFO, and receive status queue
US7010638B2 (en) High speed bridge controller adaptable to non-standard device configuration
US6715023B1 (en) PCI bus switch architecture
US8352689B2 (en) Command tag checking in a multi-initiator media controller architecture
US7496699B2 (en) DMA descriptor queue read and cache write pointer arrangement
US6041397A (en) Efficient transmission buffer management system
US6901451B1 (en) PCI bridge over network
US5752076A (en) Dynamic programming of bus master channels by intelligent peripheral devices using communication packets
US6754735B2 (en) Single descriptor scatter gather data transfer to or from a host processor
US6970921B1 (en) Network interface supporting virtual paths for quality of service
US20090177805A1 (en) Dual port serial advanced technology attachment (sata ) disk drive
US20060230215A1 (en) Elastic buffer module for PCI express devices
US6134625A (en) Method and apparatus for providing arbitration between multiple data streams
US6321233B1 (en) Apparatus for controlling pipelined memory access requests
US7860120B1 (en) Network interface supporting of virtual paths for quality of service with dynamic buffer allocation
US6721815B1 (en) Method and apparatus for iTD scheduling
US7177913B2 (en) Method, system, and program for adding operations identifying data packets to structures based on priority levels of the data packets
US20070150683A1 (en) Dynamic memory buffer allocation method and system
US7802031B2 (en) Method and system for high speed network application
US6453366B1 (en) Method and apparatus for direct memory access (DMA) with dataflow blocking for users
US7870316B1 (en) System and method for providing an inline data conversion for multiplexed data streams
US7917659B2 (en) Variable length command pull with contiguous sequential layout
JPH1040215A (ja) Pciバス・システム
US20030009532A1 (en) Multiprocessor system having a shared main memory

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
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: 20130329

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140312

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141110

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160411

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee