KR19980024107A - 데이터 버퍼링 시스템 - Google Patents

데이터 버퍼링 시스템 Download PDF

Info

Publication number
KR19980024107A
KR19980024107A KR1019970034884A KR19970034884A KR19980024107A KR 19980024107 A KR19980024107 A KR 19980024107A KR 1019970034884 A KR1019970034884 A KR 1019970034884A KR 19970034884 A KR19970034884 A KR 19970034884A KR 19980024107 A KR19980024107 A KR 19980024107A
Authority
KR
South Korea
Prior art keywords
buffer
ring
read
data
pointer
Prior art date
Application number
KR1019970034884A
Other languages
English (en)
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 KR19980024107A publication Critical patent/KR19980024107A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • 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)
  • Human Computer Interaction (AREA)
  • Information Transfer Systems (AREA)
  • Computer And Data Communications (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명의 데이터 버퍼링 시스템은 버퍼로의 기록 동작과 판독 동작의 속도차를 흡수할 목적으로 링 버퍼 구조를 채용하고 있다. 이 링 버퍼는 버퍼링의 최소 단위인 버퍼 메모리를 링 모양으로 연결하여 이루어진 「서브 링」과, 서브 링끼리를 링 모양으로 연결하여 이루어진 「메인 링」으로 구성된다.
더블 링 버퍼의 전체 사이즈는 거대하기 때문에, 모든 버퍼 메모리를 물리 메모리상에 두는 것은 불가능하다. 이에 대해, 1개의 서브 링에 포함되는 버퍼 메모리 수는 비교적 적기 때문에, 1개의 서브 링을 물리 메모리 상에 두는 것은 가능하다.
버퍼로의 기록 동작과 판독 동작이 동기적으로 행해지고 있는 동안은 사용 버퍼 메모리 수가 적어도 되기 때문에, 단일의 서브 링만으로 데이터 버퍼링을 행하면 스와핑을 회피할 수 있다.
이에 대해, 버퍼로의 기록 동작과 판독 동작이 비동기적으로 된 경우에는, 사용 버퍼 메모리 수가 증대하기 때문에, 2 이상의 서브 링에 걸쳐 데이터 버퍼링을 행할 필요가 있다. 이 결과, 일부의 버퍼 메모리를 스와핑하지 않으면 안되게 된다.
데이터 처리가 동기적으로 행해지고 있는 동안은 단일의 서브 링만을 사용하여 데이터 버퍼링을 하는 한편, 데이터 처리가 정체하여 비동기화한 경우에 한해 복수의 서브 링에 걸쳐 데이터 버퍼링을 행한다. 즉, 메인 링 전체를 사용할 기회를 최소한으로 억제할 수 있기 때문에, 스와핑의 상태화를 양호하게 방지할 수 있다.

Description

데이터 버퍼링 시스템
본 발명은 예를 들면 컴퓨터 시스템이 시스템 외부로부터 수신한 데이터를 파일화하여 세이브할 때에 수신 데이터의 일시 보유를 위하여 사용되는 데이터 버퍼링 시스템에 관한 것으로서, 특히 수신 데이터의 기록 속도와 판독 속도의 차(gap)를 흡수하기 위하여 버퍼 메모리를 링 버퍼 구성으로 한 데이터 버퍼링 시스템에 관한 것이다. 보다 상세하게는, 본 발명은 링 버퍼 사이즈의 거대화에 수반하는 스와핑의 문제를 해소하는 데이터 버퍼링 시스템에 관한 것이다.
현재의 기술 혁신에 따라 데스크톱형, 노트북형 등 각종 퍼스널 컴퓨터(PC)가 개발되어 광범위하게 보급되고 있다. 최근에는 PC의 적용 분야도 점점 확대되고 있다.
예를 들면, PC에 통신용 어댑터 카드를 장착하여 통신 메체와 접속하면 정보 통신 기기로서 이용 가능하게 된다. 또한, PC에 DCD(데이터 채널 디코더) 어댑터 카드를 장착하면, PC는 위성 데이터 방송 수신 시스템으로서 가동하여 위성 데이터 방송을 수신할 수 있다.
도 7에는, PC가 위성 방송 데이터를 파일로서 받아들이는 모습을 개략적으로 도시하고 있다. 위성 방송 데이터는 예를 들면 288비트 길이의 패킷(보다 구체적으로는 데이터의 실체인 23 바이트 외에 체크 비트를 포함한다. 이하 마찬가지임)의 형태로 전송된다. DCD 어댑터가 수신한 패킷은 DCD 어댑터용 디바이스 드라이버(가칭)가 갖는 32킬로 바이트 사이즈의 데이터 버퍼에 순차 저장된다. 운영 시스템(OS)내에 설치된 응용 프로그래밍 인터페이스(Application Programming Interface, API : 시스템 호출(system call)의 일종)는 데이터 버퍼에 저장된 패킷 데이터를 조립하여 데이터 그룹화하는 것과 함께, 데이터 그룹을 파일로서 하드 디스크에 세이브하도록 되어 있다. 여기에서 말하는 「데이터 그룹」이라는 것은 의미가 있는 데이터를 하나로 합친 것으로서, 예를 들면 동화상 1 프레임 분에 상당한다. 단, 데이터 그룹의 구분은 기본적으로 원래 데이터의 작성자의 의도나 요망에 근거한 것으로, 데이터 그룹의 사이즈나 패킷 수는 가변이다. 예를 들면, 동화상을 포함하는 엄청난 데이터 그룹은 최대 16M 바이트에 달하는 것도 드물지 않다.
게다가, 데이터 그룹화나 파일 세이브 작업은 응용 프로그램(예를 들면, 「위성 데이터 방송 수신 응용 프로그램(가칭)」)이 API를 거치지 않고 직접 행해져도 좋다. 또한, 23 바이트가 되는 패킷 길이나 32 킬로 바이트가 되는 버퍼 메모리 사이즈는 지금까지의 통신 기술의 관습에 근거하는 설계 사항에 지나지 않는다.
수신 데이터를 데이터 버퍼에 기록하는 동작과, 이를 데이터 버퍼로부터 판독하여 데이터 그룹화하는 동작은 대부분의 경우 동기적으로 행해지고 있는 것이 실정이다. 기록 동작과 판독 동작의 동기가 취해져 있는 경우에 한하면, 데이터 버퍼를 「핑퐁 버퍼」 구성으로 하는 것이 가능하다(도 8a 참조). 핑퐁 버퍼라는 것은 2개의 버퍼 메모리로 이루어지고, 한쪽의 버퍼가 데이터 판독용으로 사용되고 있는 동안은 다른 쪽을 데이터 기록용으로 사용하는 것을 말한다. 핑퐁 버퍼는 각 버퍼 메모리의 사용 빈도가 높고, 스와핑이 일어나기 어렵다는 점에서 우수하다.
그런데, 데이터 버퍼의 기록 동작과 판독 동작은 항상 동기하여 있다고는 할 수 없다. 왜냐하면, 하드 디스크에 파일 세이브할 때에는 메모리 억세스와는 달리 비교적 장시간을 요하는 경과로서 데이터 판독 동작 쪽이 지체되고, 비동기 상태로 되기 때문이다. 상술한 핑퐁 버퍼는 기록 동작과 판독 동작의 속도차를 흡수할 수는 없다. 만약 데이터의 기록 동작을 기다리게 하면, 수신 데이터의 넘침을 야기해버린다. 또한, 판독의 완료를 기다리지 않고 수신 데이터를 기록하면, 판독 전의 수신 데이터가 상실된다.
이 때문에, 수신 데이터의 버퍼링에는 소위 「링 버퍼」를 사용하는 것이 바람직하다고 생각된다. 여기에서, 「링 버퍼」라는 것은 각 버퍼 메모리내를 포인터로 제어하고 선두 버퍼와 최종 버퍼를 링과 같이 연결한 버퍼링 방식으로서, 상한 어드레스로부터 순차 기록해가고 하한 어드레스까지 도달하면 다시 상한 어드레스로 점프하여 기록하도록 제어되게 되어 있다. 도 8b에는 링 버퍼에 의해 수신 데이터를 일시 보유하는 모습을 모식적으로 나타내고 있다. 링 버퍼는 개념상은 복수의 버퍼 메모리가 링 모양으로 배열되어 있고, 데이터의 판독 포인터가 기록 포인터를 쫓아가는 모습으로 하여 동작한다.
API는 DCD 어댑터가 수신한 패킷 데이터를 32 킬로 바이트 단위로 2 ∼ 5 회/초 정도의 빈도로 판독하여 기록 포인터로 지시된 버퍼 메모리에 기록하면 좋다. 또한, API는 판독 포인터로 지시된 버퍼 메모리로부터 수신 데이터를 순차적으로 읽어내어 데이터 그룹 버퍼상에서 데이터 그룹화하고, 하드 디스크에 파일 세이브하면 된다. 데이터 그룹의 사이즈는 대체로 일정하지 않으며, 거대한 데이터 그룹을 처리 할 때에는 판독 동작이 지체되어 버린다. 이러한 링 버퍼 구성을 채용하면, 기록 동작과 판독 동작의 속도차를 흡수하는 것이 가능하다는 것은 당업자라면 이해할 것이다.
링 버퍼의 사이즈는 버퍼로부터의 데이터 판독의 지연에 대해서 충분한 여유를 갖는 것일 필요가 있다. 예를 들면, 생성된 데이터 그룹이 최대 사이즈인 16M 바이트로 된 경우에는, 해당 데이터 그룹을 하드 디스크에 파일 세이브하는 데는 1분 정도의 시간을 요한다. 이 파일 세이브 작업 동안, 데이터 그룹의 생성 즉 버퍼로부터의 데이터 판독 작업은 중단된다. 한편, 1분 동안에 전파가 전송하는 데이터량은 8M 바이트 정도이다. 따라서, 데이터 판독이 중단되는 최대 기간의 수신 데이터를 확보하기 위해서는 8M 바이트 사이즈의 링 버퍼(즉, 32 킬로 바이트의 버퍼 메모리를 256개) 구비할 필요가 있다.
그런데, 8M 바이트의 링 버퍼를 PC의 물리 메모리상에 상주시키는 것은 거의 불가능에 가깝다. 물리 메모리를 링 버퍼이외의 목적에 할당할 필요가 있는 것(예를 들면, 데이터 그룹 생성용의 버퍼로서 16M 바이트가 필요함), 및 통상의 PC에 표준 장비되는 메모리 사이즈가 기껏해야 16M 바이트 또는 32M 바이트 정도인 것 등을 감안하면, 위성 데이터 방송 수신 시스템으로서 사용된 PC의 물리 메모리가 부족 상태에 있는 것은 명백할 것이다.
물리 메모리가 부족한 것의 귀결로서 당연히 불요(또는 오래된) 데이터의 하드 디스크로의 쫓아 내는 즉 스와핑 아웃(swapping out)이 감행된다. 즉, 링 버퍼 중의 일부의 버퍼 메모리밖에 물리 메모리 상에 둘 수 없고, 나머지의 버퍼 메모리는 하드 디스크로 쫓아내어 버린다는 것이다(도 9 참조).
스왑 아웃 데이터의 결정은 일반적으로는 LRU(Least Recently Used)법, 즉 최근 사용되지 않은 것을 쫓아낸다는 논리가 적용된다. 여기에서, 거대한 링 버퍼(예를 들면, 32 킬로 바이트의 버퍼 메모리를 256개 갖는 8M 바이트 링 버퍼)에 LRU법을 적용한 경우를 도 9를 예로 하여 설명한다. 동 도면에서, 사선부는 미처리(즉, 데이터 그룹화되어 있지 않은) 데이터가 기록된 버퍼 메모리 영역이고, 점선으로 둘러싸인 부분은 물리 메모리상에 존재하는 버퍼 메모리 영역인 것으로 한다.
링 버퍼에 있어서는 버퍼 메모리는 링을 따라 순서대로 사용된다. 따라서, 가장 과거에 사용된 버퍼 메모리는 다음의 데이터 기록에 사용되는 버퍼 메모리이고, 스왑 아웃(swap out)되어 있을 가능성이 대단히 높다. 이 결과, 기록 포인터로 지시된 버퍼 메모리를 물리 메모리상에 존재시키기 위해서는, 버퍼 메모리에 해당하는 데이터를 스왑 인(swap in)하지 않으면 안된다. 즉, 링을 일주할 때에는 버퍼 메모리를 진행할 때마다 반드시 스와핑이 발생하기 때문이다. 게다가, 이 때의 스왑 인 데이터(swap in data)는 이미 데이터 그룹화된 무효 데이터이다. 메모리 공간의 관리는 일반적으로는 OS의 서브시스템의 하나인 메모리 관리자(memory manager)가 행한다. 메모리 관리자는 API와는 무관계로 스와핑 작업을 관리하고 있고, 어떤 버퍼 메모리가 사용되었는지를 파악할 수 없기 때문에, 이러한 무효 데이터의 스와핑을 중지할 수는 없다. 이러한 쓸모없는 데이터의 무익한 스와핑 작업은 시스템에 대해 쓸모없는 스트레스가 되는 것은 말할 나위도 없다.
데이터 그룹이 최대인 16M 바이트로 되는 일은 극히 드물고, 통상은 물리 메모리상에 상주할 수 있을 정도의 개수의 버퍼 메모리를 사용하여 동기적으로 수신 데이터를 처리할 수 있다. 링 버퍼의 사이즈를 거대화시킨 탓에 수신 데이터를 기록할 때마다 링 상을 순서대로 이동하여 스와핑을 일으키게 되게 된다. 또한, 각 버퍼 메모리의 사용 효율도 당연히 저하된다. 그렇지만, 최대 사이즈의 데이터 그룹 처리시의 데이터 보전을 고려하면, 링 버퍼를 거대화하지 않을 수 없다.
하드 디스크로의 억세스를 요하는 스와핑은 시스템에 대해 많은 부담이 된다. 상기의 설명은 DCD 어댑터를 1 포트 갖는 경우이고, DCD 어댑터를 4 포트 갖는 경우에는 스와핑의 기회도 4배로 증가한다. 이 결과, 스와핑이 상태화할 우려가 있고, 게다가 수신 데이터의 처리의 지연이나 넘침을 초래할지도 모른다.
본 발명은 이상과 같은 문제점에 착안한 것으로, 그 목적은 예를 들면 컴퓨터 시스템이 시스템 외부로부터 수신한 데이터를 파일화하여 세이브할 때에, 수신 데이터의 일시 보유를 위해 사용되는 우수한 데이터 버퍼링 시스템을 제공하는 데 있다.
본 발명의 다른 목적은 수신 데이터의 일시 보유를 위해 사용되는 데이터 버퍼링 시스템에 있어서, 수신 데이터의 기록 속도와 판독 속도의 차를 흡수하기 위하여 버퍼 메모리를 링 버퍼 구성으로 한 우수한 데이터 버퍼링 시스템을 제공하는 데 있다.
본 발명의 또다른 목적은 상당량의 수신 데이터를 일시적으로 보유하기 위하여 링 버퍼 구성으로 한 데이터 버퍼링 시스템에 있어서, 링 버퍼 사이즈의 거대화에 수반하는 하드 디스크로의 스와핑의 문제를 해소할 수 있는 우수한 데이터 버퍼링 시스템을 제공하는 데 있다.
본 발명은 상기 과제를 참작하여 이루어진 것으로, 그 제1의 측면은 컴퓨터 시스템의 물리 메모리를 이용하여 데이터 버퍼링을 행하기 위한 데이터 버퍼링 시스템에 있어서,
(a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
(b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
(c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
(d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
(e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
(f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
(g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터
를 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템이다.
또한, 본 발명의 제2의 측면은, 컴퓨터 시스템의 물리 메모리를 이용하여 데이터 버퍼링을 행하기 위한 데이터 버퍼링 시스템에 있어서,
(a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
(b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
(c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
(d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
(e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
(f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
(g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
(h) 상기 컴퓨터 시스템에 설치된 외부 기억 장치와,
(i) 버퍼 메모리의 내용을 상기 물리 메모리와 상기 외부 기억 장치의 사이에서 스와핑(swapping)시키기 위한 스와핑 수단
을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템이다.
또한, 본 발명의 제3의 측면은, 컴퓨터 시스템의 물리 메모리를 이용하여 데이터 버퍼링을 행하기 위한 데이터 버퍼링 시스템에 있어서,
(a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
(b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
(c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
(d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
(e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
(f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
(g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
(h) 현재 제2의 기록 포인터로 지시되어 있는 제1의 링 버퍼에서 제1의 기록 포인터가 제1의 판독 포인터의 하나 바로 앞의 버퍼 메모리를 지시하고 있는지의 여부를 판단하여 하나 바로 앞이 아니면 제1의 기록 포인터로 지시된 버퍼 메모리에 데이터를 기록함과 함께 제1의 기록 포인터를 다음의 버퍼 메모리로 가게 하고, 하나 바로 앞이면, 제2의 기록 포인터를 다음의 제1의 링 버퍼로 가게 하는 기록 제어 수단
을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템이다.
제3의 측면에 따른 데이터 버퍼링 시스템에 있어서, 상기 기록 제어 수단은 제2의 기록 포인터를 다음의 제1의 링 버퍼로 가게 하기 전에 제2의 기록 포인터가 제2의 판독 포인터의 하나 바로 앞과 일치하는지의 여부를 판단하여, 일치하는 경우에는 버퍼 충만 상태로 판단하여 제2의 기록 포인터를 가게 하지 않고 데이터 기록 동작을 보류하도록 하여도 좋다.
또한, 본 발명의 제4의 측면은, 컴퓨터 시스템의 물리 메모리를 이용하여 데이터 버퍼링을 행하기 위한 데이터 버퍼링 시스템에 있어서,
(a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
(b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
(c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
(d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
(e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
(f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
(g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
(h) 현재 제2의 판독 포인터로 지시되어 있는 제1의 링 버퍼에서 제1의 판독 포인터가 제1의 기록 포인터와 동일한 버퍼 메모리를 지시하고 있는지 여부를 판단하여, 다르면 제1의 판독 포인터로 지시된 버퍼 메모리로부터 데이터를 판독하고, 같으면, 제2의 판독 포인터를 다음의 제1의 링 버퍼로 가게 하는 판독 제어 수단
을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템이다.
제4의 측면에 따른 데이터 버퍼링 시스템에 있어서, 상기 판독 제어 수단은 제2의 판독 포인터를 다음의 제1의 링 버퍼로 가게 하기 전에, 제2의 판독 포인터가 제2의 기록 포인터와 일치하는지의 여부를 판단하여, 일치하는 경우에는 버퍼가 비어 있는 상태로 판단하여 제2의 판독 포인터를 가게 하지 않고 데이터 판독 동작을 보류하도록 하여도 좋다.
또한, 본 발명의 제5의 측면은, 컴퓨터 시스템이 자신의 물리 메모리를 이용하여 시스템 외부로부터 수신한 데이터를 버퍼링하기 위한 데이터 버퍼링 시스템에 있어서,
(a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
(b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
(c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
(d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
(e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
(f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
(g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터
를 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템이다.
또한, 본 발명의 제6의 측면은, 컴퓨터 시스템이 자신의 물리 메모리를 이용하여 시스템 외부로부터 수신한 데이터를 버퍼링하기 위한 데이터 버퍼링 시스템에 있어서,
(a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
(b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
(c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
(d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
(e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
(f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
(g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
(h) 상기 컴퓨터 시스템에 설치된 외부 기억 장치와,
(i) 버퍼 메모리의 내용을 상기 물리 메모리와 상기 외부 기억 장치의 사이에서 스와핑(swapping)시키기 위한 스와핑 수단
을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템이다.
또한, 본 발명의 제7의 측면은, 컴퓨터 시스템이 자신의 물리 메모리를 이용하여 시스템 외부로부터 수신한 데이터를 버퍼링하기 위한 데이터 버퍼링 시스템에 있어서,
(a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
(b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
(c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
(d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
(e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
(f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
(g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
(h) 현재 제2의 기록 포인터로 지시되어 있는 제1의 링 버퍼에서 제1의 기록 포인터가 제1의 판독 포인터의 하나 바로 앞의 버퍼 메모리를 지시하고 있는지의 여부를 판단하여 하나 바로 앞이 아니면 제1의 기록 포인터로 지시된 버퍼 메모리에 데이터를 기록함과 함께 제1의 기록 포인터를 다음의 버퍼 메모리로 가게 하고, 하나 바로 앞이면, 제2의 기록 포인터를 다음의 제1의 링 버퍼로 가게 하는 기록 제어 수단
을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템이다.
제7의 측면에 따른 데이터 버퍼링 시스템에 있어서, 상기 기록 제어 수단은 제2의 기록 포인터를 다음의 제1의 링 버퍼로 가게 하기 전에 제2의 기록 포인터가 제2의 판독 포인터의 하나 바로 앞과 일치하는지의 여부를 판단하여, 일치하는 경우에는 버퍼 충만 상태로 판단하여 제2의 기록 포인터를 가게 하지 않고 데이터 기록 동작을 보류하도록 하여도 좋다.
또한, 본 발명의 제8의 측면은, 컴퓨터 시스템이 자신의 물리 메모리를 이용하여 시스템 외부로부터 수신한 데이터를 버퍼링하기 위한 데이터 버퍼링 시스템에 있어서,
(a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
(b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
(c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
(d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
(e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
(f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
(g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
(h) 현재 제2의 판독 포인터로 지시되어 있는 제1의 링 버퍼에서 제1의 판독 포인터가 제1의 기록 포인터와 동일한 버퍼 메모리를 지시하고 있는지의 여부를 판단하여, 다르면 제1의 판독 포인터로 지시된 버퍼 메모리로부터 데이터를 판독하고, 같으면, 제2의 판독 포인터를 다음의 제1의 링 버퍼로 가게 하는 판독 제어 수단
을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템이다.
제8의 측면에 따른 데이터 버퍼링 시스템에 있어서, 상기 판독 제어 수단은 제2의 판독 포인터를 다음의 제1의 링 버퍼로 가게 하기 전에, 제2의 판독 포인터가 제2의 기록 포인터와 일치하는지 여부를 판단하여, 일치하는 경우에는 버퍼가 비어 있는 상태로 판단하여 제2의 판독 포인터를 가게 하지 않고 데이터 판독 동작을 보류하도록 하여도 좋다.
또한, 본 발명의 제9의 측면은, 컴퓨터 시스템이 시스템 외부로부터 수신한 데이터를 파일화하여 세이브(save)할 때에, 자신의 물리 메모리를 이용하여 수신 데이터를 일시적으로 버퍼링하기 위한 데이터 버퍼링 시스템에 있어서,
(a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
(b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
(c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
(d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
(e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
(f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
(g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
(h) 현재 제2의 기록 포인터로 지시된 제1의 링 버퍼 중에서 제1의 기록 포인터로 지시된 버퍼 메모리에 수신 데이터를 기록하는 데이터 기록 수단과,
(i) 현재 제2의 판독 포인터로 지시된 제1의 링 버퍼 중에서 제1의 판독 포인터로 지시된 버퍼 메모리로부터 데이터를 판독하여 파일화하는 파일화 수단
을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템이다.
또한, 본 발명의 제10의 측면은, 컴퓨터 시스템이 시스템 외부로부터 수신한 데이터를 파일화하여 세이브(save)할 때에, 자신의 물리 메모리를 이용하여 수신 데이터를 일시적으로 버퍼링하기 위한 데이터 버퍼링 시스템에 있어서,
(a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
(b) 복수의 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
(c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
(d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
(e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
(f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
(g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
(h) 상기 컴퓨터 시스템에 설치된 외부 기억 장치와,
(i) 현재 제2의 기록 포인터로 지시된 제1의 링 버퍼 중에서 제1의 기록 포인터로 지시된 버퍼 메모리에 수신 데이터를 기록하는 데이터 기록 수단과,
(j) 현재 제2의 판독 포인터로 지시된 제1의 링 버퍼 중에서 제1의 판독 포인터로 지시된 버퍼 메모리로부터 데이터를 판독하고 파일화하여 상기 외부 기억 장치에 세이브하는 파일화 수단과,
(k) 버퍼 메모리의 내용을 상기 물리 메모리와 상기 외부 기억 장치의 사이에서 스와핑시키기 위한 스와핑 수단
을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템이다.
제9 또는 제10의 측면에 따른 데이터 버퍼링 시스템에 있어서, 상기 데이터 기록 수단은 현재 제2의 기록 포인터로 지시되어 있는 제1의 링 버퍼에서 제1의 기록 포인터가 제1의 판독 포인터의 하나 바로 앞의 버퍼 메모리를 지시하고 있는지의 여부를 판단하여, 하나 바로 앞이 아니면 제1의 기록 포인터로 지시된 버퍼 메모리에 데이터를 기록함과 함께 제1의 기록 포인터를 다음의 버퍼 메모리로 가게 하고, 하나 바로 앞이면 제2의 기록 포인터를 다음의 제1의 링 버퍼로 가게 하도록 하여도 좋다.
또한, 제9 또는 제10의 측면에 따른 데이터 버퍼링 시스템에 있어서, 상기 데이터 기록 제어 수단은 제2의 기록 포인터를 다음의 제1의 링 버퍼로 가게 하기 전에, 제2의 기록 포인터가 제2의 판독 포인터의 하나 바로 앞과 일치하는지의 여부를 판단하여, 일치하는 경우에는 버퍼 충만 상태로 판단하여 제2의 기록 포인터를 가게 하지 않고 데이터 기록 동작을 보류하도록 하여도 좋다.
또한, 제9 또는 제10의 측면에 따른 데이터 버퍼링 시스템에 있어서, 상기 파일화 수단은 현재 제2의 판독 포인터로 지시되어 있는 제1의 링 버퍼에서 제1의 판독 포인터가 제1의 기록 포인터와 동일한 버퍼 메모리를 지시하고 있는지 여부를 판단하여, 다르면 제1의 판독 포인터로 지시된 버퍼 메모리로부터 데이터를 판독하고, 같으면 제2의 판독 포인터를 다음의 제1의 링 버퍼로 가게 하도록 하여도 좋다.
또한, 제9 또는 제10의 측면에 따른 데이터 버퍼링 시스템에 있어서, 상기 파일화 수단은 제2의 판독 포인터를 다음의 제1의 링 버퍼로 가게 하기 전에, 제2의 판독 포인터가 제2의 기록 포인터와 일치하는지 여부를 판단하여, 일치하는 경우에는 버퍼가 비어 있는 상태로 판단하여 제2의 판독 포인터를 가게 하지 않고 데이터 판독 동작을 보류하도록 하여도 좋다.
도 4에는 본 발명의 각 측면에 따른 데이터 버퍼링 시스템의 구성을 모식적으로 도시하고 있다. 이 데이터 버퍼링 시스템은 버퍼로의 기록 동작과 판독 동작의 속도차를 흡수할 목적으로, 링 버퍼 구성을 채용하고 있다. 이 링 버퍼는 버퍼링의 최소 단위인 버퍼 메모리를 링 모양으로 연결하여 이루어진 「서브 링」과, 서브 링끼리를 링 모양으로 연결한 「메인 링」으로 구성된다. 「서브 링」 및 「메인 링」이라는 용어는 본 발명의 각 측면에서 말하는 「제1의 링 버퍼」 및 「제2의 링 버퍼」의 각각과 동의이다. 바꾸어 말하면, 본 발명에 따른 데이터 버퍼링 시스템은 이중의 링을 형성하고 있다는 것이다(이하, 이것을 「더블 링 버퍼」라고 함).
메인 링에는 현재 데이터의 기록이 행해지고 있는 서브 링, 및 현재 데이터의 판독이 행해지고 있는 서브 링을 지시하기 위해, 한쌍의 메인 기록 포인터, 및 메인 판독 포인터가 설치되어 있다. 여기에서, 「메인 기록 포인터」 및 「메인 판독 포인터」라는 용어는 본 발명의 각 측면에서 말하는 「제2의 기록 포인터」 및 「제2의 판독 포인터」의 각각과 동의이다. 또한, 각 서브 링마다에 자기 링내에 현재 데이터의 기록이 행해지고 있는 버퍼 메모리, 및 현재 데이터의 판독이 행해지고 있는 버퍼 메모리를 지시하기 위해 각각 한쌍의 서브 기록 포인터, 및 서브 판독 포인터가 설치되어 있다. 바꾸어 말하면, 각 버퍼 메모리는 메인 포인터와 서브 포인터의 양쪽에 의해 어드레스 가능한 것이다. 여기에서, 「서브 기록 포인터」 및 「서브 판독 포인터」라는 용어는 본 발명의 각 측면에서 말하는 「제1의 기록 포인터」 및 「제1의 판독 포인터」의 각각과 동의이다.
더블 링 버퍼는 수신 데이터가 엄청나게 되어 버퍼로의 기록 동작과 판독 동작이 최대한으로 비동기로 된 경우를 가상하여 설계되어 있기 때문에, 그 전체 사이즈(즉, 버퍼 메모리의 총 수)는 거대하게 된다. 따라서, 더블 링 버퍼 중의 모든 버퍼 메모리를 물리 메모리상에 두는 것은 불가능하다. 이에 대해, 1개의 서브 링에 포함되는 버퍼 메모리 수는 비교적 적기 때문에, 1개의 서브 링을 물리 메모리상에 두는 것은 가능하다.
버퍼로의 기록 동작과 판독 동작이 동기적으로 행해지고 있는 동안은 사용 버퍼 메모리 수가 적고, 기록 포인터와 판독 포인터의 거리가 짧다. 따라서, 데이터 처리가 동기적인 경우에는, 단일의 서브 링만을 사용하여 데이터 버퍼링을 행함으로써 버퍼 메모리의 스와핑을 회피할 수 있다.
이에 대해 버퍼로의 기록 동작과 판독 동작이 비동기적인 경우에는, 사용 버퍼 메모리 수가 증대하고, 기록 포인터와 판독 포인터의 거리가 길게 된다. 이 때문에, 2 이상의 서브 링을 사용하여 데이터 버퍼링을 행할 필요가 생기게 된다. 복수의 서브 링을 사용하는 것의 귀결로서 적어도 일부의버퍼 메모리를 스와핑하지 않으면 안된다.
본 발명에 따른 데이터 버퍼링 시스템은 데이터 처리가 비동기화하는 일이 드문 경우에는 특히 양호하게 작용한다. 예를 들면, 데이터 처리가 동기적으로 행해지고 있는 동안에는 단일의 서브 링만을 사용하여 데이터 버퍼링을 행하기 때문에, 이 동안의 버퍼 메모리의 사용 효율이 높고, 동시에 스와핑을 회피할 수 있다. 다른 한편으로는, 데이터 처리가 정체하여 비동기화한 경우에 한해, 복수의 서브 링에 걸쳐 데이터 버퍼링을 행한다. 즉, 본 발명에 따른 데이터 버퍼링 시스템은 메인 링 전체를 사용할 기회를 최소한으로 억제하고 있기 때문에, 스와핑의 상태화를 양호하게 방지할 수 있기 때문이다.
본 발명의 다른 목적, 특징이나 잇점은 후술하는 본 발명의 실시예나 첨부하는 도면에 근거한 보다 상세한 설명에 의해 명확하게 될 것이다.
도 1은 본 발명을 실현하는데 적합한 전형적인 퍼스널 컴퓨터(PC)(100)의 하드웨어 구성을 모식적으로 나타낸 도면.
도 2는 본 발명의 실시에 제공되는 PC(100)상에서 실행 가능한 소프트웨어의 계층적 구성을 모식적으로 나타낸 도면.
도 3은 DCD 어댑터 카드에 의해 수신된 데이터의 소프트웨어 레벨에서의 처리 흐름을 개략적으로 도해한 도면.
도 4는 API가 채용하는 데이터 버퍼의 구성을 모식적으로 나타낸 도면.
도 5는 더블 링 버퍼(double ring buffer)로의 데이터 기록 동작을 플로우챠트화하여 도시한 도면.
도 6은 더블 링 버퍼의 데이터 판독 동작을 플로우챠트화하여 나타낸 도면.
도 7은 PC가 아날로그 위성 데이터를 파일로서 받아들이는 모습을 개략적으로 나타낸 도면.
도 8은 핑퐁 버퍼 및 링 버퍼 각각의 구성을 모식적으로 나타낸 도면.
도 9는 링 버퍼 중의 버퍼 메모리를 스와핑한 모습을 모식적으로 나타낸 도면.
도면의 주요 부분에 대한 부호의 설명
11 : CPU
12 : 프로세서 버스
13 : 브리지 회로
14 : 메인 메모리
15 : L2-캐시
16 : PCI 버스
16A : 버스 슬롯
16B : 어댑터 카드
17 : ROM
18 : ISA 버스
18A : 버스 슬롯
18B : 어댑터 카드
19 : 브리지 회로
20 : 비디오 콘트롤러
21 : VRAM
22 : LCD
23 : 카드 버스 콘트롤러
24 : 카드 슬롯
25 : HDD
26 : CD-ROM
27 : KMC
28 : 키보드
29 : 마우스
30 : I/O 콘트롤러
31 : FDD
32 : 병렬 포트
33 : 직렬 포트
34 : 오디오 콘트롤러
35 : 마이크
36 : 스피커
100 : 퍼스널 컴퓨터
이하, 도면을 참조하면서 본 발명의 실시예를 상세히 해설한다.
A. 퍼스널 컴퓨터의 하드웨어 구성
도 1에는, 본 발명을 실현하는데 적합한 전형적인 퍼스널 컴퓨터(PC)(100)의 하드웨어 구성을 모식적으로 도시하고 있다. 이하, 각부에 대해 설명한다.
메인 콘트롤러인 CPU(11)은 운영 시스템(OS)의 제어 하에서 각종 프로그램을 실행하도록 되어 있다. CPU(11)은 예를 들면 미국 인텔사의 펜티엄/1xxMHz로 좋다. 또한, OS는 예를 들면 미국 IBM사의 OS/2(OS/2는 미국 IBM사의 상표)나 미국 마이크로소프트사의 Windows95 등의 멀티태스크 환경을 제공하는 타입의 것이 적합하다.
CPU(11)은 자신의 외부 핀에 직결한 프로세스 버스(12), 로컬 버스로서의 PCI (Peripheral Component Interconnect) 버스(16), 및 ISA(Industry Standard Architecture) 버스(18)이라는 3 계층의 버스를 통해 각 주변 장치(후술)와 상호 접속하고 있다.
프로세스 버스(12)와 PCI 버스(16)은 브리지 회로(호스트-PCI 브리지)(13)에 의해 연결되어 있다. 본 실시예의 브리지 회로(13)은 메인 메모리(14)로의 억세스 동작을 제어하는 메모리 콘트롤러나 양 버스(12, 16)사이의 속도차를 흡수하기 위한 데이터 버퍼 등을 포함한 구성으로 되어 있다.
메인 메모리(14)는 실행 프로그램의 판독 영역으로서 또는 실행 프로그램의 작업 영역으로서 사용되고, 일반적으로는 DRAM(다이나믹 RAM) 칩으로 구성된다. 메인 메모리(14)는 예를 들면 16MB가 표준 장착되고, 128MB까지 증설 가능하다. 또한, L2-캐시(15)는 메인 메모리(14)로의 억세스 시간을 흡수하기 위한 고속 메모리이며, 일반적으로는 SRAM(스태틱 RAM) 칩으로 구성된다. L2-캐시(15)의 용량은 예를 들면 256KB이다. 또한, ROM(17)은 전원 투입시의 테스트 프로그램(POST : Power On Self Test) 등을 영구적으로 저장하기 위한 불휘발성 메모리이다. 게다가, 메모리 공간의 관리는 OS의 서브 시스템의 하나인 「메모리 관리자」가 행한다.
PCI 버스(16)은 비교적 고속인 데이터 전송이 가능한 타입의 버스(버스 폭 32 비트, 동작 주파수 33MHz, 최대 데이터 전송 속도 132KBps)이며, 비디오 콘트롤러(20)이나 카드 버스 콘트롤러(23)과 같은 비교적 고속으로 구동하는 주변 장치류가 접속된다.
비디오 콘트롤러(20)은 CPU(11)로부터의 묘화 명령을 실제로 처리하기 위한 전용 콘트롤러이고, 처리한 묘화 정보를 화면 버퍼(VRAM)(21)에 일단 기록함과 함께, VRAM(21)로부터 묘화 정보를 판독하여 액정 표시 디스플레이(LCD)(22), 또는 CRT 디스플레이(도시하지 않음)에 비디오 출력하도록 되어 있다.
카드 버스 콘트롤러(23)은 PCI 버스(16)상의 버스 신호를 PC 카드 슬롯(24A)에 직결하기 위한 전용 콘트롤러이다. 카드 슬롯(24A)에는 PCMCIA(Personal Computer Memory Card International Association)/JEIDA(Japan Electronic Industry Development Association)이 책정한 규격(예를 들면, PC Card Specification 95)에 준거한 PC 카드(24B)를 삽입 가능하다.
PCI 버스(16)과 ISA 버스(18)은 브리지 회로(PCI-ISA 브리지)(19)에 의해 상호 접속되어 있다. 본 실시예의 브리지 회로(19)는 DMA 콘트롤러나 프로그램가능 인터럽트 콘트롤러(Programmable Interrupt Controller, PIC), 프로그램가능 구간 타이머(Programmable Interval Timer, PIT)를 포함한 구성으로 되어 있다.
또한, 본 실시예의 브리지 회로(19)는 IDE(Integrated Drive Electronics)에 준거한 외부 기억 장치를 접속하기 위한 IDE 커넥터도 구비하고 있다. IDE 커넥터에는 예를 들면 IDE 하드 디스크 드라이브(HDD)(25)나 IDE CD-ROM 드라이브(26)이 접속된다. 게다가, 하드 디스크나 CD-ROM 상의 파일로의 억세스는 OS의 서브 프로그램의 하나인 「파일 관리자」에 의해 실행된다.
게다가, 2개의 브리지 회로(13 및 19)는 PCI로 책정된 것이고, 일반적으로는 단일의 칩 세트의 형태로 제공된다. 칩 세트의 일례는 미국 인텔사가 시판하는 Triton이 있다.
ISA 버스(18)은 PCI 버스에 비해 데이터 전송 속도가 낮고(버스 폭 16 비트, 최대 데이터 전송 속도 4MBps), 키보드/마우스 콘트롤러(KMC)(27)이나 I/O 콘트롤러(30), 오디오 콘트롤러(34) 등의 비교적 저속 구동하는 타입의 주변 장치류를 접속하는데 사용된다.
키보드/마우스 콘트롤러(27)은 키보드(28)로부터의 입력 코드나 마우스(29)로부터의 입력 좌표값을 컴퓨터 데이터로서 받아들이기 위한 전용 콘트롤러이다.
I/O 콘트롤러(30)은 플로피 디스크 드라이브(FDD)(31)의 구동이나, 외부 기기(예를 들면, 프린터나 모뎀 : 도시하지 않음)와의 병렬적 또는 직렬적인 데이터 입출력을 제어하기 위한 주변 콘트롤러이다.
오디오 콘트롤러(34)는 오디오 신호의 입출력 처리를 행하기 위한 전용 콘트롤러이고, 마이크(35)로부터 입력된 오디오 신호를 컴퓨터 데이터로서 받아들이거나, 오디오 데이터를 DA 변환 등을 하여 스피커(36)으로부터 오디오 출력하도록 되어 있다.
버스(16 또는 18)의 한쪽 단부에는 적어도 하나의 버스 슬롯(16A/18A)가 배치되어 있다. 버스 슬롯(16A/18A)에는 각각 PCI 대응 어댑터 카드(16B) 및 ISA 대응 어댑터 카드(18B)를 장착 가능하다. 각각의 어댑터 카드(16B/18B)는 각각의 카드 전용의 디바이스 드라이버를 사용하여 하드웨어 조작 가능하다.
어댑터 카드의 일례로는, DCD(데이터 채널 디코더) 어댑터 카드가 있다. DCD 어댑터 카드는 패킷 형식의 위성 데이터를 수신하여 AD 변환, 디코드, 에러 정정 등의 처리를 실시하는 기능을 가지고 있다. 이 어댑터 카드를 장착한 컴퓨터 시스템은 「DCD 어댑터용 디바이스 드라이버(가칭)」를 사용하여 이 어댑터 카드를 하드웨어 조작 가능하고, 위성 데이터 방송 수신 시스템으로서 이용된다.
게다가, 컴퓨터 시스템을 구성하기 위해서는, 도 1에 도시한 이외에도 많은 전기 회로 등이 필요하다. 단, 이들은 당업자에게는 주지된 바이고, 또한 본 발명의 요지를 구성하는 것은 아니기 때문에, 도면의 복잡함 방지와 설명의 간소화를 위해 본 명세서 중에서는 생략되어 있다.
B. 퍼스널 컴퓨터의 소프트웨어 구성
도 2에는 본 발명의 실시예 제공되는 PC(100)상에서 실행 가능한 소프트웨어의 계층적 구성을 모식적으로 나타내고 있다.
디바이스 드라이버(D/D) :
최하위층의 소프트웨어는 디바이스 드라이버(Device Driver)(D/D)이다. 디바이스 드라이버는 상위의 소프트웨어(예를 들면, 운영 시스템)이 발하는 일반적인 형식의 커맨드(command)를 각 디바이스 고유의 하드웨어 조작에 적합한 형식으로 변환하기 위한 프로그램이다. 도시한 바와 같이, 각 주변 장치마다에 전용의 디바이스 드라이버가 준비되고, 필요에 따라 시스템에 인스톨(install)되어 있다. 예를 들면, DCD 어댑터 카드를 사용하는 사용자는 DCD 어댑터용 디바이스 드라이버를 인스톨하고, CD-ROM 드라이브(26)을 사용하는 사용자는 CD-ROM용 디바이스 드라이버를 인스톨하면 좋다.
게다가, 단일의 디바이스에 대해 복수층의 디바이스 드라이버가 설치되어 있는 경우도 있다. 예를 들면, PC 카드용 디바이스 드라이버는 실제로는 각 PC 카드에 고유한 전용 디바이스 드라이버 외에, 소켓 서비스나 카드 서비스를 포함하고 있다. 또한, DCD 어댑터용 디바이스 드라이버는 수신 패킷을 컴퓨터 데이터로서 받아들이기 위한 7층 중 프로토콜 제3층까지를 포함하고 있다.
운영 시스템(OS) :
운영 시스템은 컴퓨터 시스템(100)내의 하드웨어 및 소프트웨어를 총합적으로 관리하기 위한 기본 소프트웨어로서, 예를 들면 미국 IBM사의 OS/2나 미국 마이크로소프트사의 Windows95가 이에 해당한다.
OS/2는 HDD(25) 등의 외부 기억 장치로의 파일 억세스를 관리하기 위한 「파일 관리자」나, 메모리 공간을 관리하기 위한 「메모리 관리자」, 태스크 실행의 순서나 우선도를 관리하기 위한 「스케쥴」, 시스템 자원의 할당을 관리하기 위한 「자원 관리자(resource manager)」 등의 각 서브 시스템을 포함하고 있다. 예를 들면, 메모리 관리자는 물리 메모리상에 스왑 인/스왑 아웃해야 하는 데이터를 관리하고, 파일 관리자는 스왑 데이터의 HDD(25)로의 기록/판독을 행한다.
또한, OS는 응용 프로그래밍 인터페이스(Application Programming Interface, API)를 구비하고 있다. API라는 것은 HDD(25)로부터의 파일의 판독기록, 디스플레이(22)로의 표시, 디스크의 상태 체크 등의 OS의 기본 기능을 응용 프로그램이 이용할 때에 호출하는 함수의 집합이다. API에 대한 요구는 API 기능을 제공하는 각 서브 시스템이 실행한다.
응용 프로그램(AP) :
최상위층의 소프트웨어는 응용 프로그램(application program)이다. 응용 프로그램은 실무적인 목적을 위하여 사용되는 프로그램으로서, 예를 들면 워드 프로세스 소프트, 데이터베이스 소프트, 표계산 소프트, 통신 소프트 등이 이에 해당한다. 또한, 위성 데이터 방송의 수신을 위한 사용자 인터페이스가 되는 「위성 데이터 방송 수신 응용 프로그램(가칭)」도 응용 프로그램의 일례이다.
각 응용 프로그램은 OS에 의해 그 실행 상황이 관리되는 것과 함께, OS 중의 API를 거쳐 OS의 기능(예를 들면, HDD(25)로의 파일 억세스)를 이용할 수 있다. 또한, DCD 어댑터 카드로부터의 수신 데이터의 수신 등 일련의 처리는 위성 데이터 방송 수신용의 API 서브 시스템(이하, 「수신 API 서브 시스템」이라 함)이 행한다.
위성 데이터의 수신 :
여기에서, DCD 어댑터 카드에 의해 수신된 데이터의 소프트웨어 레벨에서의처리에 대해서 도 3을 참조하면서 개략적으로 설명해 둔다.
위성 데이터는 23 바이트 길이(실제로는, 체크 비트를 포함하여 288 비트 길이)의 패킷의 형태로 전송되고 있다. DCD 어댑터는 이들 패킷을 순서대로 수신하여 디코드 및 에러 정정 처리를 시행한다(화살표 P1). 수신 처리 후의 데이터는 DCD 어댑터용 디바이스 드라이버가 갖는 버퍼 영역에 일단 기록된다(화살표 P2). 이 버퍼 영역은 실제로는 메인 메모리(14)내에서 DCD 어댑터용 디바이스 드라이버에 할당된 작업 영역이다.
API는 위성 데이터 방송 수신 응용 프로그램으로부터의 호출에 응답하여 2 ∼ 5 회/초의 빈도로 디바이스 드라이버의 버퍼 영역으로부터 32 킬로 바이트 단위로 패킷 데이터를 판독하여(화살표 P3), 자신의 데이터 버퍼에 기록한다. 이 데이터 버퍼도 실제로는 메인 메모리(14)내에서 API에 할당된 작업 영역이다. 또한, API는 이 데이터 버퍼로부터 패킷 데이터를 판독하여 데이터 그룹(DG)화하는 것과 함께(화살표 P4), 데이터 그룹 단위로 HDD(25)에 파일 세이브한다(화살표 P5, P6, P7, P8).
게다가, API에 의한 데이터 버퍼로의 기록과 판독은 대체로 동기적으로 행해지지만, 경우에 따라서는 비동기화한다. 비동기화로 처리하기 위해서는 데이터 버퍼는 링 버퍼 구성으로 하는 것이 바람직하지만, 상세한 구성 및 작용에 대해서는 다음 항 C에서 상세히 해설한다.
또한, 수신 패킷의 데이터 버퍼링이나 파일 세이브는 API에 의하지 않고 위성 데이터 방송 수신 응용 프로그램이 직접 행하도록 하여도 좋다.
C. 데이터 버퍼링 시스템
전항까지에서, 본 발명을 양호하게 구현하는 컴퓨터 시스템(100)의 하드웨어 및 소프트웨어 구성을 설명하였다. 본 항에서는 이 시스템(100)상에서 실현되는 위성 데이터 수신시의 데이터 버퍼링 동작을 예로서 본 발명의 작용에 대해서 설명하기로 한다.
C-1. 더블 링 버퍼의 구성 :
도 4에는 본 실시예의 API가 채용하는 데이터 버퍼의 구성을 모식적으로 나타내고 있다. 이미 기술한 바와 같이, 이 데이터 버퍼는 버퍼로의 기록 동작과 버퍼로부터의 판독 동작의 속도차를 흡수할 목적으로 링 버퍼 구성을 채용하고 있다.
동 도면에 도시한 바와 같이, 데이터 버퍼는 버퍼링의 최소 단위인 버퍼 메모리를 링 모양으로 연결하여 이루어진 「서브 링」과, 서브 링끼리를 링 모양으로 연결하여 이루어진 「메인 링」으로 구성된다. 환언하면, 데이터 버퍼는 이중의 링을 형성하고 있다는 것이다(이하, 이를 「더블 링 버퍼」라고 함).
링 버퍼는 일반적으로는 각 버퍼 메모리가 포인터로 제어되고, 또한 선두 버퍼와 최종 버퍼를 링처럼 연결함으로써 실현된다. 본 실시예의 경우, 메인 링에는 현재 데이터의 기록이 행해지고 있는 서브 링, 및 현재 데이터의 판독이 행해지고 있는 서브 링의 각각을 지시하기 위해 한쌍의 메인 기록 포인터, 및 메인 판독 포인터가 설치되어 있다. 또한, 각 서브 링 마다에는 자신의 링내에서 현재 데이터의 기록이 행해지고 있는 버퍼 메모리, 및 현재 데이터의 판독이 행해지고 있는 버퍼 메모리를 지시하기 위해 각각 한쌍의 서브 기록 포인터, 및 서브 판독 포인터가 설치되어 있다.
API에 의한 1회당의 데이터 수신이 32 킬로 바이트 단위로 행해지는 것을 감안하여 각 버퍼 메모리의 사이즈도 32 킬로 바이트로 하고 있다. 또한, 더블 링 버퍼 전체의 사이즈는 데이터 판독이 지체되었을 때의 수신 데이터를 저장 가능한 정도가 필요하다. 예를 들면, 통신 프로토콜에서 허용되는 최대 사이즈(16M 바이트)의 데이터 그룹을 하드 디스크에 파일 세이브하는 데는 1분 정도의 시간을 요한다. 이 디스크 억세스의 동안은 데이터 그룹화 처리가 불능이기 때문에, 버퍼로부터의 데이터 판독은 당연히 정체한다. 한편, 1 분 동안에 전파에 의해 전송되는 데이터량은 8M 바이트(≒ 32 킬로 바이트 x 256) 정도이다. 따라서, 더블 링 버퍼는 32 킬로 바이트의 버퍼 메모리를 256개 정도 가질 필요가 있다. 본 실시예에서는, 1개의 서브 링을 16개의 버퍼 메모리 구성으로 하는 것과 함께, 메인 링을 16개의 서브 링 구성으로 함으로써 합계 256(16 x 16)개의 버퍼 메모리를 준비하고 있다.
도 4에서는, 더블 링 버퍼 중의 각 서브 링에는 0 내지 15의메인 링 번호가 부여되어 있다. 동 도면에서는, 메인 기록 포인터 및 메인 판독 포인터는 각각 메인 링 번호가 3 및 1인 서브 링을 지시하고 있다. 또한, 서브 링내에서는 각 버퍼 메모리에는 0 내지 15의 서브 링 번호가 부여되어 있다. 동 도면의 메인 링 번호가 0인 서브 링 내에서는 서브 기록 포인터 및 서브 판독 포인터는 각각 서브링 번호가 3 및 2인 버퍼 메모리를 지시하고 있다. 환언하면, 메인 링 번호와 서브 링 번호의 양쪽을 참조함으로 각 버퍼 메모리를 어드레스 가능하게 된다.
전술한 바와 같이, 더블 링 전체의 사이즈는 8MB이고, 메모리 용량 등을 감안하면, 모든 버퍼 메모리를 메인 메모리(14)상에 두는 것은 불가능하다. 이 결과, 더블 버퍼 중의 나머지의 버퍼 메모리는 하드 디스크에 스왑 아웃되게 된다. 이에 대해, 1개의 서브 링은 512 킬로 바이트(= 32 킬로 바이트 x 16 개)이고, 서브링내의 모든 버퍼 메모리를 메인 메모리(14)상에 두는 것은 가능하다.
데이터 버퍼로의 기록 동작과 판독 동작이 동기적으로 행해지고 있는 동안은, 기록 포인터와 판독 포인터 사이의 거리가 짧기 때문에, 양 포인터를 단일의 서브 링내에 두는 것은 가능하다. 따라서, 기록 동작과 판독 동작이 동기적으로 행해지고 있는 동안은 단일의 서브 링내에 버퍼 메모리를 순서대로 사용함으로써 버퍼 메모리의 스와핑을 회피할 수 있다.
다른 한편, 기록 동작과 판독 동작이 비동기로 되어 버린 경우에는, 기록 포인터와 판독 포인터 사이의 거리가 길기 때문에, 양 포인터를 단일의 서브 링에 두는 것은 불가능하다. 이 때문에, 기록 동작과 판독 동작이 비동기적인 경우에는, 2 이상의 서브 링에 걸쳐 데이터 버퍼링을 행하지 않으면 안된다. 이 결과, 버퍼 메모리의 스와핑을 초래하게 되지만, 데이터 처리가 지체된 동안의 수신 데이터의 넘침을 방지하기 위해서는 불가피하다.
단, 데이터 버퍼로의 기록 동작과 판독 동작이 비동기적으로 되는 것은 시스템 동작 중의 극한된 기간뿐이다(왜냐하면, 수신된 데이터 그룹이 최대 사이즈(16 M 바이트)로 되는 것은 드물다). 이와 같은 더블 링 버퍼 구성을 채용하면, 기록 동작과 판독 동작이 동기적인 동안은 단일의 서브 링만을 사용하기 때문에, 스와핑의 기회를 극력 회피할 수 있다. 즉, 거대한 링 버퍼에서 스와핑의 상태화를 회피할 수 있게 되는 것이다.
게다가, 본 실시예에서는 더블 링 버퍼를 사용함에 있어 수 종류의 고유한 변수를 정의하고 있다. 이하, 이를 설명한다.
MAX_MAIN …
메인 링에 포함되는 서브 링의 개수. 도 4에서는 MAX_MAIN = 16 이다.
MAX_SUB …
서브 링에 포함되는 버퍼 메모리의 개수. 도 4에서는 MAX_SUB = 16이다.
RP_MAIN …
메인 그룹상의 판독 포인터(메인 판독 포인터)로서, 몇번째의 서브 링이 현재 판독에 사용되고 있는지를 나타낸다. 0에서 MAX_MAIN-1 사이의 값을 갖는다. 초기값은 0이고, 도 4에서는 RP_MAIN = 1 이다.
WP_MAIN …
메인 링 상의 기록 포인터(메인 기록 포인터)로서, 몇번째의 서브 링이 현재 기록에 사용되고 있는지를 나타낸다. 0 부터 MAX_MAIN-1 사이의 값을 갖는다. 초기값은 0이고, 도 4에서는 WP_MAIN = 3이다.
RP_SUB[i] …
i 번째의 서브 링상의 판독 포인터(서브 판독 포인터)로서, 서브 링 중의 몇번째의버퍼 메모리가 판독에 사용되고 있는지를 나타낸다. i는 0 부터 MAX_MAIN-1 사이의 값을 갖는다. RP_SUB[i]는 0 부터 MAX_SUB-1 사이의 값을 갖는다. 초기값은 0이다. 도 4에는 예를 들면 RP_SUB[0] = 2이다.
WP_SUB[i] …
i번째의 서브 링상의 기록 포인터(서브 기록 포인터)로서, 서브 링 중의 몇번째의 버퍼 메모리가 기록에 사용되고 있는지를 나타낸다. i는 0 부터 MAX_MAIN-1 사이의 값을 갖는다. WP_SUB[i]는 0 부터 MAX_SUB-1 사이의 값을 가지며, 초기값은 0이다. 도 4에서는 예를 들면 WP_SUB[0] = 3이다.
C-2. 데이터 기록 동작 :
더블 링 버퍼로의 데이터 기록은 예를 들면 2 ∼ 5 회/초마다 수신 API 서브시스템이 DCD 어댑터용 디바이스 드라이버로부터 수신 데이터를 취득할 때에 행해진다. 도 5에서는, 더블 링 버퍼로의 데이터 기록 동작을 플로우챠트화하여 도시하고 있다. 이하, 이 플로우챠트에 근거하여 설명한다.
우선 단계(S10)에서는 현재 기록에 사용되고 있는 서브 링에 착안하여 이 서브 링중에서 서브 기록 포인터가 서브 판독 포인터의 하나 바로 앞과 같은지의 여부를 판단한다. 게다가, 이 판단 블록은 전술한 변수를 사용하여 「((WP_SUB[WP_MAIN]+1) MOD MAX_SUB) = RP_SUB[WP_MAIN]?」이라는 의미의 프로그램으로 기술 가능하다.(단, x MOD y라는 것은 x의 y에 대한 나머지를 의미한다. 이하 마찬가지이다)
판단 블록(S10)의 부정적인 결과는 당해 서브링 중에 기록 가능한 버퍼 메모리가 아직 남아 있다는 것을 의미하기 때문에, 서브 기록 포인터로 지시된 버퍼 메모리에 데이터의 기록을 행한다(단계 S12). 그리고, 서브 기록 포인터를 서브 링 상의 다음의 버퍼 메모리로 진행하게 하여(단계 S14), 데이터 기록 처리를 종료한다. 게다가, 단계(S14)는 전술한 변수를 사용하여 「WP_SUB[WP_MAIN] ←((WP_SUB[WP_MAIN]+1) MOD MAX_SUB)」라는 의미의 프로그램으로 기술 가능하다. (단, A ← B는 A에 B를 대입하는 것을 의미한다. 이하 마찬가지이다.)
한편, 판단 블록(S10)의 긍정적인 결과는 서브 기록 포인터가 서브 판독 포인터를 일주 리드해 버려, 당해 서브 링이 충만 상태로 된 것을 의미한다. 이 때문에, 메인 링 상의 다음의 서브 링으로 진행하여 기록 가능한 버퍼메모리가 아직 남아 있는지의 여부를 판단한다. 이 때, 다음의 서브 링이 현재 판독에 사용되고 있는 서브 링과 같은지 여부를 우선 판단한다(단계 S16). 게다가, 단계(S16)은 전술한 변수를 이용하여 「((WP_MAIN+1) MOD MAX_MAIN) = RP_MAIN ?」이라는 의미의 프로그램으로 기술 가능하다.
판단 블록(S16)의 긍정적인 결과는 메인 기록 포인터가 메인 판독 포인터를 일주 리드해 버려, 당해 더블 링 버퍼가 모두 충만 상태로 된 것을 의미한다. 따라서, 이 경우에는 기록에 사용할 수 있는 버퍼 메모리가 이미 없기 때문에, 새로운 데이터의 기록을 단념할 수 밖에 없다(단계 S20). 이 결과, 수신한 위성 방송 데이터를 넘치게 할 가능성도 있다. 단, 도 4에 도시한 사이즈의 더블 링 버퍼에 있어서, 링 버퍼 전체가 충만 상태로 되는(즉, 단계(S20)으로 빠지는) 것은 예외적인 사례인 점을 이해하기 바란다.
한편, 판단 블록(S16)의 결과가 부정적인 경우에는, 기록에 사용할 수 있는 서브 링이 남아 있을 가능성을 나타내고 있기 때문에, 메인 기록 포인터를 메인 링 상의 다음의 서브 링으로 진행시켜(단계 S18), 단계(S10)으로 복귀하여 상기와 마찬가지의 처리를 반복한다. 게다가, 단계(S18)은 전술한 변수를 이용하여 「WP_MAIN ← ((WP_MAIN+1) MOD MAX_MAIN)」이라는 의미의 프로그램으로 기술 가능하다.
C-3. 데이터 판독 동작 :
더블 링 버퍼로부터의 데이터 판독은 예를 들면 버퍼 중에 저장된 수신 데이터를 API가 데이터 그룹화할 때에 행해진다. 도 6에는 더블 링 버퍼로의 데이터 판독 동작을 플로우챠트화하여 나타내고 있다. 이하, 이 플로우챠트에 근거하여 설명한다.
우선, 단계(S30)에서는 현재 판독에 사용되고 있는 서브 링에 착안하여 이 서브 링 중에서 서브 판독 포인터가 서브 기록 포인터와 같은지의 여부를 판단한다. 게다가, 이 판단 블록은 전술한 변수를 이용하여 「((RP_SUB[RP_MAIN]) = WP_SUB[RP_MAIN] ?)」이라는 의미의 프로그램으로 기술 가능하다.
판단 블록(S30)의 부정적인 결과는 당해 서브 링 중에 판독에 사용해야 할 버퍼 메모리가 아직 남아 있는 것을 의미하기 때문에, 서브 판독 포인터로 지시된 버퍼 메모리로부터 데이터의 판독을 행한다(단계 S32). 그리고, 서브 판독 포인터를 서브 링 상의 다음의 버퍼 메모리로 진행시켜(단계 S34), 데이터 기록 처리를 종료한다. 게다가, 단계(S34)는 전술한 변수를 이용하여 「RP_SUB[RP_MAIN] ← ((RP_SUB[RP_MAIN] + 1) MOD MAX_SUB)」라는 의미의 프로그램으로 기술 가능하다.
한편, 판단 블록(S30)의 긍정적인 결과는 서브 판독 포인터가 서브 기록 포인터에 추월당해 버려, 해당 서브 링이 비어 있는 상태로 된 것을 의미한다. 이 때문에, 메인 링 상의 다음의 서브 링으로 진행하여 판독 가능한 버퍼 메모리가 아직 남아 있는지 여부를 판단한다. 이 때, 현재 판독에 사용되고 있는 서브링이 현재 기록에 사용되고 있는 서브 링과 같은지의 여부를 우선 판단한다(단계 S36). 게다가, 단계(S36)은 전술한 변수를 이용하여 「RP_MAIN = WP_MAIN ?」라는 의미의 프로그램으로 기술 가능하다.
판단 블록(S36)의 긍정적 결과는 메인 판독 포인터가 메인 기록 포인터에 추월당하고, 당해 더블 링 버퍼가 모두 비어있는 상태로 된 것을 의미한다. 따라서, 이 경우에는 판독을 행해야할 버퍼 메모리가 이미 없기 때문에 데이터의 판독을 단념할 수 밖에 없다(단계 S40).
한편, 판단 블록(S36)의 결과가 부정적인 경우에는, 판독에 사용할 수 있는 서브 링이 남아 있을 가능성을 나타내고 있기 때문에, 메인 판독 포인터를 메인 링 상의 다음의 서브 링으로 진행하고(단계 S38), 단계(S30)으로 복귀하여 상기와 마찬가지의 처리를 반복한다. 게다가, 단계(S38)은 전술한 변수를 사용하여 「RP_MAIN ←((RP_MAIN+1) MOD MAX_MAIN)」이라는 의미의 프로그램으로 기술 가능하다.
D. 보충
이상, 특정의 실시예를 참조하면서 본 발명에 대해서 상세히 해설하였다. 그렇지만, 본 발명의 요지를 벗어나지 않는 범위에서 당업자가 본 실시예의 수정이나 대용을 이룰 수 있다는 것은 명백하다. 예를 들면, 본 명세서에서는 퍼스널 컴퓨터가 위성 데이터 수신에 사용되는 경우에 특화하여 설명하였지만, 퍼스널 컴퓨터가 다른 데이터 처리에 사용되는 경우, 또는 팩시밀리 기기나 복사기, 프린터, 방송 수신기, 워드 프로세서 등과 같은 엄청난 데이터를 일시 보유할 기회가 있는 각종 정보 처리 기기에 대해서도 본 발명을 적용할 수 있다. 요약하면, 예시라는 형태로 본 발명을 개시한 것으로서, 한정적으로 해석해서는 안된다. 본 발명의 요지를 판단하기 위해서는, 첨부한 특허 청구의 범위를 참작해야만 한다.
이상 상세히 기술한 바와 같이, 본 발명에 의하면, 예를 들면 컴퓨터 시스템이 시스템 외부로부터 수신한 데이터를 파일화하여 세이브(save)할 때, 수신 데이터의 일시 보유를 위해 사용되는 우수한 데이터 버퍼링 시스템을 제공할 수 있다.
또한, 본 발명에 의하면, 수신 데이터의 일시 보유를 위하여 사용되는 데이터 버퍼링 시스템에 있어서, 수신 데이터의 기록 속도와 판독 속도의 차(gap)를 흡수하기 위해 각 버퍼 메모리를 링 버퍼 구성으로 한 우수한 데이터 버퍼링 시스템을 제공할 수 있다.
또한, 본 발명에 의하면, 상당량의 수신 데이터를 일시적으로 보유하기 위해 링 버퍼 구성으로 한 데이터 버퍼링 시스템에 있어서, 링 버퍼 사이즈(ring buffer size)의 거대화에 수반하는 하드 디스크로의 스와핑(swapping)의 문제를 해소할 수 있는 우수한 데이터 버퍼링 시스템을 제공할 수 있다.

Claims (18)

  1. 컴퓨터 시스템의 물리 메모리를 이용하여 데이터 버퍼링을 행하기 위한 데이터 버퍼링 시스템에 있어서,
    (a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
    (b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
    (c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
    (d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
    (e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
    (f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
    (g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터
    를 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  2. 컴퓨터 시스템의 물리 메모리를 이용하여 데이터 버퍼링을 행하기 위한 데이터 버퍼링 시스템에 있어서,
    (a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
    (b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
    (c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
    (d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
    (e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
    (f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
    (g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
    (h) 상기 컴퓨터 시스템에 설치된 외부 기억 장치와,
    (i) 버퍼 메모리의 내용을 상기 물리 메모리와 상기 외부 기억 장치의 사이에서 스와핑(swapping)시키기 위한 스와핑 수단
    을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  3. 컴퓨터 시스템의 물리 메모리를 이용하여 데이터 버퍼링을 행하기 위한 데이터 버퍼링 시스템에 있어서,
    (a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
    (b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
    (c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
    (d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
    (e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
    (f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
    (g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
    (h) 현재 제2의 기록 포인터로 지시되어 있는 제1의 링 버퍼에서 제1의 기록 포인터가 제1의 판독 포인터의 하나 바로 앞의 버퍼 메모리를 지시하고 있는지의 여부를 판단하여 하나 바로 앞이 아니면 제1의 기록 포인터로 지시된 버퍼 메모리에 데이터를 기록함과 함께 제1의 기록 포인터를 다음의 버퍼 메모리로 가게 하고, 하나 바로 앞이면, 제2의 기록 포인터를 다음의 제1의 링 버퍼로 가게 하는 기록 제어 수단
    을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  4. 제3항에 있어서, 상기 기록 제어 수단은 제2의 기록 포인터를 다음의 제1의 링 버퍼로 가게 하기 전에 제2의 기록 포인터가 제2의 판독 포인터의 하나 바로 앞과 일치하는지의 여부를 판단하여, 일치하는 경우에는 버퍼 충만 상태로 판단하여 제2의 기록 포인터를 가게 하지 않고 데이터 기록 동작을 보류하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  5. 컴퓨터 시스템의 물리 메모리를 이용하여 데이터 버퍼링을 행하기 위한 데이터 버퍼링 시스템에 있어서,
    (a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
    (b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
    (c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
    (d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
    (e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
    (f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
    (g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
    (h) 현재 제2의 판독 포인터로 지시되어 있는 제1의 링 버퍼에서 제1의 판독 포인터가 제1의 기록 포인터와 동일한 버퍼 메모리를 지시하고 있는지의 여부를 판단하여, 다르면 제1의 판독 포인터로 지시된 버퍼 메모리로부터 데이터를 판독하고, 같으면, 제2의 판독 포인터를 다음의 제1의 링 버퍼로 가게 하는 판독 제어 수단
    을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  6. 제5항에 있어서, 상기 판독 제어 수단은 제2의 판독 포인터를 다음의 제1의 링 버퍼로 가게 하기 전에, 제2의 판독 포인터가 제2의 기록 포인터와 일치하는지의 여부를 판단하여, 일치하는 경우에는 버퍼가 비어 있는 상태로 판단하여 제2의 판독 포인터를 가게 하지 않고 데이터 판독 동작을 보류하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  7. 컴퓨터 시스템이 자신의 물리 메모리를 이용하여 시스템 외부로부터 수신한 데이터를 버퍼링하기 위한 데이터 버퍼링 시스템에 있어서,
    (a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
    (b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
    (c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
    (d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
    (e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
    (f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
    (g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터
    를 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  8. 컴퓨터 시스템이 자신의 물리 메모리를 이용하여 시스템 외부로부터 수신한 데이터를 버퍼링하기 위한 데이터 버퍼링 시스템에 있어서,
    (a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
    (b) 복수의 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
    (c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
    (d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
    (e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
    (f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
    (g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
    (h) 상기 컴퓨터 시스템에 설치된 외부 기억 장치와,
    (i) 버퍼 메모리의 내용을 상기 물리 메모리와 상기 외부 기억 장치의 사이에서 스와핑(swapping)시키기 위한 스와핑 수단
    을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  9. 컴퓨터 시스템이 자신의 물리 메모리를 이용하여 시스템 외부로부터 수신한 데이터를 버퍼링하기 위한 데이터 버퍼링 시스템에 있어서,
    (a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
    (b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
    (c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
    (d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
    (e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
    (f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
    (g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
    (h) 현재 제2의 기록 포인터로 지시되어 있는 제1의 링 버퍼에서 제1의 기록 포인터가 제1의 판독 포인터의 하나 바로 앞의 버퍼 메모리를 지시하고 있는지의 여부를 판단하여 하나 바로 앞이 아니면 제1의 기록 포인터로 지시된 버퍼 메모리에 데이터를 기록함과 함께 제1의 기록 포인터를 다음의 버퍼 메모리로 가게 하고, 하나 바로 앞이면, 제2의 기록 포인터를 다음의 제1의 링 버퍼로 가게 하는 기록 제어 수단
    을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  10. 제9항에 있어서, 상기 기록 제어 수단은 제2의 기록 포인터를 다음의 제1의 링 버퍼로 가게 하기 전에 제2의 기록 포인터가 제2의 판독 포인터의 하나 바로 앞과 일치하는지의 여부를 판단하여, 일치하는 경우에는 버퍼 충만 상태로 판단하여 제2의 기록 포인터를 가게 하지 않고 데이터 기록 동작을 보류하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  11. 컴퓨터 시스템이 자신의 물리 메모리를 이용하여 시스템 외부로부터 수신한 데이터를 버퍼링하기 위한 데이터 버퍼링 시스템에 있어서,
    (a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
    (b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
    (c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
    (d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
    (e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
    (f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
    (g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
    (h) 현재 제2의 판독 포인터로 지시되어 있는 제1의 링 버퍼에서 제1의 판독 포인터가 제1의 기록 포인터와 동일한 버퍼 메모리를 지시하고 있는지의 여부를 판단하여, 다르면 제1의 판독 포인터로 지시된 버퍼 메모리로부터 데이터를 판독하고, 같으면, 제2의 판독 포인터를 다음의 제1의 링 버퍼로 가게 하는 판독 제어 수단
    을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  12. 제11항에 있어서, 상기 판독 제어 수단은 제2의 판독 포인터를 다음의 제1의 링 버퍼로 가게 하기 전에, 제2의 판독 포인터가 제2의 기록 포인터와 일치하는지의 여부를 판단하여, 일치하는 경우에는 버퍼가 비어 있는 상태로 판단하여 제2의 판독 포인터를 가게 하지 않고 데이터 판독 동작을 보류하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  13. 컴퓨터 시스템이 시스템 외부로부터 수신한 데이터를 파일화하여 세이브(save)할 때에, 자신의 물리 메모리를 이용하여 수신 데이터를 일시적으로 버퍼링하기 위한 데이터 버퍼링 시스템에 있어서,
    (a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
    (b) 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
    (c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
    (d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
    (e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
    (f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
    (g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
    (h) 현재 제2의 기록 포인터로 지시된 제1의 링 버퍼 중에서 제1의 기록 포인터로 지시된 버퍼 메모리에 수신 데이터를 기록하는 데이터 기록 수단과,
    (i) 현재 제2의 판독 포인터로 지시된 제1의 링 버퍼 중에서 제1의 판독 포인터로 지시된 버퍼 메모리로부터 데이터를 판독하여 파일화하는 파일화 수단
    을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  14. 컴퓨터 시스템이 시스템 외부로부터 수신한 데이터를 파일화하여 세이브(save)할 때에, 자신의 물리 메모리를 이용하여 수신 데이터를 일시적으로 버퍼링하기 위한 데이터 버퍼링 시스템에 있어서,
    (a) 메모리 공간상에 설치된 복수의 버퍼 메모리와,
    (b) 복수의 버퍼 메모리를 링 모양으로 연결하여 이루어진 제1의 링 버퍼와,
    (c) 복수의 제1의 링 버퍼를 링 모양으로 연결하여 이루어진 제2의 링 버퍼와,
    (d) 각각의 제1의 링 버퍼내에 설치되어 다음의 판독 버퍼 메모리 위치를 지시하기 위한 제1의 판독 포인터와,
    (e) 각각의 제1의 링 버퍼내에 설치되어 다음의 기록 버퍼 메모리 위치를 지시하기 위한 제1의 기록 포인터와,
    (f) 현재 버퍼 메모리로부터의 판독이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 판독 포인터와,
    (g) 현재 버퍼 메모리로의 기록이 행해지고 있는 제1의 링 버퍼 위치를 지시하기 위한 제2의 기록 포인터와,
    (h) 상기 컴퓨터 시스템에 설치된 외부 기억 장치와,
    (i) 현재 제2의 기록 포인터로 지시된 제1의 링 버퍼 중에서 제1의 기록 포인터로 지시된 버퍼 메모리에 수신 데이터를 기록하는 데이터 기록 수단과,
    (j) 현재 제2의 판독 포인터로 지시된 제1의 링 버퍼 중에서 제1의 판독 포인터로 지시된 버퍼 메모리로부터 데이터를 판독하고 파일화하여 상기 외부 기억 장치에 세이브하는 파일화 수단과,
    (k) 버퍼 메모리의 내용을 상기 물리 메모리와 상기 외부 기억 장치의 사이에서 스와핑시키기 위한 스와핑 수단
    을 구비하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  15. 제13항 또는 제14항에 있어서, 상기 데이터 기록 수단은 현재 제2의 기록 포인터로 지시되어 있는 제1의 링 버퍼에서 제1의 기록 포인터가 제1의 판독 포인터의 하나 바로 앞의 버퍼 메모리를 지시하고 있는지의 여부를 판단하여, 하나 바로 앞이 아니면 제1의 기록 포인터로 지시된 버퍼 메모리에 데이터를 기록함과 함께 제1의 기록 포인터를 다음의 버퍼 메모리로 가게 하고, 하나 바로 앞이면 제2의 기록 포인터를 다음의 제1의 링 버퍼로 가게 하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  16. 제15항에 있어서, 상기 데이터 기록 제어 수단은 제2의 기록 포인터를 다음의 제1의 링 버퍼로 가게 하기 전에, 제2의 기록 포인터가 제2의 판독 포인터의 하나 바로 앞과 일치하는지의 여부를 판단하여, 일치하는 경우에는 버퍼 충만 상태로 판단하여 제2의 기록 포인터를 가게 하지 않고 데이터 기록 동작을 보류하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  17. 제13항 또는 제14항에 있어서, 상기 파일화 수단은 현재 제2의 판독 포인터로 지시되어 있는 제1의 링 버퍼에서 제1의 판독 포인터가 제1의 기록 포인터와 동일한 버퍼 메모리를 지시하고 있는지의 여부를 판단하여, 다르면 제1의 판독 포인터로 지시된 버퍼 메모리로부터 데이터를 판독하고, 같으면 제2의 판독 포인터를 다음의 제1의 링 버퍼로 가게 하는 것을 특징으로 하는 데이터 버퍼링 시스템.
  18. 제11항에 있어서, 상기 파일화 수단은 제2의 판독 포인터를 다음의 제1의 링 버퍼로 가게 하기 전에, 제2의 판독 포인터가 제2의 기록 포인터와 일치하는지 여부를 판단하여, 일치하는 경우에는 버퍼가 비어 있는 상태로 판단하여 제2의 판독 포인터를 가게 하지 않고 데이터 판독 동작을 보류하는 것을 특징으로 하는 데이터 버퍼링 시스템.
KR1019970034884A 1996-09-02 1997-07-25 데이터 버퍼링 시스템 KR19980024107A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP23160196A JP3268980B2 (ja) 1996-09-02 1996-09-02 データ・バッファリング・システム
JP96-231601 1996-09-02

Publications (1)

Publication Number Publication Date
KR19980024107A true KR19980024107A (ko) 1998-07-06

Family

ID=16926076

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970034884A KR19980024107A (ko) 1996-09-02 1997-07-25 데이터 버퍼링 시스템

Country Status (3)

Country Link
US (1) US5948082A (ko)
JP (1) JP3268980B2 (ko)
KR (1) KR19980024107A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100851070B1 (ko) * 2005-11-03 2008-08-12 삼성전기주식회사 4색을 이용하는 스캐닝 컬러 디스플레이 장치, 방법 및컬러 영상 제어 기록 매체

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112267A (en) * 1998-05-28 2000-08-29 Digital Equipment Corporation Hierarchical ring buffers for buffering data between processor and I/O device permitting data writes by processor and data reads by I/O device simultaneously directed at different buffers at different levels
US6570579B1 (en) 1998-11-09 2003-05-27 Broadcom Corporation Graphics display system
US7982740B2 (en) 1998-11-09 2011-07-19 Broadcom Corporation Low resolution graphics mode support using window descriptors
US6853385B1 (en) * 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
US6798420B1 (en) 1998-11-09 2004-09-28 Broadcom Corporation Video and graphics system with a single-port RAM
US6768774B1 (en) 1998-11-09 2004-07-27 Broadcom Corporation Video and graphics system with video scaling
US6661422B1 (en) 1998-11-09 2003-12-09 Broadcom Corporation Video and graphics system with MPEG specific data transfer commands
US6636222B1 (en) 1999-11-09 2003-10-21 Broadcom Corporation Video and graphics system with an MPEG video decoder for concurrent multi-row decoding
US9668011B2 (en) 2001-02-05 2017-05-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Single chip set-top box system
US6996640B1 (en) 2001-08-07 2006-02-07 Adaptec, Inc. Method and system for asynchronously transferring data
US6983408B2 (en) * 2002-03-08 2006-01-03 Microsoft Corporation Managing error/status information generated during video processing
JP2004171411A (ja) * 2002-11-21 2004-06-17 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びバッファメモリの管理方法
US8063916B2 (en) 2003-10-22 2011-11-22 Broadcom Corporation Graphics layer reduction for video composition
TWI237806B (en) * 2004-11-03 2005-08-11 Sunplus Technology Co Ltd Audio decoding system with ring buffer and method thereof
JP2006185162A (ja) * 2004-12-27 2006-07-13 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びその制御方法
JP5342658B2 (ja) * 2009-03-06 2013-11-13 アスペラ,インク. I/o駆動の速度適応のための方法およびシステム
KR20120055779A (ko) * 2010-11-23 2012-06-01 한국전자통신연구원 지그비 기반의 음성 데이터 송수신 시스템 및 그의 음성 데이터 송수신 방법
US9223638B2 (en) 2012-09-24 2015-12-29 Sap Se Lockless spin buffer
US10101964B2 (en) * 2016-09-20 2018-10-16 Advanced Micro Devices, Inc. Ring buffer including a preload buffer
US11113205B2 (en) * 2017-07-31 2021-09-07 Micron Technology, Inc. Die addressing using a reduced size translation table entry
US11132240B2 (en) 2019-08-16 2021-09-28 Roku, Inc. Multi-agent ring-buffer

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3766534A (en) * 1972-11-15 1973-10-16 Ibm Shift register storage unit with multi-dimensional dynamic ordering
US4507760A (en) * 1982-08-13 1985-03-26 At&T Bell Laboratories First-in, first-out (FIFO) memory configuration for queue storage
US4803654A (en) * 1985-06-20 1989-02-07 General Datacomm Industries, Inc. Circular first-in, first out buffer system for generating input and output addresses for read/write memory independently
JPS63163645A (ja) * 1986-12-26 1988-07-07 Ricoh Co Ltd 二次元配列メモリ装置
US4839866A (en) * 1987-05-29 1989-06-13 Texas Instruments Incorporated Cascadable first-in, first-out memory
US5043981A (en) * 1990-05-29 1991-08-27 Advanced Micro Devices, Inc. Method of and system for transferring multiple priority queues into multiple logical FIFOs using a single physical FIFO
US5519701A (en) * 1995-03-29 1996-05-21 International Business Machines Corporation Architecture for high performance management of multiple circular FIFO storage means

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100851070B1 (ko) * 2005-11-03 2008-08-12 삼성전기주식회사 4색을 이용하는 스캐닝 컬러 디스플레이 장치, 방법 및컬러 영상 제어 기록 매체

Also Published As

Publication number Publication date
JP3268980B2 (ja) 2002-03-25
US5948082A (en) 1999-09-07
JPH10105373A (ja) 1998-04-24

Similar Documents

Publication Publication Date Title
KR19980024107A (ko) 데이터 버퍼링 시스템
US6047339A (en) Buffering data that flows between buses operating at different frequencies
US5673396A (en) Adjustable depth/width FIFO buffer for variable width data transfers
JP3273202B2 (ja) 複数のデータチャネルを介してデータを転送する方法及びその回路アーキテクチャ
US5587953A (en) First-in-first-out buffer memory
US7433994B2 (en) On-device data compression to increase speed and capacity of flash memory-based mass storage devices
US20060271739A1 (en) Management of transfer of commands
US20110029723A1 (en) Non-Volatile Memory Based Computer Systems
EP1094392B1 (en) Method and apparatus for interfacing with a secondary storage system
GB2259592A (en) A selectable width, burstable FIFO
US4888727A (en) Peripheral controller with paged data buffer management
US6360308B1 (en) Buffer controller
US5889948A (en) Apparatus and method for inserting an address in a data stream through a FIFO buffer
US7681003B2 (en) Moving hardware context structures in memory while maintaining system operation
US7539792B2 (en) Data distribution method and system having a stream buffer device with a sub-buffer table for recording the state of a pluraity of corresponding sub-buffers
US7694004B2 (en) Bit-granular writes of control registers
US20060085569A1 (en) Method for minimizing the translation overhead for large I/O transfers
US6629168B1 (en) Byte-swapping for efficient use of memory
JP3304395B2 (ja) データ転送装置及びデータ転送方法
JPH09282231A (ja) ライトバック型キャッシュ装置
JPH0239342A (ja) Ramディスクの記憶保全方式
JPS6019810B2 (ja) バッファメモリ制御方式
JP2533958B2 (ja) デ―タ先行セット装置
JPH03240147A (ja) 計算機システム
JPH05158792A (ja) キャッシュバッファの一括読込み方式

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application