KR20060011767A - 기억 장치 - Google Patents

기억 장치 Download PDF

Info

Publication number
KR20060011767A
KR20060011767A KR1020040086532A KR20040086532A KR20060011767A KR 20060011767 A KR20060011767 A KR 20060011767A KR 1020040086532 A KR1020040086532 A KR 1020040086532A KR 20040086532 A KR20040086532 A KR 20040086532A KR 20060011767 A KR20060011767 A KR 20060011767A
Authority
KR
South Korea
Prior art keywords
data
write
stored
pointer
area
Prior art date
Application number
KR1020040086532A
Other languages
English (en)
Other versions
KR100694242B1 (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 KR20060011767A publication Critical patent/KR20060011767A/ko
Application granted granted Critical
Publication of KR100694242B1 publication Critical patent/KR100694242B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • 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/10Indexing scheme relating to groups G06F5/10 - G06F5/14
    • G06F2205/108Reading or writing the data blockwise, e.g. using an extra end-of-block pointer

Landscapes

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

Abstract

본 발명은 임의의 데이터 길이를 갖는 데이터의 입력을 받아 그 데이터를 기억하고, 그 기억한 데이터를 입력순으로 출력하는 기억 장치에 관한 것이며, 데이터 영역에 기억된, 임의의 데이터 길이를 갖는 데이터의 영역 해방(解放) 처리를 고속으로 실행할 수 있는 기억 장치를 제공하는 것을 목적으로 한다.
데이터의 입력에 의해 라이트(write) 포인터(12)의 라이트 위치가 변경될 때마다, 변경 전의 라이트 위치를 추가적으로 보존하는 개시 위치 포인터(15)를 구비하고 있으며, 영역 해방 시에는, 보존된 라이트 위치와, 해방되는 데이터 수에 의거하여 새로운 리드(read) 위치가 구해진다.
기억 장치, 버퍼 장치, 데이터 영역, 라이트 포인터, 리드 포인터

Description

기억 장치{STORAGE DEVICE}
도 1은 본 발명의 기억 장치의 일 실시예에 상당하는 버퍼 장치의 개략 구성도.
도 2는 도 1에 나타낸 버퍼 장치의 데이터 버퍼의 데이터 영역에 패킷(packet) 데이터가 저장된 상태를 나타내는 도면.
도 3은 도 1에 나타낸 버퍼 장치의 데이터 버퍼의 데이터 영역에서의 패킷 데이터 저장 상태마다 라이트 포인터(write pointer), 리드 포인터(read pointer), 및 개시 위치 포인터 각각에 의해 기억된 수치(數値)의 일람표.
도 4는 종래의 버퍼 장치에 대한 일 실시예를 나타내는 개략 구성도.
*도면의 주요 부분에 대한 부호의 설명*
10 : 버퍼 장치
11 : 데이터 버퍼
111, 112, 113 : 데이터 영역
12 : 라이트 포인터(write pointer)
13 : 데이터 입력 제어 회로
14 : 라이트 포인터 제어 회로
15 : 개시 위치 포인터
16 : 리드 포인터(read pointer)
17 : 데이터 출력 제어 회로
18 : 리드 포인터 제어 회로
20 : 라이트 위치의 수치(數値)
30 : 리드 위치의 수치
40 : 개시 위치 포인터의 수치
50 : 버퍼 장치
51 : 데이터 버퍼
52 : 라이트 포인터
53 : 리드 포인터
54 : 데이터 입력 제어 회로
55 : 라이트 포인터 제어 회로
56 : 데이터 출력 제어 회로
57 : 리드 포인터 제어 회로
본 발명은 임의의 데이터 길이를 갖는 데이터의 입력을 받아 그 데이터를 기억하고, 그 기억한 데이터를 입력순으로 출력하는 기억 장치에 관한 것이다.
최근, 인터넷 등으로 대표되는 네트워크 상에서의 패킷 통신이나 디지털 카 메라에서 얻어진 화상 데이터의 통신 등과 같은 다양한 데이터 통신이 널리 실행되고 있다. 이러한 데이터 통신에서는, 데이터의 송신 시에서 에러(error)가 발생했을 때에 데이터를 재송신하기 위해, 송신한 데이터가 일시적으로 기억되는 소위 버퍼 장치가 사용되고 있다.
예를 들면, PCI Express 규격에 준거한 패킷 통신에서는, 임의의 데이터 길이를 갖는 패킷 데이터를 송수신할 수 있고, 이 패킷 통신 시에 사용되는 버퍼 장치는 임의의 데이터 길이를 갖는 복수의 패킷 데이터를 일시적으로 기억할 수 있다.
도 4는 종래의 버퍼 장치에 대한 일 실시예를 나타내는 개략 구성도이다.
이 도 4에 나타낸 버퍼 장치는 PCI Express 규격에 준거한 패킷 통신 시에 사용되어, 임의의 데이터 길이를 갖는 패킷 데이터의 입력을 받아 그 패킷 데이터를 기억하고, 그 기억한 패킷 데이터를 입력순으로 출력하는 것이다. 이 버퍼 장치(50)에는 데이터 버퍼(51)와, 라이트 포인터(52)와, 리드 포인터(53)와, 데이터 입력 제어 회로(54)과, 라이트 포인터 제어 회로(55)와, 데이터 출력 제어 회로(56)와, 리드 포인터 제어 회로(57)가 구비되어 있다.
이 도 4에 나타낸 버퍼 장치(50)의 데이터 버퍼(51)는 패킷 데이터가 저장되는 데이터 영역을 갖는 것이다. 또한, 이 데이터 영역의 용량은 2의 거듭제곱으로 표시된다.
또한, 라이트 포인터(52)는 데이터 버퍼(51)의 데이터 영역 중 다음에 패킷 데이터가 저장되는 라이트 위치를 기억하는 것이다.
또한, 리드 포인터(53)는 데이터 버퍼(51)의 데이터 영역 중 다음에 패킷 데이터가 판독되는 리드 위치를 기억하는 것이다.
여기서, 데이터 버퍼(51)의 데이터 영역에 패킷 데이터가 입력될 때에는, 그 데이터 영역 중 가용(available) 데이터 영역의 용량과, 입력되는 패킷 데이터의 데이터 길이가 비교된다. 상술한 바와 같이, 데이터 버퍼(51)의 데이터 영역 용량이 2의 거듭제곱으로 표시되기 때문에, 가용 데이터 영역의 용량은 하기 (1) 식이 2진법으로 풀림으로써 구할 수 있다.
(가용 데이터 영역의 용량) = (데이터 영역의 용량) - (라이트 포인터) + (리드 포인터) …(1)
또한, 데이터 입력 제어 회로(54)는 패킷 데이터의 입력을 받아, 상기 (1) 식에 의해 가용 데이터 영역 용량을 구하고, 구한 가용 데이터 영역 용량이 입력된 패킷 데이터의 데이터 길이보다도 클 경우에는, 그 패킷 데이터를 데이터 버퍼(51)의 데이터 영역 중 라이트 포인터(52)가 기억하는 라이트 위치에 저장하는 것이다.
또한, 라이트 포인터 제어 회로(55)는 데이터 입력 제어 회로(54)에 의해 패킷 데이터가 저장될 때마다, 라이트 포인터(52)가 기억하는 라이트 위치를 저장된 패킷 데이터의 데이터 길이에 상당하는 분량만큼 변경하는 것이다.
또한, 데이터 출력 제어 회로(56)는, 데이터 버퍼(51)의 데이터 영역에 저장되어 있는 패킷 데이터를 그 데이터 영역 중 리드 포인터(53)가 기억하는 리드 위치로부터 입력순으로 판독하여 출력하는 것이다.
또한, 리드 포인터 제어 회로(57)는, 데이터 출력 제어 회로(56)에 의해 패 킷 데이터가 출력된 후, 이 패킷 데이터를 수신한 외부 장치로부터 정상적으로 이 패킷 데이터가 수신되었음을 나타내는 동시에, 데이터 수를 지정하여 그 데이터 수만큼의 영역 해방을 구하는 통지(이하, 이 통지를 ACK(Acknowledgment) 통지라고 함)를 받아, 리드 포인터(53)가 기억하는 리드 위치를 그 통지에 의해 지정된 패킷 데이터의 데이터 길이에 상당하는 분량만큼 변경함으로써, 이 패킷 데이터가 저장되어 있던 데이터 영역을 해방하는 것이다.
여기서, 임의의 데이터 길이를 갖는 패킷 데이터에는, 이 패킷 데이터의 헤더부(header)에 데이터 길이를 나타내는 데이터 길이 정보가 부가되어 있다.
도 4에 나타낸 종래의 버퍼 장치(50)의 리드 포인터 제어 회로(57)에서는, 외부 장치로부터 상술한 ACK 통지를 받아, 지정된 패킷 데이터의 헤더부에 부가되어 있는 데이터 길이 정보가 판독되고, 판독된 데이터 길이 정보가 나타내는 데이터 길이에 상당하는 분량만큼 리드 위치가 변경된다. 따라서, 이 종래의 버퍼 장치(50)에서는, 데이터 버퍼(51)의 데이터 영역으로부터 패킷 데이터를 해방할 때마다 데이터 길이의 판독이 실행되기 때문에, 처리 시간이 소요된다는 문제가 있다.
또한, PCI Express 규격에 준거한 패킷 통신에서는, 복수의 패킷 데이터에 대한 통지가 통합하여 실행되는 것이 허용되어 있다. 이러한 경우에, 리드 포인터 제어 회로(57)에서는, 통지를 받아 지정된 복수의 패킷 데이터 중 데이터 버퍼(51)의 데이터 영역에 가장 먼저 저장된 패킷 데이터의 헤더부에 부가되어 있는 데이터 길이 정보가 판독되고, 그 데이터 길이 정보가 나타내는 데이터 길이에 의거하여, 다음 패킷 데이터의 선두(先頭) 위치가 구해진다. 그리고, 구해진 선두 위치로부터 다음 패킷 데이터의 데이터 길이 정보가 판독된다는 처리가 반복되어, 데이터 버퍼(51)의 데이터 영역으로부터 패킷 데이터를 해방하는데 필요한 처리 시간이 더 길게 소요되고, 그 결과, 통신 속도의 저하를 초래한다는 문제를 발생시킬 우려도 있다.
본 발명은 상기 문제점을 해결하여, 데이터 영역에 기억된, 임의의 데이터 길이를 갖는 데이터의 영역 해방 처리를 고속(高速)으로 실행할 수 있는 기억 장치를 제공하는 것을 목적으로 하는 것이다.
상기 목적을 달성하는 본 발명의 기억 장치는, 임의의 데이터 길이를 갖는 데이터의 입력을 받아 이 데이터를 기억하고, 그 기억한 데이터를 입력순으로 출력하는 기억 장치에 있어서, 데이터가 저장되는 데이터 영역을 갖는 데이터 저장부와, 상기 데이터 영역 중 다음에 데이터가 저장되는 라이트 위치를 기억하는 라이트 포인터와, 상기 데이터의 입력을 받아 그 데이터를 상기 데이터 영역 중 상기 라이트 포인터가 기억하는 라이트 위치에 저장하는 데이터 입력부와, 상기 데이터 입력부에 의해 데이터가 저장될 때마다, 상기 라이트 포인터가 기억하는 라이트 위치를 저장된 데이터의 데이터 길이에 상당하는 분량만큼 변경하는 라이트 포인터 제어부와, 상기 라이트 포인터 제어부에 의해 상기 라이트 위치가 변경될 때마다, 변경 전의 라이트 위치를 추가적으로 보존하는 라이트 위치 이력(履歷) 보존부와, 상기 데이터 영역 중 다음에 데이터가 판독되는 리드 위치를 기억하는 리드 포인터 와, 상기 데이터 영역에 저장되어 있는 데이터를 그 데이터 영역 중 상기 리드 포인터가 기억하는 리드 위치로부터 입력순으로 판독하여 출력하는 데이터 출력부와, 데이터 수를 지정하여 그 데이터 수만큼의 영역 해방을 구하는 통지를 받아, 상기 라이트 위치 이력 보존부에 보존되어 있는 라이트 위치를 그 통지에 의해 지정된 데이터 수와 동일한 수만큼 보존된 순서로 소거(消去)하고, 남은 라이트 위치 중 가장 먼저 보존된 라이트 위치를 상기 리드 포인터에 새로운 리드 위치로서 기억시키는 리드 포인터 제어부를 구비한 것을 특징으로 한다.
본 발명의 기억 장치는, 데이터의 입력에 의해 라이트 포인터의 라이트 위치가 변경될 때마다, 변경 전의 라이트 위치를 추가적으로 보존하는 라이트 위치 이력 보존부를 구비하고 있으며, 영역 해방 시에는, 보존된 라이트 위치와, 해방되는 데이터 수에 의거하여 새로운 리드 위치가 구해진다. 따라서, 상술한 종래의 버퍼 장치에서 실행된 바와 같은, 데이터의 헤더부에 부가되어 있는 데이터 길이 정보를 판독하는 처리나, 데이터 길이에 의거하여 다음 데이터의 선두 위치를 구하는 처리가 불필요하기 때문에, 본 발명의 기억 장치에 의하면, 임의의 데이터 길이를 갖는 데이터의 영역 해방 처리를 고속으로 실행할 수 있다.
이하, 도면을 참조하여 본 발명의 실시예를 설명한다.
도 1은 본 발명의 기억 장치의 일 실시예에 상당하는 버퍼 장치의 개략 구성도이다.
이 도 1에 나타낸 버퍼 장치(10)에는 데이터 버퍼(11)와, 라이트 포인터(12)와, 데이터 입력 제어 회로(13)와, 라이트 포인터 제어 회로(14)와, 개시 위치 포 인터(15)와, 리드 포인터(16)와, 데이터 출력 제어 회로(17)와, 리드 포인터 제어 회로(18)가 구비되어 있다.
이 버퍼 장치(10)는 PCI Express 규격에 준거한 패킷 통신 시에 사용되는 것이다.
여기서는, 이 버퍼 장치(10)의 각 요소의 개념적인 작용에 대해서 설명하고, 이들 각 요소의 구체적인 작용에 대해서는 후술한다.
이 도 1에 나타낸 버퍼 장치(10)의 데이터 버퍼(11)는 본 발명에서의 데이터의 일례에 상당하는 패킷 데이터가 저장되는 데이터 영역을 갖는 것으로서, 이 데이터 버퍼(11)는 본 발명에서의 데이터 저장부의 일례에 상당하는 것이다. 또한, 이 데이터 영역의 용량은 2의 거듭제곱으로 표시된다.
또한, 라이트 포인터(12)는 데이터 버퍼(11)의 데이터 영역 중 다음에 패킷 데이터가 저장되는 라이트 위치를 기억하는 것으로서, 이 라이트 포인터(12)는 본 발명에서의 라이트 포인터의 일례에 상당하는 것이다.
또한, 데이터 입력 제어 회로(13)는 패킷 데이터의 입력을 받아 가용 데이터 영역 용량을 구하고, 구한 가용 데이터 영역 용량이 입력된 패킷 데이터의 데이터 길이보다도 클 경우에는, 그 패킷 데이터를 데이터 버퍼(11)의 데이터 영역 중 라이트 포인터(12)가 기억하는 라이트 위치에 저장하는 것으로서, 이 데이터 입력 제어 회로(13)는 본 발명에서의 데이터 입력부의 일례에 상당하는 것이다.
또한, 라이트 포인터 제어 회로(14)는, 데이터 입력 제어 회로(13)에 의해 패킷 데이터가 저장될 때마다, 라이트 포인터(12)가 기억하는 라이트 위치를 저장 된 패킷 데이터의 데이터 길이에 상당하는 분량만큼 변경하는 것으로서, 이 라이트 포인터 제어 회로(14)는 본 발명에서의 라이트 포인터 제어부의 일례에 상당하는 것이다.
또한, 개시 위치 포인터(15)는, 라이트 포인터(12)에 의해 기억된 라이트 위치가 라이트 포인터 제어 회로(14)에 의해 변경될 때마다, 변경 전의 라이트 위치를 추가적으로 보존하는 것으로서, 이 개시 위치 포인터(15)는 본 발명에서의 라이트 위치 이력 보존부의 일례에 상당하는 것이다.
또한, 리드 포인터(16)는 데이터 버퍼(11)의 데이터 영역 중 다음에 패킷 데이터가 판독되는 리드 위치를 기억하는 것으로서, 이 개시 위치 포인터(15)는 본 발명에서의 리드 포인터의 일례에 상당하는 것이다.
또한, 데이터 출력 제어 회로(17)는, 데이터 버퍼(11)의 데이터 영역에 저장되어 있는 패킷 데이터를 그 데이터 영역 중 리드 포인터(16)가 기억하는 리드 위치로부터 입력순으로 판독하여 출력하는 것으로서, 이 데이터 출력 제어 회로(17)는 본 발명에서의 데이터 출력부의 일례에 상당하는 것이다.
또한, 리드 포인터 제어 회로(18)는 데이터 수를 지정하여 그 데이터 수만큼의 영역 해방을 구하는 통지를 받아, 개시 위치 포인터(15)에 보존되어 있는 라이트 위치를 그 통지에 의해 지정된 데이터 수와 동일한 수만큼 보존된 순서로 소거하고, 남은 라이트 위치 중 가장 먼저 보존된 라이트 위치를 리드 포인터(16)에 새로운 리드 위치로서 기억시키는 것으로서, 이 리드 포인터 제어 회로(18)는 본 발명에서의 리드 포인터 제어부의 일례에 상당하는 것이다.
이하, 도 1에 나타낸 버퍼 장치(10)의 실시예를 보다 구체적으로 설명한다.
이하에서는, 도 1에 나타낸 버퍼 장치(10)의 데이터 버퍼(11)의 데이터 영역에 패킷 데이터가 저장되지 않은 상태로부터, 이 데이터 영역에 임의의 데이터 길이를 갖는 패킷 데이터가 그 데이터 영역에 차례로 저장되고, 데이터 영역에 저장된 복수의 패킷 데이터가 외부 장치(도시 생략)에 출력된 후에 데이터 영역이 해방되는 예를 도 1 내지 도 3을 참조하여 설명한다. 또한, 여기서는, 설명을 간단하게 하기 위해, 데이터 길이의 단위와 어드레스의 단위를 동일한 단위로 설명한다.
도 2는 도 1에 나타낸 버퍼 장치의 데이터 버퍼의 데이터 영역에 패킷 데이터가 저장된 상태를 나타내는 도면이고, 도 3은 이 데이터 영역에서의 패킷 데이터 수용 상태마다 라이트 포인터, 리드 포인터, 및 개시 위치 포인터 각각에 의해 기억된 수치의 일람표이다.
상술한 바와 같이, 처음에는 도 1에 나타낸 데이터 버퍼(11)의 데이터 영역에는 패킷 데이터가 저장되어 있지 않기 때문에, 도 3에 나타낸 「초기 상태」와 같이, 라이트 포인터(12)가 기억하는 라이트 위치의 수치(20), 및 리드 포인터(16)가 기억하는 리드 위치의 수치(30)는 모두 「0」으로 되어 있고, 개시 위치 포인터(15)에 의해 추가적으로 보존되는 라이트 위치의 수치(40)는 아직 존재하지 않는다.
여기서, 데이터 버퍼(11)의 데이터 영역에 패킷 데이터가 입력될 때에는, 그 데이터 영역 중 가용 데이터 영역의 용량과, 입력되는 패킷 데이터의 데이터 길이가 비교된다. 상술한 바와 같이, 데이터 버퍼(11)의 데이터 영역 용량이 2의 거듭 제곱으로 표시되기 때문에, 가용 데이터 영역의 용량은 하기 (2) 식이 2진법으로 풀림으로써 구할 수 있다.
(가용 데이터 영역의 용량) = (데이터 영역의 용량) - (라이트 포인터) + (리드 포인터) …(2)
우선, 도 1에 나타낸 버퍼 장치(10)에 데이터 길이가 「10」인 패킷 데이터 <1>이 입력되면, 데이터 입력 제어 회로(13)에서 상기 (2) 식에 의해 가용 데이터 영역 용량이 구해지고, 구해진 가용 데이터 영역 용량이 입력된 패킷 데이터 <1>의 데이터 길이 「10」보다도 클 경우에는, 이 패킷 데이터 <1>이 데이터 버퍼(11)의 데이터 영역 중 라이트 포인터(12)가 기억하는 라이트 위치 「0」에 저장된다. 이 패킷 데이터 <1>의 데이터 길이는 「10」이기 때문에, 도 2에 나타낸 바와 같이, 이 패킷 데이터 <1>은 데이터 버퍼(11)의 라이트 위치 「0」에 상응하는 「어드레스 0」으로부터 「어드레스 9」의 데이터 영역(111)에 저장된다. 또한, 데이터 입력 제어 회로(13)에 의해 패킷 데이터 <1>이 저장되면, 라이트 포인터 제어 회로(14)에 의해, 라이트 포인터(12)가 기억하는 라이트 위치가 저장된 패킷 데이터의 데이터 길이에 상당하는 분량인 「10」만큼 변경되어, 도 3에 나타낸 「패킷 데이터 <1> 저장 상태」와 같이, 라이트 위치의 수치 20이 「10」으로 된다. 또한, 라이트 포인터(12)에 의해 기억된 라이트 위치가 라이트 포인터 제어 회로(14)에 의해 변경된 것을 받아, 라이트 위치의 수치 40으로서, 변경 전의 라이트 위치 「0」이 개시 위치 포인터(15)에 의해 보존된다.
다음으로, 도 1에 나타낸 버퍼 장치(10)에 데이터 길이가 「20」인 패킷 데 이터 <2>가 입력되면, 데이터 입력 제어 회로(13)에서 상기 (2) 식에 의해 가용 데이터 영역 용량이 구해지고, 구해진 가용 데이터 영역 용량이 입력된 패킷 데이터 <2>의 데이터 길이 「20」보다도 클 경우에는, 이 패킷 데이터 <2>가 데이터 버퍼(11)의 데이터 영역 중 라이트 포인터(12)가 기억하는 라이트 위치 「10」에 저장된다. 이 패킷 데이터 <2>의 데이터 길이는 「20」이기 때문에, 도 2에 나타낸 바와 같이, 이 패킷 데이터 <2>는 데이터 버퍼(11)의 라이트 위치 「10」에 상응하는 「어드레스 10」으로부터 「어드레스 29」의 데이터 영역(112)에 저장된다. 또한, 데이터 입력 제어 회로(13)에 의해 패킷 데이터 <2>가 저장되면, 라이트 포인터 제어 회로(14)에 의해, 라이트 포인터(12)가 기억하는 라이트 위치가 저장된 패킷 데이터의 데이터 길이에 상당하는 분량인 「20」만큼 변경되어, 도 3에 나타낸 「패킷 데이터 <2> 저장 상태」와 같이, 라이트 위치의 수치 20이 「30」으로 된다. 또한, 라이트 포인터(12)에 의해 기억된 라이트 위치가 라이트 포인터 제어 회로(14)에 의해 변경된 것을 받아, 변경 전의 라이트 위치 「10」이 개시 위치 포인터(15)에 의해 추가적으로 보존된다. 그 결과, 개시 위치 포인터(15)에는 「0」과 「10」 2개의 라이트 위치의 수치 40이 보존된다.
다음으로, 도 1에 나타낸 버퍼 장치(10)에 데이터 길이가 「15」인 패킷 데이터 <3>이 입력되면, 데이터 입력 제어 회로(13)에서 상기 (2) 식에 의해 가용 데이터 영역 용량이 구해지고, 구해진 가용 데이터 영역 용량이 입력된 패킷 데이터 <3>의 데이터 길이 「15」보다도 클 경우에는, 이 패킷 데이터 <3>이 데이터 버퍼(11)의 데이터 영역 중 라이트 포인터(12)가 기억하는 라이트 위치 「30」에 저장 된다. 이 패킷 데이터 <3>의 데이터 길이는 「15」이기 때문에, 도 2에 나타낸 바와 같이, 이 패킷 데이터 <3>은 데이터 버퍼(11)의 라이트 위치 「30」에 상응하는 「어드레스 30」으로부터 「어드레스 44」의 데이터 영역(113)에 저장된다. 또한, 데이터 입력 제어 회로(13)에 의해 패킷 데이터 <3>이 저장되면, 라이트 포인터 제어 회로(14)에 의해, 라이트 포인터(12)가 기억하는 라이트 위치가 저장된 패킷 데이터의 데이터 길이에 상당하는 분량인 「15」만큼 변경되어, 도 3에 나타낸 「패킷 데이터 <3> 저장 상태」와 같이, 라이트 위치의 수치 20이 「45」로 된다. 또한, 라이트 포인터(12)에 의해 기억된 라이트 위치가 라이트 포인터 제어 회로(14)에 의해 변경된 것을 받아, 변경 전의 라이트 위치 「30」이 개시 위치 포인터(15)에 의해 추가적으로 보존된다. 그 결과, 개시 위치 포인터(15)에는 「0」과 「10」과 「30」 3개의 라이트 위치의 수치 40이 보존된다.
여기서, 도 1에 나타낸 버퍼 장치(10)의 데이터 버퍼(11)의 데이터 영역에 저장되어 있는 패킷 데이터가 데이터 출력 제어 회로(17)에 의해 그 데이터 영역으로부터 입력순으로 2개 판독되어, 외부 장치(도시 생략)를 향하여 송신되고, 그 외부 장치에서 정상적으로 수신되었다고 가정한다. 이 경우에는, 그 외부 장치는 본 발명에서의 통지의 일례에 상당하는, 버퍼 장치로부터 송신된 패킷 데이터가 정상적으로 수신되었음을 나타내는 동시에, 데이터 수를 지정하여 그 데이터 수만큼의 영역 해방을 구하는 통지(이하, 이 통지를 ACK(Acknowledgment) 통지라고 함)를 버퍼 장치(10)에 보내온다. 여기서는, 2개의 패킷 데이터가 송신되었기 때문에, 버퍼 장치(10)는 데이터 2개 분량의 영역 해방을 구하는 ACK 통지를 받게 된다. 버 퍼 장치(10)가 이 ACK 통지를 받으면, 리드 포인터 제어 회로(18)에 의해, 개시 위치 포인터(15)에 보존되어 있는 라이트 위치가 이 ACK 통지에 의해 지정된 데이터 수 「2」와 동일한 수만큼 보존된 순서로 소거된다. 즉, 수치 「0」과 「10」이 소거되어, 도 3에 나타낸 「패킷 데이터 <1>, <2> 해방 상태」와 같이, 개시 위치 포인터가 나타내는 라이트 위치의 수치 40으로서 수치 「30」이 남는다. 그리고, 남은 라이트 위치의 수치(40) 중 가장 먼저 보존된 수치 「30」이 리드 포인터(16)에 새로운 리드 위치로서 복사되고, 그 결과, 리드 위치의 수치(30)으로서 수치 「30」이 기억된다. 이것에 의해, 패킷 데이터 <1> 및 패킷 데이터 <2>가 저장되어 있던 데이터 영역이 해방된다.
이와 같이, 본 실시예에서는, 영역 해방 시에, 각 패킷 데이터의 데이터 길이 판독이 불필요하여, 고속의 영역 해방이 실현된다.
또한, 도 1에 나타낸 버퍼 장치(10)로부터 패킷 데이터가 외부 장치를 향하여 송신되었을 때에 일시적인 통신 에러 등이 발생하여 수신이 비정상으로 된 경우에는, 그 외부 장치는 버퍼 장치로부터 송신된 복수의 패킷 데이터 중 모든 패킷 데이터의 수신이 비정상으로 되었거나, 또는 일부 후속(後續)의 패킷 데이터의 수신이 비정상으로 되었음을 나타내는 통지(이하, 이 통지를 NACK(Negative Acknowledgment) 통지라고 함)를 버퍼 장치(10)에 보내온다.
외부 장치로부터 모든 패킷 데이터의 수신이 비정상으로 되었음을 나타내는 NACK 통지가 송신된 경우에는, 데이터 출력 제어 회로(17)에 의해 모든 패킷 데이터가 재송신된다. 이 경우, 라이트 포인터(12), 리드 포인터(16), 및 개시 위치 포인터(15)의 기억 내용은 유지된다.
외부 장치로부터 일부 후속의 패킷 데이터의 수신이 비정상으로 되었음을 나타내는 NACK 통지가 송신된 경우에는, 그 NACK 통지는 정상적으로 수신된 데이터 수를 나타낸 통지로 되고, 정상적으로 수신된 패킷 데이터 분량의 데이터 영역에 대해서는, 상술한 수단과 동일한 수단, 즉, 보존된 라이트 위치와, 해방되는 데이터 수에 의거하여 새로운 리드 위치가 구해짐으로써 영역 해방이 실행된다. 또한, 후속의 비정상 패킷 데이터에 대해서는, 데이터 출력 제어 회로(17)에 의해 재송신된다.
이와 같이, 외부 장치(도시 생략)로부터 일부 후속의 패킷 데이터의 수신이 비정상으로 되었음을 나타내는 NACK 통지가 송신된 경우에도, 그 외부 장치에서 정상적으로 수신된 일부의 패킷 데이터에 대한 영역 해방 시에는, 각 패킷 데이터의 데이터 길이 판독이 불필요하여, 고속의 영역 해방이 실현된다.
또한, 본 실시예의 설명에서는 PCI Express 규격에 준거한 패킷 통신 시에 사용되는 버퍼 장치의 예를 나타냈지만, 본 발명은 임의의 데이터 길이를 갖는 데이터의 입력을 받아 그 데이터를 기억하고, 그 기억한 데이터를 입력순으로 출력하는 기억 장치이면 된다.
또한, 본 실시예의 설명에서는 본 발명에서의 통지의 예로서 ACK 통지를 들었지만, 본 발명에서의 통지는 이것에 한정되지 않아, 데이터 수를 지정하여 그 데이터 수만큼의 영역 해방을 구하는 통지이면 된다.
본 발명에 의하면, 데이터 영역에 기억된, 임의의 데이터 길이를 갖는 데이터의 영역 해방 처리를 고속으로 실행할 수 있는 기억 장치가 제공된다.

Claims (1)

  1. 임의의 데이터 길이를 갖는 데이터의 입력을 받아 그 데이터를 기억하고, 그 기억한 데이터를 입력순으로 출력하는 기억 장치에 있어서,
    데이터가 저장되는 데이터 영역을 갖는 데이터 저장부와,
    상기 데이터 영역 중 다음에 데이터가 저장되는 라이트 위치를 기억하는 라이트 포인터(write pointer)와,
    상기 데이터의 입력을 받아 그 데이터를 상기 데이터 영역 중 상기 라이트 포인터가 기억하는 라이트 위치에 저장하는 데이터 입력부와,
    상기 데이터 입력부에 의해 데이터가 저장될 때마다, 상기 라이트 포인터가 기억하는 라이트 위치를 저장된 데이터의 데이터 길이에 상당하는 분량만큼 변경하는 라이트 포인터 제어부와,
    상기 라이트 포인터 제어부에 의해 상기 라이트 위치가 변경될 때마다, 변경 전의 라이트 위치를 추가적으로 보존하는 라이트 위치 이력(履歷) 보존부와,
    상기 데이터 영역 중 다음에 데이터가 판독되는 리드 위치를 기억하는 리드 포인터(read pointer)와,
    상기 데이터 영역에 저장되어 있는 데이터를 그 데이터 영역 중 상기 리드 포인터가 기억하는 리드 위치로부터 입력순으로 판독하여 출력하는 데이터 출력부와,
    데이터 수를 지정하여 그 데이터 수만큼의 영역 해방(解放)을 구하는 통지를 받아, 상기 라이트 위치 이력 보존부에 보존되어 있는 라이트 위치를 그 통지에 의해 지정된 데이터 수와 동일한 수만큼 보존된 순서로 소거(消去)하고, 남은 라이트 위치 중 가장 먼저 보존된 라이트 위치를 상기 리드 포인터에 새로운 리드 위치로서 기억시키는 리드 포인터 제어부를 구비한 것을 특징으로 하는 기억 장치.
KR1020040086532A 2004-07-30 2004-10-28 기억 장치 KR100694242B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004223847A JP4377297B2 (ja) 2004-07-30 2004-07-30 記憶装置
JPJP-P-2004-00223847 2004-07-30

Publications (2)

Publication Number Publication Date
KR20060011767A true KR20060011767A (ko) 2006-02-03
KR100694242B1 KR100694242B1 (ko) 2007-03-14

Family

ID=34978731

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040086532A KR100694242B1 (ko) 2004-07-30 2004-10-28 기억 장치

Country Status (6)

Country Link
US (1) US7353344B2 (ko)
EP (1) EP1621996B1 (ko)
JP (1) JP4377297B2 (ko)
KR (1) KR100694242B1 (ko)
CN (1) CN1728084A (ko)
DE (1) DE602004011760T2 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6273664B2 (ja) * 2012-08-31 2018-02-07 富士通株式会社 データ送信装置、およびデータ送信方法
US8938561B2 (en) * 2013-01-10 2015-01-20 Skymedi Corporation Time-sharing buffer access system
CN112882659B (zh) * 2021-02-26 2023-05-02 杭州海康威视数字技术股份有限公司 一种信息获得方法、装置、电子设备及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05241936A (ja) 1992-03-03 1993-09-21 Mitsubishi Electric Corp ガーベッジコレクション処理方式及びその記憶装置
GB2267588B (en) * 1992-06-06 1996-03-20 Motorola Inc FIFO memory system
DE19529966A1 (de) * 1995-08-14 1997-02-20 Thomson Brandt Gmbh Verfahren und Schaltungsanordnung zur Resynchronisation einer Speicherverwaltung
US5917506A (en) * 1996-12-05 1999-06-29 Winbond Electronics Corp. Fast data alignment display queue structure for image block transfer
EP0869430B1 (en) * 1997-04-02 2005-11-30 Matsushita Electric Industrial Co., Ltd. Fifo memory device
US6065070A (en) * 1998-03-18 2000-05-16 National Semiconductor Corporation DMA configurable channel with memory width N and with steering logic comprising N multiplexors, each multiplexor having a single one-byte input and N one-byte outputs
US6490649B2 (en) * 1998-11-10 2002-12-03 Lexar Media, Inc. Memory device
US7318117B2 (en) * 2004-02-26 2008-01-08 Super Talent Electronics, Inc. Managing flash memory including recycling obsolete sectors
US6629226B1 (en) * 2000-12-08 2003-09-30 Cypress Semiconductor Corp. Fifo read interface protocol
US7412569B2 (en) * 2003-04-10 2008-08-12 Intel Corporation System and method to track changes in memory

Also Published As

Publication number Publication date
DE602004011760D1 (de) 2008-03-27
CN1728084A (zh) 2006-02-01
US20060026368A1 (en) 2006-02-02
DE602004011760T2 (de) 2009-02-05
EP1621996B1 (en) 2008-02-13
JP4377297B2 (ja) 2009-12-02
KR100694242B1 (ko) 2007-03-14
JP2006049957A (ja) 2006-02-16
EP1621996A1 (en) 2006-02-01
US7353344B2 (en) 2008-04-01

Similar Documents

Publication Publication Date Title
JP4749002B2 (ja) データ転送装置、画像処理装置及びデータ転送制御方法
JP4452690B2 (ja) 電子装置、その制御方法、ホスト装置及びその制御方法
US8260981B2 (en) Direct access memory controller with multiple sources, corresponding method and computer program
US7707335B2 (en) Device and method for managing a retransmit operation
US9032114B2 (en) Direct memory access controller, corresponding method and computer program
JP2007259274A (ja) 再送制御回路、送信装置、再送制御方法及び再送制御プログラム
KR100694242B1 (ko) 기억 장치
JP4606216B2 (ja) 通信データ制御装置
US5907716A (en) Fifo buffer capable of partially erasing data set held therein
CN108073546A (zh) 一种基于fpga实现网络数据接收及读取控制方法
JP2005167780A (ja) ストリーミングデータ伝送装置及び伝送方法
JPWO2010122613A1 (ja) Fifoバッファ装置
US20140237072A1 (en) Device and method for data communication
US9947075B2 (en) Image processing apparatus
US20110082995A1 (en) Information processing apparatus
JP5316696B2 (ja) データブロック読出制御装置
JP4086676B2 (ja) データ転送装置
KR100974914B1 (ko) 스마트 카드에 적합한 디엠에이를 이용한 유에스비 데이터 전송 방법
JP2005303787A (ja) パケット生成装置
JP4769316B2 (ja) パケットキューイング装置およびパケットキューイング方法
JPH04358390A (ja) Fifoメモリ
CN112486859A (zh) 数据流处理方法、装置、计算机可读存储介质及设备
JP2008099139A (ja) 通信方法
KR101667602B1 (ko) 태깅 및 언태깅의 제어가 가능한 선입선출 메모리 장치 및 이를 이용한 데이터 출력 방법
JP2006014186A (ja) ネットワーク中継装置

Legal Events

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

Payment date: 20130227

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140220

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150224

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20200218

Year of fee payment: 14