KR20000072461A - Method of operating a circular queue for low-speed storage device - Google Patents
Method of operating a circular queue for low-speed storage device Download PDFInfo
- Publication number
- KR20000072461A KR20000072461A KR1020000052546A KR20000052546A KR20000072461A KR 20000072461 A KR20000072461 A KR 20000072461A KR 1020000052546 A KR1020000052546 A KR 1020000052546A KR 20000052546 A KR20000052546 A KR 20000052546A KR 20000072461 A KR20000072461 A KR 20000072461A
- Authority
- KR
- South Korea
- Prior art keywords
- buffer
- data
- storage device
- read
- area
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/10527—Audio or video recording; Data buffering arrangements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/00007—Time or data compression or expansion
- G11B2020/00014—Time or data compression or expansion the compressed signal being an audio signal
- G11B2020/00057—MPEG-1 or MPEG-2 audio layer III [MP3]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/10527—Audio or video recording; Data buffering arrangements
- G11B2020/1062—Data buffering arrangements, e.g. recording or playback buffers
- G11B2020/10629—Data buffering arrangements, e.g. recording or playback buffers the buffer having a specific structure
- G11B2020/10666—Ring buffers, e.g. buffers wherein an iteratively progressing read or write pointer moves back to the beginning of the buffer when reaching the last storage cell
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/10527—Audio or video recording; Data buffering arrangements
- G11B2020/1062—Data buffering arrangements, e.g. recording or playback buffers
- G11B2020/10675—Data buffering arrangements, e.g. recording or playback buffers aspects of buffer control
- G11B2020/10703—Data buffering arrangements, e.g. recording or playback buffers aspects of buffer control processing rate of the buffer, e.g. by accelerating the data output
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
Description
본 발명은 저속 기억 장치에 대한 환형 큐로 된 버퍼의 관리 방법에 관한 것으로서, 보다 상세하게는 MP3 등의 압축 음악 데이터를 저장하고 있는 저속 기억 장치를 랜덤 액세스하는 경우 환형 큐로 된 버퍼의 데이터 재생 속도를 개선시킬 수 있는 저속 기억 장치에 대한 환형 큐로 된 버퍼의 관리 방법에 관한 것이다.The present invention relates to a method of managing an annular queue buffer for a low speed storage device. More particularly, the present invention relates to a method of managing the data reproduction speed of an annular queue buffer when random accessing a low speed storage device storing compressed music data such as MP3. A method of managing an annular queue buffer for slow storage that can be improved.
일반적으로 CD-ROM 이나 하드디스크 등의 기억장치는 RAM과 같은 메모리와 비교하여 데이터를 읽거나 쓰는 액세스 속도가 느리므로 저속 기억 장치라고 한다. 또한, 데이터가 저속 기억 장치에 저장되어 있는 위치나 저장된 영역의 물리적인 상태에 따라서 액세스 시간 차이가 많이 난다. 심한 경우 물리적인 손상이 있는 경우에는 데이터를 읽어낼 수 없게 되기도 한다.In general, a storage device such as a CD-ROM or a hard disk is referred to as a low speed storage device because the access speed of reading or writing data is slow compared to a memory such as RAM. In addition, the access time varies greatly depending on the location where data is stored in the low speed storage device or the physical state of the stored area. In severe cases, physical damage can result in unreadable data.
따라서, 이러한 저속 기억 장치에서 데이터를 읽어내어 처리하는 시스템에서는 일정한 분량의 데이터를 저속 기억 장치로부터 미리 읽어내어 일정 크기의 메모리로 된 버퍼에 저장하여 둔다. CD-ROM이나 하드디스크는 모터 구동에 의하여 작동하므로 데이터 액세스 속도가 늦으나, 버퍼는 RAM과 같은 반도체 메모리로 이루어져 있어 컴퓨터 내부 버스를 통해 액세스되므로 하드디스크 등의 보조 기억 장치보다 데이터 액세스 속도가 월등히 빠르다. 그러므로, 필요할 때마다 저속 기억 장치를 액세스할 필요 없이 직접 버퍼를 액세스함으로써 데이터 재생 속도를 높이고, 액세스 시간 차이에 의한 데이터 처리 속도가 일정치 못한 문제를 해결하고 있다.Therefore, in a system that reads and processes data in such a low speed memory device, a predetermined amount of data is read in advance from the low speed memory device and stored in a buffer of a predetermined size of memory. Data access speed is slow because CD-ROM or hard disk is driven by motor drive, but buffer is composed of semiconductor memory such as RAM and is accessed through computer internal bus, so data access speed is much higher than auxiliary memory such as hard disk. fast. Therefore, it is possible to increase the data reproduction speed by directly accessing the buffer without having to access the low speed storage device whenever necessary, and solve the problem of the data processing speed caused by the difference in access time being not constant.
이러한 버퍼는 큐(Queue)를 구성하며, '큐'는 여러 개의 데이터 항목들이 일정한 순서로 나열된 자료 구조이다. 큐의 종류에는 한 방향으로 데이터 항목들이 읽혀지거나 쓰여지는 선형 큐(linear queue)와 시작점과 끝점이 서로 연결되어 있는 환형 큐(circular queue)가 있다. 위와 같은 선형 또는 환형 큐에는 리드 포인터(RP; Read pointer)(또는 프론트(front) 포인터, 이하 리드 포인터(Read pointer)라고 한다)와 라이트 포인터(WP; Write pointer)(또는 리어(rear) 포인터, 이하 라이트 포인터(Write pointer)라고 한다)가 있다.These buffers make up a queue. A queue is a data structure in which several data items are arranged in a certain order. There are two types of queues: linear queues, in which data items are read or written in one direction, and circular queues whose start and end points are connected to each other. Such linear or annular cues include a read pointer (RP) (or front pointer, hereinafter called a read pointer) and a write pointer (WP) (or rear pointer, Hereinafter referred to as the write pointer.
일반적으로 영화 등의 영상 데이터나 음악 데이터 같은 대용량의 데이터를 저속 기억 장치로부터 읽어내어 재생하는 경우 환형 큐의 버퍼 용량에 제한이 있으므로 모두 한꺼번에 읽어내어 환형 큐에 저장할 수 없다. 따라서 환형 큐의 용량 범위 내에서 일부만을 환형 큐에 저장해두고, 환형 큐에 저장되어 있는 데이터를 읽어 재생한다.In general, when a large amount of data such as movie or music data is read from a low speed storage device and played back, the buffer capacity of the annular queue cannot be read all at once and stored in the annular queue. Therefore, only a part of the annular queue is stored in the annular queue, and the data stored in the annular queue is read and reproduced.
도 1은 종래의 저속 기억 장치로부터 데이터를 재생하기 위해 중간에 버퍼를 사용하는 경우의 시스템 구성을 나타내는 블록도이다. 이에 따르면, 종래의 시스템은 저속 기억 장치(110), 버퍼 메모리(120), 재생부(재생 프로그램부)(130), 버퍼 관리부(버퍼 관리 프로그램)(140)로 구성된다. 재생부(130)는 재생 요구 신호를 버퍼에 보내면 버퍼 관리 프로그램(140)에서는 버퍼(120)로부터 데이터를 읽어 재생부(130)로 보낸다. 버퍼 관리 프로그램(140)에서는 읽어낸 만큼 버퍼(120)가 비면 그 만큼 저속 기억 장치(110)로부터 데이터를 읽어내어 버퍼(120)에 쓴다.Fig. 1 is a block diagram showing the system configuration when a buffer is used in the middle for reproducing data from a conventional low speed storage device. According to this, the conventional system is composed of a low speed memory device 110, a buffer memory 120, a playback unit (reproduction program unit) 130, and a buffer management unit (buffer management program) 140. When the reproduction unit 130 sends a reproduction request signal to the buffer, the buffer management program 140 reads data from the buffer 120 and sends the data to the reproduction unit 130. The buffer management program 140 reads data from the low speed memory device 110 and writes the data to the buffer 120 when the buffer 120 is empty as much as the read data.
도 2 및 도 4는 저속 기억 장치(110)로부터 일정량의 데이터(d1 - d7 또는 d8 - d10)를 순차적으로 액세스하는 경우, 저속 기억 장치(110)에 데이터가 저장되어 있는 일 예를 도시한 것이다. 도 2의 환형 큐(220)는 버퍼 크기가 7일 때 환형 큐(220)가 비어 있는(empty) 경우를 나타낸다. 즉, 위의 환형 큐(220)는 0부터 6까지의 주소를 갖는다. 처음(즉, 버퍼가 비어 있는 경우)에는, RP와 WP는 모두 환형 큐(220)의 시작점을 지시한다(RP = WP = 0). 두개의 포인터는 초기에 시작점에서 출발하여 읽기와 쓰기 동작이 일어남에 따라 그 값이 하나씩 증가하여 환형 큐(220)로부터 데이터를 읽는 방향(도 2에서는 반 시계 방향; 이하 '후방'이라 한다)으로 이동한다. 포인터가 큐의 끝점에 있을 때 쓰기 또는 읽기가 일어나면 포인터가 리셋(reset)되어 다시 시작점을 가리킨다. 즉, 포인터 RP, WP가 끝점(환형 큐 내 주소 6)일 때 쓰기가 일어나면 WP = 0, 읽기가 일어나면 RP = 0 으로 리셋 된다.2 and 4 illustrate an example in which data is stored in the low speed memory device 110 when the predetermined amount of data d1-d7 or d8-d10 are sequentially accessed from the low speed memory device 110. . The annular queue 220 of FIG. 2 shows a case where the annular queue 220 is empty when the buffer size is seven. That is, the annular queue 220 has an address from 0 to 6. Initially (ie, when the buffer is empty), RP and WP both point to the starting point of annular queue 220 (RP = WP = 0). The two pointers initially start at the starting point and increase in value as read and write operations occur one by one to read data from the annular queue 220 (counterclockwise in FIG. 2; hereinafter referred to as 'rear'). Move. If a write or read occurs while the pointer is at the end of the queue, the pointer is reset to point back to the starting point. That is, if the write occurs when the pointer RP, WP is the end point (address 6 in the annular queue), WP = 0 and if the read occurs, RP = 0.
도 3은 버퍼 크기와 같은 d1-d7 만큼의 데이터를 기억 장치(210)로부터 읽어내어 버퍼를 가득 채운(full) 경우의 환형 큐(220)의 상태이고, 도 5는 환형 큐(220)로부터 d1, d2, d3을 읽어낸 후의 환형 큐(220)의 상태이다. 도 6은 순차적으로 d8, d9, d10의 데이터를 기억 장치(210)로부터 읽어내어 버퍼에 쓴 경우의 환형 큐(220)의 상태이다. 여기서, 리드 포인터(Read pointer)는 다음 재생 시 읽어들일 데이터의 환형 큐(220)내의 위치(주소) 값을 가지고 있고, 라이트 포인터(Write pointer)는 환형 큐(220)에 데이터를 쓸 때 이전에 마지막으로 쓰여진 환형 큐(220)내 위치(주소) 값을 가지고 있다. 즉, 다음 번 쓰기 시에는 환형 큐(220) 내의 WP + 1 의 위치에 데이터를 쓴다.FIG. 3 shows the state of the annular queue 220 when d1-d7 data equal to the buffer size is read from the storage device 210 and the buffer is full. FIG. 5 shows the state of the annular queue 220 from the annular queue 220. It is the state of the annular queue 220 after reading, d2, d3. FIG. 6 shows a state of the annular queue 220 in the case where data of d8, d9, d10 are sequentially read from the storage device 210 and written to a buffer. Here, the read pointer has a position (address) value in the annular queue 220 of data to be read in the next playback, and the write pointer is previously used when writing data to the annular queue 220. It has a position (address) value in the annular queue 220 that was written last. That is, the data is written at the position of WP + 1 in the annular queue 220 at the next write.
도 7을 참조하여 종래의 환형 큐의 관리 방법을 상세히 설명하면 다음과 같다. 초기에 RP = WP = 0 이다. 먼저, 저속 기억 장치(110)로부터 버퍼 크기에 해당하는 크기의 데이터(d1 - d7)를 읽어낸다(단계 713). 그 다음, 환형 큐의 빈 공간이 모두 꽉 찰 때까지 위의 읽어낸 데이터를 환형 큐에 쓰고 라이트 포인터(Write pointer)를 그 만큼 증가시킨다(단계 717). 이 때 WP = 6, RP = 0 이다. 그 결과, 저속 기억 장치(110)로부터 읽어낸 d1- d7까지의 데이터로 꽉 차 있는 환형 큐(220)의 상태는 도 3에 도시되어 있다. 이 때, RP = WP + 1 의 값을 갖는다. (WP = 6 일 때 최대 값이 6 이므로 이보다 1 큰 값은 0 이 된다)Referring to FIG. 7, a conventional annular queue management method is described in detail. Initially, RP = WP = 0. First, data d1-d7 having a size corresponding to the buffer size are read from the low speed memory device 110 (step 713). Then, the above read data is written to the annular queue until the empty space of the annular queue is full, and the write pointer is increased by that amount (step 717). At this time, WP = 6 and RP = 0. As a result, the state of the annular queue 220 filled with data from d1 to d7 read out from the low speed storage device 110 is shown in FIG. At this time, it has a value of RP = WP + 1. (The maximum value is 6 when WP = 6, so a value greater than 1 is 0.)
환형 큐(220)로부터 1개의 데이터를 재생할 경우, 환형 큐의 리드 포인터(Read pointer)를 하나만큼 증가시키고, 그 위치에 있는 데이터 항목을 읽는다. 즉, 일정량의 데이터를 환형 큐로부터 읽어내면 그 만큼 리드 포인터(Read pointer)를 증가시킨다. 재생부(130)로부터 재생 요구 신호가 있는 경우 저속 기억 장치(110)로부터 일정 크기의 데이터 d1, d2, d3을 읽지 않고, 직접 환형 큐로부터 d1 - d3 까지의 일정 크기의 데이터를 읽고 그 만큼 리드 포인터(Read pointer)를 증가시킨다(단계 721). 도 5는 이 경우의 라이트 포인터(Write pointer), 리드 포인터(Read pointer)가 가리키는 환형 큐(220)내의 위치를 나타낸다.When one piece of data is reproduced from the annular cue 220, the read pointer of the annular cue is increased by one, and the data item at the position is read. In other words, reading a certain amount of data from the annular queue increases the read pointer. If there is a reproduction request signal from the reproducing section 130, instead of reading the data d1, d2, d3 of a certain size from the low speed storage device 110, a predetermined size of data from the annular queue to d1-d3 is read and read by that much. Increment the read pointer (step 721). FIG. 5 shows the position in the annular queue 220 indicated by the write pointer and the read pointer in this case.
그 다음, 읽어낸 만큼 환형 큐가 비면 읽어낸 만큼의 데이터를 저속 기억 장치(110)에서 순차적으로 읽어들여(단계 723) 환형 큐에 쓰고, 그 만큼 라이트 포인터(Write pointer)를 증가시킨다(단계 725). 도 6은 도 4의 저속 기억 장치(110)로부터 d8 - d10까지의 데이터를 읽어내어 도 5의 환형 큐에 저장한 직후의 라이트 포인터(Write pointer), 리드 포인터(Read pointer)가 가리키는 위치를 나타낸다.Then, when the annular queue is empty as much as it is read, the read data is sequentially read from the low-speed storage device 110 (step 723) and written to the annular queue, and the write pointer is increased by that amount (step 725). ). FIG. 6 illustrates a position indicated by a write pointer and a read pointer immediately after reading data from d8 to d10 from the low speed memory device 110 of FIG. 4 and storing them in the annular queue of FIG. .
이러한 버퍼 관리 방법은 저속 기억 장치(110)로부터 순차적으로 데이터를 읽어들이는 경우에 유용하게 사용된다. 일반적으로 CD-ROM이나 하드디스크는 모터 구동에 의하여 작동하며, 디스크 회전 방향으로 순차적으로 데이터가 저장되어 있다. 데이터를 순차적으로 읽어내면 기억장치가 가지는 최대 속도로 데이터를 읽어낼 수 있다.This buffer management method is useful when reading data sequentially from the slow memory device 110. In general, a CD-ROM or a hard disk is driven by a motor drive, and data is sequentially stored in the disk rotation direction. By reading the data sequentially, you can read the data at the maximum speed of the storage device.
특히, MP3 등 압축 파일을 읽어들일 때는 데이터를 순차적으로 읽어들이기 보다 앞 뒤로 랜덤하게 읽어들이는 경우가 많다. 순차적인 데이터 읽기 과정에서 한 바이트라도 바로 뒤의 데이터를 다시 읽으려면 순차적인 데이터 액세스가 깨지게 되고 결과적으로 데이터 액세스 시간이 길어진다. 이것은 환형 큐에서도 마찬가지이다. 한 번 재생한 데이터를 다시 읽으려면, 환형 큐에서는 이미 저속 기억 장치(210)로부터 읽어낸 새로운 데이터가 채워져 있으므로 다시 저속 기억 장치로부터 데이터를 읽어내어 환형 큐를 채워야 하므로 시간이 많이 걸리게 된다. 즉, 디스크의 회전 방향과 반대되는 방향으로 데이터 액세스가 일어날 경우, 종래의 버퍼 관리 방법에 의하면 환형 큐에 저장된 기존에 한 번 이상 재생된 적이 있는 데이터(예를 들어, 도 5의 d1 ,d2, d3)는 새로운 데이터(예를 들어, 도 6의 d8, d9, d10)로 대체되어 있게된다. 한 번 이상 재생된 적이 있는 데이터(예를 들어, 도 5의 d1 ,d2, d3)를 다시 재생하기 위해서는 저속 기억 장치(110)를 다시 액세스해야 하므로 데이터 액세스 시간이 무척 많이 걸리게 된다. 즉, 데이터 재생이 거의 쓸모 없을 정도로 느려지게 되는 문제점이 있다. 그러므로, 데이터를 저속 기억 장치로부터 순차적으로 읽지 않고 앞 뒤로 조금씩 왔다 갔다 하면서 데이터를 읽는 경우, 특히 디스크의 회전 방향과 반대되는 방향(이하 역 방향이라고 한다)으로 데이터를 읽는 경우에는 종래의 버퍼 관리 방법을 사용하면 원하는 성능을 얻을 수 없게 된다. 특히, MP3 와 같은 압축된 음악 데이터를 재생할 경우, 예측 기법에 의해 압축 데이터를 앞 뒤로 랜덤하게 읽어들이는 경우에 재생 속도가 떨어지고 재생 속도가 일정하지 못하게 되는 문제가 있다.In particular, when reading compressed files such as MP3s, data is often randomly read back and forth rather than sequentially. In a sequential data read process, rereading data immediately after one byte breaks the sequential data access, resulting in longer data access time. The same is true for annular cues. In order to read the data reproduced once, the annular queue is already filled with new data read from the low speed storage device 210, and thus requires a long time since the data is read from the low speed storage device and the annular queue is filled again. That is, when data access occurs in a direction opposite to the rotation direction of the disk, according to the conventional buffer management method, data that has been reproduced at least once in the annular queue (for example, d1, d2, FIG. 5). d3) is replaced with new data (e.g., d8, d9, d10 in FIG. 6). In order to replay data that has been reproduced more than once (for example, d1, d2, and d3 in FIG. 5), the low speed storage device 110 needs to be accessed again, which takes a lot of data access time. That is, there is a problem that data reproduction becomes slow to be almost useless. Therefore, the conventional buffer management method when reading data while moving back and forth little by little instead of sequentially reading data from the low speed storage device, especially when reading data in a direction opposite to the rotational direction of the disk (hereinafter referred to as reverse direction). You will not get the performance you want. In particular, when playing compressed music data such as MP3, when the compressed data is randomly read back and forth by a prediction technique, there is a problem that the playback speed is lowered and the playback speed is not constant.
따라서, 본 발명은 종래 기술의 문제점을 해결하기 위하여 고안한 것으로서, MP3 등의 압축 음악 데이터를 저장하고 있는 저속 기억 장치를 순차적으로 읽지 않고 앞뒤로 랜덤 액세스하는 경우 한 번 환형 큐에 저장한 후 재생된 적이 있는 데이터에 대해서는 다시 저속 기억 장치를 액세스하지 않고 재사용을 가능케 하여 환형 큐로 된 버퍼의 처리 속도를 향상시킨 환형 큐로 된 버퍼의 관리 방법을 제공함에 그 목적이 있다.Accordingly, the present invention has been devised to solve the problems of the prior art, and when the slow storage device storing compressed music data such as MP3 is randomly accessed without being sequentially read back and forth, it is stored once and stored in an annular queue. It is an object of the present invention to provide a method of managing a buffer of annular queues that enables reuse of data that has never been accessed, thereby improving the processing speed of the buffer of annular queues.
도 1은 종래의 저속 기억 장치로부터 데이터를 재생하기 위해 버퍼를 사용하는 경우의 시스템 구성을 나타내는 블록도.BRIEF DESCRIPTION OF THE DRAWINGS Fig. 1 is a block diagram showing a system configuration when a buffer is used for reproducing data from a conventional low speed storage device.
도 2는 환형 큐의 일 예 및 순차 액세스 모드에서 데이터를 순차적으로 액세스하는 경우 1차 읽기를 할 때의 저속 기억 장치의 일 예를 도시한 도면.2 is a diagram showing an example of an annular queue and an example of a low speed storage device when performing a primary read when sequentially accessing data in a sequential access mode.
도 3은 종래의 환형 큐가 도 2의 기억장치로부터 읽어낸 일정 크기의 데이터로 꽉 차 있는 경우의 환형 큐를 나타낸 도면.FIG. 3 is a view showing an annular queue when a conventional annular queue is filled with data of a predetermined size read from the storage device of FIG. 2; FIG.
도 4는 순차 액세스 모드에서 데이터를 순차적으로 액세스하는 경우 2차 읽기를 할 때의 저속 기억 장치의 일 예를 도시한 도면.4 is a diagram illustrating an example of a low speed memory device when performing secondary read when sequentially accessing data in a sequential access mode.
도 5 및 도6은 종래의 환형 큐의 읽기, 쓰기 동작 후의 상태를 나타내는 도면.5 and 6 are diagrams showing a state after a read and write operation of a conventional annular queue.
도 7은 종래의 저속 기억 장치를 위한 환형 큐의 작동 방법을 도시한 순서도.7 is a flow chart illustrating a method of operating an annular queue for a conventional slow memory device.
도 8은 본 발명의 일 실시예에 따른 저속 기억 장치에 대한 환형 큐로 된 버퍼의 관리 방법에 있어서, 랜덤 액세스 모드에서 백워드(backward) 방향으로 데이터를 액세스하는 경우 저속 기억 장치의 일 실시 예를 도시한 도면.FIG. 8 illustrates an embodiment of a slow storage device in the case of accessing data in a backward direction in a random access mode in the method of managing an annular queue for a slow storage device according to an embodiment of the present invention. Figure shown.
도 9 내지 도 11은 본 발명의 일 실시예에 따른 저속 기억 장치에 대한 환형 큐로 된 버퍼의 관리 방법에 있어서, 읽기, 쓰기 및 재생 동작 후의 상태를 도시한 도면.9 to 11 are diagrams illustrating states after a read, write, and reproducing operation in the annular queue buffer management method for a low speed memory device according to an embodiment of the present invention;
도 12a는 본 발명에 따른 저속 기억장치를 위한 환형 큐의 동작 과정을 설명한 순서도.12A is a flow chart illustrating the operation of an annular queue for a low speed memory device in accordance with the present invention.
도 12b는 본 발명에 따른 저속 기억장치를 위한 환형 큐의 동작 과정 중에서 기억 장치 액세스 모드가 백워드 랜덤 액세스(backward random access mode)가 아닌 경우의 처리 과정을 설명한 순서도.FIG. 12B is a flow chart illustrating a processing procedure when a storage device access mode is not a backward random access mode in an operation of an annular queue for a slow storage device according to the present invention; FIG.
<도면의 주요부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>
110 : 저속 기억 장치 120 : 버퍼(메모리)110: low speed memory device 120: buffer (memory)
130 : 재생부(재생 프로그램) 140 : 버퍼 관리부(버퍼 관리 프로그램)130: playback unit (playback program) 140: buffer management unit (buffer management program)
210 : 기억장치210: storage device
220 : 환형 큐220: annular cue
상술한 목적들을 달성하기 위한 본 발명의 바람직한 일 실시예에 따르면 저속 기억 장치에 대한 환형 큐로 된 버퍼의 관리 방법이 제공된다. 상기 환형 큐로 된 버퍼의 관리 방법은 먼저, 상기 환형 큐 버퍼 중 새로운 데이터의 쓰기가 가능한 지를 판단한다(여기서 리드 포인터로부터 후방으로 미리 설정된 완충 영역은 쓰기가 불가능한 것으로 판단 됨). 상기 쓰기 가능 여부 판단 결과 쓰기 가능한 경우에만 기억 장치로부터 일정량의 데이터를 읽어 상기 라이트 포인터(Write pointer)가 지시하는 환형 큐 내 위치에 쓰고, 상기 라이트 포인터(Write pointer)를 그 일정량만큼 증가시킨다. 그 다음, 리드 포인터의 후방에 있는 데이터에 대한 읽기 요구가 있는 경우, 요구된 데이터가 유효 영역에 포함되어 있는지 판단한다(여기서 상기 유효 영역은 상기 완충 영역을 포함함). 상기 유효 영역에 포함되어 있는 데이터인 경우, 상기 유효 영역 내에 저장된 데이터를 읽고, 상기 리드 포인터(Read pointer) 값을 마지막으로 읽어들인 데이터의 다음 위치를 가리키도록 설정한다.According to one preferred embodiment of the present invention for achieving the above objects, there is provided a method of managing an annular queue buffer for a slow memory device. In the method of managing the buffer of the annular queue, first, it is determined whether new data can be written among the annular queue buffers (in this case, it is determined that the buffer area set backward from the read pointer cannot be written). As a result of the writable determination, a certain amount of data is read from a memory device only in a writeable manner and written to a position in an annular queue indicated by the write pointer, and the write pointer is increased by the predetermined amount. Then, when there is a read request for data behind the read pointer, it is determined whether the requested data is included in the valid area (where the valid area includes the buffer area). In the case of data included in the valid region, the data stored in the valid region is read, and the read pointer value is set to point to the next position of the data read last.
바람직한 실시예에서는, 쓰기 가능 여부 판단 단계는 버퍼 크기와 상기 완충 영역 크기와의 차의 절대 값이 라이트 포인터(Write pointer) 값 보다 클 때는 쓰기 가능한 것으로 판단하고, 그렇지 않을 때는 쓰기 불가능한 것으로 판단할 수 있다.In a preferred embodiment, the step of determining whether or not the write is possible may be determined as writable when the absolute value of the difference between the buffer size and the buffer area size is larger than the write pointer value, otherwise it may be determined as not writable. have.
바람직한 실시예에서는, 상기 완충 영역에 저장되어 있는지 판단하는 단계는In a preferred embodiment, determining whether the buffer is stored in the buffer region
상기 완충 영역에 저장된 기억장치의 주소를 가리키는 값들과 기억 장치로부터 읽어들일 데이터의 주소 값을 서로 비교하여 동일한 값이 있으면 저장되어 있는 것으로 판단하고, 동일한 값이 없으면 저장되어 있지 않은 것으로 판단할 수 있다.The values indicating the addresses of the storage device stored in the buffer region and the address values of the data to be read from the storage device are compared with each other, and if the same values exist, they are determined to be stored. .
바람직한 실시예에서는, 상기 유효 영역은 상기 완충 영역 및 상기 완충 영역으로부터 후방으로 라이트 포인터(Write pointer) 직전까지를 나타내는 확대 완충 영역으로 구성될 수 있다. 즉, 상기 완충 영역은 환형 큐로부터 데이터를 읽어들여 상기 리드 포인터(Read pointer) 값이 증가하는 경우 상기 미리 정해진 크기의 완충 영역에 상기 리드 포인터(Read pointer)가 증가하면서 환형 큐로부터 읽혀진 데이터가 존재했던 영역을 더 포함할 수 있다. 또는, 상기 유효 영역은 상기 완충 영역과 동일할 수 있다. 즉, 상기 완충 영역의 크기는 환형 큐로부터 데이터를 읽어들여 상기 리드 포인터(Read pointer) 값이 증가하는 경우에도 환형 큐로부터 데이터가 읽혀짐에 따라 마지막으로 읽혀진 데이터가 있던 영역부터 시작하여 환형 큐를 따라 데이터가 읽혀진 방향과 반대되는 방향으로 상기 미리 정해진 완충 영역 크기만큼의 영역을 고정된 완충 영역으로 할 수 있다.In a preferred embodiment, the effective region may be composed of the buffer region and an enlarged buffer region representing the buffer region to the rear just before the write pointer. That is, when the read pointer value is increased by reading data from the annular queue and the read pointer value is increased, the data read from the annular queue exists while the read pointer is increased in the buffer area of the predetermined size. It may further include a region. Alternatively, the effective area may be the same as the buffer area. That is, the size of the buffer area is determined by starting from the area where the data was last read as data was read from the annular queue even when the read pointer value was increased by reading data from the annular queue. Accordingly, an area equal to the predetermined buffer area size may be a fixed buffer area in a direction opposite to the direction in which data is read.
바람직한 실시예에서는, 상기 완충 영역의 크기는 기억 장치에 저장된 데이터의 종류에 따라 가변 가능하도록 할 수 있고, 또는 기억 장치에 저장된 데이터의 속성에 대한 정보를 참작하여 자동적으로 결정될 수 있다. 또는, 상기 완충 영역의 크기는 기억 장치에 저장된 데이터의 종류에 따라 정해지는 상수 값이 될 수 있다.In a preferred embodiment, the size of the buffer region can be varied according to the type of data stored in the storage device, or can be automatically determined in consideration of information on the attribute of the data stored in the storage device. Alternatively, the size of the buffer region may be a constant value determined according to the type of data stored in the storage device.
본 발명의 다른 실시예에 따른 환형 큐로 된 버퍼 관리 수단은, 상기 환형 큐 버퍼 중 새로운 데이터의 쓰기가 가능한 지를 판단하는 수단-여기서 리드 포인터로부터 후방으로 미리 설정된 완충 영역은 쓰기가 불가능한 것으로 판단 됨-과, 상기 쓰기 가능 여부 판단 결과 쓰기 가능한 경우에만 기억 장치로부터 일정량의 데이터를 읽어 상기 라이트 포인터(Write pointer)가 지시하는 환형 큐 내 위치에 쓰고, 상기 라이트 포인터(Write pointer)를 그 일정량만큼 증가시키는 버퍼링 수단과, 리드 포인터의 후방에 있는 데이터에 대한 읽기 요구가 있는 경우, 요구된 데이터가 유효 영역에 포함되어 있는지 판단하는 수단-여기서 상기 유효 영역은 상기 완충 영역을 포함함-과, 상기 유효 영역에 포함되어 있는 데이터인 경우, 상기 유효 영역 내에 저장된 데이터를 읽고, 상기 리드 포인터(Read pointer) 값을 마지막으로 읽어들인 데이터의 다음 위치를 가리키도록 설정하는 재생 수단을 포함할 수 있다.The buffer management means of the annular queue according to another embodiment of the present invention is a means for judging whether new data can be written in the annular queue buffer, wherein it is determined that the buffer area set backward from the lead pointer cannot be written. And read only a certain amount of data from a memory device when the writable result is determined, and write it to a position in the annular queue indicated by the write pointer, and increase the write pointer by the predetermined amount. Buffering means and means for determining if the requested data is included in the valid area when there is a read request for data behind the read pointer, wherein the valid area includes the buffer area; and the valid area In the case of data contained in, the data stored in the valid area is And, it may comprise a reproduction means for setting to point to the next location of the data read by said read pointer (Read pointer) to the last value.
바람직한 실시예에서는, 상기 완충 영역의 크기는 기억 장치에 저장된 데이터의 종류에 따라 가변 가능하고, 기억 장치에 저장된 데이터의 종류에 따라 미리 결정되어진 상수 값이 될 수 있다.In a preferred embodiment, the size of the buffer region may vary depending on the type of data stored in the storage device, and may be a constant value predetermined according to the type of data stored in the storage device.
본 발명의 또 다른 실시예에 따르면, 상기 환형 큐로 된 버퍼의 관리 방법을 수행하기 위하여 디지털 처리장치에 의해 판독될 수 있는 기록 매체가 제공된다.According to another embodiment of the present invention, there is provided a recording medium that can be read by a digital processing apparatus to perform a method of managing the annular queue buffer.
이하, 본 발명에 따른 환형 큐로 된 버퍼의 관리 방법의 바람직한 실시예를 첨부 도면을 참조하여 보다 상세히 설명한다.Best Mode for Carrying Out the Invention A preferred embodiment of the method for managing an annular queue buffer according to the present invention will be described in more detail with reference to the accompanying drawings.
도 8 내지 도 12는 본 발명의 일 실시예에 따른 환형 큐로 된 버퍼의 관리 방법에 있어서, 저속 기억 장치에 대해 랜덤 액세스 모드에서 후방 데이터를 액세스하는 경우 데이터가 환형 큐에 쓰여지거나 환형 큐로부터 읽혀질 때의 상태를 도시한다. 도 12a 및 도 12b는 이러한 환형 큐와 저속 기억 장치간의 동작을 설명하는 순서도이다.8 to 12 illustrate a method of managing an annular queue buffer according to an embodiment of the present invention, in which data is written to or read from the annular queue when the backward data is accessed in the random access mode for the low speed storage device. The state of the time is shown. 12A and 12B are flowcharts for explaining the operation between the annular queue and the low speed storage device.
도 8은 본 발명의 일 실시예에 따른 환형 큐로 된 버퍼의 관리 방법에 있어서, 랜덤 액세스 모드에서 후방에 있는 데이터를 액세스하는 경우 저속 기억 장치에 데이터가 저장되어 있는 일 실시 예를 나타낸다.FIG. 8 is a view illustrating an embodiment in which data is stored in a low speed memory device in a method of managing an annular queue buffer according to an embodiment of the present invention when accessing data in a random access mode. FIG.
도 9에 도시된 바와 같이, 본 발명에 따른 환형 큐로 된 버퍼는 라이트 포인터(Write pointer), 리드 포인터(Read pointer), 유효 데이터 포인터(valid data pointer) 및 완충 영역을 갖는다. 라이트 포인터(Write pointer), 리드 포인터(Read pointer)의 역할은 이미 설명한 바 있다. 본 발명은 종래 환형 큐(220)에 리드 포인터(Read pointer)와 라이트 포인터(Write pointer)의 사이에 일정한 크기의 완충 영역(A)을 추가한 점에 특징이 있다. 종래에는 환형 큐(220)의 모든 영역에 기억 장치(210)로부터 읽어들인 신규 데이터를 저장하고 있다. 그러나, 본 발명은 재생 요구에 의해 환형 큐(220)로부터 읽혀져 재생된 적이 있는 데이터(이하 사용된 데이터라 한다.)를 환형 큐(220)의 소정 크기의 영역(유효 영역)에 저장한다. 여기서, 유효 영역은 완충 영역(A)을 포함하는 더 넓은 개념이다. 완충 영역(A)의 크기는 기억 장치(210)에 저장되어 있는 데이터의 종류에 따라 달라질 수 있다. 즉, 데이터를 저속 기억 장치로부터 순차적으로 읽지 않고 앞뒤로 조금씩 왔다 갔다 하면서 읽어야하는 경우가 빈번할 경우에는 완충 영역(A)의 크기를 크게 하고, 순차적으로 읽는 경우가 대부분인 경우에는 완충 영역(A)의 크기를 작게 한다. 예를 들어, 기억 장치에 저장되어 있는 데이터가 MP3 압축 파일인 경우에는 예측 기법에 의해 앞 뒤로 랜덤 하게 읽는 경우가 빈번할 것이므로 완충 영역(A)의 크기를 크게 하여 재생 속도를 높일 수 있다.As shown in Fig. 9, the buffer of the annular queue according to the present invention has a write pointer, a read pointer, a valid data pointer and a buffer area. The role of the write pointer and read pointer has already been described. The present invention is characterized in that a buffer area A having a predetermined size is added to a conventional annular queue 220 between a read pointer and a write pointer. Conventionally, new data read from the storage device 210 is stored in all areas of the annular queue 220. However, according to the present invention, data that has been read from the annular queue 220 and reproduced by the reproduction request (hereinafter referred to as used data) is stored in an area (effective area) of a predetermined size of the annular queue 220. Here, the effective area is a broader concept that includes the buffer area (A). The size of the buffer area A may vary depending on the type of data stored in the memory device 210. In other words, when the data need to be read back and forth little by little without being sequentially read from the low speed storage device, the size of the buffer area A is increased, and when the data is read sequentially, the buffer area A is mostly Make the size smaller. For example, if the data stored in the storage device is an MP3 compressed file, it will be frequently read randomly back and forth by the prediction technique, so that the playback speed can be increased by increasing the size of the buffer area A. FIG.
완충 영역(A)은 리드 포인터(Read pointer)와 유효 데이터 포인터(valid data pointer)사이에 위치한다. 처음에는, 유효 데이터 포인터(valid data pointer)는 리드 포인터(Read pointer)에서 완충 영역(A)의 크기를 뺀 값으로 설정된다. 그 후, 리드 포인터(Read pointer)가 증가하면 유효 영역은 완충 영역(A)에 추가로 확장 완충 영역(B)을 가질 수 있다. 환형 큐(220)로부터 데이터가 읽혀짐에 따라 마지막으로 읽혀진 데이터가 있던 영역부터 시작하여 환형 큐를 따라 후방으로 미리 정해진 완충 영역 크기만큼의 영역을 완충 영역(A)으로 하고, 완충 영역(A)이 끝나는 위치의 다음 위치부터 시작하여 후방으로 리드 포인터(Read pointer) 값의 증가 분만큼의 크기를 갖는 영역을 확장 완충 영역이라고 한다. 즉, 유효 영역은 초기에 설정된 크기만큼의 완충 영역(A)과 확장 완충 영역(B)으로 구성될 수 있다.The buffer area A is located between the read pointer and the valid data pointer. Initially, the valid data pointer is set to a value obtained by subtracting the size of the buffer area A from the read pointer. Thereafter, when the read pointer increases, the effective area may have the expansion buffer area B in addition to the buffer area A. FIG. As the data is read from the annular queue 220, the buffer area A is defined as an area having a predetermined buffer area size backward along the annular queue starting from the area where the data was last read. The region having a size corresponding to the increment of the read pointer value starting from the next position after the ending position is called the extended buffer region. That is, the effective area may be composed of the buffer area A and the expansion buffer area B as much as the size initially set.
완충 영역(A)의 크기는 미리 정해진 값을 갖는다. 즉, 프로그래머에 의해 결정된 상수 값을 갖거나 가변 가능한 값이 될 수도 있다. 예를 들어, 기억 장치에 저장된 데이터의 속성에 대한 정보(예를 들어 압축 파일인지 등)를 참작하여 자동적으로 완충 영역의 크기를 결정하는 방법도 있을 수 있다. 또는, 사용자에 의해 선택되어진 값도 가질 수 있다.The size of the buffer region A has a predetermined value. That is, it may have a constant value determined by the programmer or may be a variable value. For example, there may be a method of automatically determining the size of the buffer area in consideration of information (for example, whether it is a compressed file) of the attribute of data stored in the storage device. Alternatively, it may have a value selected by the user.
도 8을 참조하면, 저속 기억 장치(210)를 백워드 랜덤 액세스(backward random access)하여 d1, d2, d3을 읽어내기 전에 환형 큐(220)내에 사용된 데이터가 있는지 검사하여 사용된 데이터가 있는 경우(도 9의 d1, d2, d3)에는 직접 완충 영역(A)으로부터 데이터 d1, d2, d3을 읽어 재생한다. 환형 큐(220)로부터 데이터를 읽어내어 재생할 경우에는 리드 포인터(Read pointer)가 증가하므로 유효 영역의 크기는 증가한다. 즉, 완충 영역(A)에 확장 완충 영역(B)이 추가된다.Referring to FIG. 8, before the slow memory device 210 performs backward random access to read d1, d2, and d3, it is checked whether there is data used in the annular queue 220, and there is data used therein. In the case (d1, d2, d3 in Fig. 9), the data d1, d2, d3 are read from the buffer area A directly and reproduced. When reading and playing data from the annular queue 220, the read pointer increases, so that the size of the effective area increases. In other words, the expansion buffer region B is added to the buffer region A. FIG.
도 10을 참조하면, 환형 큐(220)로부터 d4, d5, d6을 읽어내어 재생한 경우를 나타내며, 리드 포인터(Read pointer)는 그만큼 증가됨을 알 수 있다. 이때, 라이트 포인터(Write pointer) 및 유효 데이터 포인터(valid data pointer)는 변하지 않고 그 위치를 유지하고 있다. 완충 영역(A)의 크기는 저속 기억 장치(210)에 저장된 데이터의 종류에 따라 초기에 값이 설정되며, 완충 영역(A) 내에는 신규 데이터가 쓰여질 수 없다. 그러나, 유효 영역 중 완충 영역(A)이외의 영역(확장 완충 영역(B))에는 신규 데이터가 쓰여질 수 있다.Referring to FIG. 10, it shows a case where d4, d5, and d6 are read and reproduced from the annular cue 220, and it can be seen that the read pointer is increased by that amount. At this time, the write pointer and the valid data pointer remain unchanged. The size of the buffer area A is initially set according to the type of data stored in the low speed memory 210, and new data cannot be written in the buffer area A. FIG. However, new data can be written in an area other than the buffer area A (expansion buffer area B) of the effective areas.
도 11을 참조하면, 도 10의 환형 큐(220)의 상태에서 기억 장치(210)로부터 d8, d9, d10을 읽어내어 환형 큐(220)의 라이트 포인터(Write pointer)가 가리키는 위치의 다음 위치에 데이터 d8, d9, d10을 쓴 경우를 나타낸다. 이때, 그만큼 라이트 포인터(Write pointer) 및 유효 데이터 포인터(valid data pointer)가 함께 증가한다. 도 11을 보면 최소 완충 영역(A)에는 신규 데이터 d8, d9, d10이 쓰여지지 않았고, 나머지 완충 영역(B)에 쓰여졌음을 알 수 있다. 도 11은 완충 영역(A)의 크기 =가 되어 환형 큐(220)가 가득 차있는(full) 상태를 나타낸다. 즉, 확장 완충 영역의 크기는 0이 된다. 이 경우 환형 큐(220)로부터 데이터를 재생하여 리드 포인터(Read pointer)가 증가하지 않는 한, 더 이상 환형 큐(220)에 데이터를 쓸 수 없게 된다.Referring to FIG. 11, in the state of the annular queue 220 of FIG. 10, d8, d9, and d10 are read from the storage device 210, and are located next to the position indicated by the write pointer of the annular queue 220. The case where data d8, d9, d10 is written is shown. At this time, the write pointer and the valid data pointer increase together. 11, it can be seen that new data d8, d9 and d10 are not written in the minimum buffer area A, but are written in the remaining buffer area B. FIG. 11 shows the size of the buffer region A = And the annular cue 220 is full. That is, the size of the expansion buffer region is zero. In this case, unless the read pointer is increased by reproducing the data from the annular cue 220, data can no longer be written to the annular cue 220.
라이트 포인터(Write pointer)와 유효 데이터 포인터(valid data pointer)는 처음에는 서로 다른 값을 가질 수 있으나, 1사이클을 돌아 환형 큐(220)에 데이터가 일단 가득 채워진 후에는 같은 값을 갖게 된다. 즉, 라이트 포인터(Write pointer)와 유효 데이터 포인터(valid data pointer)는 같은 값을 가지며 연동되어 함께 증가한다. 다만, 처음에 서로 다른 값을 갖고, 기억 장치로부터 데이터를 읽는 과정에서 에러가 생기면 이를 환형 큐(220)에 쓸 수 없어 라이트 포인터(Write pointer)가 증가될 수 없기 때문에 일시적으로 서로 다른 값을 가질 수 있다. 이때, 라이트 포인터(Write pointer)와 유효 데이터 포인터(valid data pointer)사이 영역에는 임의의 데이터(일명 쓰레기 데이터)가 존재한다. 이 영역에는 나중에 기억 장치(210)로부터 읽혀진 데이터가 쓰여질 수 있다. 이 영역에 있는 데이터는 읽혀져 재생될 수 없다는 점에서 쓰레기 데이터라고 한다. 다른 실시예에서는 유효 데이터 포인터(valid data pointer)는 리드 포인터(Read pointer)와 연동되어 함께 증가할 수도 있다.The write pointer and the valid data pointer may have different values at first, but once the data is filled in the annular queue 220 after one cycle, the write pointer and the valid data pointer have the same value. That is, the write pointer and the valid data pointer have the same value and increase together with each other. However, if an error occurs in the process of reading data from the storage device with different values at first, it cannot be written to the annular queue 220 and thus has a temporarily different value since the write pointer cannot be increased. Can be. In this case, arbitrary data (also known as garbage data) exists in an area between the write pointer and the valid data pointer. Data read later from the storage device 210 can be written to this area. Data in this area is called garbage data in that it cannot be read and reproduced. In another embodiment, the valid data pointer may be increased together with the read pointer.
도 12a 및 도 12b는 본 발명에 따른 환형 큐의 동작 과정을 설명한다. 초기에 RP = WP = 0 이다. 먼저, 기억 장치(210)로부터 일정량의 데이터 Di를 읽어내고(단계 1213), 이를 버퍼가 가득 찰 때까지 데이터 Di를 버퍼에 쓰고, 라이트 포인터(Write pointer)를 그만큼 증가시킨다(단계 1215 및 단계 1217). 버퍼가 가득 차 있는지 여부는 RP = WP + 1 인지 여부로 판단할 수 있다. 버퍼를 한 사이클 돌아 버퍼가 데이터로 가득 찬 경우에는 WP = VDP 가 된다. 이후 쓰기 동작시 WP와 VDP는 함께 증가한다. 그 다음, 재생 프로그램부(130)에서 재생 요구 신호가 있는지를 판단하고(단계 1219), 재생 요구 신호가 없는 경우에는 계속 재생 요구 신호가 올 때까지 대기한다. 재생 요구 신호가 있는 경우에는 환형 큐(220)에서 일정량의 데이터 Di'를 읽고, 리드 포인터(Read pointer) RP를 그 만큼 증가시킨다(단계 1221). 그 다음 기억 장치(210) 액세스 모드가 백워드 랜덤 액세스(backward random access) 모드인지 여부를 판단한다(단계 1223 내지 단계 1227). 즉, 기억 장치(210)에서 순차적으로 데이터를 읽다가 디스크 회전 방향과 반대 방향으로 데이터를 읽는 경우에는 백워드 랜덤 액세스(backward random access) 모드가 된다. 판단 결과, 백워드 랜덤 액세스 모드가 아닌 경우(순차 액세스 또는 앞쪽 랜덤 액세스(forward random access))에는 도 12b의 단계 1233을 실행하고, 백워드 랜덤 액세스(backward random access)인 경우에는 단계 1227을 실행한다. 단계 1227에서는 랜덤 액세스 할 데이터가 환형 큐(220)내의 사용된 데이터에 포함되었는지를 판단한다. 유효 영역에 저장된 기억 장치의 주소를 가리키는 값들과 기억 장치로부터 읽어들일 데이터의 주소 값을 서로 비교하여 동일한 값이 있으면 포함되어 있는 것으로 판단하고, 동일한 값이 없으면 포함되어 있지 않은 것으로 판단할 수 있다. 판단 결과, 포함되지 않은 경우에는 단계 1233을 수행한다. 포함된 경우에는 직접 기억 장치를 액세스하지 않고 직접 환형 큐(220)의 사용된 데이터를 읽어내어 재생하고(단계 1229), 그 다음 재생 요구 신호가 있는지를 검사하여 단계 1219를 반복 수행한다.12A and 12B illustrate an operation process of the annular queue according to the present invention. Initially, RP = WP = 0. First, a predetermined amount of data Di is read from the storage device 210 (step 1213), and the data Di is written into the buffer until the buffer is full, and the write pointer is increased by that amount (step 1215 and step 1217). ). Whether the buffer is full can be determined by whether RP = WP + 1. If the buffer is turned one cycle and the buffer is full of data, WP = VDP. In subsequent write operations, WP and VDP increase together. The playback program unit 130 then determines whether there is a playback request signal (step 1219), and if there is no playback request signal, it waits until the playback request signal comes. If there is a reproduction request signal, the annular queue 220 reads a certain amount of data Di 'and increases the read pointer RP by that amount (step 1221). Next, it is determined whether the storage device 210 access mode is a backward random access mode (step 1223 to step 1227). That is, when data is sequentially read from the storage device 210 and data is read in a direction opposite to the disk rotation direction, the memory device 210 enters a backward random access mode. As a result of the determination, step 1233 of FIG. 12B is executed in case of no backward random access mode (sequential access or forward random access), and step 1227 is executed in case of backward random access. do. In operation 1227, it is determined whether data to be randomly accessed is included in the used data in the annular queue 220. The values indicating the addresses of the storage device stored in the valid area and the address values of the data to be read from the storage device are compared with each other to determine that the same values are included. If the same values do not exist, they are determined not to be included. If it is not determined, step 1233 is performed. If included, the used data of the annular queue 220 is read out and played back (step 1229) without directly accessing the storage device, and then the step 1219 is repeated by checking whether there is a play request signal.
도 12b는 본 발명에 따른 저속 기억장치를 위한 환형 큐의 동작 과정 중에서 기억 장치 액세스 모드가 백워드 랜덤 액세스(backward random access mode)가 아닌 경우의 처리 과정을 설명한다.FIG. 12B illustrates the processing when the storage device access mode is not the backward random access mode in the operation of the annular queue for the slow storage device according to the present invention.
단계 1233에서는 환형 큐(220)로부터 읽어낸 데이터 Di'가 유효 영역 내에 있을 때, 이 영역 중 완충 영역(A)을 제외한 여유 공간(확장 완충 영역)이 존재하는지를 판단한다. 예를 들어, 여유 공간이 존재하려면,RP - WP> 완충 영역(A)의 크기이어야 한다. 판단 결과, 여유 공간이 존재하지 않으면 도 12a의 단계 1231로 되돌아가 수행한다. 여유 공간이 존재한다면 기억 장치로부터 최대 여유 공간만큼의 데이터 di+1을 읽고(단계 1235), 환형 큐(220)내 여유 공간에 데이터 Di+1을 쓰고, 라이트 포인터(Write pointer) WP를 그만큼 증가시킨 후(단계 1237) 단계 1231로 되돌아간다.In step 1233, when the data Di 'read from the annular queue 220 is within the valid area, it is determined whether there is a free space (extended buffer area) except for the buffer area A in this area. For example, if free space exists, RP-WP > Should be the size of the buffer zone (A). If it is determined that there is no free space, the process returns to step 1231 of FIG. 12A and is performed. If there is free space, read the maximum amount of data di + 1 from the storage device (step 1235), write the data Di + 1 to the free space in the annular queue 220, and increase the write pointer WP by that amount. (Step 1237), the process returns to step 1231.
위에서, 기억 장치(210)는 저속 기억 장치를 의미하나, 반도체 메모리로 된 기억 장치는 될 수 없음을 의미하는 것은 아니다. 또한, 본 발명인 환형 큐로 된 버퍼의 관리 방법은 주로 MP3 와 같은 압축된 음악 데이터를 재생할 때 적용될 수 있지만, 이에 한정되는 것은 아니다. 예를 들어, JPEG등의 정지 영상, MPEG1 등의 동영상 재생 뿐 아니라 RA, MP4 등의 압축 음악 데이터를 재생할 때에도 적용될 수 있음은 물론이다. 기억 장치(210)로부터 데이터 재생 시 순차적으로 읽어들이지 않고 랜덤 액세스가 일어나는 경우라면 압축된 데이터뿐만 아니라 어떠한 종류의 데이터를 재생하는 경우라도 적용될 수 있다.In the above, the memory device 210 means a low speed memory device, but it does not mean that the memory device of the semiconductor memory cannot be used. In addition, the present invention can be applied to a method of managing a buffer with an annular queue, but the present invention is not limited thereto. For example, the present invention can be applied not only to playback of still images such as JPEG and moving images such as MPEG1, but also to reproduction of compressed music data such as RA and MP4. If random access occurs without sequentially reading data from the memory device 210, any type of data may be applied as well as compressed data.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although the above has been described with reference to a preferred embodiment of the present invention, those skilled in the art to which the present invention pertains without departing from the spirit and scope of the present invention as set forth in the claims below It will be appreciated that modifications and variations can be made.
본 발명에 따른 저속 기억 장치에 대한 환형 큐로 된 버퍼의 관리 방법은 저속 기억 장치를 순차적으로 읽지 않고 역 방향으로 랜덤 액세스하는 경우 한 번 환형 큐에 저장한 후 재생된 적이 있는 데이터에 대해서는 다시 저속 기억 장치를 액세스하지 않고 환형 큐(220)로부터 직접 읽어들여 재사용을 가능케 함으로써 데이터 재생 속도를 획기적으로 개선한 효과가 있다.According to the present invention, a method of managing a buffer having an annular queue for a low speed memory device is a slow storage method for data that has been reproduced after being stored in the annular queue once when the slow memory device is randomly accessed in the reverse direction instead of being sequentially read. By reading directly from the annular queue 220 without accessing the device to enable reuse, the data reproduction speed is significantly improved.
또한, 본 발명은 저속 기억 장치(210)에 저장된 데이터의 종류에 따라 환형 큐(220)의 완충 영역(A)의 크기를 가변 시킴으로써, 데이터 특성을 감안하여 데이터 재생 속도를 최대한 개선할 수 있는 효과도 있다.In addition, the present invention by varying the size of the buffer area (A) of the annular queue 220 according to the type of data stored in the low-speed memory device 210, the data reproduction speed can be improved as much as possible in consideration of the data characteristics There is also.
또한, 본 발명은 처음부터 기억장치로서 반도체 메모리에 기반을 두고 개발된 재생 프로그램에 적용될 경우, 기존의 재생 프로그램을 수정하지 않고 그대로 사용하면서도 훨씬 싸고 대용량인 저속 기억 장치를 데이터 저장 공간으로 활용할 수 있는 효과도 있다.In addition, when the present invention is applied to a reproduction program developed on the basis of a semiconductor memory as a storage device from the beginning, it is possible to utilize a much cheaper and larger-capacity low-speed memory device as a data storage space without using an existing reproduction program without modification. It also works.
Claims (27)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2000-0052546A KR100389110B1 (en) | 2000-09-05 | 2000-09-05 | Method of operating a circular queue for low-speed storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2000-0052546A KR100389110B1 (en) | 2000-09-05 | 2000-09-05 | Method of operating a circular queue for low-speed storage device |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20000072461A true KR20000072461A (en) | 2000-12-05 |
KR100389110B1 KR100389110B1 (en) | 2003-06-25 |
Family
ID=19687572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2000-0052546A KR100389110B1 (en) | 2000-09-05 | 2000-09-05 | Method of operating a circular queue for low-speed storage device |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100389110B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101689386B1 (en) * | 2015-10-27 | 2016-12-26 | 강릉원주대학교산학협력단 | Data compression method using circular queue |
KR101980104B1 (en) * | 2019-02-22 | 2019-08-28 | 주식회사 센드투 | Method and apparatus for controlling data of circular queue |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07170267A (en) * | 1993-12-14 | 1995-07-04 | Toshiba Corp | Traffic shaping system in atm communication |
US5584037A (en) * | 1994-03-01 | 1996-12-10 | Intel Corporation | Entry allocation in a circular buffer |
KR19980056298A (en) * | 1996-12-28 | 1998-09-25 | 배순훈 | Apparatus and method for transmitting dynamic data block using annular queue |
-
2000
- 2000-09-05 KR KR10-2000-0052546A patent/KR100389110B1/en not_active IP Right Cessation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101689386B1 (en) * | 2015-10-27 | 2016-12-26 | 강릉원주대학교산학협력단 | Data compression method using circular queue |
KR101980104B1 (en) * | 2019-02-22 | 2019-08-28 | 주식회사 센드투 | Method and apparatus for controlling data of circular queue |
Also Published As
Publication number | Publication date |
---|---|
KR100389110B1 (en) | 2003-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6151660A (en) | Information recording/reproducing apparatus having segmented cache memory | |
JP5621909B2 (en) | Information processing apparatus, storage system, and write control method | |
JPH1031560A (en) | Method for executing instruction in cd-rom disk driver | |
US6842824B2 (en) | Cache control program and computer for performing cache processes utilizing cache blocks ranked according to their order of reuse | |
JPH05307440A (en) | Data storage format conversion system and its conversion method, access controller and data access method | |
KR100623125B1 (en) | Information storage device, information storage method, and program product for information storage processing | |
US7913029B2 (en) | Information recording apparatus and control method thereof | |
US5787461A (en) | High speed optical disk drive caching executable and non-executable data | |
US6269420B1 (en) | Information recording/reproducing apparatus reducing disk access frequency to file management area and sharply accelerating record processing and reproduction processing | |
US6532513B1 (en) | Information recording and reproduction apparatus | |
KR100389110B1 (en) | Method of operating a circular queue for low-speed storage device | |
EP1684288B1 (en) | Information recorder, information recording method, and recording medium containing program | |
US6209057B1 (en) | Storage device having data buffer | |
JP3030949B2 (en) | Digital data recording / reproducing device | |
KR100745204B1 (en) | Method and Apparatus for Diagnosing Bad Block using Enforced Write Operation in Large-Capacity Storage | |
KR100252505B1 (en) | A method of managing a disk cache | |
JPH0477938A (en) | Data storage method | |
JP2001043662A (en) | Disk medium managing method | |
KR100670470B1 (en) | Method for operating cache buffer | |
JPH10133919A (en) | Data storing device | |
JPH10208380A (en) | Optical disk reproducing method and optical disk device | |
TWI581097B (en) | Access method | |
JPH09114598A (en) | Disk cache device | |
JPH0728678A (en) | Data storage and reproduction device | |
JP2001209577A (en) | Information recording and reproducing device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20100519 Year of fee payment: 8 |
|
LAPS | Lapse due to unpaid annual fee |