KR19980081024A - 데이터를 내부 메모리에 도입하고 당해 데이터에 연산을 실시하여 출력하는 고속 동작 가능한 데이터 입출력 장치 - Google Patents

데이터를 내부 메모리에 도입하고 당해 데이터에 연산을 실시하여 출력하는 고속 동작 가능한 데이터 입출력 장치 Download PDF

Info

Publication number
KR19980081024A
KR19980081024A KR1019980011614A KR19980011614A KR19980081024A KR 19980081024 A KR19980081024 A KR 19980081024A KR 1019980011614 A KR1019980011614 A KR 1019980011614A KR 19980011614 A KR19980011614 A KR 19980011614A KR 19980081024 A KR19980081024 A KR 19980081024A
Authority
KR
South Korea
Prior art keywords
data
syndrome
transfer
memory
error
Prior art date
Application number
KR1019980011614A
Other languages
English (en)
Other versions
KR100455012B1 (ko
Inventor
나카쓰지후미오
마에다도시노리
가미야마히로시
Original Assignee
모리시다요이치
마쯔시다덴키산교가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 모리시다요이치, 마쯔시다덴키산교가부시키가이샤 filed Critical 모리시다요이치
Publication of KR19980081024A publication Critical patent/KR19980081024A/ko
Application granted granted Critical
Publication of KR100455012B1 publication Critical patent/KR100455012B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Bus Control (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

데이터 입출력 장치는 1개의 메모리와 데이터를 상기 메모리에 저장하는 입력 인터페이스부와, 상기 메모리 내의 데이터를 취득하여 당해 데이터에 따라서 연산을 하여 필요에 따라 상기 메모리 내의 데이터를 갱신할 연산부와, 상기 연산부에 의한 연산 후에 상기 메모리 내의 데이터를 취득하여 외부에 전송하는 출력 인터페이스부와, 상기 각부의 각각에 우선도를 정하고, 소정수의 데이터를 전송할 때마다 상기 우선도에 따라 메모리 액세스를 인정함으로써 상기 각부의 메모리 액세스 경합을 조정하는 버스 제어부를 구비한다.

Description

데이터를 내부 메모리에 도입하고 당해 데이터에 연산을 실시하여 출력하는 고속 동작 가능한 데이터 입출력 장치
본 발명은 데이터 입출력 장치에 관한 것으로, 특히 입력된 데이터에 특정한 연산을 실시하여 출력하는 것으로서 입력 및 출력에 관해서 각각 소정의 전송률로 데이터를 전송하는 입출력 장치에 관한 것이다.
컴퓨터 또는 AV 기기 등이, 광디스크, 자기디스크 등에 축적된 디지털 데이터를 이용하기 위해서는 데이터 입출력 장치를 필요로 한다.
데이터 입출력 장치는 광디스크 등에 기록되어 있는 데이터를 판독하고, 필요에 따라 데이터의 가공이나 오류정정을 행하여, 데이터를 컴퓨터 등이 이용할 수 있는 형식 컴퓨터 등으로 전송하는 장치이다.
광디스크 판독장치
이러한 데이터 입출력 장치의 일례로서, 이하, 종래의 광디스크 판독장치에 대하여 도면을 참조하여 설명하기로 한다.
도 1은 종래의 광디스크 판독장치의 개략 구성도이다.
광디스크 판독장치(1000)는 광디스크(1010)에 기록되어 있는 데이터를 판독하고, 판독한 데이터의 오류를 정정한 후에 호스트 컴퓨터(1070)에 전송하는 장치로서, 픽 업(1020)과, 증폭기(1030)와, 전치 프로세서(1040)와, 광디스크 제어부(1100)와, 회전 모터(1050)와, 서보 컨트롤러(1060) 및 시스템 제어부(1200)를 구비하는 것이다.
여기서, 시스템 제어부(1200)는 호스트 컴퓨터(1070)로부터의 데이터 요구의 명령을 광디스크 제어부(1100)를 통해 접수하고, 명령을 해석하여 서보 컨트롤러(1060) 및 광디스크 제어부(1100)를 제어하여 데이터 요구에 따르는 기능을 실현하는 마이크로 프로세서이다.
회전 모터(1050)는 광디스크(1010)를 회전시키는 것이며, 서보 컨트롤러(1060)는 전치 프로세서(1040)로부터의 정보를 바탕으로 시스템 제어부(1200)의 지시를 받아 회전 모터(1050)의 회전 및 픽업(1020)의 렌즈 위치를 제어하는 것이다.
픽업(1020)은 광디스크(1010)에 기록된 데이터를 레이저 광선을 쪼여 반사광에 의해 판독하여 전기 신호로 바꾸는 것이며, 증폭기(1030)는 픽업(1020)이 출력한 신호를 증폭하여 전치 프로세서(1040)에 출력하는 것이다.
전치 프로세서(1040)는 입력된 신호에 따라 서보 컨트롤러(1060)와 회전 모터(1050) 및 픽업(1020)으로 피드백 제어를 행하여, 안정된 신호를 광디스크 제어부(1100)에 출력하는 것이며, 이퀄라이저, AGC(자동이득 제어회로), PLL(phase locked loop) 등을 갖는다. 또, 전치 프로세서(1040)가 광디스크 제어부(1100)로 출력하는 신호는 변조된 데이터이다.
광디스크 제어부(1100)는 호스트 컴퓨터(1070)로부터의 데이터 요구 명령을 시스템 제어부(1200)에 통지하고, 시스템 제어부(1200)의 제어 하에서, 전치 프로세서(1040)로부터 입력된 신호를 원상 회복하여 필요한 데이터를 페치하고, 오류정정을 실시하고, 호스트 컴퓨터(1070)로 데이터를 전송하는 것이다.
또, 도 1에서는 굵은선으로 광디스크(1010)에 기록되어 있는 데이터가 호스트 컴퓨터(1070)에 도달하기까지의 흐름을 도시한다. 즉, 광디스크(1010)에 기록되어 있는 데이터는 픽업(1020), 증폭기(1030), 전치 프로세서(1040), 광디스크 제어부(1100)를 통해 호스트 컴퓨터(1070)에 도달한다.
이하, 종래의 광디스크 판독장치에서의 광디스크 제어부(1100)에 대하여 상세히 설명하기로 한다.
도 2는 종래의 광디스크 제어부(1100)의 구성도이다.
광디스크 제어부(1100)는 제 1 메모리(1110)와, 제 2 메모리(1120)와, 제 3 메모리(1130)와, 디스크 인터페이스부(1140)와, 오류정정부(1150)와, 호스트 인터페이스부(1160)와, 제 1 전송부(1170) 및 제 2 전송부(1180)를 갖는다.
또, 도 2 중의 굵은선은 전치 프로세서(1040)로부터 입력된 데이터가 호스트 컴퓨터(1070)에 도달하기까지의 흐름을 도시한다.
여기서, 디스크 인터페이스부(1140)는 전치 프로세서(1040)로부터 입력된 신호를 원상 회복하여 필요한 데이터를 페치하고, 제 1 메모리에 저장하는 것이다.
오류정정부(1150)는 디스크 인터페이스부(1140)에 의해 제 1 메모리에 저장된 소정 바이트수의 데이터에 대하여 오류정정의 연산처리를 실시하여 필요에 따라 데이터를 수정하는 것이다. 여기에서, 상기 소정 바이트수는 오류정정 처리를 하기 위한 처리 단위인 블록을 구성하는 데이터의 수이고, 이하 이 소정 바이트수의 데이터를 1블록의 데이터라 한다. 또, 오류정정부(1150)가 행하는 오류정정 처리에 대해서는 나중에 더욱 상세히 설명하기로 한다.
또한, 제 1 전송부(1170)는 오류정정부(1150)에 의한 오류정정의 연산처리가 실시된 후의 제 1 메모리 내의 데이터를 제 2 메모리에 전송하는 것이다.
제 1 메모리(1110)는 1메가비트의 용량으로, 내부에 1블록의 데이터를 저장할 수 있는 영역을 3개 포함한다.
디스크 인터페이스부(1140)와 오류정정부(1150) 및 제 1 전송부(1170)는 각각 독립하여 실행할 수 있는 것이기 때문에, 어떤 일정 기간에 있어서 상기 3개의 영역의 각각은, 디스크 인터페이스부(1140)와, 오류정정부(1150)와, 제 1 전송부(1170) 내의 하나로부터 액세스된다. 또한, 디스크 인터페이스부(1140)로 액세스된 영역은 다음 일정 기간에 있어서는 오류정정부(1150)로 액세스되어, 오류정정부(1150)에 액세스된 영역은 다음 일정 기간에 있어서는 제 1 전송부(1170)에 액세스되고, 제 1 전송부(1170)로 액세스된 영역은 다음 일정 기간에 있어서는 디스크 인터페이스부(1140)로 액세스된다.
즉, 제 1 메모리 전체에 대한 액세스에 착안하면, 제 1 메모리는 디스크 인터페이스부(1140)와, 오류정정부(1150)와, 제 1 전송부(1170) 3계통으로부터 동시에 액세스된다고 할 수 있다. 제 1 메모리(1110)는 이와 같이 동시에 3계통으로부터의 액세스가 가능한 것이다.
또한, 1블록의 데이터에 착안하면 디스크 인터페이스부(1140)로부터 제 1 메모리(1110)에 저장된 데이터는 다음에 오류정정부(1150)에 의해 오류정정 연산처리가 실시되고, 다음에 제 1 전송부(1170)에 의해 제 2 메모리로 전송된다.
제 2 메모리(1120)는 제 1 전송부(1170)에 의해 전송된 데이터를 축적하기 위한 것이며, 축적된 데이터는 제 2 전송부(1180)에 의해 수시로 제 3 메모리로 전송된다.
제 3 메모리(1130)는 4메가비트 용량의 메모리이고 15블록분의 데이터를 저장할 수 있다. 이 제 3 메모리(1130)에는 광디스크로부터 판독한 데이터가 제 1 메모리, 제 2 메모리를 거쳐 최종적으로 축적된다.
호스트 인터페이스부(1160)는 호스트 컴퓨터(1070)로부터의 데이터 요구 명령을 시스템 제어부(1200)에 전하고, 또한, 시스템 제어부(1200)의 지시를 받아 제 3 메모리에 저장되어 있는 데이터를 호스트 컴퓨터로 전송하는 것이다.
또, 시스템 제어부(1200)는 제 3 메모리(1130)에 축적되어 있는 데이터를 관리하고 있고, 제 3 메모리(1130)에 저장되어 있지 않은 데이터를 호스트 컴퓨터(1070)로부터 요구되어 있는 경우에는, 서보 컨트롤러(1060)를 통해 회전 모터(1050)의 구동을 행하고, 그 결과, 제 3 메모리(1130)로 운반되어 온 데이터에 대하여 호스트 인터페이스부(1160)를 제어함으로써 컴퓨터에 전송한다. 또한, 이미 제 3 메모리(1130)에 저장되어 있는 데이터를 호스트 컴퓨터(1070)로부터 요구받고 있는 경우에는, 시스템 제어부(1200)는 서보 컨트롤러(1060)를 개재한 회전 모터(1050)의 구동을 하지 않고 호스트 인터페이스부(1160)를 제어함으로써 제 3 메모리(1130) 중의 데이터를 호스트 컴퓨터로 전송한다.
이와 같이, 종래의 광디스크 제어부(1100)는 제 1 메모리(1110)를 중심으로 한 데이터의 도입과 오류정정 처리를 행하는 부분과, 제 3 메모리(1130)를 중심으로 한 데이터의 호스트 컴퓨터로의 전송 처리를 행하는 부분의 2개로 대별하여, 그들 처리간의 FIFO 버퍼로서 제 2 메모리(1120)를 이용한 구성으로 되어 있다.
즉, 디스크 인터페이스부(1140)가 전치 프로세서(1040)로부터 입력되는 데이터의 전송 속도는 저속임에도 불구하고, 호스트 인터페이스부(1160)가 호스트 컴퓨터로 출력하는 데이터의 전송 속도에 있어서는 호스트 컴퓨터의 처리를 정체되지 않도록 고속인 것이 요구되는 것에 대응하여, 종래의 광디스크 제어부(1100)는 저속 처리부분과 고속 처리부분을 설치하여 이들의 처리간을 버퍼를 통해 접속한 구성이 채용되고 있다.
오류정정부
이하, 상술한 종래의 광디스크 판독장치(1000)에서의 광디스크 제어부(1100)내의 오류정정부(1150)에 대하여 더욱 상세히 설명하기로 한다.
우선, 오류정정부(1150)가 행하는 오류정정에 대하여 설명하기로 한다.
광디스크 등의 디지털 데이터를 기록하는 기억 매체는 기록 밀도가 매우 높기 때문에 매체 상의 작은 상처, 오염이나 먼지 등에 의해 데이터 오류를 발생시킬 가능성이 높다. 따라서, 광디스크 등의 판독장치는 정확한 데이터를 판독하지 못할 가능성이 있다.
이러한 상황을 방지하기 위해 기억 매체에 데이터를 기록할 때에는 데이터에 오류정정용 부호를 부가하고, 이 기억 매체를 판독하는 장치에 있어서는, 이 오류정정용 부호를 이용하여 잘못된 데이터를 검출하고, 바른 데이터로 정정하는 오류 정정 처리가 행하여진다. 오류정정 처리를 위해 이용되는 부호로서, 예를 들면 오류정정 능력이 우수한 리드솔로몬 부호가 이용된다.
도 3은 오류정정 부호의 예를 도시한 도면이다.
동 도면에는, 2개의 부호를 조합하여 만들어지는 부호로서 가장 기본적인 것인 곱셈 부호를 도시한다.
n1×n2바이트의 정보 데이터(1311)에 대하여, C1방향으로 k1바이트의 패리티 데이터가 부가되고, C2방향에는 k2바이트의 패리티 데이터가 부가되어 있다. 또한, C1 패리티 데이터에 대하여 C2방향으로 k2바이트의 패리티 데이터가 부가되어 있다.
즉, 정보 데이터(1311)에 대하여, kl×n2바이트의 패리티 데이터(1312)와, n1×k2바이트의 패리티 데이터(1313)와, k1×k2바이트의 패리티 데이터(1314)가 부가되어 있고, 이들(n1+kl)×(n2+k2)바이트의 데이터가 오류정정 처리의 단위인 1블록을 구성한다.
도 3에 도시된 곱셈 부호에 대한 오류정정 처리는, 예를 들면 처음에 1행째(n1바이트)의 정보 데이터를 C1방향의 패리티 데이터(k1바이트)를 이용하여 오류정정을 행하고, 2행째부터 (n2+k2)행째까지도 마찬가지로 오류정정을 행한다. 이것으로 어느 정도의 오류정정은 할 수 있지만, 정보의 정밀도를 높이기 위해서, 또한 1열째(n2바이트)의 정보 데이터를 C2방향의 패리티 데이터를 이용하여 오류정정을 행하고, 2열째부터 (n1+k1)행째까지도 마찬가지로 오류정정을 할 수도 있다. 또한 C1방향의 패리티 데이터를 이용하여 오류정정을 행함으로써 정보의 정밀도는 더욱 높아진다.
또한, 예를 들면 Cl방향의 패리티 데이터를 이용하여 행하는 1행째의 정보 데이터에 대한 오류정정 연산은 다음 순서로 행하여진다.
(1) 1행의 정보 데이터 및 패리티 데이터로부터 신드롬을 계산한다. 또, 복수차원인 신드롬이 O, 즉 신드롬의 모든 성분이 O이라면 오류는 없다고 판단할 수 있다.
(2) 신드롬을 기초로 하여 오류 위치 다항식과 오류 수치 다항식을 구한다. 이 계산 방법으로서 유클리드법 등이 알려져 있다.
(3) 오류 위치 다항식의 근을 구한다. 이 계산 방법으로서 체인 검색이라는 방법 등이 알려져 있다.
(4) 오류의 값을 구하고, 오류 위치에 있는 정보 데이터의 값을 상기 오류값과의 배타적 논리합을 취한 것으로 수정한다.
다음으로, 오류정정부(1l50)의 구성에 대하여 설명하기로 한다.
도 4는 종래의 오류정정부(1150)의 구성도이다.
오류정정부(l150)는 신드롬 계산회로(1151)와, 유클리드 계산회로(1152)와, 체인 계산회로(1153)와, 오류데이터 정정회로(1154)를 포함한다.
신드롬 계산회로(1151)는 상기의 순서(1)의 처리를 행하는 회로이고, 유클리드 계산회로(1152)는 상기의 순서(2)의 처리를 하는 회로이고, 체인 계산회로(1153)는 상기 순서(3)의 처리를 행하는 회로이고, 오류 데이터 정정회로(1154)는 상기 순서(4)의 처리를 행하는 회로이며, 이들 회로는 각각 동기하여 병렬처리, 즉 파이프라인 방식에 의한 순차 처리를 행한다.
도 4 중 굵은선은 제 1 메모리(1110)에 관한 데이터의 흐름을 도시한다.
신드롬 계산회로(1151)는 제 1 메모리(1110)에 저장되어 있는 데이터를 취득하여 계산결과를 유클리드 계산회로(1152)로 인도하고, 유클리드 계산회로(1152)는 계산 결과를 체인 계산회로(1153)로 인도하고, 체인 계산회로(1153)는 계산 결과를 오류데이터 정정회로(1154)로 인도하고, 오류데이터 정정회로(1154)는 오류값을 구하고, 제 1 메모리(1110) 내의 오류 위치에 해당하는 정보 데이터를 참조하여, 구한 오류값과의 배타적 논리합을 계산하여 제 1 메모리(1110) 내의 정보 데이터를 갱신한다.
도 5는 종래의 오류정정부(1150)에서의 병렬 처리 형태를 도시한 도면이다.
도 5에서는 부호화된 데이터열, 예를 들면 상술한 C1방향의 패리티 데이터가 부가된 1행의 정보 데이터를, No. 1, No. 2 등으로 표시하고 있다. 각각의 데이터열은 블록 부호화된 1개의 부호어(code word)이고, 이 부호어는 통신로를 통해 수신된 것일 때 수신어(received word)라고도 하는 것이다. 여기에서 블록 부호화란 1행의 데이터 등의 한묶음의 데이터 부호화가 다른 1행의 데이터 등의 한묶음의 데이터 부호화와 독립으로 행해지고 있는 부호화를 말한다. 또, 여기에서는 픽업(1020) 등의 광디스크를 판독하는 경로를 통신로로 취하고 있다.
또, 도 5에는 각각의 처리에 요하는 시간을 굵은선의 길이로 예시하고 있다.
도 5에 도시된 바와 같이, 예를 들면 신드롬 계산회로(1151)는 시간 t4에 있어서 No.4의 데이터열에 대한 계산을 행하고, 시간 t5에 있어서 No.5의 데이터열에 대한 계산을 행하여, 시간마다 다른 데이터열을 처리하고 있고, 시간 t4에 있어서 유클리드 계산회로(1152)는 No.3의 데이터열을, 체인 계산회로(1153)는 No.2의 데이터열을, 오류데이터 정정회로(1154)는 No.1의 데이터열을 각각 처리하고 있다.
이와 같이 4개의 회로가 파이프라인 방식에 의한 순차 처리를 실현하기 위해 t1, t2 등의 시간은 4개의 회로 중 가장 처리 시간이 긴 것으로 정리되어 있다.
도 5 중에 굵은선으로 예시하는 바와 같이 실제상은 각 회로의 처리시간은 동일하지 않으므로, 파이프라인 방식에 의한 순차 처리를 실현하기 위해 회로에 따라서는 대기 시간을 설치하여 조정하고 있다. 또, 일반적으로는 유클리드 계산의 계산량이 가장 크고, 이것에 대하여 신드롬 계산, 체인 계산, 오류데이터 정정의 각각의 계산량은 작다.
이상, 종래의 데이터 입출력 장치의 예로서, 광디스크 판독장치에 대하여 설명하였는데, 이 광디스크 판독장치에는 다음과 같은 문제점이 있다.
우선, 광디스크 제어부(1100)에서의 제 1 메모리와 제 3 메모리와 같이, 동일 내용이 저장되는 것임에도 불구하고, 데이터 입력에서의 데이터의 전송속도와 데이터 출력에서의 데이터의 전송속도가 다른 것, 입력 데이터에 대한 연산처리의 기구와 고속 데이터 출력처리의 기구를 일체화하면 메모리 액세스 제어가 복잡하게 되는 것, 그 밖의 이유 때문에 각각의 메모리가 사용되고 있는 점이다. 이 경우에서의 제 1 메모리와 같이 장치 내에 불필요한 메모리를 설치하는 것은 바람직하지 않다.
다음으로, 오류정정부(1150)가 4개의 회로에 의한 파이프라인 방식의 순차 처리를 하고 있기 때문에 4개의 회로 중 가장 처리가 느린 회로 이외의 회로에는 대기 시간이 발생하는 점이다.
요즈음과 같이, 가전 제품, 정보 기기 등에 한층 소형화, 고성능화가 요청되고 있는 상황에서는 상기와 같은 불필요한 메모리의 존재나, 불필요한 대기 시간의 존재는 특히 문제가 된다. 불필요함의 삭제가 직접, 간접으로 소형화, 고성능화에 결부되기 때문이다.
따라서, 본 발명은 이러한 관점에서 이루어진 것으로, 제 1의 소정의 전송 속도로 입력되는 데이터를 저장하기 위한 메모리와, 제 2의 소정의 전송 속도로 출력되는 데이터를 저장하기 위한 메모리를 별도로 구비할 필요가 없는 데이터 입출력 장치를 제공하는 것을 제 1의 목적으로 한다.
또, 입력한 데이터에 오류정정 처리를 실시하여 데이터를 출력하는 데이터 입출력 장치로서, 불필요하게 지체되지 않고 오류정정 처리를 하는 데이터 입출력 장치를 제공하는 것을 제 2의 목적으로 한다.
도 1은 종래의 광디스크 판독장치의 개략 구성도
도 2는 종래의 광디스크 제어부(1100)의 구성도
도 3은 오류정정 부호의 예를 도시한 도면
도 4는 종래의 오류정정부(1150)의 구성도
도 5는 종래의 오류정정부(1150)에서의 병렬처리 형태를 도시한 도면
도 6은 본 발명의 실시예인 광디스크 판독장치의 개략 구성도
도 7은 광디스크 제어부(2100)의 회로 구성도
도 8은 광디스크 제어부(2100)에서의 데이터의 흐름을 도시한 도면
도 9는 광디스크 제어부(2100)의 동작 개요를 도시한 흐름도
도 10은 광디스크 제어부(2100)가 복수 블록의 데이터를 처리하는 경우의 각부의 동작 타이밍을 도시한 도면
도 11은 메모리(2110)의 내부로의 액세스의 이미지를 도시한 개념도
도 12는 메모리 관리정보의 이미지를 도시한 도면
도 13은 버스 제어부(2120)의 기능 블록도
도 14는 디스크 인터페이스부(2130)의 동작의 일부를 도시한 흐름도
도 15는 신드롬 계산회로(2140)의 동작의 일부를 도시한 흐름도
도 16은 호스트 인터페이스부(2190)의 동작의 일부를 도시한 흐름도
도 17은 버스 제어부(2120)의 동작의 일부를 도시한 흐름도
도 18은 메모리(2110)를 대상으로 하는 데이터 전송의 타이밍의 예를 도시한 도면
도 19는 오류정정 제어부에 관한 기능 블록도
도 20은 오류정정 제어부의 통상 동작을 도시한 흐름도
도 21은 제 2채널 전송종료 인터럽트 처리를 도시한 흐름도
도 22는 체인 계산종료 인터럽트 처리를 도시한 흐름도
도 23은 오류정정부(2101) 내의 각부의 동작 타이밍의 예를 도시한 도면
도 24는 신드롬 계산과 체인 계산의 양쪽을 프로그램에 의해 CPU(2160)에 실행시키는 경우의 광디스크 제어부(7100)의 구성도
* 도면의 주요 부분에 대한 부호의 설명 *
1010 : 광디스크 1020 : 픽업
1030 : 증폭기 1040 : 전치 프로세서
1050 : 회전 모터 1060 : 서보 컨트롤러
1070 : 호스트 컴퓨터 2000 : 광디스크 판독장치
2100 : 광디스크 제어부 2110 : 메모리
2120 : 버스 제어부 2122 : DMA 컨트롤러
2130 : 디스크 인터페이스 2140 : 신드롬 계산회로
2150 : 체인 계산회로 2160 : CPU
2170 : 명령 ROM 2180 : 데이터 RAM
2190 : 호스트 인터페이스부 2200 : 시스템 제어부
상기의 제 1의 목적을 달성하기 위해 본 발명은 외부의 제 1 장치로부터 수취한 데이터에 대하여 연산을 행하여 외부의 제 2 장치에 출력하는 데이터 입출력장치로서, 제 1 장치로부터 계속적으로 데이터를 수취하는 입력수단과, 주어진 데이터에 대하여 연산을 행하는 연산수단과, 데이터를 제 2 장치로 출력하는 출력수단과, 데이터를 저장하기 위한 1개의 메모리와, 상기 입력수단과, 상기 연산수단 및 상기 출력수단과 상기 메모리를 접속하는 버스인 1개의 메모리 버스와, 상기 입력수단을 전송원으로 하고 상기 메모리를 전송 장소로 한 제 1 DMA 전송을 행하는 제 1 데이터 전송수단과, 상기 제 1 데이터 전송수단에 의해 제 1바이트수만큼의 제 1 DMA 전송이 종료한 경우, 제 1 DMA 전송에 의해 데이터가 저장된 상기 메모리 중의 영역을 전송원으로 하고 상기 연산수단을 전송장소로 하여 상기 연산수단에 연산 대상의 데이터를 부여하기 위한 제 2 DMA 전송을 행하는 제 2 데이터 전송수단과, 상기 연산수단에 의해 제 1 바이트수만큼의 데이터에 대한 연산이 종료된 경우, 당해 데이터가 저장되어 있는 상기 메모리 중의 영역을 전송원으로 하여 상기 출력수단을 전송장소로 한 제 3 DMA 전송을 행하는 제 3 데이터 전송수단과, 상기 제 l 데이터 전송수단과 상기 제 2 데이터 전송수단 및 상기 제 3 데이터 전송수단이 배타적으로 데이터 전송을 실행하도록 제어하는 데이터 전송 제어수단을 구비하고, 상기 데이터 입출력 장치에서의 상기 입력수단과 상기 연산수단과 상기 출력수단은 병렬로 각각의 동작을 실행하는 것을 특징으로 한다.
상기 구성에 의해, 제 1 DMA 전송과 제 2 DMA 전송과 제 3 DMA 전송을 데이터 전송 제어수단에 의해 배타적으로 실행하기 때문에, 계속적으로 입력되는 데이터를 수취하고, 당해 데이터에 연산을 실시한 후에 당해 데이터를 출력하는 일련의 처리를 1개의 메모리만을 사용하여 할 수 있는 데이터 입출력 장치가 실현된다.
또한, 상기 데이터 전송 제어수단은 제 2 바이트수만큼의 데이터에 대한 제 1 DMA전송, 제 2 DMA 전송 또는 제 3 DMA 전송의 필요성이 생긴 경우, 상기 제 1 데이터 전송수단, 상기 제 2 데이터 전송수단 또는 상기 제 3 데이터 전송수단으로서 당해 필요성이 생긴 데이터 전송을 행하는 것으로, 제 2 바이트수만큼의 데이터를 연속하여 전송시키고, 제 1 DMA 전송, 제 2 DMA 전송 또는 제 3 DMA 전송 중의 복수에 대해 데이터 전송의 필요성이 경합했을 때에는 상기 제 1 데이터 전송수단, 상기 제 2 데이터 전송수단 또는 상기 제 3 데이터 전송수단으로서 당해 필요성이 생긴 데이터 전송을 행하는 것 중 소정의 우선도에 따라 정한 것으로, 제 2 바이트수 만큼의 데이터를 연속하여 전송시키는 것으로 할 수도 있다.
상기 구성에 의해, 우선도에 따라 메모리 액세스가 제어되기 때문에 상기 데이터 입출력 장치에 대하여 외부의 장치로부터 데이터가 전송되는 속도나, 당해 데이터 입출력 장치로부터 데이터를 수취하는 외부의 장치가 요구하는 전송속도에 대하여 규격 등에 의해 일정한 속도가 정해지고 있는 경우에, 이들의 전송속도의 요구에 따른 제어를 행할 수 있다. 즉, 이러한 구성에 의하면, 전송속도 요구가 이루어지고 있지만 우선도를 높게 설정함으로써 그와 같은 것에 대한 데이터 전송의 필요성에 즉시 응할 수 있다.
또한, 상기 구성에 의해 데이터 전송을 제 2 바이트수만큼 정리하여 행하기 위해 데이터별로 환산한 경우의 메모리 액세스 속도가 향상하고, 상술한 바와 같은 데이터의 전송속도에 대한 요구에 대응하기 쉽게 된다.
또한, 상기 메모리는 다이내믹 메모리이고, 제 2 바이트수는 상기 메모리를 전송장소 또는 전송원으로 하여 제 2 바이트수만큼의 데이터를 연속하여 DMA 전송하는 경우에 1바이트당 메모리 액세스에 요하는 시간을 t초로 하고, 상기 입력수단이 제 1 장치로부터 수취하는 데이터의 평균 전송속도를 v바이트/초로 하고, 어떤 데이터에 대해 제 2 DMA 전송이 필요한 회수를 n으로 하면, tv(n+2)1을 만족하도록 정한 수인 것으로 할 수도 있다.
상기 구성에 의해, 계속적으로 데이터가 입력되어도 메모리를 오버플로시키지 않는 데이터 입출력 장치가 실현된다.
또한, 상기 입력수단은 제 1 장치로부터 수취한 데이터를 일시적으로 축적하기 위한 제 1 FIFO를 갖고, 상기 출력수단은 제 2 장치에 출력하는 데이터를 일시적으로 축적하기 위한 제 2 FIFO를 가지며, 상기 제 1 데이터 전송수단은 상기 입력수단 중의 제 1 FIFO를 제 1 DMA 전송의 전송원으로 하고, 상기 제 3 데이터 전송수단은 상기 출력수단 중의 제 2 FIFO를 제 3 DMA 전송의 전송장소로 하며, 제 1 DMA 전송의 필요성은 제 1 FIFO에 제 2 바이트수만큼의 데이터가 축적된 경우에 생기고, 제 3 DMA 전송의 필요성은 상기 메모리 중에 상기 연산수단에 의한 연산이 종료된 제 2 바이트수만큼의 데이터가 존재하는 경우로서, 제 2 FIFO에 제 2 바이트수만큼의 데이터의 공간이 생겼을 때 생기는 것으로 할 수도 있다.
상기 구성에 의해, 어떤 데이터 전송을 위해 메모리 액세스가 이루어지고 있는 것 등에 의해, 제 1 DMA 전송 또는 제 3 DMA 전송의 필요성에 즉시 대응할 수 없는 경우에서도, FIFO에 의해 입력되는 데이터를 수취하지 못하거나 출력할 데이터가 도중에서 끊기는 것을 방지할 수 있다. 즉, 데이터 입출력 장치에 대하여 외부의 장치로부터 계속적으로 데이터가 보내져오는 상황하에서 당해 데이터 입출력 장치로부터 데이터를 수취하는 외부의 장치가 요구하는 데이터의 전송속도를 확실히 보증할 수 있는 데이터 입출력 장치가 실현된다.
또한, 상기 우선도는 상기 제 1 데이터 전송수단에 의한 제 1 DMA 전송이 가장 높고, 상기 데이터 전송 제어수단은 상기 제 1 DMA 전송의 필요성이 생겼을 때 이미 상기 제 1 데이터 전송수단, 상기 제 2 데이터 전송수단 또는 상기 제 3 데이터 전송수단 중 어느것인가에 DMA 전송을 실행시키고 있는 경우에는, 실행중의 제 2 바이트수만큼의 DMA 전송의 종료 후에 상기 제 1 데이터 전송수단에 제 1 DMA 전송을 실행시키고, 상기 제 1 DMA 전송의 필요성이 생겼을 때 이미 상기 제 1 데이터 전송수단, 상기 제 2 데이터 전송수단 또는 상기 제 3 데이터 전송수단 중 어느것인가에 DMA 전송을 실행시키고 있지 않은 경우에는, 즉시 상기 제 1 데이터 전송수단에 제 1 DMA 전송을 실행시키고, 제 2 바이트수는 제 1 FIFO의 용량을 m바이트로 하고, 상기 메모리를 전송장소 또는 전송원으로 하여 제 2 바이트수만큼의 데이터를 연속하여 DMA 전송하는 경우에 메모리 액세스에 요하는 시간을 T초로 하고, 상기 입력수단이 제 1 장치로부터 수취한 데이터의 평균 전송속도를 v바이트/초로 하면, m/vT를 만족하도록 정한 수인 것으로 할 수도 있다.
상기 구성에 의해, 데이터 입출력 장치에 계속적으로 전송되는 데이터를 즉시 메모리에 저장할 수 있고, 데이터를 수취하지 못하는 일 없는 데이터 입출력 장치가 실현된다.
또한, 상기 우선도는 상기 제 1 데이터 전송수단 및 상기 제 3 데이터 전송수단에 의한 DMA 전송보다 상기 제 2 데이터 전송수단에 의한 제 2 DMA 전송쪽이 낮고, 상기 데이터 전송 제어수단은 제 1 DMA 전송의 필요성 및 제 3 DMA 전송의 필요성이 생기고 있지 않은 경우에만 제 2 데이터 전송수단으로 제 2 DMA 전송을 실행시키는 것으로 할 수도 있다.
상기 구성에 의해, 연산처리를 위한 DMA 전송은 입력수단으로부터 메모리로의 DMA 전송과, 메모리로부터 출력수단으로의 DMA 전송 사이에 행해지게 되므로 데이터 입력과 데이터 출력의 쌍방의 데이터 전송속도가 정해져 있는 경우에 대응할 수 있는 데이터 입출력 장치가 실현된다.
또한, 상기 입력수단이 제 1 장치로부터 수취하는 데이터에는 오류정정 부호가 포함되고, 상기 연산은 오류정정이고, 상기 연산수단은 상기 오류정정을 하기 위해 상기 메모리에 액세스하여 상기 오류정정 부호에 따라 상기 메모리 중에 저장되어 있는 데이터를 참조 및 갱신하고, 상기 데이터 전송 제어수단은 또 상기 제 1 데이터 전송수단과 상기 제 2 데이터 전송수단 및 상기 제 3 데이터 전송수단이 데이터 전송을 실행하지 않는 동안에 한하여 상기 연산수단으로 오류정정을 위한 상기 메모리로의 액세스를 허가하는 것으로 할 수 있다.
상기 구성에 의해, 입력된 데이터에 대해서 오류정정을 실시하여 출력하는 데이터 입출력 장치가 실현된다.
또한, 상기 제 1 장치는 광디스크로부터 데이터를 판독하는 장치이며, 상기 광디스크는 제 2 바이트수 이상의 수인 제 3 바이트수마다 곱셈부호에 의한 부호화가 된 데이터를 기록하고 있고, 상기 메모리는 제 3 바이트수의 2배 이상의 크기인 것으로 할 수 있다.
상기 구성에 의해, 광디스크로부터 판독된 데이터에 대하여 오류정정을 실시하여 출력하는 데이터 입출력 장치가 실현된다.
또한, 상기 연산수단은 제 4 바이트수의 데이터가 주어지면 당해 데이터에 대응하는 신드롬을 산출하는 신드롬 계산처리를 연속적으로 복수회 행하는 신드롬 계산부와, 복수의 신드롬을 저장할 수 있는 큐(queue)인 신드롬 저장 큐와, 상기 신드롬 계산부가 산출한 신드롬을 상기 신드롬 저장 큐에 수취하는 신드롬 저장부와, 상기신드롬 저장 큐에 신드롬이 1개 이상 저장되어 있는 경우에 당해 신드롬 저장 큐로부터 1개의 신드롬을 페치하고, 페치된 당해 신드롬이 O이 아닐 때에만 당해 신드롬에 기초하여 당해 신드롬에 대응하는 데이터의 오류를 정정하는 정정부를 갖고, 상기 연산수단에서의 상기 신드롬 계산부와 상기 정정부는 병행하여 각각의 동작을 실행하는 것으로 할 수도 있다.
상기 구성에 의해, 신드롬 계산을 신드롬 계산 이외의 오류정정 처리와 독립된 실행속도로 행할 수 있게 되므로 종래의 오류정정 방식과 같이 신드롬 계산의 실행속도를 유클리드 계산의 실행속도와 통일할 필요가 없어지고, 오류정정 전체로서의 실행 속도를 고속화할 수 있는 데이터 입출력 장치가 실현된다.
즉, 신드롬 계산과, 신드롬 계산 이외의 오류정정 처리를 병행하여 실행함으로써 오류정정 전체에 필요한 시간은 신드롬 계산에 필요한 시간과 거의 같게 되어, 고속인 오류정정을 행하는 데이터 입출력 장치가 실현된다.
따라서, 본 발명은 상기 구성에 의해 상술의 제 2 목적을 달성한다. 또, 이와 같이 제 1 목적과 제 2 목적을 함께 달성함으로서 소형 고속화에 최적의 데이터 입출력 장치가 실현된다.
또한, 상기 정정부는 상기 신드롬에 기초하여 오류위치 다항식 및 오류수치 다항식을 구하는 다항식 산출부와, 상기 다항식 산출부가 구한 오류위치 다항식의 근인 오류위치를 구하는 오류위치 산출부와, 상기 다항식 산출부가 구한 오류수치 다항식과, 상기 오류위치 산출부가 구한 오류위치에 기초하여 오류수치를 구하고, 이들에 기초하여 상기 메모리 중의 데이터를 정정하는 데이터 정정부를 포함하며, 상기 오류위치 산출부는 상기 다항식 산출부 또는 데이터 정정부와 병행하여 동작하는 것으로 할 수도 있다.
상기 구성에 의해, 신드롬 계산 이외의 오류정정 처리에 있어서, 어떤 데이터열에 대한 오류위치의 산출과, 별도의 데이터열에 대한 오류위치 다항식 및 오류수치 다항식의 산출을 동시에 할 수 있기 때문에 오류정정 전체에 필요한 시간은 신드롬 계산에 필요한 시간에 더욱 가까와지고, 고속인 오류정정을 행하는 데이터 입출력 장치가 실현된다.
또한, 상술의 제 2 목적을 달성하기 위해 본 발명은 블록 부호화된 복수의 수신어의 각각에 대하여 오류정정을 연속하여 행하는 오류정정 장치로서, 수신어를 순차 취득하여 당해 수신어에 기초하여 당해 수신어에 대응하는 신드롬을 산출하는 신드롬 계산처리를 연속적으로 복수회 행하는 신드롬 계산수단과, 복수의 신드롬을 저장할 수 있는 큐인 신드롬 저장 큐와, 상기 신드롬 계산수단이 산출한 신드롬을 상기 신드롬 저장 큐에 저장하는 신드롬 저장수단과, 상기 신드롬 저장 큐에 신드롬이 1개 이상 저장되어 있는 경우에 당해 신드롬 저장 큐로부터 1개의 신드롬을 페치하고, 페치된 당해 신드롬이 O이 아닐 때에만 당해 신드롬에 기초하여 당해 신드롬에 대응하는 수신어의 오류를 정정하는 정정수단을 구비하고, 상기 오류정정 장치에서의 상기 신드롬 계산수단과 상기 정정수단은 병행하여 각각의 동작을 실행하는 것을 특징으로 한다.
상기 구성에 의해, 신드롬 계산을 신드롬 계산 이외의 오류정정 처리와 독립된 실행 속도로 행할 수 있게 되므로, 종래의 오류정정 방식과 같이 신드롬 계산의 실행 속도를 유클리드 계산의 실행 속도와 통일할 필요가 없어지고, 동일 데이터열에 대한 신드롬 계산에 필요한 시간이 유클리드 계산에 필요한 시간보다 긴 경우에도, 오류정정 전체로서의 실행 속도를 고속화할 수 있는 오류정정 장치가 실현된다.
즉, 신드롬 계산과, 신드롬 계산 이외의 오류정정 처리를 병행하여 실행하므로 오류정정 전체에 필요한 시간은 신드롬 계산에 필요한 시간과 거의 같이 되고, 고속인 오류정정을 행하는 오류정정 장치가 실현된다.
또한, 상기 오류정정 장치는 또 상기 신드롬 계산수단이 취득하는 수신어가 복수 저장되어 있는 수신어 기억수단을 구비하고, 상기 정정수단은 상기 수신어 기억수단에 저장되어 있는 수신어를 갱신함으로써 상기 정정을 행하는 것으로 할 수도 있다.
상기 구성에 의해, 메모리 내에 저장되어 있는 복수의 수신어에 대한 오류정정을 고속으로 할 수 있는 오류정정 장치가 실현된다.
또한, 상기 정정수단은 상기 신드롬에 기초하여 오류위치 다항식 및 오류수치 다항식을 구하는 다항식 산출수단과, 상기 다항식 산출수단이 구한 오류위치 다항식의 근인 오류위치를 구하는 오류위치 산출수단과, 상기 다항식 산출수단이 구한 오류수치 다항식과, 상기 오류위치 산출수단이 구한 오류 위치에 기초하여 오류수치를 구하고, 이들에 기초하여 상기 수신어 중의 데이터를 정정하는 데이터 정정수단을 갖고, 상기 오류위치 산출수단은 상기 다항식 산출수단 또는 데이터 정정수단과 병행하여 동작을 행할 수도 있다.
상기 구성에 의해, 신드롬 계산 이외의 오류정정처리에 있어서, 어떤 데이터열에 대한 오류위치의 산출과, 별도의 데이터열에 대한 오류위치 다항식 및 오류 수치 다항식의 산출을 동시에 할 수 있기 때문에 오류정정 전체에 필요한 시간은 신드롬 계산에 필요한 시간에 더욱 근접하고, 고속의 오류정정을 하는 오류정정 장치가 실현된다.
상술한 목적 및 기타의 목적과 본 발명의 특징 및 이점은 첨부 도면과 관련한 다음의 상세한 설명을 통해 보다 분명해 질 것이다.
( 실시예 )
본 발명에 의한 데이터 입출력 장치의 실시예인 광디스크 판독장치에 대하여 설명하기로 한다.
광디스크 판독장치
도 6은 본 발명의 실시예인 광디스크 판독장치의 개략 구성도이다.
광디스크 판독장치(2000)는 광디스크(1010)에 기록되어 있는 데이터를 판독하고, 판독한 데이터의 오류를 정정한 후에 호스트 컴퓨터(1070)로 전송하는 장치로서, 픽업(1020)과, 증폭기(1030)와, 전치 프로세서(1040)와, 광디스크 제어부(2100)와, 회전 모터(1050)와, 서보 컨트롤러(1060) 및 시스템 제어부(2200)를 구비하는 것이다.
또, 본 발명의 실시예인 광디스크 판독장치는 종래 기술의 광디스크 판독장치와, 광디스크 제어부(2100) 및 시스템 제어부(2200)가 다를 뿐이므로 그 밖의 구성요소에 대해서는 도 6에서 도 1에 도시된 것과 동일한 부호를 붙인다.
여기에서, 광디스크(1010)는 DVD-ROM이다.
또한, 시스템 제어부(2200)는 호스트 컴퓨터(1070)로부터의 데이터 요구 명령을 광디스크 제어부(2100)를 통해 접수하여 명령을 해석하고, 서보 컨트롤러(1060) 및 광디스크 제어부(2100)를 제어하여 데이터 요구에 따르는 기능을 실현하는 마이크로 프로세서이다.
회전 모터(1050)는 광디스크(1010)를 회전시키는 것이며, 서보 컨트롤러(1060)는 전치 프로세서(1040)로부터의 정보를 바탕으로 시스템 제어부(2200)의 지시를 받아 회전 모터(1050)의 회전 및 픽업(1020)의 렌즈 위치를 제어하는 것이다.
픽업(1020)은 광디스크(1010)에 기록된 데이터를 레이저 광선을 쪼여 반사광에 의해 판독하여 전기 신호로 바꾸는 것이며, 증폭기(1030)는 픽업(1020)이 출력한 신호를 증폭하여 전치 프로세서(1040)에 출력하는 것이다.
전치 프로세서(1040)는 입력된 신호에 따라 서보 컨트롤러(1060)와 회전 모터(1050) 및 픽업(1020)으로 피드백 제어를 행하고, 안정된 신호를 광디스크 제어부(2100)에 출력하는 것이며, 이퀄라이저, AGC, PLL 등을 갖는다.
광디스크 제어부(2100)는 호스트 컴퓨터(1070)로부터의 데이터 요구 명령을 시스템 제어부(2200)에 통지하고, 시스템 제어부(2200)의 제어하에서 전치 프로세서(1040)로부터 입력된 신호를 원상 회복하여 필요한 데이터를 취득, 오류정정을 실시하며, 호스트 컴퓨터(1070)로 데이터를 전송하는 것이다. 광디스크 제어부(2100)는 후술하는 내부 구성 및 내부 동작에 있어서 종래 기술에서의 광디스크 제어부(1100)와는 다르다.
또, 도 6에서는 굵은선으로 광디스크(1010)에 기록되어 있는 데이터가 호스트 컴퓨터(1070)에 도달하기까지의 흐름을 보이고 있다. 즉, 광디스크(1010)에 기록되어 있는 데이터는 픽업(1020), 증폭기(1030), 전치 프로세서(1040), 광디스크 제어부(2100)를 통해 호스트 컴퓨터(1070)에 도달한다.
이하, 광디스크 제어부(2100)에 대하여 상세히 설명하기로 한다. 도 7은 광디스크 제어부(2100)의 회로 구성도이다.
도 7에 도시된 바와 같이, 광디스크 제어부(2100)는 메모리(2110)와, 버스 제어부(2120)와, 디스크 인터페이스부(2130)와, 신드롬 계산회로(2140)와, 체인 계산회로(2150)와, CPU(2160)와, 명령 ROM(2170)과, 데이터 RAM(2180) 및 호스트 인터페이스부(2190)를 구비한다.
여기에서, 메모리(2110)는 4메가비트 용량의 다이내믹 메모리이고 15블록분의 데이터를 저장할 수 있다. 또, 이 메모리(2110) 이미 저장되어 있는 내용을 다시 필요로 한 경우에, 소위 디스크 캐시로서도 이용 가능하도록 큰 용량으로 하고 있지만, 본 설명에서는 디스크 캐시적인 메모리의 이용에 대해서는 특별히 언급하지 않는다.
또한, 디스크 인터페이스부(2130)는 전치 프로세서(1040)로부터 입력된 신호를 복조하여 필요한 데이터를 페치하고, 버스 제어부(2120)를 통해 메모리(2110)에 전송하는 것이며, 메모리(2110)에 전송하는 데이터를 일시적으로 축적하는 8바이트 이상 크기의 FIFO를 갖는다.
신드롬 계산회로(2140)는 상술한 순서(1)의 처리를 행하는 회로이며, 메모리(2110)에 저장된 데이터를 버스 제어부(2120)를 통해 도입 신드롬 계산을 행하는 것이다.
체인 계산회로(2150)는 상술한 순서(3)의 처리를 행하는 회로이며, 즉 오류 위치 다항식을 입력으로 하고 오류위치 다항식의 근을 출력으로 하는 것이다.
CPU(2160)는 광디스크 제어부(2100)에서의 데이터처리 전체를 제어하는 것이며, 명령 ROM(2170)에 저장되어 있는 프로그램을 해독하여 실행하고, 프로그램의 실행에 있어서 작업용 데이터를 저장하기 위한 메모리로서 데이터 RAM(2180)을 이용한다. 또한, CPU(2160)는 오류정정 처리로서 상술한 순서(2) 및 순서(4)의 처리를 행한다.
호스트 인터페이스부(2190)는 오류정정이 실시된 후의 메모리(2110) 중의 데이터를 버스 제어부(2120)를 통해 도입하고, 호스트 컴퓨터(1070)에 전송하는 것이며, 호스트 컴퓨터(1070)에 전송하는 데이터를 일시적으로 축적하는 8바이트 이상 크기의 FIFO를 갖는다.
또한, 디스크 인터페이스부(2130)와, 신드롬 계산회로(2140)와 체인 계산회로(2150)와 호스트 인터페이스부(2190)는 동일 버스로 접속되어 있다.
버스 제어부(2120)는 메모리(2110)로의 액세스를 가능하게 하기 위해 하나의 메모리 버스에 대한 사용권, 그 밖의 버스의 사용권 부여에 관해 제어하는 것이며, DMA 컨트롤러(2122)를 포함하고 있다.
여기에서, DMA 컨트롤러(2122)는 3개의 독립한 데이터 전송을 제어할 수 있는 것이다. 이하, 각각의 데이터에 대한 데이터 전송 제어부분을 DMA 컨트롤러의 제 1 채널, DMA 컨트롤러의 제 2 채널, DMA 컨트롤러의 제 3 채널이라 하고, 각각의 데이터 전송을 제 1 채널의 DMA 전송, 제 2 채널의 DMA 전송, 제 3 채널의 DMA 전송이라 한다.
도 8은 광디스크 제어부(2100)에서의 데이터의 흐름을 도시한 도면이다.
전치 프로세서(1040)로부터 광디스크 제어부(2100)에 입력된 데이터는 디스크 인터페이스부(2130)로부터 버스 제어부(2120)를 통해 메모리(2110)에 저장되고, 메모리(2110)에 저장된 데이터는 버스 제어부(2120)를 통해 오류정정부(2101)에 전송되고, 오류정정의 필요에 따라 오류정정부(2101)에 의해 버스 제어부(2120)를 통해 메모리(2110)의 데이터가 갱신되며, 오류정정후의 데이터는 메모리(2110)로부터 버스 제어부(2120)를 통해 호스트 인터페이스부(2190)에 전송되고, 호스트 인터페이스부(2190)로부터 호스트 컴퓨터(1070)로 전송된다.
여기에서, 오류정정부(2101)란 신드롬 계산회로(2140)와, 체인 계산회로(2150)와, 유클리드 계산부(2164)와, 오류데이터 정정부(2168)로 이루어지며, 도 8에 도시된 바와 같이, 버스 제어부(2120)를 통해 메모리(2110)로 액세스하는 것은 신드롬 계산회로(2140) 및 오류데이터 정정부(2168)이다.
또, 유클리드 계산부(2164)와 오류데이터 정정부(2168)는 명령 ROM(2170)에 저장된 프로그램과 CPU(2160)에 의해 실현되는 기능처리 부분이고, 유클리드 계산부(2164)는 상술한 순서(2)를 처리하고, 오류데이터 정정부(2168)는 상술의 순서(4)를 처리한다.
따라서, 오류정정부(2101)의 동작은 신드롬 계산회로(2140)가 메모리(2110) 중의 데이터를 취득하여 신드롬 계산을 한 결과를 유클리드 계산부(2164)가 참조하여 오류위치 다항식 및 오류수치 다항식을 구하고, 유클리드 계산부(2164)는 계산결과를 체인 계산회로(2150)로 보내고, 오류데이터 정정부(2168)는 체인 계산회로(2150)에 의한 계산 결과인 오류위치와 유클리드 계산부(2164)에 의한 계산 결과인 오류수치 다항식을 참조하여 오류수치를 구하며, 오류수치와 메모리(2110) 내의 데이터의 배타적 논리합을 구하여 메모리(2110) 내의 데이터를 갱신함으로써 실현된다.
이하, 상술한 구성을 구비하는 광디스크 판독장치(2000)에서의 광디스크 제어부(2100)의 메모리(2110)로의 액세스 동작 개요에 대하여 설명하기로 한다.
도 9는 광디스크 제어부(2100)의 동작 개요를 도시한 흐름도이다. 광디스크 제어부(2100)는 호스트 컴퓨터(1070)로부터 광디스크 판독요구 명령을 접수한다(단계 S3010). 접수한 명령은 버스 제어부(2120)를 통해 시스템 제어부(2200)로 넘긴다.
시스템 제어부(2200)는 상기 명령에 의해 판독할 광디스크의 매체 상의 어드레스 및 판독할 데이터 크기를 얻어, 이것에 기초하여 서보 컨트롤러(1060)에 회전 모터(1050) 및 픽업(1020)의 구동 지시를 부여하고, CPU(2160)에는 데이터 크기를 통지한다.
여기에서, 1블록분의 데이터의 판독 요구가 이루어졌다고 한다. 1블록분의 데이터는 도 3에 도시된 (n1+k1)×(n2+k2)바이트의 데이터이고, 여기서는 약 38KByte의 데이터이다.
CPU(2160)는 디스크 인터페이스부(2130)로부터 메모리(2110)로의 1블록의 데이터 전송을 DMA 컨트롤러의 제 1 채널에 지시한다(단계 S3020). 즉, CPU(2160)는 디스크 인터페이스부(2130)의 어드레스를 전송원으로 하고, 메모리(2110) 내의 데이터를 저장할 어드레스를 전송장소로 하여, 1블록분을 전송 데이터 크기로서 DMA 컨트롤러의 제 1 채널에 설정한다.
DMA 컨트롤러의 제 1 채널로의 지시 후에, 회전 모터(1050)가 광디스크(1010)를 회전시키고, 픽업(1020)과 증폭기(1030)를 통해 전치 프로세서(1040)는 광디스크(1010)의 데이터를 획득하여 광디스크 제어부(2100) 중의 디스크 인터페이스부(2130)로 데이터를 전송한다.
디스크 인터페이스부(2130)로 전송된 데이터는 디스크 인터페이스부(2130) 및 버스 제어부(2120)의 제어에 의해 메모리(2110)에 전송된다(단계 S3030). 이 데이터 전송의 제어에 있어서는 나중에 상세히 설명하기로 한다.
CPU(2160)는 제 1 채널의 DMA 전송이 1블록분의 데이터에 대하여 이루어진 후(단계 S3030, S3040), DMA 컨트롤러(2122)로부터의 전송종료를 나타내는 CPU로의 인터럽트를 접수함으로써 전송 종료를 판단하고(단계 S3040), 메모리(2110)로부터 신드롬 계산회로(2140)로의 데이터 전송을 DMA 컨트롤러의 제 2 채널에 지시한다(단계 S3050). 신드롬 계산회로(2140)는 1블록분의 데이터에 대하여 1데이터열분마다 접수하여 계산하는 것이므로(도 3참조), CPU(2160)는 메모리(2110) 내의 1개의 데이터열의 어드레스를 전송원으로 하고, 신드롬 계산회로(2140)의 어드레스를 전송장소로 하며, 1데이터열분의 크기를 전송 데이터 크기로서 DMA 컨트롤러의 제 2 채널에 설정한다.
이 결과, 메모리(2110)에 저장되어 있는 1데이터열분의 데이터는 신드롬 계산회로(2140) 및 버스 제어부(2120)의 제어에 의해 제 2 채널의 DMA 전송으로서 신드롬 계산회로(2140)로 전송된다(단계 S3060, 단계 S3070). 신드롬 계산회로(2140)는 1데이터열분의 데이터를 수취하면 신드롬 계산을 행한다.
제 2 채널의 DMA 전송의 종료를 인터럽트에 의해 CPU가 검지함으로써(단계 S3070), 신드롬 계산회로의 계산 결과에 기초하여 CPU(2160) 및 체인 계산회로(2150)가 계산을 하고, 필요에 따라 CPU(2160)는 오류데이터 정정부(2168)의 기능처리로서 버스 제어부(2120)를 통해 메모리(2110)의 데이터를 갱신한다(단계 S3080). 또, 제 2 채널의 DMA 전송의 종료의 CPU 인터럽트의 시점에서는 신드롬 계산회로(2140)에 의한 신드롬의 계산은 종료하고 있다.
이 신드롬 계산으로부터 오류데이터 정정까지의 동작에 대해서는 나중에 상세히 설명하기로 한다.
1데이터열분의 오류정정 처리가 종료한 후에, 다른 데이터열에 대해서도 단계 S3050으로부터 단계 S3080까지의 처리를 행함으로써(단계 S3090), 1블록에 대한 1회의 오류정정이 종료된 후, 단계 S3050으로부터 단계 S3090까지의 처리를 행하여 2회째의 오류정정을 하고, 마찬가지로 3회째의 오류정정을 행함으로써 오류정정을 완료한다(단계 S3100).
여기에서, 1회째의 오류정정은 도 3에 도시된 C1방향으로 행하고, 2회째는 C2방향으로, 3회째는 다시 C1방향으로 행한다. 즉, 단계 S3080에서의 오류정정은 C1방향의 패리티 데이터를 이용하여 1행째부터 시작되어 (n2+k2)행까지 반복되고, 다음에 C2방향의 패리티 데이터를 이용하여 1열째부터 시작되어 (n1+kl)열까지 반복되며, 다음으로 다시 C1방향의 패리티 데이터를 이용하여 1행째부터 시작되어 (n2+k2)행까지 반복된다(도 3 참조).
1블록분의 데이터에 대한 모든 오류정정 처리가 완료된 후, CPU(2160)는 메모리(2110)로부터 호스트 인터페이스부(2190)로의 데이터 전송을 DMA 컨트롤러의 제 3 채널에 지시한다(단계 S3110). 즉, CPU(2160)는 메모리(2110) 중의 오류정정이 종료된 1블록의 데이터 어드레스를 전송원으로 하며, 호스트 인터페이스부(2190)의 어드레스를 전송장소로 하고, 1블록분을 전송 데이터 크기로 하여 DMA 컨트롤러의 제 3 채널에 설정한다.
또 실제는 호스트 인터페이스부(2190)가 메모리(2110)로부터 페치할 데이터는, 패리티 데이터를 제외한 정보 데이터뿐이므로 정보 데이터를 저장하는 영역과 패리티 데이터를 저장하는 영역을 별도의 영역으로 하고 있다. 이것은 패리티 데이터를 저장하는 영역은 재이용 가능하기 때문에 당해 영역의 수를 삭감하기 위해서이다. 이 때문에, 정보 데이터는 연속한 어드레스에 존재하고, 패리티 데이터는 또 별도의 연속한 어드레스에 존재한다. 따라서, 예를 들면, 제 2 채널의 DMA 전송에서는 메모리(2110) 중의 전송할 데이터 전부가 연속한 어드레스에 존재하는 것은 아니므로 복수회에 나눠 전송원 어드레스 등을 반복 설정하는 것이지만, 본 실시예의 설명에서는 1블록 정리하여 전송하도록 개략적으로 표현하고 있다.
따라서, 메모리(2110) 내의 1블록분의 데이터는 호스트 인터페이스부(2190)및 버스 제어부(2120)의 제어에 의해 제 3 채널의 DMA 전송으로서 호스트 인터페이스부(2190)에 전송된다(단계 S3120, S3130). 이 데이터 전송의 제어에 대해서는 나중에 자세히 설명하기로 한다.
DMA 컨트롤러(2122)는 제 3 채널의 DMA 전송의 종료를 CPU(2160)에 인터럽트를 걸어 통지한다.
이상, 광디스크 제어부(2100)의 동작의 개요에 대하여 1블록분의 데이터에 착안하여 설명하였는데, 다음에는 복수 블록에 걸치는 데이터를 처리하는 경우에 대하여 설명하기로 한다.
도 10은 광디스크 제어부(2100)가 복수 블록의 데이터를 처리하는 경우의 각부의 동작 타이밍을 도시한 도면이다.
또한, 도 11은 메모리(2110) 내부로의 액세스의 이미지를 도시한 개념도이다.
도 10에서의 제 1블록으로부터 제 4블록으로 도시한 것은, 각각 메모리(2110)에 저장되는 1블록의 데이터이다.
도 10에 도시된 바와 같이, 어느쪽 블록의 데이터에 대해서도 디스크 인터페이스부(2130)의 처리가 완료되면 오류정정부(2101)가 처리를 시작하고, 오류정정부(2101)의 처리가 완료되면 호스트 인터페이스부(2190)가 처리를 시작하는 것이지만, 어떤 시각에서는 디스크 인터페이스부(2130)와 오류정정부(2101)와 호스트 인터페이스부(2190)는 각각 별개의 블록 데이터를 처리 대상으로 하여 병렬 동작을 행한다.
예를 들면, 디스크 인터페이스부(2130)가 제 3 블록의 데이터를 메모리(2110)에 저장하고 있는 동안에 오류정정부(2101)는 메모리(2110)에 액세스하여 제 2 블록의 데이터 오류정정을 하고 있고, 호스트 인터페이스부(2190)는 메모리(2110)로부터 제 1 블록의 데이터를 페치하고 있다.
이 상태에서의 메모리(2110)로의 액세스는 도 11에 도시된 바와 같이 된다.
즉, 디스크 인터페이스부(2130)와 오류정정부(2101)와 호스트 인터페이스부(2190)는 어떤 타이밍에서는 각각 메모리(2110) 중의 별도의 영역으로 액세스하고 있다.
또, 도 10은 대략의 시간에 대하여 각 처리가 병렬로 처리하는 형태를 도시한 것인데, 실제로는 메모리(2110)로의 액세스 경로는 1개뿐이므로 버스 제어부(2120)는 디스크 인터페이스부(2130)와 오류정정부(2101)와 호스트 인터페이스부(2190)와 메모리로의 액세스를 세밀한 타이밍으로 전환하고 있다.
만일 디스크 인터페이스부(2130)가 1블록분의 데이터를 메모리(2110)에 저장하는 데 요하는 시간에 비해 호스트 인터페이스부(2190)가 1블록분의 데이터를 메모리(2110)로부터 페치하는 데 요하는 시간이 길면, 디스크 인터페이스부(2130)로부터 데이터가 메모리(2110)에 일정한 간격으로 계속적으로 저장되는 경우에 메모리(2110)에 디스크 인터페이스부(2130)로부터의 데이터가 쌓이고, 드디어는 데이터가 넘치는 사태가 생긴다.
이것을 피하기 위해 외부에서 디스크 인터페이스부(2130)에 1블록분의 데이터가 도착하는 시간에 대하여, 당해 1블록의 데이터를 처리하기 위해 필요한 디스크 인터페이스부(2130)와 오류정정부(2101)와 호스트 인터페이스부(2190)의 메모리 액세스의 합계시간이 짧아지도록 메모리(2110)의 제어 클록 등이 설정된다.
여기에서, CPU(2160)가 DMA 컨트롤러에게 설정하는 메모리(2110) 중의 어드레스에 대하여 설명하기로 한다.
CPU(2160)는 데이터 RAM(2180) 내에 메모리(2110)에 관한 상황을 관리하기 위한 메모리 관리정보를 작성하고 있다.
도 12는 메모리 관리정보의 이미지를 도시한 도면이다.
도 12에 도시된 바와 같이, 메모리 관리정보는 메모리(2110) 내의 영역을 블록 단위로 분할하여 관리하는 것이며, 각각의 블록에 대하여 입력 가능한지, 오류정정 가능한지, 출력 가능한지 3가지의 상태로 관리하는 것이다. 초기 상태에서는 모든 블록에 대하여 입력 가능하게 하고 있다.
여기에서, 입력 가능이란 디스크 인터페이스부(2130)로부터의 데이터 저장이 가능한 상태를 나타내며, 오류정정 가능이란 디스크 인터페이스부(2130)로부터의 데이터 저장이 완료된 단계를 말하며, CPU(2160)는 상술의 단계 S3040에서 전송 종료라고 판단했을 때에 입력 가능으로부터 오류정정 가능으로 상태를 바꾼다. 또한, 출력 가능이란 오류정정이 완료된 단계이고, CPU(2160)는 상술한 단계 S3100에서 오류정정이 완료되었다고 판단했을 때 오류정정 가능으로부터 출력 가능으로 상태를 바꾼다. 또, CPU(2160)는 상술한 단계 S3130에서 전송 종료라고 판단했을 때에 출력 가능으로부터 입력 가능으로 상태를 바꾼다.
따라서, CPU(2160)는 메모리 관리정보를 참조하여 소정의 연산에 의해 블록번호로부터 메모리 어드레스를 산출함으로써 입력 가능한 1개의 블록 어드레스를 DMA 컨트롤러의 제 1 채널에 전송장소로서 설정하고, 오류정정 가능한 블록의 어드레스를 DMA 컨트롤러의 제 2 채널에 전송원으로서 설정하고, 출력 가능한 블록의 어드레스를 DMA 컨트롤러의 제 3 채널에 전송원으로서 설정한다.
이하, 상술한 디스크 인터페이스부(2130), 오류정정부(2101), 호스트 인터페이스부(2190) 각각과 메모리(21l0) 사이의 데이터 전송에 대하여 상세히 설명하기로 한다.
도 13은 버스 제어부(2120)의 기능 블록도이다.
도 13 중에는 버스 제어부(2120) 외에 CPU(2160), 디스크 인터페이스부(2130), 신드롬 계산회로(2140), 호스트 인터페이스부(2190)를 도시한다.
버스 제어부(2120)는 상술한 DMA 컨트롤러(2122) 외에 버스 조정부(2121)를 갖고, 또한 DMA 컨트롤러(2122)는 전송 제어정보 기억부(2123)와 리퀘스트 접수부(2124)를 포함한다.
여기서, 버스 조정부(2121)는 CPU(2160) 또는 DMA 컨트롤러(2122)로부터의 버스 사용 요구를 받아 버스 사용권을 부여하는 것이다. 여기에서 CPU(2160)로부터의 버스 사용 요구에는 오류데이터 정정부(2168)에 의한 데이터 정정을 위한 메모리 액세스 요구 외에 신드롬 계산회로(2140)의 계산 결과의 판독, 체인 계산회로(2150)로의 데이터 전송, 체인 계산회로(215O)로부터의 계산 결과의 판독을 위한 것이 있다. 또, 신드롬 계산회로(2140)의 데이터 입력을 위한 어드레스 및 계산 결과를 출력하기 위한 어드레스, 체인 계산회로(2150)의 데이터 입력을 위한 어드레스 및 계산 결과를 출력하기 위한 어드레스, 디스크 인터페이스부(2130)의 어드레스, 호스트 인터페이스부(2190)의 어드레스에 관한 정보는 명령 ROM(2170)에 미리 저장되어 있고 CPU(2160)는 이것을 참조할 수 있다.
전송제어 정보기억부(2123)는 CPU(2160)에 의해 설정되는 DMA 전송을 위한 전송원 및 전송장소 어드레스와 전송 데이터 크기를 기억한다.
리퀘스트 접수부(2124)는 디스크 인터페이스부(2130), 신드롬 계산회로(2140), 호스트 인터페이스부(2190)로부터의 전송 개시 요구를 접수한다.
여기에서, 도 l4부터 도 17을 이용하여 데이터 전송에 관한 제어 동작에 대하여 설명하기로 한다.
도 14는 디스크 인터페이스부(2130)의 동작의 일부를 도시한 흐름도이다.
디스크 인터페이스부(2130)는 전치 프로세서(1040)로부터 수취한 데이터를 복조하여 소정의 형식으로 한 후, FIFO에 데이터를 축적하는 것이지만, FIFO에 8바이트 이상 데이터가 쌓인 경우에는(단계 S4010), DMA 컨트롤러의 제 1 채널에 리퀘스트를 낸다(단계 S4020). 또, 이 리퀘스트는 리퀘스트 접수부(2124)가 접수한다.
디스크 인터페이스부(2130)에는 소정의 전송 속도로 계속하여 데이터가 입력되기 때문에 디스크 인터페이스부(2130)는 거의 일정한 시간마다 단계 S4020의 리퀘스트를 행하게 된다.
도 15는 신드롬 계산회로(2140)의 동작의 일부를 도시한 흐름도이다.
신드롬 계산회로(2140)는 DMA 컨트롤러의 제 2 채널로의 리퀘스트를 리퀘스트 접수부(2124)에 낸다(단계 S4110).
신드롬 계산회로(2140)는 전송된 데이터를 취득하고(단계 S4120), 8바이트의 데이터를 취득하지 않으면 데이터 취득을 반복하며(단계 S4130), 8바이트의 데이터를 취득한 단계에서 다시 DMA 컨트롤러의 제 2 채널에 리퀘스트를 낸다(단계 S4130, S4110).
또, 도 15에는 도시되어 있지 않지만 단계 S4120에 의해 취득한 데이터에서는, 신드롬 계산회로(2140)는 데이터의 취득 등의 동작과 병행하여 신드롬 계산을 행한다.
도 16은 호스트 인터페이스부(2190)의 동작의 일부를 도시한 흐름도이다.
호스트 인터페이스부(2190)는 ATAPI 인터페이스에 의해 호스트 컴퓨터(1070)에 접속되어 있고, 메모리(2110)로부터 도입된 데이터는 FIFO에 축적되지만, 이 FIFO에 축적된 데이터는 소정의 전송 속도로 ATAPI 인터페이스에 의해 호스트 컴퓨터(1070)로 전송된다.
따라서, 호스트 인터페이스부(2190)는 소정의 전송 속도를 유지하기 위해 FIFO에 축적된 데이터가 부족하지 않도록 제어할 필요가 있고, 도 16에 도시된 동작을 행한다.
즉, 호스트 인터페이스부(2190)는 FIFO에 8바이트 이상의 공간이 생긴 시점에서(단계 S4210), DMA 컨트롤러의 제 3 채널에 대한 리퀘스트를 리퀘스트 접수부(2124)에 낸다(단계 S4220).
도 17은 버스 제어부(2120)의 동작의 일부를 도시한 흐름도이다.
버스 제어부(2120)는 디스크 인터페이스부(2130)와 메모리(2110) 사이의 데이터 전송과, 호스트 인터페이스부(2190)와 메모리(2110) 사이의 데이터 전송과, 오류정정 처리에 대한 메모리 액세스에 대하여 각각 우선도를 붙여 조정하는 것이다. 여기에서는 디스크 인터페이스부(2130)와 메모리(21l0) 사이의 데이터 전송의 우선도가 가장 높고, 다음으로 호스트 인터페이스부(2190)와 메모리(2110) 사이의 데이터 전송의 우선도가 높은 것으로 하고 있다. 오류정정 처리에 관한 메모리 액세스는 앞의 2개보다 우선도가 낮다. 여기에서, 오류정정 처리에 관한 메모리 액세스란 메모리(2110)로부터 신드롬 계산회로(2140)로의 데이터 전송 및 CPU(2160)와 메모리(2110) 사이의 데이터 전송을 말한다.
버스 조정부(2121)는 리퀘스트 접수부(2124)에 의해 접수한 리퀘스트를 검사한다(단계 S4301). 버스 조정부(2121)는 단계 S4301에서의 검사시의 리퀘스트 상황에 대하여 단계 S4310, S4330, S4350의 판단을 한다.
디스크 인터페이스부(2130)로부터의 리퀘스트를 접수하고 있으면(단계 S4310), 버스 조정부(2121)는 DMA 컨트롤러의 제 1 채널에 버스 사용권을 부여하고, 버스 제어부(2120)는 DMA 컨트롤러(2122)에 의해 디스크 인터페이스부(2130)로부터 메모리(2110)로 8바이트의 데이터를 전송한다(단계 S4320). 이 데이터 전송은 CPU(2160)로 설정되어 전송 제어정보 기억부(2123)에 저장되어 있는 전송원, 전송장소의 정보에 기초하여 행해지는 것이며, 상술한 제 1 채널의 DMA 전송이다.
버스 조정부(2121)는 상술한 디스크 인터페이스부(2130)로부터의 리퀘스트가 없는 상황에서, 리퀘스트 접수부(2124)에 의해 호스트 인터페이스부(2190)로부터의 리퀘스트를 접수하면(단계 S4330), DMA 컨트롤러의 제 3 채널에 버스 사용권을 부여하고, 버스 제어부(2120)는 DMA 컨트롤러(2122)에 의해 메모리(2110)로부터 호스트 인터페이스부(2190)로 8바이트의 데이터를 전송한다(단계 S4340). 이 데이터 전송은 제 3 채널의 DMA 전송이다.
또한, 버스 조정부(2121)는 상술한 디스크 인터페이스부(2130) 또는 호스트 인터페이스부(2190)로부터의 리퀘스트가 이루어지지 않은 상황에서, 리퀘스트 접수부(2124)에 의해 신드롬 계산회로(2140)로부터의 리퀘스트를 접수하면(단계 S4350), DMA 컨트롤러의 제 2 채널에 버스 사용권을 부여하고, 버스 제어부(2120)는 DMA 컨트롤러(2122)에 의해 메모리(2110)로부터 신드롬 계산회로(2140)로 8바이트의 데이터를 전송한다(단계 S4360).
또한, 버스 조정부(2121)는 신드롬 계산회로(2140)로부터의 리퀘스트 외에, 오류데이터 정정부(2168)로서의 CPU(2160)로부터의 메모리 액세스 요구를 접수한 경우에도, 상기 신드롬 계산회로(2140)로부터 리퀘스트를 접수한 경우와 같이, 디스크 인터페이스부(2130) 또는 호스트 인터페이스부(2190)로부터의 리퀘스트가 이루어지지 않은 경우에만 데이터 전송을 위한 버스 사용을 인정한다. 단, 버스 조정부(2121)는 CPU(2160)의 리퀘스트보다 신드롬 계산회로(2l40)의 리퀘스트쪽을 우선적으로 취급한다. 즉, 이 오류데이터 정정부(2168)로서의 CPU(2160)에 의한 메모리 액세스는 다른 메모리 액세스의 리퀘스트가 전혀 없는 상태에서만 이루어지는 것이며, 1바이트 단위로 행하여진다. 또, 제 1 채널로부터 제 3 채널의 DMA 전송에 의한 메모리(2110)로의 액세스와 비교해서, 오류데이터 정정부(2168)에 의한 메모리(2110)로의 액세스는 상당히 저빈도로 생긴다.
버스 제어부는 단계 S4320, S4340 또는 S4360의 동작을 한 후에 다시 리퀘스트 접수부(2124)가 접수하고 있는 리퀘스트 검사로 복귀하고(단계 S4301), 도 17에 도시된 동작을 반복한다.
도 18은 메모리(2110)를 대상으로 하는 데이터 전송의 타이밍 예를 도시한 도면이다.
도 18의 예에서는 디스크 인터페이스부(2130)의 FIFO에 낮은 데이터 전송 속도로 전치 프로세서(1040)로부터 계속적으로 데이터가 입력되고 있는 것으로 하고, 디스크 인터페이스부(2130)로부터 메모리(2110)로의 8바이트의 데이터 전송이 큰 간격을 두고 행해지고 있는 형태를 도시한다.
또한 도 18은 호스트 인터페이스부(2190)가 높은 데이터 전송 속도로 호스트 컴퓨터로 데이터를 전송할 필요가 있기 때문에 디스크 인터페이스부의 전송이 행해지고 있지 않은 동안에 메모리(2110)로부터 호스트 인터페이스부(2190)로의 8바이트의 데이터 전송이 어느 정도 높은 빈도로 행해지고 있는 형태를 도시한다.
또한, 도 18은 우선도가 상기 2개보다 낮은 것인 오류정정용 데이터 전송이 상기 2개의 데이터 전송이 이루어져 있지 않은 동안에 행해지고 있는 형태를 도시한다.
이하, 제 1 채널로부터 제 3 채널의 DMA 전송을 8바이트마다 분할하여 행하고 있는 이유를 설명한다.
DMA 전송에서 공유하는 자원 중, 메모리가 가장 액세스에 시간이 걸리는 것이므로 메모리 액세스의 경합을 어떻게 조정할 것인지를 고려한다.
다이내믹 메모리인 메모리(2110)는 RAS(row address strobe)와 CAS(column address strobe)의 2개의 제어 클록으로 제어되어 있고, RAS를 일정하게 하여 CAS를 연속적으로 변화시키는 페이지 모드에 의해, 메모리 액세스를 어느 정도 정리한 단위로 하는 것이 1바이트당 액세스 속도는 향상하기 때문에 DMA 전송은 복수 바이트마다 행하는 것이다.
예를 들면, 전치 프로세서(1040)로부터 전송되는 데이터의 평균 전송속도를 v바이트/초로 하고, 상술한 바와 같이 오류정정을 c1방향, c2방향, 다시 c1방향의 3회 행한다고 하면, 제 2 채널의 3회의 DMA 전송에 덧붙여 제 1 채널의 DMA 전송과 제 3 채널의 DMA 전송의 합계 5회의 DMA 전송이 1개의 데이터에 대하여 이루어지기 때문에 1초당 5v바이트의 데이터에 대하여 메모리 액세스가 필요하게 되고, 어느 정도 정리된 단위로 메모리 액세스함으로써 1바이트당 메모리 액세스 시간이 t초가 되다면 5vt의 시간으로 모든 메모리 액세스가 완료된다. 이 경우, 5vt초가 1초보다 짧아지도록 할 필요가 있으므로 어느 정도 많은 단위로 DMA 전송을 행하는 것이다.
그러나, 버스 제어부(2120)는 소정 바이트수의 데이터의 DMA 전송마다 리퀘스트를 판단하고 있기 때문에(도 17 참조), 큰 바이트수마다 DMA 전송을 한다고 했다면 디스크 인터페이스부(2130)나 호스트 인터페이스부(2190)같은 소정의 속도에서의 데이터 전송을 요구받는 회로로부터의 전송 리퀘스트에 즉시 따를 수 없다는 문제점이 있다.
예를 들면, 디스크 인터페이스부(2130)의 FIFO에 데이터가 축적되고, 제 1 채널의 DMA 전송을 할 필요가 생긴 경우에도, 그 때 어느 하나의 채널의 DMA 전송이 행해져 있었다면 소정 단위분의 당해 DMA 전송이 종료될 때까지 제 1 채널의 DMA 전송이 대기된다.
여기에서, 제 1 채널의 DMA 전송의 우선도가 가장 높다고 하여 상술한 바와 같이 전치 프로세서(1040)로부터 전송되는 데이터의 평균 전송속도를 v바이트/초로 하고, 디스크 인터페이스부(2130)의 FIFO 용량을 m바이트로 하며, 상기 소정 단위분의 DMA 전송에서의 메모리 액세스에 요하는 시간을 T초로 하면 m/v T를 만족하도록 상기 소정의 단위는 작은 것이어야 한다.
따라서, 적절한 바이트수 단위마다 데이터 전송을 할 필요가 있고, 본 실시예에서는 메모리(2110)의 제어 클록 속도 등과 대조하여 상술한 조건을 만족하도록 8바이트를 데이터 전송의 단위로 하고 있다.
이상 설명한 바와 같이, 광디스크 제어부(2100)는 버스 제어부(2120)를 중심으로 한 메모리(2110)로의 액세스 제어기구를 구비하고 있고, 이에 따라 하나의 메모리(2110)만을 이용하여, 데이터의 입력, 당해 데이터의 오류정정, 오류정정후 데이터의 출력이라는 기능을 실현하고 있다.
오류정정부
이하, 상술한 광디스크 판독장치(2000)에서의 광디스크 제어부(2100) 내의 오류정정부(2101)에 대하여 더욱 상세히 설명하기로 한다.
상술한 바와 같이, 오류정정부(2101)는 신드롬 계산회로(2140)와, 체인 계산회로(2150)와, 유클리드 계산부(2164)와, 오류데이터 정정부(2168)로 이루어진다. 유클리드 계산부(2164)와 오류데이터 정정부(2168)는 명령 ROM(2170)에 저장된 프로그램과 CPU(2160)에 의해 실현된다.
상기 프로그램은 유클리드 계산, 오류데이터 정정 외에, 신드롬 계산회로(2140)로부터의 신드롬 계산 결과의 도입, 체인 계산회로(2150)와의 데이터 입출력을 행한다. 이하, 명령 ROM(2170)에 저장되어 있는 프로그램과 CPU(2160)와 데이터 RAM(2180)에 의해 실현되는 오류정정에 관한 기능 부분을 오류정정 제어부라 한다.
도 19는 오류정정 제어부에 관한 기능 블록도이다.
오류정정 제어부는 인터럽트 접수부(2161)와, 제어부(2162)와, 신드롬 계산결과 도입부(2163)와, 유클리드 계산부(2164)와, 체인 계산결과 도입부(2165)와, 신드롬 계산결과 저장용 큐 영역(2166)과, 체인 계산 기동부(2167)와, 오류데이터 정정부(2168)와, 데이터 입출력부(2169)를 갖는다.
인터럽트 접수부(2161)는 CPU(2160)로의 인터럽트를 접수하는 부분이고, 제어부(2162)는 명령 ROM(2170)에 저장되어 있는 프로그램의 실행을 제어하는 부분이다.
또한, 데이터 입출력부(2169)는 버스 제어부(2120)를 통해 다른 회로와 데이터를 교환하는 부분이고, CPU(2160)의 레지스터와 다른 회로 사이에서 데이터를 주고받는다.
신드롬 계산결과 저장용 큐 영역(2166)은 데이터 RAM(2180)의 일부 영역이고, 신드롬 계산의 결과를 10개분 저장할 수 있는 큐이다.
신드롬 계산결과 도입부(2163)는 신드롬 계산회로(2140)의 신드롬 계산결과를 데이터 입출력부(2169)를 통해 도입하여 신드롬 계산결과 저장용 큐 영역(2166)에 저장하는 기능을 갖는 부분이다.
유클리드 계산부(2164)는 신드롬 계산결과 저장용 큐 영역(2166)으로부터 1개분의 신드롬 계산결과의 데이터를 페치하여, 이 데이터에 기초하여 필요에 따라 체인 계산 기동부(2167)에 체인 계산회로(2150)의 기동을 지시한다. 체인 계산회로(2150)는 데이터를 부여하면 계산을 시작하는 것이며, 여기에서 체인 계산회로의 기동이란 체인 계산회로에 데이터를 부여하는 것을 말한다.
체인계산 기동부(2167)는 유클리드 계산부(2164)의 지시에 기초하여 데이터 입출력부(2169)를 통해 체인 계산회로(2150)에 유클리드 계산결과인 데이터를 전송하여 체인 계산회로(2150)를 기동하는 기능을 갖는 부분이다.
체인 계산결과 도입부(2165)는 체인 계산회로(2150)의 계산 결과를 데이터 입출력부를 통해 도입하고, 오류데이터 정정부(2168)에 넘겨 주는 기능을 갖는 부분이다.
또한, 오류데이터 정정부(2168)는 데이터 입출력부(2169)를 통해 메모리(2110)에 액세스하고, 메모리(2110) 내의 데이터를 갱신하는 부분이다.
이하, 도 20부터 도 22를 이용하여 상술한 기능 구성을 갖는 오류정정 제어부의 동작을 설명하기로 한다.
도 20은 오류정정 제어부의 통상적인 동작을 도시한 흐름도이다.
오류정정 제어부의 통상 동작은 유클리드 계산부(2164)에 의해서 행하여진다.
유클리드 계산부(2164)는 신드롬 계산결과가 신드롬 계산결과 저장용 큐 영역(2166)에 저장되어 있는지를 검사하고, 저장되어 있지 않으면 동작을 진행시키지 않는다(단계 S5010). 단, CPU(2160)가 전혀 정지하고 있는 것은 아니고, 단계 S5010을 반복하고 있는 동안에도 오류정정 제어부로서 이외의 동작이나, 인터럽트 대응의 동작은 행한다.
신드롬 계산결과가 신드롬 계산결과 저장용 큐 영역(2166)에 저장되어 있는 경우에는, 유클리드 계산부(2164)는 데이터 RAM(2180) 내의 신드롬 계산결과 저장용 큐 영역(2166)으로부터 신드롬 계산결과를 판독한다(단계 S5020). 신드롬 계산결과인 신드롬값이 0이면 데이터열에 오류가 없는 것을 나타내고 있으므로(단계S5030), 다시 단계 S5010의 동작으로 복귀한다.
또한, 신드롬값이 0이외이면(단계 S5030), 데이터열에는 오류가 있는 것을 나타내므로 데이터를 정정할 필요가 있기 때문에 유클리드 계산부(2164)는 당해 신드롬값에 기초하여 유클리드 계산을 행함으로써 오류위치 다항식과 오류수치 다항식을 구한다(단계 S5040).
유클리드 계산부(2164)는 유클리드 계산을 한 후에 체인계산 기동부(2167)를 통해, 체인 계산회로(2150)에 오류위치 다항식을 부여하고(단계 S5050), 다시 단계 S5010의 동작으로 복귀한다.
도 21은 제 2 채널 전송종료 인터럽트 처리를 도시한 흐름도이다.
이 제 2 채널 전송종료 인터럽트 처리는 오류정정 제어부의 인터럽트 접수부(2161)가 제 2 채널의 DMA 전송의 종료를 나타내는 인터럽트를 접수한 경우에 실행되는 인터럽트 처리이다.
인터럽트 접수부(2161)가 인터럽트를 접수한 의미를 제어부(2162)에 통지하면, 제어부(2162)는 유클리드 계산부(2164)에 의한 도 20의 흐름도에 도시된 동작을 일시적으로 중단하고, 신드롬 계산결과 도입부(2163)를 제어하여 신드롬 계산회로(2140)로부터 계산 결과를 판독하고(단계 S5110), 판독된 계산 결과를 데이터 RAM(2180) 중의 신드롬 계산결과 저장용 큐 영역(2166)에 저장시키고(단계 S5120), 그 후 유클리드 계산부(2164)에 도 20에 도시된 동작을 속행한다.
도 22는 체인 계산종료 인터럽트 처리를 도시한 흐름도이다.
이 체인 계산종료 인터럽트 처리는 오류정정 제어부의 인터럽트 접수부(2161)가 체인 계산회로(2150)로부터 CPU(2160)로의 인터럽트를 접수한 경우에 실행되는 인터럽트 처리이다.
인터럽트 접수부(2161)가 인터럽트를 접수한 취지를 제어부(2162)에 통지하면, 제어부(2162)는 유클리드 계산부(2164)에 의한 도 20의 흐름도에 도시된 동작을 일시적으로 중단하고, 오류데이터 정정부(2168)에 오류데이터 정정 처리를 실행한다.
오류데이터 정정부(2168)는 우선 체인 계산결과 도입부(2165)에 체인 계산회로(2150)로부터의 체인 계산 결과인 데이터를 판독한다(단계 S5210).
오류데이터 정정부(2168)는 다음에 체인 계산 결과인 오류 위치와, 유클리드 계산으로 얻어진 오류수치 다항식으로부터 오류 수치를 구하고(단계 S5220), 데이터 입출력부(2169)를 통해 메모리(2110) 중의 상기 오류위치로 표시되는 위치의 데이터를 읽어 들이고(단계 S5230), 읽어 들인 데이터와 상기 오류수치와의 배타적 논리합을 구하고(단계 S5240), 구한 값을 데이터 입출력부(2169)를 통해 메모리(2110) 중의 상기 오류위치로 나타내는 위치에 기입한다(단계 S5250).
오류데이터 정정부(2168)에 의한 오류데이터 정정의 처리가 종료하면, 제어부(2162)는 유클리드 계산부(2l64)에 도 20에 도시된 동작을 속행한다.
도 23은 오류정정부(2101) 내의 각부의 동작 타이밍의 예를 도시하는 도면이다.
도 23에서는 오류정정부(2101)의 동작을, 신드롬 계산회로(2140)가 행하는 신드롬 계산과, CPU(2160)를 포함하는 오류정정 제어부가 하는 신드롬값 저장, 유클리드 계산, 오류데이터 정정과, 체인 계산회로(2150)가 행하는 체인 계산으로 나누어 나타낸다. 도 23에서 신드롬값 저장은 도 21에 도시된 신드롬 계산결과 도입부(2163)에 의한 동작이고, 유클리드 계산은 도 20에 도시된 유클리드 계산부(2164)에 의한 동작이며, 오류데이터 정정은 도 22에 도시된 오류데이터 정정부(2168)에 의한 동작이다.
도 23에 도시된 바와 같이, 신드롬 계산회로(2140)와, CPU(2160)와, 체인 계산회로(2150)는 동시에 병렬하여 각각의 동작을 할 수 있지만, 신드롬값 저장과, 유클리드 계산과, 오류데이터 정정은 1개의 CPU(2160)에 의해 실행되기 때문에 동시에 병렬하여 행해지지는 않는다.
이하, 도 23에 도시된 예에 기초하여 도 19부터 도 22를 이용하여, 오류정정부(2101)의 동작을 설명하기로 한다.
도 23에서는 부호화된 데이터열, 예를 들면 상술한 C1방향의 패리티 데이터가 부가된 1행의 정보 데이터를 처리하는 단위마다 모양을 바꾸고 표시하고 있다. 신드롬 계산의 처리단위 6001∼6008은 모두 대체로 같은 시간이다.
이하, 신드롬 계산의 처리단위 6001, 처리단위 6002, ···, 처리단위 6008에서 취급되는 데이터열을 각각 데이터열 No.1, 데이터열 No.2,···, 데이터열 No. 8이라 한다.
신드롬 계산회로(2140)는 데이터열 No.1을 취득하여 신드롬 계산을 한 후, 데이터열 No.2를 취득하여 신드롬 계산을 하고, 그 후 데이터열 No.3을 취득하여 신드롬 계산을 하고, 마찬가지로 순차 데이터열 No.4 이후에 대해서도 처리를 행한다. 여기에서는, 신드롬 계산회로(2140)가 데이터열 No.1과 No.2와 No.5에 대하여 신드롬값이 0이 아니라는 결과를 산출한 것으로 한다.
우선 데이터열 No.1에 착안하여 설명하면, 데이터열 No.1은 상술한 제 2 채널의 DMA 전송(도 9, 도 15, 도 17 참조)에 의해 메모리(2110)로부터 신드롬 계산회로(2140)로 전송된다. 전송된 데이터의 취득과 병행하여 신드롬 계산회로(2140)는 신드롬 계산을 행하고, 신드롬 계산의 완료는 제 2 채널의 DMA 전송의 종료와 거의 동시가 되기 때문에 CPU(2160)를 포함하는 오류정정 제어부는 DMA 컨트롤러(2122)에 의한 제 2 채널의 DMA 전송의 종료를 나타내는 인터럽트에 의해 신드롬 계산의 완료를 알 수 있다.
인터럽트 접수부(2161)가 제 2 채널의 DMA 전송의 종료를 나타내는 인터럽트를 접수하면 제어부(2162)의 제어에 의해 신드롬 계산결과 도입부(2163)는 신드롬 계산회로에서 데이터열 No.1에 대한 신드롬값을 판독하고(단계 S5110), 데이터 RAM(2180) 중의 신드롬 계산결과 저장용 큐 영역(2166)에 저장한다(단계 S5120). 또, 신드롬 계산회로(2140)는 신드롬 계산의 최종 단계에서 계산결과를 내부 버퍼에 저장하는 것이며, 이 내부 버퍼로부터 신드롬 계산결과 도입부(2163)는 신드롬값을 판독하지만, 신드롬 계산회로(2140)는 상기 판독이 이루어지기 전에 다름의 데이터열에 대한 신드롬값이 당해 내부 버퍼에 겹쳐쓰여지지는 않는다.
유클리드 계산부(2164)는 신드롬값이 신드롬 계산결과 저장용 큐 영역(2166)에 저장되기 전은 동작을 진행하고 있지 않지만(단계 S5010), 데이터열 No.1에 대한 신드롬값이 신드롬 계산결과 저장용 큐 영역(2166)에 저장된 시점으로부터 동작을 진행하여 신드롬값이 0인지의 여부를 판단하고(단계 S5020, S5030), 0이 아니기 때문에 유클리드 계산을 행한다(단계 S5040).
유클리드 계산부(2164)가 유클리드 계산을 행하고 있는 동안에 신드롬 계산회로(2140)가 데이터열 No.2의 신드롬 계산을 완료하고, 인터럽트 접수부(2161)를 통하여 제 2 채널의 DMA 전송종료 인터럽트를 받은 제어부(2162)는 유클리드 계산부(2164)에 의한 유클리드 계산을 중단하고, 신드롬 계산결과 도입부(2163)에 의해 신드롬 계산회로(2140)로부터 계산결과를 판독하고(단계 S5110), 신드롬 계산결과 저장용 큐 영역(2166)에 데이터열 No.2에 대한 신드롬값을 저장하고(단계 S5120), 그 후 유클리드 계산부(2164)에 의한 유클리드 계산의 처리를 속행시킨다.
그 후 데이터열 No.1에 대한 유클리드 계산을 마친 유클리드 계산부(2164)는 체인계산 기동부를 통하여 체인 계산회로(2150)를 기동한다(단계 S5050). 이로써 체인 계산회로(2150)는 데이터열 No.1에 대한 체인 계산을 시작한다.
유클리드 계산부(2164)는 체인 계산회로(2150)를 기동하면 신드롬 계산결과 저장용 큐 영역(2166)에 이미 데이터열 No.2에 대한 신드롬값이 저장되어 있으므로(단계 S5010), 이것을 판독하여 0인지의 여부를 판단한다(단계 S5020, S5030). 데이터열 No.2에 대한 신드롬값은 0이 아니기 때문에 유클리드 계산부(2164)는 유클리드 계산을 행한다(단계 S5040).
이렇게 해서 유클리드 계산부(2164)가 유클리드 계산을 하고 있는 동안에 신드롬 계산회로(2140)가 데이터열 N.3의 신드롬 계산을 완료하고, 제어부(2162)는 제 2 채널의 DMA 전송종료 인터럽트를 받은 시점에서 유클리드 계산을 중단하고, 신드롬 계산결과 도입부(2163)에 의해 신드롬 계산회로(2140)로부터 계산 결과를 판독하고(단계 S5110), 신드롬 계산결과 저장용 큐 영역(2166)에 데이터열 N0.3에 대한 신드롬값을 저장하고(단계 S5120), 그 후 유클리드 계산부(2164)에 유클리드계산의 처리를 속행시킨다.
그 후, 유클리드 계산부(2164)가 유클리드 계산을 속행하고 있는 동안에 체인 계산회로(2150)가 데이터열 No.1에 대한 체인 계산을 완료하고, 제어부(2162)는 인터럽트 접수부(2161)를 통해 체인 계산회로(2150)로부터의 인터럽트를 접수하여 유클리드 계산을 중단하고, 오류데이터 정정부(2l68)에 오류데이터 정정처리를 실행시킨다.
오류데이터 정정부(2168)는, 체인 계산결과 도입부(2165)를 통해 데이터열 No.1에 대한 체인 계산 결과를 체인 계산회로(2150)로부터 판독하고(단계 S5210),오류수치를 구하며(단계 S5220), 메모리(2110)에 액세스하여 데이터열 No.1에 관련된 오류가 있는 데이터를 정정한다(단계 S5230, S5240, S5250).
오류데이터 정정부(2168)에 의한 오류데이터 정정처리 종료 후에 제어부(2162)는 유클리드 계산부(2164)에 중단되어 있던 데이터열 No.2의 유클리드 계산을 속행시킨다.
그 후, 또한 신드롬 계산회로(2140)가 데이터열 No.4의 신드롬 계산을 완료하면 오류정정 제어부는 상술한 바와 같이 유클리드 계산을 중단하고, 데이터열 No.4 신드롬값이 신드롬 계산결과 저장용 큐 영역(2166)에 판독하고 유클리드 계산을 속행한다.
유클리드 계산이 종료되었을 때, 유클리드 계산부(2164)는 체인 계산회로(2150)를 기동한다(단계 S5050). 이에 따라 체인 계산회로(2150)는 데이터열 No.2에 대한 체인 계산을 시작한다.
유클리드 계산부(2164)는 체인 계산회로(2150)를 기동한 후, 신드롬 계산결과 저장용 큐 영역(2166)에 이미 데이터열 No.3에 대한 신드롬값과 데이터열 No.4에 대한 신드롬값이 저장되어 있기 때문에(단계 S5010), 먼저 저장된 데이터열 No.3에 대한 신드롬값을 판독하여 0인지의 여부를 판단한다(단계 S5020, S5030).
데이터열 No.3에 대한 신드롬값은 0이기 때문에 유클리드 계산부(2164)는 유클리드 계산 등은 하지 않고 신드롬 계산결과 저장용 큐 영역(2166)으로부터 데이터열 No.4에 대한 신드롬값을 판독하여 0인지의 여부를 판단한다(단계 S5010, S5020, S5030).
데이터열 No.4에 대한 신드롬값도 0이기 때문에 유클리드 계산부(2164)는 유클리드 계산 등은 하지 않고, 신드롬 계산결과 저장용 큐 영역(2166)에 신드롬값이 저장될 때까지 대기한다(단계 S5010).
이 이후도 오류정정부(2101)는 마찬가지로 동작을 진행시킨다.
상술한 바와 같이, 오류정정부(2101)는 신드롬 계산과 신드롬 계산 이외의 처리를 병행 동작하는 구성으로 하고, 1개의 데이터열에 대하여 신드롬 계산이 종료된 시점에서 신드롬 계산 결과를 큐에 저장하여 신드롬 계산 이외의 처리로 인도하도록 제어하고 있다.
따라서, 신드롬값이 O인지 여부의 판단에 요하는 시간이 유클리드 계산 및 오류 데이터 정정에 걸리는 시간에 비해 매우 작은 것과, 신드롬값이 O이외인 데이터열의 데이터열 전체에 대한 비율은 상당히 적다는 일반적 사실에 비추어 보면, 상술한 바와 같은 오류정정부(2101)는 다수의 데이터열을 처리 대상으로 한 경우에 데이터열마다 요하는 신드롬 계산에 필요한 시간의 합계와 거의 같은 시간으로 처리를 완료하는 것이 분명하다.
이상, 본 발명에 의한 데이터 입출력 장치에 대하여 실시예의 하나인 광디스크 판독장치에 대하여 설명하였는데, 본 발명은 이 실시예에 나타난 형태에 한정되지 않는 것은 물론이다. 즉,
(1) 실시예에서는 광디스크(1010)가 DVD-ROM이라고 하였으나, CD-ROM 등의 다른 매체라도 된다. 또, 광디스크 제어부(2100)로의 데이터를 입력하는 회로는 전치 프로세서(1040)이고, 광디스크 제어부(2100)로부터 데이터를 수취하는 장치는 호스트 컴퓨터(1070)로 하였으나(도 7참조), 광디스크 제어부(2100)로 데이터를 입력하는 회로는 어떠한 회로 또는 장치라도 되고, 광디스크 제어부(2100)로부터 데이터를 수취하는 장치도 어떠한 회로 또는 장치라도 된다. 이 경우, 입력되는 데이터가 변조된 것이 아니면 디스크 인터페이스부(2130)는 복조를 행할 필요는 없다.
즉, 본 발명에 의한 데이터 입출력 장치에 대한 데이터 입출력의 인터페이스는 SCSI 기타 어떠한 것이라도 되고, 모든 경우에 있어서 데이터 입출력 장치는 입력된 데이터에 오류정정 등의 연산을 실시하여 출력하는 기능을 제공한다. 예를 들면, 데이터 입출력 장치는 호스트 컴퓨터로부터 전송된 정보 데이터를 수취하고, 당해 데이터에 오류정정의 패리티 데이터를 부가하여, 디스크 인터페이스 경유로 기억 미디어에 정보 데이터와 패리티 데이터를 기입하는 것이라도 된다.
(2) 실시예에서는, CPU(2160)에 의해 실행되는 프로그램은 명령 ROM(2170)에 저장되어 있는 것으로 하였지만, 이것에 한정되는 것은 아니고, 프로그램은 외부에서 공급되어 데이터 RAM(2180)에 저장되는 것이어도 된다.
(3) 실시예에서는, 오류정정은 C1방향, C2방향, C1방향으로 행하는 것으로 하였으나, 이것에 한정되는 것은 아니고, 예를 들면 C1방향 1회만이라도 된다. 또한, 실시예에서는, 부호화가 곱셈부호로서 이루어져 있는 것으로 하고 있지만, 이것에 한정되는 것은 아니고, 별도의 부호화 방법에 의해 부호화된 정보 데이터이어도 되고, 이 경우에는 당해 부호화 방법에 대응한 오류정정을 행하는 것으로 하면 된다.
(4) 실시예에서는 도 17에 도시된 바와 같이, 디스크 인터페이스부(2130)와 메모리(2110) 사이의 데이터 전송의 우선도가 가장 높고, 호스트 인터페이스부(2190)와 메모리(2110) 사이의 데이터 전송의 우선도가 다음으로 높은 것으로 하고 있었지만, 이것에 한정되는 것은 아니고, 호스트 인터페이스부(2190)와 메모리(2110) 사이의 데이터 전송의 우선도가 가장 높고, 디스크 인터페이스부(2130)와 메모리(2110) 사이의 데이터 전송의 우선도가 다음으로 높은 것으로 해도 된다. 이들은 데이터 입출력 장치에 입력하는 데이터의 전송 속도의 조건이나 연산 처리후에 데이터 입출력 장치로부터 출력되는 데이터의 전송 속도의 조건 등의 데이터 입출력 장치에 대한 인터페이스가 어떻게 정해져 있는지 등의 사정에 따라 정하면 된다.
(5) 실시예에서는 신드롬 계산회로(2140)와, 체인 계산회로(2150)와, 프로그램을 실행하는 CPU(2160)에 의해 오류정정을 하는 것으로 하였지만, 오류정정을 하기 위한 회로구성은 이것으로 한정되는 것은 아니다.
예를 들면, 체인 계산회로가 행하고 있는 체인계산을 프로그램에 의해 CPU(2160)로 실행시키는 것으로 해도 된다. 이 경우에도 다수의 데이터열에 대하여 오류정정 처리를 했을 때에는 데이터열마다 요하는 신드롬 계산에 필요한 시간의 합계에 어느 정도 가까운 시간으로 처리를 완료한다.
또한, 유클리드 계산을 하드웨어 회로에 의해 행하도록 해도 된다.
즉, 신드롬 계산을 하는 회로와 신드롬 계산 이후에 필요한 처리를 하는 회로를 병렬동작 가능하게 하여, 신드롬 계산 결과를 큐에 저장하도록 하고, 신드롬 계산 이후에 필요한 처리를 하는 회로는 당해 큐에 저장된 신드롬 계산 결과에 기초하여 처리할 수 있는 구성으로 하면, 오류정정의 고속화라는 본 발명의 제 2 목적을 달성할 수 있다.
또한, 오류정정의 고속화에는 이어지지 않지만, 본 발명의 제 1 목적을 달성하기 위한 구성으로서는, 신드롬 계산과 체인 계산의 양쪽을 프로그램에 의해 CPU(2160)에 실행시켜도 된다.
도 24는 신드롬 계산과 체인 계산의 양쪽을 프로그램에 의해 CPU(2160)에 실행시키는 경우의 광디스크 제어부(7100)의 구성도이다. 광디스크 제어부(7100)는 광디스크 제어부(2100)와 거의 동일하며, 동일한 구성요소에는 도 24에서 동일 부호를 붙이고 있다.
이 경우에는, 실시예에서 CPU(2160)가 DMA 컨트롤러(2122)의 제 2 채널에 정보를 설정함으로써 메모리(2110)로부터 신드롬 계산회로(2140)에 데이터를 전송시키고 있는 대신에, CPU(2160)는 DMA 컨트롤러(7122)의 제 2 채널에 메모리(2110)로부터 데이터 RAM(2180)에 1블록분의 데이터를 전송하도록 정보를 설정하여, 데이터 RAM(2180)에 데이터를 전송시키고, 이 데이터를 대상으로 하여 신드롬 계산 등을 하는 프로그램이 명령 ROM(2170)에 저장되어 있을 필요가 있다. 즉, 도 9의 흐름도에서의 단계 S3050의 동작을 메모리로부터 데이터 RAM으로의 1블록분의 데이터 전송 지시 대신에, 단계 S3090과 단계 S3100을 삭제한 동작을 CPU(2160)가 행한다. 또, CPU(2160)는 C1방향, C2방향, 다시 C1방향의 패리티에 기초하는 오류정정을 모두 완료한 단계에서, 다음 단계 S3110의 동작을 행한다.
여기에서, DMA 컨트롤러(7122)는 DMA 컨트롤러(2122)와 동등한 동작에 덧붙여, 제 2 채널의 DMA 전송에서는 도 15에 도시된 단계 S4110의 동작을 8바이트의 데이터의 전송마다 행하는 것이다.
또, 광디스크 제어부(7100)를 도 24에 도시된 것으로 한 경우, 복수의 오류정정 방식 중 어느 것에 의해 부호화된 데이터를, 명령 ROM(2170)에 복수의 오류정정 방식에 대응하는 프로그램을 저장하고, 그 어느 하나를 선택하여 실행함으로써 오류정정할 수 있기 때문에 하드웨어의 변경을 수반하지 않고 복수의 오류정정 방식에 대응할 수 있다.
또한, 오류정정을 위한 연산 내용에 있어서는 실시예에서 나타낸 것에 한정되지 않는다. 즉, 실시예에서는 오류정정을 위한 오류위치 다항식 및 오류수치 다항식을 구하기 위해서는 유클리드법에 의한 것으로 하였지만, 다른 방법에 의해서 오류위치 다항식 및 오류수치 다항식을 구해도 되며, 오류위치 다항식의 근을 구하는 데 체인 검색이라는 방법을 이용하는 것으로 하였지만, 다른 방법으로 오류위치 다항식의 근을 구해도 된다.
(6) 실시예에서는, 메모리(2110)는 15블록분의 데이터를 저장할 수 있는 용량으로 하였지만, 이것에 한정되는 것은 아니고, 데이터를 입력하여 오류정정 등의 연산을 실시하여 그 후에 데이터를 출력하는 것을 전제로 하여, 상기 연산을 실시하는 데 적당한 정리된 크기를 n바이트로 하면 n 바이트의 2배 이상의 메모리가 있으면 된다. 또한, 메모리(2110)는 광디스크 제어부(2100)의 외부에 존재하는 것이라도 된다.
또한, 실시예에서는 1 블록분의 데이터는 약 38KByte로 하였지만, 이 수치에 한정되는 것은 아니다.
(7) 실시예에서는, CPU(2160)는 도 12에 도시된 메모리 관리정보를 이용하여 소정의 연산에 의해 DMA 컨트롤러에 설정하기 위한 어드레스를 취득하는 것으로 하고 있으나, DMA 컨트롤러에 설정하기 위한 어드레스의 기억방법이나 메모리(2ll0)의 내용의 관리방법은 이것에 한정되는 것은 아니고, 예를 들면 데이터를 입력해야 할 메모리 내의 어드레스와, 오류정정이 가능한 메모리 내의 어드레스와, 출력 가능한 데이터의 메모리 내의 어드레스를 각각 기억하여, 이것을 참조·갱신하는 방식을 이용해도 된다.
(8) 실시예에서는, 메모리와 다른 회로 사이의 데이터의 DMA 전송에서는 8바이트마다 리퀘스트를 체크하면서 행하는 것으로 하였지만(도 14∼도 17 참조), 이 8바이트라는 크기에 한정되는 것은 아니다. 디스크 인터페이스부(2130)에 입력되는 데이터의 전송 속도와, 호스트 인터페이스부(2l90)로부터 출력되는 데이터의 전송 속도를 각각 어느 값으로 유지할 필요가 있는 경우에, 상기 DMA 전송을 하는 단위인 데이터 크기를 크게 하면, 크게 함에 따라 디스크 인터페이스부(2130)와 호스트 인터페이스부(2190)는 큰 크기의 FIFO를 필요로 하게 된다.
또한, 1데이터열이 8바이트로 나누어지지 않는 경우는, 나머지의 바이트수를 마지막에 전송하면 된다.
(9) 실시예에서는, 신드롬 계산결과 저장용 큐 영역(2166)은 신드롬 계산의 결과를 10개분 저장할 수 있는 큐로 하였지만, 이 l0개라는 수치에 한정되는 것은 아니고, 신드롬 계산에 필요한 시간, 오류정정을 위한 처리중 신드롬 계산 이외에 걸리는 시간, 오류 발생률 등에 기초하여 큐를 통상은 넘치지 않는 크기로 하면 된다.
(10) 실시예에서는 신드롬 계산회로(2140)는 내부 버퍼를 갖고, 계산 결과가 겹쳐쓰여지지 않도록 처리 시간 등이 조정되어 있는 것으로 하였지만, 예를 들면 당해 내부 버퍼를 FIFO로 해도 된다.
(11) 실시예에서의 오류정정 제어부의 처리 순서(도 20∼도 22의 흐름도의 순서)등을 기계어 프로그램에 의해 실현하고, 이것을 기록 매체에 기록하여 유통·판매의 대상으로 해도 된다. 이러한 기록 매체에는, IC 카드나 광디스크, 플로피디스크, ROM 등이 있지만, 이들에 기록된 기계어 프로그램은 범용의 하드웨어에 인스톨됨으로써 이용에 제공된다. 여기서 말하는 범용 하드웨어는 일반의 퍼스널 컴퓨터나 프로그램 실행능력을 갖는 가전 기기 등이고, 인스톨한 상기 기계어 프로그램을 순차 실행하여, 상기 오류정정 제어부의 기능을 실현한다.
상술한 바와 같이 구성한 본 발명의 데이터 입출력 장치에 의하면, 제 1의 전송 속도로 입력되는 데이터를 저장하기 위한 메모리와 제 2의 전송 속도로 출력되는 데이터를 저장하기 위한 메모리를 별도로 구비할 필요가 없을 뿐 아니라, 입력 데이터에 오류정정 처리를 실시하여 데이터를 출력하므로, 불필요한 메모리나 대기 시간을 줄일 수 있어 장치의 소형화 및 고성능화를 달성할 수 있게 된다.
상술한 본 발명의 바람직한 실시예들은 예시의 목적을 위해 개시된 것이며, 당업자라면 첨부된 특허청구의 범위에 개시된 본 발명의 사상과 범위를 통해 각종 수정, 변경, 대체 및 부가가 가능할 것이다.

Claims (14)

  1. 외부의 제 1 장치로부터 수취한 데이터에 대하여 연산을 하여 외부의 제 2 장치로 출력하는 데이터 입출력 장치에 있어서,
    제 1 장치로부터 계속적으로 데이터를 수취하는 입력수단과,
    주어진 데이터에 대하여 연산을 행하는 연산수단과,
    데이터를 제 2 장치로 출력하는 출력수단과,
    데이터를 저장하기 위한 1개의 메모리와,
    상기 입력수단, 상기 연산수단 및 상기 출력수단과 상기 메모리를 접속하는 버스인 1개의 메모리 버스와,
    상기 입력수단을 전송원으로 하고, 상기 메모리를 전송장소로 한 제 1 DMA 전송을 행하는 제 1 데이터 전송수단과,
    상기 제 1 데이터 전송수단에 의해 제 1 바이트수만큼의 제 1 DMA 전송이 종료한 경우, 제 1 DMA 전송에 의해 데이터가 저장된 상기 메모리 중의 영역을 전송원으로 하고, 상기 연산수단을 전송장소로 하여 상기 연산수단에 연산 대상의 데이터를 부여하기 위한 제 2 DMA 전송을 행하는 제 2 데이터 전송수단과,
    상기 연산수단에 의해 제 1 바이트수만큼의 데이터에 대한 연산이 종료된 경우, 당해 데이터가 저장되어 있는 상기 메모리 중의 영역을 전송원으로 하고, 상기 출력수단을 전송장소로 한 제 3 DMA 전송을 행하는 제 3 데이터 전송수단과,
    상기 제 1 데이터 전송수단과 상기 제 2 데이터 전송수단 및 상기 제 3 데이터 전송수단이 배타적으로 데이터 전송을 실행하도록 제어하는 데이터 전송 제어수단을 포함하며,
    상기 데이터 입출력 장치에서의 상기 입력수단과 상기 연산수단 및 상기 출력수단은 병렬로 각각의 동작을 실행하는 것을 특징으로 하는 데이터 입출력 장치.
  2. 제 1항에 있어서,
    상기 데이터 전송 제어수단은,
    제 2 바이트수만큼의 데이터에 대한 제 1 DMA 전송, 제 2 DMA 전송 또는 제 3 DMA 전송의 필요성이 생긴 경우에, 상기 제 1 데이터 전송수단, 상기 제 2 데이터 전송수단 또는 상기 제 3 데이터 전송수단으로서 당해 필요성이 생긴 데이터 전송을 행하는 것으로, 제 2 바이트수만큼의 데이터를 연속하여 전송시키고,
    제 1 DMA 전송, 제 2 DMA 전송 또는 제 3 DMA 전송 중의 복수에 대해 데이터 전송의 필요성이 경합했을 때에는, 상기 제 1 데이터 전송수단, 상기 제 2 데이터 전송수단 또는 상기 제 3 데이터 전송수단으로서 당해 필요성이 생긴 데이터 전송을 행하는 것 중 소정의 우선도에 기초하여 정한 것으로, 제 2 바이트수만큼의 데이터를 연속하여 전송시키는 것을 특징으로 하는 데이터 입출력 장치.
  3. 제 2항에 있어서,
    상기 메모리는 다이내믹 메모리이며,
    제 2 바이트수는 상기 메모리를 전송장소 또는 전송원으로 하여 제 2 바이트수만큼의 데이터를 연속하여 DMA 전송하는 경우에 1바이트당 메모리 액세스에 요하는 시간을 t초로 하고, 상기 입력수단이 제 1 장치로부터 수취하는 데이터의 평균 전송속도를 v바이트/초로 하고, 어떤 데이터에 대해 제 2 DMA 전송이 필요한 회수를 n으로 하면 tv(n+2)1을 만족하도록 정한 수인 것을 특징으로 하는 데이터 입출력 장치.
  4. 제 3항에 있어서,
    상기 입력수단은 제 1 장치로부터 수취한 데이터를 일시적으로 축적하기 위한 제 1 FIFO를 갖고,
    상기 출력수단은 제 2 장치에 출력하는 데이터를 일시적으로 축적하기 위한 제 2 FIFO를 가지며,
    상기 제 1 데이터 전송수단은 상기 입력수단 중의 제 1 FIFO를 제 1 DMA 전송의 전송원으로 하고,
    상기 제 3 데이터 전송수단은 상기 출력수단 중의 제 2 FIFO를 제 3 DMA 전송의 전송장소로 하며,
    제 1 DMA 전송의 필요성은 제 1 FIFO에 제 2 바이트수만큼의 데이터가 축적된 경우에 생기고,
    제 3 DMA 전송의 필요성은 상기 메모리 중에 상기 연산수단에 의한 연산이 종료한 제 2 바이트수만큼의 데이터가 존재하는 경우로서, 제 2 FIFO에 제 2 바이트수만큼의 데이터의 공간이 생겼을 때에 발생하는 것을 특징으로 하는 데이터 입출력 장치.
  5. 제 4항에 있어서,
    상기 우선도는 상기 제 1데이터 전송수단에 의한 제 1 DMA 전송이 가장 높고,
    상기 데이터 전송 제어수단은 상기 제 1 DMA 전송의 필요성이 생겼을 때 이미 상기 제 1 데이터 전송수단, 상기 제 2 데이터 전송수단 또는 상기 제 3 데이터 전송수단 중 어느 것인가에 DMA 전송을 실행시키고 있는 경우에는, 실행 중의 제 2 바이트수만큼의 DMA 전송의 종료 후에 상기 제 1 데이터 전송수단에 제 1 DMA 전송을 실행시키고, 상기 제 1 DMA 전송의 필요성이 생겼을 때 이미 상기 제 1 데이터 전송수단, 상기 제 2 데이터 전송수단 또는 상기 제 3 데이터 전송수단 중 어느 것인가에 DMA 전송을 실행시키고 있지 않은 경우에는, 즉시 상기 제 1 데이터 전송수단에 제 1 DMA 전송을 실행시키고,
    제 2 바이트수는 제 1 FIFO의 용량을 m바이트로 하고, 상기 메모리를 전송장소 또는 전송원으로 하여 제 2 바이트수만큼의 데이터를 연속하여 DMA 전송하는 경우에 메모리 액세스에 요하는 시간을 T초로 하고, 상기 입력수단이 제 1 장치로부터 수취한 데이터의 평균 전송속도를 v바이트/초로 하면, m/vT를 만족하도록 정한 수인 것을 특징으로 하는 데이터 입출력 장치.
  6. 제 5항에 있어서,
    상기 우선도는 상기 제 1 데이터 전송수단 및 상기 제 3 데이터 전송수단에 의한 DMA 전송보다 상기 제 2 데이터 전송수단에 의한 제 2 DMA 전송쪽이 낮고,
    상기 데이터 전송 제어수단은 제 1 DMA 전송의 필요성 및 제 3 DMA 전송의 필요성이 생기지 않은 경우에만 제 2 데이터 전송수단으로 제 2 DMA 전송을 실행시키는 것을 특징으로 하는 데이터 입출력 장치.
  7. 제 6항에 있어서,
    상기 입력수단이 제 1 장치로부터 수취하는 데이터에는 오류정정 부호가 포함되고,
    상기 연산은 오류정정이며,
    상기 연산수단은, 상기 오류정정을 하기 위해 상기 메모리에 액세스하여 상기 오류정정 부호에 따라 상기 메모리 중에 저장되어 있는 데이터를 참조 및 갱신하고,
    상기 데이터 전송 제어수단은 또한,
    상기 제 1 데이터 전송수단과 상기 제 2 데이터 전송수단 및 상기 제 3 데이터 전송수단이 데이터 전송을 실행하지 않는 동안에 한하여, 상기 연산수단으로 오류정정을 위한 상기 메모리로의 액세스를 허가하는 것을 특징으로 하는 데이터 입출력 장치.
  8. 제 7항에 있어서,
    상기 제 1 장치는 광디스크로부터 데이터를 판독하는 장치이며,
    상기 광디스크는 제 2 바이트수 이상의 수인 제 3 바이트수마다 곱셈부호에 의한 부호화가 된 데이터를 기록하고 있고,
    상기 메모리는 제 3 바이트수의 2배 이상의 크기인 것을 특징으로 하는 데이터 입출력 장치.
  9. 제 8항에 있어서,
    상기 연산수단은,
    제 4 바이트수의 데이터가 주어지면 당해 데이터에 대응하는 신드롬을 산출하는 신드롬 계산처리를 연속적으로 복수회 행하는 신드롬 계산부와,
    복수의 신드롬을 저장할 수 있는 큐(queue)인 신드롬 저장 큐와,
    상기 신드롬 계산부가 산출한 신드롬을 상기 신드롬 저장 큐에 저장하는 신드롬 저장부와,
    상기 신드롬 저장 큐에 신드롬이 1개 이상 저장되어 있는 경우에 당해 신드롬 저장 큐로부터 1개의 신드롬을 페치하고, 페치된 당해 신드롬이 O이 아닐 때에만 당해 신드롬에 기초하여 당해 신드롬에 대응하는 데이터의 오류를 정정하는 정정부를 포함하며,
    상기 연산수단에서의 상기 신드롬 계산부와 상기 정정부는 병행하여 각각의 동작을 실행하는 것을 특징으로 하는 데이터 입출력 장치.
  10. 제 9항에 있어서,
    상기 정정부는,
    상기 신드롬에 기초하여 오류위치 다항식 및 오류수치 다항식을 구하는 다항식 산출부와,
    상기 다항식 산출부가 구한 오류위치 다항식의 근인 오류위치를 구하는 오류위치 산출부와,
    상기 다항식 산출부가 구한 오류수치 다항식과, 상기 오류위치 산출부가 구한 오류위치에 기초하여 오류수치를 구하고, 이들에 기초하여 상기 메모리 중의 데이터를 정정하는 데이터 정정부를 포함하며,
    상기 오류위치 산출부는, 상기 다항식 산출부 또는 데이터 정정부와 병행하여 동작을 행하는 것을 특징으로 하는 데이터 입출력 장치.
  11. 블록 부호화된 복수의 수신어의 각각에 관하여 오류정정을 연속하여 행하는 오류정정 장치에 있어서,
    수신어를 순차 취득하여 당해 수신어에 기초하여 당해 수신어에 대응하는 신드롬을 산출하는 신드롬 계산처리를 연속적으로 복수회 행하는 신드롬 계산수단과,
    복수의 신드롬을 저장할 수 있는 큐인 신드롬 저장 큐와,
    상기 신드롬 계산수단이 산출한 신드롬을 상기 신드롬 저장 큐에 저장하는 신드롬 저장수단과,
    상기 신드롬 저장 큐에 신드롬이 1개 이상 저장되어 있는 경우에 당해 신드롬 저장 큐로부터 1개의 신드롬을 페치하고, 페치된 당해 신드롬이 O이 아닐 때에만 당해 신드롬에 기초하여 당해 신드롬에 대응하는 수신어의 오류를 정정하는 정정수단을 포함하며,
    상기 오류정정 장치에서의 상기 신드롬 계산수단과 상기 정정수단은 병행하여 각각의 동작을 실행하는 것을 특징으로 하는 오류정정 장치.
  12. 제 11항에 있어서,
    상기 오류정정 장치는 또한,
    상기 신드롬 계산수단이 취득하는 수신어가 복수 저장되어 있는 수신어 기억수단을 포함하며,
    상기 정정수단은 상기 수신어 기억수단에 저장되어 있는 수신어를 갱신함으로써 상기 정정을 행하는 것을 특징으로 하는 오류정정 장치.
  13. 제 12항에 있어서,
    상기 정정수단은,
    상기 신드롬에 기초하여 오류위치 다항식 및 오류수치 다항식을 구하는 다항식 산출수단과,
    상기 다항식 산출수단이 구한 오류위치 다항식의 근인 오류위치를 구하는 오류위치 산출수단과,
    상기 다항식 산출수단이 구한 오류수치 다항식과, 상기 오류위치 산출수단이 구한 오류 위치에 기초하여 오류수치를 구하고, 이들에 기초하여 상기 수신어 중의 데이터를 정정하는 데이터 정정수단을 포함하며,
    상기 오류위치 산출수단은, 상기 다항식 산출수단 또는 데이터 정정수단과 병행하여 동작을 행하는 것을 특징으로 하는 오류정정 장치.
  14. 블록 부호화된 복수의 수신어의 각각에 대하여 오류정정을 연속하여 행하기 위해 수신어를 순차 취득하여, 당해 수신어에 기초하여 당해 수신어에 대응하는 신드롬을 산출하는 신드롬 계산수단과 병렬로 실행 가능한 RAM을 갖는 컴퓨터에, 오류정정 처리를 실행시키기 위한 오류정정 제어 프로그램을 기록한 기록 매체에 있어서,
    상기 오류정정 제어 프로그램은,
    상기 신드롬 계산수단이 신드롬을 산출했을 때, 당해 신드롬을 상기 신드롬 계산수단으로부터 도입하여 상기 RAM에 저장하는 신드롬 저장단계와,
    상기 RAM에 신드롬이 1개 이상 저장되어 있는 경우에 당해 RAM으로부터 1개의 신드롬을 판독하고, 판독한 당해 신드롬이 O이 아닐 때에만 당해 신드롬에 기초하여 당해 신드롬에 대응하는 수신어의 오류를 정정하는 정정단계를 포함하는 것을 특징으로 하는 기록 매체.
KR10-1998-0011614A 1997-04-02 1998-04-02 데이터를내부메모리에도입하고당해데이터에연산을실시하여출력하는고속동작가능한데이터입출력장치 KR100455012B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP???9-83642 1997-04-02
JP8364297 1997-04-02
JP???9-083642 1997-04-02

Publications (2)

Publication Number Publication Date
KR19980081024A true KR19980081024A (ko) 1998-11-25
KR100455012B1 KR100455012B1 (ko) 2004-12-17

Family

ID=13808114

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1998-0011614A KR100455012B1 (ko) 1997-04-02 1998-04-02 데이터를내부메모리에도입하고당해데이터에연산을실시하여출력하는고속동작가능한데이터입출력장치

Country Status (8)

Country Link
US (1) US6041368A (ko)
EP (1) EP0874320B1 (ko)
JP (1) JP3968167B2 (ko)
KR (1) KR100455012B1 (ko)
CN (2) CN1501248B (ko)
DE (1) DE69837123T2 (ko)
HK (1) HK1015479A1 (ko)
TW (1) TW432362B (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3782840B2 (ja) * 1995-07-14 2006-06-07 株式会社ルネサステクノロジ 外部記憶装置およびそのメモリアクセス制御方法
WO1998044415A1 (fr) * 1997-04-02 1998-10-08 Matsushita Electric Industrial Co., Ltd. Equipement servant a ajouter des informations de detection d'erreurs
US6115837A (en) * 1998-07-29 2000-09-05 Neomagic Corp. Dual-column syndrome generation for DVD error correction using an embedded DRAM
US6662334B1 (en) * 1999-02-25 2003-12-09 Adaptec, Inc. Method and device for performing error correction on ECC data sectors
JP2002041445A (ja) 2000-05-19 2002-02-08 Matsushita Electric Ind Co Ltd 高性能dmaコントローラ
TW541519B (en) * 2000-05-24 2003-07-11 Acer Labs Inc Encoding/decoding system in optical disk storage device
KR100403634B1 (ko) * 2001-10-17 2003-10-30 삼성전자주식회사 고속 파이프라인 리드-솔로몬 디코더에 적용하기 위한메모리 장치와 메모리 액세스 방법 및 그 메모리 장치를구비한 리드-솔로몬 디코더
FR2834146A1 (fr) * 2001-12-20 2003-06-27 St Microelectronics Sa Turbo-decodeur compact a haute efficacite
WO2003079194A1 (fr) * 2002-03-18 2003-09-25 Matsushita Electric Industrial Co., Ltd. Appareil de traitement de donnees
JP3743509B2 (ja) * 2002-03-20 2006-02-08 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US6941428B2 (en) * 2002-09-25 2005-09-06 International Business Machines Corporation Memory controller optimization
JP4551635B2 (ja) 2003-07-31 2010-09-29 ソニー株式会社 パイプライン処理システムおよび情報処理装置
US20050038946A1 (en) * 2003-08-12 2005-02-17 Tadpole Computer, Inc. System and method using a high speed interface in a system having co-processors
JP4082300B2 (ja) 2003-08-29 2008-04-30 ソニー株式会社 パイプライン処理システムおよび情報処理装置
CN1300703C (zh) * 2003-11-05 2007-02-14 松下电器产业株式会社 调节电路及其具有它的功能处理电路
US7219258B2 (en) * 2003-12-10 2007-05-15 International Business Machines Corporation Method, system, and product for utilizing a power subsystem to diagnose and recover from errors
JP2006004560A (ja) * 2004-06-18 2006-01-05 Elpida Memory Inc 半導体記憶装置及びその誤り訂正方法
JP2006190346A (ja) * 2004-12-28 2006-07-20 Toshiba Corp エラー訂正処理装置及びエラー訂正処理方法
US7496695B2 (en) 2005-09-29 2009-02-24 P.A. Semi, Inc. Unified DMA
US20070260960A1 (en) * 2006-04-21 2007-11-08 Kuo-Lung Chien Error correction system and related method thereof
US20070260963A1 (en) * 2006-04-21 2007-11-08 Kuo-Lung Chien Error correction system and related method thereof
US20070260961A1 (en) * 2006-04-21 2007-11-08 Kuo-Lung Chien Error correction system and related method thereof
GB0622408D0 (en) * 2006-11-10 2006-12-20 Ibm Device and method for detection and processing of stalled data request
JP2011130008A (ja) * 2009-12-15 2011-06-30 Hitachi-Lg Data Storage Inc データ入出力装置
US8612834B2 (en) * 2011-03-08 2013-12-17 Intel Corporation Apparatus, system, and method for decoding linear block codes in a memory controller
JP2014071834A (ja) * 2012-10-01 2014-04-21 Toshiba Corp 通信装置およびプログラム
US9299387B2 (en) * 2014-07-25 2016-03-29 Kabushiki Kaisha Toshiba Magnetic disk apparatus, controller and data processing method
US9800271B2 (en) * 2015-09-14 2017-10-24 Qualcomm Incorporated Error correction and decoding
KR102504176B1 (ko) * 2016-06-23 2023-03-02 에스케이하이닉스 주식회사 반도체장치

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5833767A (ja) * 1981-08-21 1983-02-28 Canon Inc デイスク制御装置
JPS60229160A (ja) * 1984-04-26 1985-11-14 Toshiba Corp マルチプロセツサシステム
JPS60254463A (ja) * 1984-05-31 1985-12-16 Sony Corp デジタルデ−タの記録ないし再生方式
US5148432A (en) * 1988-11-14 1992-09-15 Array Technology Corporation Arrayed disk drive system and method
US5497344A (en) * 1989-01-26 1996-03-05 Sharp Kabushiki Kaisha Data flow type information processor
US5068858A (en) * 1989-12-21 1991-11-26 International Business Machines Corporation Error correction capability varied with track location on a magnetic or optical disk
US5243581A (en) * 1990-07-23 1993-09-07 Matsushita Electric Industrial Co., Ltd. Data recording/reproducing apparatus having plural optical disk drives operating in parallel
EP0524935A1 (en) * 1991-02-19 1993-02-03 International Business Machines Corporation Data transfer between a data storage subsystem and host system
JP2703417B2 (ja) * 1991-04-05 1998-01-26 富士通株式会社 受信バッファ
US5530901A (en) * 1991-11-28 1996-06-25 Ricoh Company, Ltd. Data Transmission processing system having DMA channels running cyclically to execute data transmission from host to memory and from memory to processing unit successively
EP0582370B1 (en) * 1992-06-05 1998-10-07 Compaq Computer Corporation Disk drive controller with a posted write cache memory
US5602857A (en) * 1993-09-21 1997-02-11 Cirrus Logic, Inc. Error correction method and apparatus
US5604753A (en) * 1994-01-04 1997-02-18 Intel Corporation Method and apparatus for performing error correction on data from an external memory
US5661848A (en) * 1994-09-08 1997-08-26 Western Digital Corp Multi-drive controller with encoder circuitry that generates ECC check bytes using the finite field for optical data for appending to data flowing to HDA
JPH08102140A (ja) * 1994-09-30 1996-04-16 Sony Corp ディスク装置
US5640286A (en) * 1995-05-08 1997-06-17 Western Digital Corporation Disk drive with error code embedded sector identification
KR0160193B1 (ko) * 1995-12-30 1998-12-15 김광호 직접메모리접근 제어장치
JP3234493B2 (ja) * 1996-03-11 2001-12-04 三洋電機株式会社 符号誤り訂正方法及び符号誤り訂正装置
US5822568A (en) * 1996-05-20 1998-10-13 Advanced Micro Devices, Inc. System for improving the real-time functionality of a personal computer which employs an interrupt servicing DMA controller

Also Published As

Publication number Publication date
DE69837123T2 (de) 2007-11-29
HK1015479A1 (en) 1999-10-15
EP0874320A3 (en) 2001-01-17
EP0874320A2 (en) 1998-10-28
CN1154908C (zh) 2004-06-23
JP3968167B2 (ja) 2007-08-29
CN1501248B (zh) 2010-05-26
US6041368A (en) 2000-03-21
DE69837123D1 (de) 2007-04-05
TW432362B (en) 2001-05-01
EP0874320B1 (en) 2007-02-21
KR100455012B1 (ko) 2004-12-17
JPH10334040A (ja) 1998-12-18
CN1501248A (zh) 2004-06-02
CN1202646A (zh) 1998-12-23

Similar Documents

Publication Publication Date Title
KR100455012B1 (ko) 데이터를내부메모리에도입하고당해데이터에연산을실시하여출력하는고속동작가능한데이터입출력장치
US6092231A (en) Circuit and method for rapid checking of error correction codes using cyclic redundancy check
KR100430657B1 (ko) 신호 처리 장치
US6332206B1 (en) High-speed error correcting apparatus with efficient data transfer
US5584041A (en) Channel apparatus having a plurality of channels capable of being operated either in parallel mode or in separate mode
US20070266187A1 (en) Data Interleaving Apparatus
US6687860B1 (en) Data transfer device and data transfer method
US8181075B2 (en) Error correction device and recording and reproducing device
US6728806B2 (en) Data processing unit
US5341479A (en) Address mark triggered read/write head buffer
US5410554A (en) Optical disk apparatus
KR930009538B1 (ko) 에러 수정 제어장치
KR100638378B1 (ko) 디스크 제어장치의 메모리 구조에 대한 시스템 및 방법
US8769167B2 (en) Channel device, information processing system and data transfer method
JP3300376B2 (ja) 光ディスクの信号処理方法
EP1090462B1 (en) Circuit and method for rapid checking of error correction codes using cyclic redundancy check
JP3154414B2 (ja) 追記型光ディスクの信号処理用半導体集積回路
JPS639259B2 (ko)
JPH04213145A (ja) ランダムアクセスメモリへのアクセス制御回路
KR20060064942A (ko) 광 디스크 시스템의 효율적인 메모리 관리를 위한 디지털신호 처리 방법 및 장치
JPH04213147A (ja) 追記型コンパクトディスク用半導体集積回路のインタフェース回路
JPH05289947A (ja) Eccチェック方式
JPH02120926A (ja) データ転送処理方式
JPH1165865A (ja) データ処理装置、データ処理方法及びコンピュータ読み取り可能な記録媒体
JP2001351332A (ja) Dvd制御装置

Legal Events

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

Payment date: 20071010

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee