KR100288453B1 - 다수의관련데이타를참조하는데단일포인터를사용하는메모리버퍼시스템 - Google Patents

다수의관련데이타를참조하는데단일포인터를사용하는메모리버퍼시스템 Download PDF

Info

Publication number
KR100288453B1
KR100288453B1 KR1019970708890A KR19970708890A KR100288453B1 KR 100288453 B1 KR100288453 B1 KR 100288453B1 KR 1019970708890 A KR1019970708890 A KR 1019970708890A KR 19970708890 A KR19970708890 A KR 19970708890A KR 100288453 B1 KR100288453 B1 KR 100288453B1
Authority
KR
South Korea
Prior art keywords
buffer
memory
buffers
small
blocks
Prior art date
Application number
KR1019970708890A
Other languages
English (en)
Other versions
KR19990022410A (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 KR19990022410A publication Critical patent/KR19990022410A/ko
Application granted granted Critical
Publication of KR100288453B1 publication Critical patent/KR100288453B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/064Linked list, i.e. structure using pointers, e.g. allowing non-contiguous address segments in one logical buffer or dynamic buffer space allocation

Abstract

분할된 메모리(45)는 다수의 대용량 버퍼(60)로 분할되고, 대용량 버퍼중 하나 이상은 동일수의 소용량 버퍼(65)가 되도록 분할된다. 각각의 나머지 대용량 버퍼는 하나의 소용량 버퍼와 관련되고, 쌍으로 이루어진 버퍼는 단일 포인터에 의해 어드레싱될 수 있다. 포인터는 선입선출 유닛에 기억되어 유용한 버퍼쌍 풀을 생성하게 된다.

Description

다수의 관련 데이타를 참조하는데 단일 포인터를 사용하는 메모리 버퍼 시스템{A MEMORY BUFFER SYSTEM USING A SINGLE POINTER TO REFERENCE MULTIPLE ASSOCIATED DATA}
컴퓨터 시스템은 대체로 시스템의 통신 소자(component)간에 위치되는 메모리를 구비한다. 이 메모리는 통신 소자들 간의 송수신 또는 처리 속도의 차를 보상한다. 메모리에 데이터를 저장함으로써, 느린 속도의 소자에 데이터가 과도하게 유입되지 않으며, 보다 빠른 속도의 소자는 다른 일을 할 수 있다. 더욱이, 메모리는 스위치보드(switch board)로서 작용하고, 적절한 수신 소자에 데이터를 전송할 수 있다. 각각의 전송 소자는 메모리 내에 메세지를 위치시킬 수 있고, 그러면 메모리 제어 회로가 메세지의 어드레스 헤더부를 판독하여 어떤 소자가 그 메세지를 수신할 지를 결정한다.
메모리는 보통 소자간의 데이터 전송을 촉진시키기 위해, 블록, 또는 버퍼로 분할된다. 분할의 첫 번째 이점은 각각의 버퍼가 오직 한 메시지(또는 한 메시지의 일부)만을 포함하고 있으며, 이것은 메모리 제어 프로그램의 속도를 증가시킨다는 데 있다. 더욱이, 많은 통신 프로토콜에서, 각각의 메세지는 최대 길이를 가지는데, 이 최대 길이는 때때로는 프레임 크기(frame size)로 불리어진다. 버퍼의 크기를 프레임 크기와 같게 구성함으로써, 각각의 메세지는 오직 한 버퍼만을 차지할 것이고, 속도를 더 증가시킬 수 있다.
메모리를 버퍼로 분할하는 통상적인 방법은 블록을 같은 크기의 다수의 버퍼[블록화 계수(blocking factor)로 칭함]로 나누는 것이다. 버퍼의 수 및 버퍼 크기는 통상적으로 2의 멱수이다. 예를 들면, 32킬로바이트 메모리 블록은, 16킬로바이트의 블록화 계수를 갖는 두개의 버퍼로서, 8킬로바이트의 블록화 계수를 갖는 4개의 버퍼로서, 4킬로바이트의 블록화 계수를 갖는 8개의 버퍼로서 분할될 수 있다. 각각의 버퍼는 컴퓨터 시스템의 구성 소자간의 전송을 위해 단위 데이터를 임시 저장하는데 사용된다. 그런데, 전송된 데이터 블록의 통상적인 크기가 블록화 계수 보다 약간 더 큰 경우, 데이터 전송에서 메모리 활용상의 문제점이 발생한다. 예를 들면, 각각의 버퍼가 2048바이트이고 통상적인 전송 데이터 크기가 2072바이트 인 경우, 추가의 24 바이트는 제2 버퍼에 저장되어야 한다. 대안으로서, 블록화 계수는 계수의 두 배 만큼 4096바이트로 증가될 수 있다.
이러한 비효율적인 메모리 이용의 문제점은 데이터에 제어 정보를 부가하기 때문에 데이터 전송 시스템에서 보통 발생한다. 도 1 및 도 2에 도시된 바와 같이, 데이터는 통상적으로 컴퓨터 시스템(10)의 구성 소자간에 패킷(30)으로 전송된다. 컴퓨터 시스템은 통상적으로 노드(12), 예를 들어 근거리 통신망(15)에 의해 연결된 컴퓨터, 프린터 및 서버를 포함한다. 근거리 통신망(LANs)(15)은 다시 광대역 통신망(WAN)(17)에 연결될 수 있다. 더욱이, 각각의 노드(12)는 통신 링크(25)를 통해 디스크 드라이브 또는 기타의 주변 장치와 같은 장치(22)에 접속될 수 있다. 통신 링크(25)는 SCSI 또는 주변장치상호접속(PCI; Peripheral component interconnect)과 같은 잘 알려진 인터페이스일수 있다. 각각의 장치(22)는 버스 인터페이스 유닛(BIU)(27)을 통해 통신 링크(25)에 접속된다.
통상적인 패킷(30)은 데이터부(32), 헤더부(34), 꼬리부(tailer)(36)를 포함한다. 헤더부(34)는 데이터(32)의 근원지 및 목적지를 식별하고 다른 제어 정보를 포함할 수 있다. 특정 데이터 전송의 엔드포인트(즉, 근원지 및 목적지)는 효율적인 메모리 저장을 위해 유효 블록화 계수를 사용할 가능성이 많다. 패킷(30)이 컴퓨터 시스템(10)내에서 이동할 때마다, 추가 정보가 헤더(34)에 부가될 수 있다.
데이터 패킷(30)이 데이터 전송의 엔드포인트 사이의 버퍼에 저장될 때 3가지의 문제점이 발생한다. 첫째로, 헤더(34)가 데이터(32)에 부가되었기 때문에, 패킷은 전체적으로 보면 총 유효 블록화 계수를 더 이상 갖지 않는다. 그러므로, 전술한 메모리 활용상의 어려움이 더욱 발생하기 쉽다. 두 번째로, 헤더(34)의 일부 삽입 제어 정보(interleaving control information)는 버퍼에서 다수 블록의 패킷 데이터를 전송하는 경우 꼭 스킵되어야 한다. 이것은 직접 메모리 액세스(DAM) 상태 머신(state machine)이 각각의 새로운 버퍼 전송 시마다 다시 초기화되어야 하는 것과 같은 비효율성을 유발한다. 데이터 패킷(30)이 동일 링크(25)에 접속된 장치(22) 사이에서 전송되거나, 또는 WAN(17)을 통해 연결된 호스트 사이에서 전송되건 간에, 버퍼 활용의 비효율성이 나타날 수 있다.
메모리 블록은 데이터 전송 목적에 관련된 정보를 유지하는 버퍼쌍으로 나누어져 왔다. 버퍼간의 링크를 보장하고 프로세싱을 용이하게 하도록, 단일 어드레스를 사용하여 버퍼쌍을 참조하는 것이 바람직하다. 버퍼쌍을 어드레싱하는 한 통상적인 방법으로 룩업 테이블을 이용하는 것이다. 그러나, 이것은 소프트웨어의 개입을 요구한다. 또 다른 방법은 버퍼 N이 제어 정보를 유지하고 버퍼 N+1이 데이터를 유지하는 연속 액세스 룰을 사용하는 것이다. 그러나, 이것은 두개의 버퍼의 크기가 동일할 것을 요구한다. 또 다른 방법은 단일 버퍼에 제어 정보 및 데이터를 연접(concatenate)시키는 것이고, 데이터는 제어 정보로부터 기지의 오프셋에서부터 시작된다. 그러나, 이것은 비효율적으로 과도한 크기의 대용량 버퍼를 요구한다. 전술한 방법의 일부에 있어서, 또 다른 문제점은 하나의 메모리 소자를 추가할 때에도, 어드레싱 체계(schema)를 재구성해야 한다는 것이다.
버퍼쌍을 연결하기 위한 하드웨어 기반의 메커니즘은 물리적으로 분리된 메모리가 필요한데, 이 이유는 분할 버퍼에 대하여 확장 가능한 어드레싱을 할당하는 가장 단순한 방법이 최소 구성으로 설정된 두개의 버퍼간에 어드레스 갭을 두는 것이기 때문이다.
전술한 것들을 고려할 때, 본 발명의 목적은 데이터 보관용 대용량 버퍼와 이에 연관된 제어 정보 보관용의 적어도 하나의 소용량 버퍼를 가지는 분할 버퍼쌍을 지원하는 메모리 분할 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 단일 어드레스로써 이러한 분할 버퍼쌍을 어드레싱하는 것이다.
또, 본 발명의 또다른 목적은 메모리가 확장 가능한 분할 버퍼 모델을 제공하는데 있으며, 각각의 메모리 블록은 제1 블록과 같이 분할하고, 총 메모리는 단일 메모리 구성 소자의 부가에 의해 쉽게 증가될수 있다.
본 발명의 또 다른 목적은 가용 분할 버퍼를 관리하기 위한 선입선출(FIFO) 방식의 장치를 제공하는데 있다.
본 발명은 메모리 분할에 관한 것으로, 특히 송신 및 수신 프로토콜에 이용되는 버퍼쌍으로 메모리를 분할하는 것에 관한 것이다.
도 1은 통상적인 종래 컴퓨터 시스템의 블록도.
도 2는 컴퓨터 시스템의 구성 소자간에서의 종래의 패킷 전송의 개략도.
도 3은 프레임 버퍼, 상태 머신, 버스 인터페이스 유닛, 및 통신 링크 사이에서의 데이터 흐름을 도시한 블록도.
도 4는 본 발명에 따라 분할된 메모리의 개략도.
도 5는 바람직한 분할의 개략도.
도 6은 프리 버퍼 풀(free buffer pool) 수행에 관한 블록도.
본 발명은 메모리 분할에 관한 것이다. 특히, 메모리가 대용량 버퍼로 분할된다. 하나 이상의 대용량 버퍼가 소용량 버퍼로 분할된다. 분할되지 않은 대용량 버퍼 각각은 적어도 하나의 소용량 버퍼와 연관(associate)되고 그 연관된 버퍼는 단일 어드레스에 의해 어드레싱된다.
양호한 실시예에서, 대용량 버퍼와 소용량 버퍼의 수가 동일하며 각각의 대용량 버퍼는 하나의 소용량 버퍼와 정확히 쌍을 이룬다.
본 발명의 양호한 실시예에 대한 상세한 설명은 이하의 기술과 첨부된 도면으로 설명된다. 본 발명의 상세한 설명이 공지되면 있다면, 수많은 추가의 혁신과 변화는 당업자에게 명백할 것이다.
본 명세서의 기재를 통해 개시된 바람직한 실시예 및 예시는 본 발명에 대한 한정이 아니라 오로지 예로서 고려되어야 한다.
도 3은 본 발명이 바람직하게 사용되는 시스템의 일례를 도시한다. 데이터 패킷은 버스 인터페이스 유닛(BIU)(27)과 같은 컴퓨터 시스템의 한 구성 소자와 통신 링크 엔코더/디코더(ENDEC)(28)와 같은 또 다른 구성 소자 사이에서 이동된다. 메모리(45)는 BIU(27)와 ECDEC(28) "사이(즉, 데이터 경로에)에" 배치되어 프레임 버퍼(40)로 분할된다. 메모리(45)는 고속 액세스 타임을 가지고 RAM인 것이 좋다. 통상적인 데이터 전송에서, 데이터는 송신 소자로부터 프레임 버퍼(40)로 이동하고, 다시 프레임 버퍼(40)로부터 수신 소자로 이동한다. 그러므로, 메모리(45)내 프레임 버퍼(40)는 BIU(27)과 ENDEC(28) 사이를 통과하는 데이터를 임시 저장하는데 사용된다.
통상적으로, 도 1의 각각의 링크[또는 노드(12)]는 도 3에서 더 상세히 도시되는 다수의 상태 머신을 수용하는 마이크로프로세서를 구비한다. 일반적으로, 소프트웨어나 하드웨어일 수 있는 이러한 상태 머신은 종래 기술에 따라 구현될 수 있다. BIU(27)가 데이터를 송신하는 경우, 송신 버스 인터페이스 유닛 상태 머신(50)은 BIU(27)로부터 송신 프레임 버퍼(47)로 데이터를 이동시키고, 송신 프레임 상태 머신(51)은 송신 프레임 버퍼(47)로부터 ENDEC(28)으로 데이터를 이동시킨다. BIU(27)가 데이터를 수신하는 경우, 수신 상태 머신(53)은 ENDEC(28)으로부터 수신 프레임 버퍼(48)로 데이터를 이동시키고, 수신 버스 인터페이스 유닛 상태 머신(54)은 수신 프레임 버퍼(48)로부터 BIU(27)로 데이터를 이동시킨다. 전송 프로토콜 엔진 상태 머신(57)은 전송 프로토콜 및 하위 레벨 상태 머신을 관리한다.
RISC 마이크로프로세서는 버퍼(40)의 내용을 액세스하고, 바람직하게는 워드 단위로 액세스한다. RISC 마이크프로세서(56)는 호스트와 본 발명 시스템간의 인터페이스를 관리한다. RISC 마이크로프로세서(56)가 제어 및 초기화를 위하여 모든 상태 머신 및 버퍼 RAM을 액세스하지만, 버퍼와 상태 머신 사이의 데이터 전송에 직접 참여하지는 않는다.
본 발명에 따른 버퍼 메모리(45)의 분할은 도 4에 도시된다. 초기화 동안에, 메모리(45)는 블록(60)의 어레이로 분할된다. 블록(60)은 부블록(65)으로 추가로 분할되는 하나 이상의 블록(62)을 포함한다. 각 부블록(65)은 개별적인 워드(66)들로 구성된다.
잔여 블록(60)은 블록(63)으로 도시된 바와 같이 추가의 부-분할(sub-divide)되지 않는다. 양호한 실시예에서, 메모리(45)는 분할되어 n개의 블록(60)이 되고, 분할된 블록(62) 내에는 총 n개의 부블록(65)이 있게 된다. 그러므로, 각각의 부블록(65)은 블록(60) 크기의 1/n 이다[부분할된 블록(62)은 m개만큼 있을 것임을 유의하라]. 각각의 잔여 블록(63)은 부블록(65)중 하나와 1:1 대응하여 연관되어 프레임 버퍼(40)를 형성한다. 그러므로, 분할은 n-m개의 프레임 버퍼(40)를 생성하며, 각각의 프레임 버퍼(40)는 대용량 버퍼(67)[잔여 블록(63)] 및 소용량 버퍼(68)[부블록(65)]를 포함한다.
물론, 다른 분할도 가능하다. 예컨대, 블록(60)과 부블록(65)이 같은 수일 필요가 없다. 일례로, 부블록(65)의 수가 블록(60) 보다 두배 더 많을 수 있으며, 이러한 경우 각각의 프레임 버퍼(50)는 하나의 대용량 버퍼(67) 및 두개의 소용량 버퍼(68)를 포함할 수 있다. 그러나, 바람직한 분할은 각각의 프레임 버퍼(40)가 하나의 어드레스를 통해 액세스되게 하는 것이다.
메모리(45)는 다수의 메모리 모듈(70)을 구비한다. 각 메모리 모듈(70)은, 예를 들면, 상업적으로 이용 가능한 128킬로바이트 칩일 수 있다. 기술된 바와 같이, 메모리(45)는 추가의 메모리 모듈(70)이 부가될 때 분할 체계에 어떠한 변화도 발생하지 않도록, 분할될 수 있다. 특히, 각 모듈(70)은 다수의 블록(60) 세트로 분할되고, 각 모듈(70)에서 오직 한 블록(62)만이 부블록(65)으로 더 분할된다. 그러므로, 각각의 추가되는 모듈은 이전 모듈과 동일한 분할 구조를 가진다.
본 발명을 실행하는 구체적인 양호한 실시예가 도 5에 도시된다. 각 모듈(80)은 64개의 블록으로 분할된다. 각 블록은 동일한 크기, 예컨대 512 워드(1워드당 32비트)를 갖지만, 각각의 블록 크기는 메모리(45)의 총 크기 및 모듈의 수에 따라 다를 수 있다. 예를 들면, 각 128킬로바이트 모듈(80)은 모드-512(mod-512) 워드(2048바이트) 경계로 어드레싱되는 64개의 블록으로 분할될 수 있다. 블록은 블록의 메모리 로케이션(memory location)의 상위 8개의 어드레스 비트를 이용하여 각각의 블록 버퍼 포인터(BPTR)를 할당함으로써 어드레싱된다.
모듈(80)에서 블록의 일부는 헤더 블록(82), 또는 ED_TOV 타이머 엔진 버퍼(84)로 사용하기 위해 할당된다. 잔여 블록(84)은 데이터(32)를 저장하기 위한 패이로드(payload) 버퍼(86)로서 이용 가능하다. 바람직하게는, 각각의 메모리 블록(60)내의 첫 번째 버퍼는 프레임 헤더 버퍼 영역(62)으로, 그리고 제1 메모리 블록내의 두 번째 버퍼는 타이머 엔진 버퍼 영역(66)으로 사용된다.
바람직하게는, 각각의 패이로드 버퍼는 512 워드(2048바이트) 길이를 가진다. 각각의 헤더 블록(82)은 헤더부(34) 및 꼬리부(36)로부터의 제어 정보를 저장하도록 보다 작은 헤더 버퍼(88)로 더 분할된다. 바람직하게는, 헤더 버퍼 영역(82)은 각각 8 워드(32바이트) 길이의 64개의 소용량 버퍼(88)로 분할된다.
양호한 실시예에서, 메모리(45)의 크기에 따라, 64, 128, 192, 또는 256 블록이 있을 수 있다. 4개의 모듈(80)에 있어서, 총 256개 블록 및 256개 헤더 버퍼가 있다. 그러나, 각 모듈(80)은 64개 블록 이하 또는 이상으로 분할될 수 있다. 바람직하게는, 메모리(45)는 2의 멱수인 다수의 블록으로 분할된다. 이럼으로써, 패이로드 버퍼(86) 및 헤더 버퍼(88)가 단순히 쉬프트 동작에 의해 변환되는 단일 어드레스에 의해 액세스되게 함으로써, 복잡한 어드레스 ALU를 필요로 하지 않게 된다.
각각의 대용량 패이로드 버퍼(86)는 대응하는 소용량 헤더 버퍼(88)와 연관된다. 메모리(45)를 물리적으로 "분할"하지만, 대용량 버퍼 및 소용량 버퍼는 논리적으로 바인딩되고 단일 프레임 버퍼(40)로서 어드레싱될 수 있다. 버퍼 포인터가 단순히 쉬프트되어 각각의 소용량 버퍼(88)와 대용량 버퍼(86) 사이를 교대로 어드레싱하도록 한다. 양호한 실시예에서, 메모리(45)는 공칭의 32-비트 어드레스에 의해 어드레싱이 가능하지만, 각각의 어드레스는 실질적인 양호한 실시예에서 하부의 20 비트만을 사용한다(상부 12 비트는 고정됨). 20비트중 상위 8비트는 버퍼 포인터로서 쓰이는 한편, 하부 12 비트는 대용량 버퍼(86)용 오프셋 값으로 쓰인다(소용량 버퍼는 하부의 12 비트중 3 비트를 오프셋으로 사용함).
대용량 버퍼(86)내 제1 워드는 각각의 포인터를 나타내는 상위 8비트를 패이로드 메모리 어드레스 워드의 상부 8비트에 배치하고 나머지 비트는 제로로 함으로써 액세스할 수 있다. 소용량 버퍼(88)의 제1 워드는 각각의 대용량 버퍼 포인터를 나타내는 8비트중 상위 2비트를 헤더 메모리 어드레스 워드의 최상위 비트 위치에 배치하고 그 다음의 6비트를 제로로 설정한 다음, 6개의 제로 비트 이후에 포인터의 나머지 6비트를 배치하고 나머지 비트를 제로로 함으로써 액세스할 수 있다. 그러므로, 헤더 버퍼(88)의 어드레스는 2비트를 복사하고 다음 6비트를 오른쪽으로 단순 쉬프트시킴으로써 패이로드 버퍼(86)의 어드레스로부터 용이하게 유도될수 있다. 어드레싱 체계의 일례는 이하의 표 1과 같이 제공된다.
포인터 패이로드 메모리 어드레스 헤더 메모리 어드레스
3 0000│0011│0000│00... 000│0000│1100...
63 0011│1111│0000│00... 000│1111│1100...
65 0100│0011│0000│00... 100│1111│1100...
127 0111│1111│0000│00... 100│1111│1100...
129 0100│0001│0000│00... 100│0000│0100...
191 0110│1111│0000│00... 100│1111│1100...
193 1110│0001│0000│00... 1100│0000│0100...
255 1111│1111│0000│00... 1100│1111│1100...
상태 머신(50-57)은 각각의 패킷(30)으로부터 헤더부(34) 및 꼬리부(36)의 제어 정보를 분리하여 소용량 버퍼(88)에 저장하는 한편, 연관된 데이터(32)를 연관된 대용량 버퍼(82)에 저장하도록 수정될 수 있다. 특히, 요구 상태 머신(requesting state machine)은 버퍼 풀로부터 단일 어드레스 포인터를 수신할 것이다. 상태 머신은 종래 공지된 프로토콜에 따라 제어 정보와 패이로드를 분리하고, 어드레스에 의해 지시되는 패이로드 버퍼에 데이터를 저장한다. 상태 머신은 전술된 바와 같이 어드레스를 계산하여, 그 어드레스에 제어 정보를 저장한다.
데이터 전송 프로토콜이 고정 크기의 패이로드(32)를 송신하는 경우, 메모리 블록화 계수는 패이로드가 메모리(45)에 효율적으로 넣어지도록 패이로드와 같은 크기로 세팅될수 있다. 예를 들면, 2n바이트 패이로드에 대하여, 각각의 패이로드 버퍼는 크기가 2n바이트일 수 있고, 이것은 디스크 및 네트워크 트래픽에 더 효율적이다.
본 발명의 양호한 어드레싱 체계의 결과로서, 메모리(45)의 총크기는 확장이 가능하고, 그 단위는 128킬로바이트 단위인 것이 좋다. 추가 메모리 모듈이 부가됨에 따라, 패이로드 버퍼(86) 및 헤더 버퍼(82)도 메모리 블록 분할의 일부로서 부가된다. 그러므로, 확장 가능한 최소 구성의 버퍼 시스템은 단일 메모리 구성 소자로 제조될 수 있고, 시스템은 추가의 메모리 모듈로써 확장될 수 있다.
양호한 분할 포맷은 이하 표 2로 요약된다.
메모리 모듈의 수 1 2 3 4
메모리 크기 128kB 256kB 384kB 512kB
패이로드 버퍼 크기 2048B 2048B 2048B 2048B
헤더 버퍼 크기 32B 32B 32B 32B
총 블록수 64 128 192 256
헤더 블록수 1 2 3 4
타이머 버퍼수 1 1 1 1
패이로드 버퍼수 62 125 188 251
헤더 버퍼수 64 128 192 256
버퍼쌍은 도 6에 도시된 프리 버퍼 제어 시스템(100)의 사용을 통해 관리될수 있다. 제어 시스템(100)은 선입선출(FIFO) 저장 유닛(110)을 포함한다. FIFO 유닛(110)은 가용한 버퍼를 지시하는 버퍼 포인터(114)의 리스트(112)를 저장한다. 상태 머신 중 하나 또는 RISC 마이크로프로세서가 송신 또는 수신하기 위한 데이터를 갖는 경우, 리스트(112)의 최상에 위치한 포인터(114a)를 삭제하고 이곳에 지정함으로써 버퍼가 할당된다. 상태 머신 또는 RISC 마이크로프로세서가 태스크를 완료하면, 버퍼는 해제되고, 리스트(112)의 최하부에 포인터(114b)를 부가함으로써 버퍼 풀에 리턴된다. 그러므로, 제어 시스템(100)은 플로우팅 풀(floating pool)로서 버퍼를 취급하고, 버퍼는 요구-기반으로(on demand basis) 상태 머신 또는 마이크로프로세서에 제공되며, 임의의 순서대로 풀로 리턴된다.
초기화 중에, 프레임 버퍼(40)에 대응하는 포인터는 FIFO 유닛(110)으로 로딩된다. 도 5에 도시된 실시예에서,헤더 버퍼(88)와 매칭될수 있는 패이로드 버퍼(86)에 대응하는 포인터(BPTR2-63, 65-127, 129-191, 및 193-255)는 FIFO 유닛(110)으로 로딩된다. 그러므로, 리스트(112)는 총 251개의 프레임 버퍼를 포함한다.
도 6에서, FIFO 유닛(110)으로는 하드웨어 장치가 바람직하다. FIFO 유닛(110)은 소프트웨어로도 구현될 수 있지만, 소프트웨어는 하드웨어 보다 더 느리고 버퍼의 상태를 결정하는데 메모리 사이클을 필요로 하기 때문에 바람직하지 않다. 하드웨어 실행에서, FIFO는 동일한 시간에 판독되고 기록될 수 있다(즉, 이중 포트). 양호한 실시예에서, FIFO 유닛(110)은 256 포인터(1포인터는 8비트)를 저장할 수 있지만, 이에 대신하여 임의의 크기로 구성될 수 있다.
바람직한 실시예에서, FIFO 유닛(110)의 조작은 라인(116,117)으로부터 FIFO(110)로의 READ 및 WRITE 코맨드에 의해 실행된다. READ 코맨드는 버퍼 풀의 최상부(top)의 버퍼 포인터(114a)를 제거하고, 그곳을 판독 동작을 실행하는 장치에 할당한다. FIFO(110)로의 WRITE 코맨드는 풀의 최하부(buttom)에 버퍼 포인터(114b)를 리턴시킨다. 상태 머신 및 RISC 마이크로프로세서는 FIFO(110)를 판독하고 기록할 수 있다.
바람직한 실시예에서, READ 및 WRITE 명령어는 제어 논리 회로(120)에 의해FIFO(110)에 제공된다. 제어 논리 회로(120)는 클럭 신호(122)의해 시간 조절되고 리셋 신호(123)에 의해 다시 시작된다. 제어 논리 회로(120)는 FIFO 유닛(110)으로의 코맨드 발행을 요구하는 RISC 마이크로프로세서 또는 상태 머신을 식별하는 신호(125)를 수신하고, 신호(127)를 이용하여 요구에 대한 수신 통지(acknowledge)를 한다.
바람직한 실시예에서, RISC 마이크로 프로세서는 제어 시스템(100)을 READ/WRITE 레지스터의 세트처럼 취급한다. RISC 마이크로프로세서에 의한 READ 또는 WRITE 에 관한 임의의 코맨드는 2 클럭 사이클 동안 실행되고, RISC 마이크로프로세서에 의한 요구는 FIFO 유닛(110)이 비어 있는 것과 상관없이 항상 그 수신이 확인된다. 그러나, 모든 RISC READ 요구는 판독 데이터 패이로드가 "빈(empty)" 상태일 때 서비스된다.
바람직한 실시예에서, 상태 머신으로부터의 READ 및 WRITE 요구는 그 수신이 확인되기 전에 중재(arbitration)된다. 상태 머신에 의한 READ 및 WRITE 에 관한 요구는, FIFO 유닛(110)이 가용 버퍼를 가질 때까지, 제어 논리 회로(120)에 의해 수신이 확인되지 않는다. 수신이 확인된 경우에는 각각의 요구하는 상태 머신은 유효 버퍼 포인터를 확실히 수신하게 된다. 바람직하게는, 상태 머신은 자신의 대기중인 요구에 대한 수신 확인이 될 때까지 자신의 처리를 진행하지 않도록 구성된다.
리스트(112)내의 버퍼는 BIU(27)에 의하여 송신될 데이터를 저장하는 송신용 버퍼 및 통신 링크(28)로부터 데이터를 수신하는 수신용 버퍼로 사용될 수 있다. RX 상태 머신과 같은 일부 요구자(requester)는 수신용 버퍼만을 필요로 한다. TX 상태 머신과 같은 다른 요구자는 송신용 버퍼만을 필요로 한다. 이러한 경우에, 제어 논리 회로(100)는 요구자의 식별자로부터 요구되는 버퍼 유형을 추정한다. RISC 마이크로프로세서와 같은 다른 요구자는 양쪽 버퍼 형태를 요구할 수 있다. 이러한 경우에, 요구자는 추가의 신호를 제어 논리 회로(100)에 제공하여 요구되는 버퍼 유형을 식별하게 된다.
바람직한 실시예에서, 제어 시스템(100)은 제어 논리 회로(120)에 의해 사용되는 6개의 레지스터 또는 카운터를 포함한다. 제어/상태 레지스터(130)는 기본 정보를 포함한다. 송신용 버퍼 카운터(135)는 가용한 송신용 버퍼의 수를 포함한다. RISC 데이터 레지스터(140)는 '요구'가 송신 또는 수신용 버퍼에 대한 것인지를 분류하고, '요구'가 CREDIT# 신호를 어서트(assert)하는 것인지를 분류하는 4개의 레지스터를 실제로 포함한다. 제어/상태 레지스터(130) 및 카운터(135)의 내용은 판독 멀티플렉서(RD MUX)(150)로 입력되기 때문에 RISC 마이크로프로세서로 액세스 할 수 있다.
실시예에서, 제어/상태 레지스터(130)는 한개의 워드(32비트)까지 보유할 수 있지만, 양호한 실시예서는 이 비트 중 오직 5개 비트만이 사용된다. 나머지 비트는 이후의 개발을 위하여 유보된다. 0번 비트는 처음에는 "0"` 로 정해지고, RISC 마이크로프로세서가 FIFO 유닛(110)으로 배타적으로 액세스하는 것을 승인하기 위해서 "1"로 세팅된다. 1번 비트는 처음에는 "0"으로 정해지고, 프리 버퍼(free buffer)를 송신용 버퍼와 수신용 버퍼로 분리하는 것을 불능하게 하기 위하여 "1"로 세팅된다. 위와 같이 되면, RISC 마이크로프로세서는 액세스 레지스터 중 임의의 레지스터에 의해 프리 버퍼 포인터를 액세스할 수 있다. 2번 비트는 처음에는 "0"으로 정해지지만, FIFO 유닛(110)내 포인터를 소거하여 전체 FIFO를 다시 초기화하기 위해서 "1"로 세팅될 수 있다. 2번 비트는 FIFO 유닛(110)이 다시 작동하기 전에 소거되어야 한다. 3번 비트는 오직 판독 전용 비트로서, 송신 FIFO가 비었을 때 "1"로 세팅되며, 송신 FIFO가 비어있지 않을 때는 "0"으로 세팅된다. 4번 비트 또한 판독 전용이고, 수신 FIFO가 비었을 때 "1"로 세팅되고, 수신 FIFO가 비어 있지 않을 때는 "0"으로 세팅된다.
송신 버터 카운터(135)는 가용한 송신용 버퍼의 수를 포함한다. 카운터(135)는 송신용 버퍼에 대한 READ 코맨드가 FIFO 유닛(110)으로 송신될 때마다 감소하고, 송신용 버퍼에 대한 WRITE 코맨드가 FIFO 유닛(110)으로 송신될 때마다 증가한다. 실시예에서, 송신용 버퍼 카운터(135)는 한 워드 길이(32비트)일 수 있지만, 가용한 송신용 버퍼의 수를 저장하는 데 오직 8비트만을 사용한다. 초기화 동안에, RISC 마이크로프로세서는 송신용 버퍼 카운터(135)에 송신 버퍼의 최대수를 기록한다. 이 필드는 하드웨어 리셋에 의해 소거되거나, 또는 2번 비트가 세팅된 제어 레지스터(130)로의 RISC 마이크로프로세서에 의한 WRITE 코맨드에 의해 소거된다. 필요하다면, 제어 논리 회로(120)는 송신용 버퍼 카운터(135)가 임계값 이하로 감소하는 경우 알람을 제공하도록 세팅될 수 있다.
상태 머신에 의한 코맨드는 비교적 간단하다. READ 코맨드가 실행되는 경우, 버퍼 포인터(114a)는 FIFO 유닛(110)으로부터 출력되어 라인 DOUT 상에 위치된다. 요구하는 상태 머신은 DOUT 라인에 접속되고, 지시된 버퍼를 사용하도록 진행될 것이다. WRITE 코맨드가 실행되는 경우, 버퍼 포인터는 상태 머신으로부터 기록 멀티플렉서(WR MUX)(155)로 로딩된다. 그런 다음, 버퍼 포인터는 라인 DIN상의 FIFO 유닛(110)으로 입력된다.
바람직한 실시예에서, RISC 데이터 레지스터(140)는 4개의 레지스터(141-144)를 수용한다. 각각의 개별 레지스터는 한 워드를 포함할 수 있지만, 버퍼 포인터를 저장하기 위해서는 단지 8비트만을 사용한다. 레지스터 송신용 버퍼 포인터(141) 및 클래스 1 송신용 버퍼 포인터(142)는 송신용 버퍼를 판독하거나 기록하기 위하여 사용된다. 송신용 FIFO가 비어 있는 경우, 레지스터 XBPTR(141) 및 C1XBPTR(142) 또한 비어 있게 될 것이고, 제어 레지스터(130)의 3번 비트는 RISC 마이크로프로세서에 의해 1로 세팅될 것이다. 레지스터(143, 144)는 수신용 버퍼의 판독 또는 기록을 위하여 사용된다. FIFO 유닛(110)이 완전히 비어 있는 경우에는, 리스트(112) 내에 남아있는 송신용 또는 수신용 버퍼 포인터가 없고, 레지스터 RBPTR(143) 및 C1RBPTR(144)도 또한 비어 있게 될 것이며, 제어 레지스터(130)의 3번 및 4번 비트는 RISC 마이크로프로세서에 의해 1로 세팅될 것이다.
바람직한 실시예에서, 제어 논리 회로(110)는 버퍼가 XBPTR 레지스터(141)나 RBPTR 레지스터(143)로 리턴될 때마다 CREDIT#신호를 어서트한다. 제어 논리 회로(110)는 버퍼가 C1XBPTR 레지스터(142) 또는 C1BPTR 레지스터(144)로 리턴되는 경우에는 CREDIT#신호를 어서트하지 않는다. CREDIT#신호는 흐름 제어 메커니즘을 이용하는 프로토콜을 위하여 사용될 수 있다. 추가의 레지스터가 데이터 레지스터(140)에 부가되어, 다수의 상이한 유형의 신호가 제어 논리 회로(110)에 의해 어서트될 수 있다.
또한, 버퍼 제어 시스템(100)은 버퍼 포인터 판독 포트에서, 상태 머신 및RISC 마이크로프로세서에 이용 가능한 두개의 상태 신호를 유지한다. 송신용 버퍼 카운터(135)가 제로이고 이용 가능한 송신용 버퍼가 없는 경우, 라인(161)상의 상태 신호 TXSTATUS는 '참'으로 세팅된다. FIFO 유닛(110)이 비어 있고 이용 가능한 송신 또는 수신용 버퍼가 없는 경우, 라인(162)상의 제2 상태 신호 RXSSTATUS는 '참"으로 세팅된다. 이러한 상태 신호는 또한 제어 레지스터(130)의 3번 및 4번 비트에 공급될 수 있다.
요약하자면, 본 발명은 분할 버퍼쌍을 지원함으로써 메모리를 효율적으로 분할하는 단순한 방법을 제공한다. 대용량 버퍼가 효율적으로 크기가 정해져 데이터를 유지하고, 적어도 하나의 연관된 소용량 버퍼가 효율적으로 크기가 정해져 제어 정보를 유지한다. 본 발명은 이러한 분할 버퍼쌍을 어드레싱하는 단순한 방법을 또한 제공한다. 본 발명의 양호한 실시예에서, 분할 버퍼 모델이 확장 가능하고, 각 메모리 블록이 처음 블록과 같이 동일하게 분할되므로, 총 메모리를 단일 메모리 구성 소자의 부가에 의하여 쉽게 증가시킬 수 있다.
본 발명에 관한 다수의 실시예가 설명되었는데, 당업자라면 다양한 변경이 본 발명의 사상 및 범위로부터 이탈하지 않고도 행해질수 있다라는 것을 이해할 수 있을 것이다. 예를 들면, 양호한 실시예에서, 메모리가 BIU와 통신 링크 사이에 배치되지만, 본 발명은 컴퓨터 시스템의 임의의 두개의 소자 사이의 데이터 전송에 다 적합한 것이다. 따라서, 본 발명은 전술한 특정 실시예에 의해 제한되지 않고, 단지 첨부된 청구 범위에 의해서만 제한된다.

Claims (15)

  1. 버퍼 메모리를 분할하는 방법에 있어서,
    (a) 제1수의 대용량 블록으로 버퍼 메모리를 분할하는 단계와;
    (b) 상기 대용량 불록의 적어도 하나를 제2수의 소용량 블록으로 분할하는 단계와;
    (c) 잔여의 상기 대용량 블록의 각각을 적어도 하나의 상기 소용량 블록과 연관시켜 링크된 버퍼쌍(linked buffer pair)을 구성하는 단계와;
    (d) 하나의 포인터로써, 연관된 상기 대용량 블록 및 상기 소용량 블록의 링크된 버퍼쌍 각각을 어드레싱하는 단계를 포함하는 것을 특징으로 하는 버퍼 메모리 분할 방법.
  2. 제1항에 있어서, 상기 제1수는 상기 제2수와 동일한 것인 버퍼 메모리 분할 방법.
  3. 제2항에 있어서, 상기 잔여 대용량 버퍼는 각각 하나의 상기 소용량 버퍼와 연관되는 것인 버퍼 메모리 분할 방법.
  4. 제3항에 있어서, 상기 소용량 버퍼와 상기 대용량 버퍼 중에서 택일하도록 상기 포인터의 일부를 쉬프트하는 단계를 더 포함하는 버퍼 메모리 분할 방법.
  5. 제3항에 있어서, 상기 대용량 버퍼는 각각 동일한 수의 바이트를 수용하고, 상기 소용량 버퍼는 각각 동일한 수의 바이트를 수용하는 것인 버퍼 메모리 분할 방법.
  6. 제2항에 있어서, 상기 제1수는 64의 정수 배수인 것인 버퍼 메모리 분할 방법.
  7. 버퍼 메모리를 분할하는 방법에 있어서,
    (a) 복수 개의 대용량 블록으로 버퍼 메모리를 분할하는 단계와;
    (b) 상기 대용량 블록 중 적어도 하나를 복수 개의 소용량 블록으로 분할하는 단계와;
    (c) 잔여의 상기 대용량 블록의 각각을 적어도 하나의 상기 소용량 블록과 연관시켜 링크된 버퍼쌍을 구성하는 단계와;
    (d) 하나의 포인터로써, 연관된 대용량 버퍼 및 소용량 버퍼의 링크된 버퍼쌍 각각을 어드레싱하는 단계를 포함하는 것을 특징으로 하는 버퍼 메모리 분할 방법.
  8. 메모리를 분할하는 방법에 있어서,
    (a) 제1수의 대용량 버퍼로 메모리를 분할하는 단계와;
    (b) 상기 대용량 버퍼 중 하나를 제2수의 소용량 버퍼로 분할하는 단계와;
    (c) 상기 메모리내의 잔여 대용량 버퍼의 각각을 상기 메모리 내의 적어도 하나의 상기 소용량 버퍼와 연관시켜 링크된 버퍼쌍을 구성하는 단계와;
    (d) 하나의 포인터로써, 연관된 대용량 버퍼 및 소용량 버퍼의 링크된 버퍼쌍 각각을 어드레싱하는 단계를 포함하는 것을 특징으로 하는 메모리 분할 방법.
  9. 제8항에 있어서, 상기 대용량 버퍼 중 정확히 하나는 제2수의 소용량 버퍼로 분할되는 것인 메모리 분할 방법.
  10. 제9항에 있어서, 상기 제1수는 상기 제2수와 동일한 것인 메모리 분할 방법.
  11. 제8항에 있어서, 상기 메모리에 새로운 메모리 모듈을 부가하는 단계와, 이전의 메모리 모듈에서와 같은 방식으로 상기 새로운 모듈을 분할하는 단계를 더 포함하는 메모리 분할 방법.
  12. 데이터를 저장하는 장치에 있어서,
    (a) 제1수의 대용량 블록으로 분할되며, 상기 대용량 블록들 중 적어도 하나는 제2수의 소용량 블록으로 분할되고, 잔여의 대용량 블록의 각각은 적어도 하나의 소용량 블록과 연관되어 링크된 버퍼쌍을 구성하는 것인 메모리와;
    (b) 복수 개의 버퍼 포인터를 포함하고,
    상기 연관된 대용량 블록 및 소용량 블록의 링크된 버퍼쌍 각각은 하나의 상기 버퍼 포인터에 의해 어드레싱되는 것을 특징으로 하는 데이터 기억 장치.
  13. 제12항에 있어서, 상기 제1수는 상기 제2수와 동일한 것인 데이터 기억 장치.
  14. 제13항에 있어서, 상기 소용량 버퍼의 메모리 어드레스는 상기 대용량 버퍼의 메모리 어드레스의 일부를 쉬프트하여 구성된 것인 데이터 기억 장치.
  15. 제13항에 있어서, 각각의 상기 대용량 버퍼의 각각은 동일한 수의 바이트를 수용하고, 상기 소용량 버퍼의 각각은 동일한 바이트를 수용하는 것인 데이터 기억 장치.
KR1019970708890A 1995-06-07 1996-06-06 다수의관련데이타를참조하는데단일포인터를사용하는메모리버퍼시스템 KR100288453B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/484,592 US5860149A (en) 1995-06-07 1995-06-07 Memory buffer system using a single pointer to reference multiple associated data
US8/484,592 1995-06-07
PCT/US1996/009934 WO1996041266A1 (en) 1995-06-07 1996-06-06 Split buffer architecture

Publications (2)

Publication Number Publication Date
KR19990022410A KR19990022410A (ko) 1999-03-25
KR100288453B1 true KR100288453B1 (ko) 2001-05-02

Family

ID=23924780

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970708890A KR100288453B1 (ko) 1995-06-07 1996-06-06 다수의관련데이타를참조하는데단일포인터를사용하는메모리버퍼시스템

Country Status (7)

Country Link
US (2) US5860149A (ko)
EP (1) EP0832457A4 (ko)
JP (1) JP3641675B2 (ko)
KR (1) KR100288453B1 (ko)
AU (1) AU6169296A (ko)
CA (1) CA2223890A1 (ko)
WO (1) WO1996041266A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100474357B1 (ko) * 2001-12-26 2005-03-08 한국전자통신연구원 다단계 분할을 이용한 기억소자 할당방법

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US6154460A (en) * 1997-05-30 2000-11-28 Alcatel Usa Sourcing, L.P. Data packet transmission system and method
US6563836B1 (en) * 1998-03-19 2003-05-13 International Business Machines Corporation Algorithm for dynamic prioritization in a queuing environment
US6631484B1 (en) * 1998-03-31 2003-10-07 Lsi Logic Corporation System for packet communication where received packet is stored either in a FIFO or in buffer storage based on size of received packet
US6282589B1 (en) * 1998-07-30 2001-08-28 Micron Technology, Inc. System for sharing data buffers from a buffer pool
US6466993B1 (en) * 1998-11-05 2002-10-15 Compaq Information Technologies Group, L.P. Method and apparatus for performing transactions rendering between host processors and I/O devices using concurrent non-blocking queuing techniques and I/O bus write operations
US6044030A (en) * 1998-12-21 2000-03-28 Philips Electronics North America Corporation FIFO unit with single pointer
US6466223B1 (en) * 1999-03-24 2002-10-15 Microsoft Corporation Method and apparatus for texture memory management
US6618390B1 (en) * 1999-05-21 2003-09-09 Advanced Micro Devices, Inc. Method and apparatus for maintaining randomly accessible free buffer information for a network switch
US6574231B1 (en) * 1999-05-21 2003-06-03 Advanced Micro Devices, Inc. Method and apparatus for queuing data frames in a network switch port
US6657955B1 (en) * 1999-05-27 2003-12-02 Alcatel Canada Inc. Buffering system employing per traffic flow accounting congestion control
CN1218231C (zh) * 1999-09-14 2005-09-07 西门子公司 经过总线系统的串行数据传输
US6625708B1 (en) * 1999-11-23 2003-09-23 Intel Corporation Method and apparatus for dynamically defining line buffer configurations
US6854021B1 (en) * 2000-10-02 2005-02-08 International Business Machines Corporation Communications between partitions within a logically partitioned computer
US6647477B2 (en) * 2000-10-06 2003-11-11 Pmc-Sierra Ltd. Transporting data transmission units of different sizes using segments of fixed sizes
US6947153B1 (en) 2000-11-20 2005-09-20 Presstek, Inc. Method and apparatus for optimized image processing
US6903737B2 (en) * 2001-01-23 2005-06-07 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing spread memory layout
US8150997B2 (en) 2001-04-24 2012-04-03 International Business Machines Corporation Technique for efficient data transfer within a virtual network
US6801991B2 (en) * 2001-12-21 2004-10-05 Agere Systems Inc. Method and apparatus for buffer partitioning without loss of data
US7333498B2 (en) * 2002-05-15 2008-02-19 Hewlett-Packard Development Company, L.P. Method and apparatus for separating data packets in a memory buffer
US7089346B2 (en) * 2002-06-03 2006-08-08 International Business Machines Corporation Method of operating a crossbar switch
US7532644B1 (en) * 2002-06-12 2009-05-12 Sun Microsystems, Inc. Method and system for associating multiple payload buffers with multidata message
US7152069B1 (en) * 2002-10-15 2006-12-19 Network Appliance, Inc. Zero copy writes through use of mbufs
US20060075203A1 (en) * 2002-12-12 2006-04-06 Koninklijke Philips Electronics N.V. Configurable memory partitioning in hardware
US20070260777A1 (en) * 2003-11-25 2007-11-08 Timpe Barrie R Queues for information processing and methods thereof
US7249227B1 (en) * 2003-12-29 2007-07-24 Network Appliance, Inc. System and method for zero copy block protocol write operations
US20050223118A1 (en) * 2004-04-05 2005-10-06 Ammasso, Inc. System and method for placement of sharing physical buffer lists in RDMA communication
US20060067346A1 (en) * 2004-04-05 2006-03-30 Ammasso, Inc. System and method for placement of RDMA payload into application memory of a processor system
US20050220128A1 (en) * 2004-04-05 2005-10-06 Ammasso, Inc. System and method for work request queuing for intelligent adapter
US20060187917A1 (en) * 2005-02-18 2006-08-24 Broadcom Corporation Pre-learning of values with later activation in a network device
US8331380B2 (en) * 2005-02-18 2012-12-11 Broadcom Corporation Bookkeeping memory use in a search engine of a network device
US8526326B1 (en) * 2008-08-27 2013-09-03 Juniper Networks, Inc. Lock-less access of pre-allocated memory buffers used by a network device
US9069489B1 (en) 2010-03-29 2015-06-30 Marvell Israel (M.I.S.L) Ltd. Dynamic random access memory front end
US20110228674A1 (en) * 2010-03-18 2011-09-22 Alon Pais Packet processing optimization
IL211490A (en) * 2010-03-02 2016-09-29 Marvell Israel(M I S L ) Ltd Early next packets of information
US8327047B2 (en) * 2010-03-18 2012-12-04 Marvell World Trade Ltd. Buffer manager and methods for managing memory
US9098203B1 (en) 2011-03-01 2015-08-04 Marvell Israel (M.I.S.L) Ltd. Multi-input memory command prioritization
JP2013068105A (ja) * 2011-09-21 2013-04-18 Hitachi Automotive Systems Ltd 自動車用電子制御装置
JP5451705B2 (ja) 2011-09-21 2014-03-26 日立オートモティブシステムズ株式会社 自動車用電子制御装置及びデータ通信方法
US11979340B2 (en) * 2017-02-12 2024-05-07 Mellanox Technologies, Ltd. Direct data placement
US11379404B2 (en) * 2018-12-18 2022-07-05 Sap Se Remote memory management
KR20220023649A (ko) * 2020-08-21 2022-03-02 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4168541A (en) * 1978-09-25 1979-09-18 Sperry Rand Corporation Paired least recently used block replacement system
CA1187198A (en) * 1981-06-15 1985-05-14 Takashi Chiba System for controlling access to channel buffers
US4493026A (en) * 1982-05-26 1985-01-08 International Business Machines Corporation Set associative sector cache
US4511964A (en) * 1982-11-12 1985-04-16 Hewlett-Packard Company Dynamic physical memory mapping and management of independent programming environments
JPS59213084A (ja) * 1983-05-16 1984-12-01 Fujitsu Ltd バッファ記憶装置のアクセス制御方式
US4821185A (en) * 1986-05-19 1989-04-11 American Telephone And Telegraph Company I/O interface system using plural buffers sized smaller than non-overlapping contiguous computer memory portions dedicated to each buffer
US4945512A (en) * 1988-09-07 1990-07-31 Unisys Corporation High-speed partitioned set associative cache memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100474357B1 (ko) * 2001-12-26 2005-03-08 한국전자통신연구원 다단계 분할을 이용한 기억소자 할당방법
US6931507B2 (en) 2001-12-26 2005-08-16 Electronics & Telecommunications Research Institute Memory allocation method using multi-level partition

Also Published As

Publication number Publication date
KR19990022410A (ko) 1999-03-25
JP3641675B2 (ja) 2005-04-27
JPH11507749A (ja) 1999-07-06
EP0832457A1 (en) 1998-04-01
CA2223890A1 (en) 1996-12-19
US5860149A (en) 1999-01-12
EP0832457A4 (en) 1999-01-20
AU6169296A (en) 1996-12-30
WO1996041266A1 (en) 1996-12-19
US6041397A (en) 2000-03-21

Similar Documents

Publication Publication Date Title
KR100288453B1 (ko) 다수의관련데이타를참조하는데단일포인터를사용하는메모리버퍼시스템
US6622193B1 (en) Method and apparatus for synchronizing interrupts in a message passing queue oriented bus system
US5276684A (en) High performance I/O processor
US5870627A (en) System for managing direct memory access transfer in a multi-channel system using circular descriptor queue, descriptor FIFO, and receive status queue
US7352763B2 (en) Device to receive, buffer, and transmit packets of data in a packet switching network
JP3598321B2 (ja) 異なる周波数で動作するバス間でやりとりされるバッファリングデータ
US7277449B2 (en) On chip network
US6813653B2 (en) Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system
US5475858A (en) Real time multiprocessor system having a write only data link connected to one of the ports of the memory of each of the processor nodes
US6704831B1 (en) Method and apparatus for converting address information between PCI bus protocol and a message-passing queue-oriented bus protocol
US7881321B2 (en) Multiprocessor node controller circuit and method
US5594927A (en) Apparatus and method for aligning data transferred via DMA using a barrel shifter and a buffer comprising of byte-wide, individually addressabe FIFO circuits
US20020184453A1 (en) Data bus system including posted reads and writes
US8090892B2 (en) Ordered queue and methods therefor
EP0512685A1 (en) Quadrature bus protocol for carrying out transactions in a computer system
US8239587B2 (en) Device having data sharing capabilities and a method for sharing data
CN117716679A (zh) 地址转换类型分组的传输
US6701387B1 (en) Adaptive data fetch prediction algorithm
JP2000029826A (ja) 多重レベルキャッシングを有する3ポ―トfifoデ―タバッファ
JPS6246025B2 (ko)
US6026032A (en) High speed data buffer using a virtual first-in-first-out register
US5781749A (en) Controller for multiple data transfer between a plurality of memories and a computer bus
Ang et al. StarT-Voyager: Hardware Engineering Specification (Version 4.0)

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

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee