KR100708567B1 - Dma 회로 및 이것을 이용한 디스크 어레이 장치 - Google Patents

Dma 회로 및 이것을 이용한 디스크 어레이 장치 Download PDF

Info

Publication number
KR100708567B1
KR100708567B1 KR1020050054158A KR20050054158A KR100708567B1 KR 100708567 B1 KR100708567 B1 KR 100708567B1 KR 1020050054158 A KR1020050054158 A KR 1020050054158A KR 20050054158 A KR20050054158 A KR 20050054158A KR 100708567 B1 KR100708567 B1 KR 100708567B1
Authority
KR
South Korea
Prior art keywords
descriptor
data
memory
circuit
transfer
Prior art date
Application number
KR1020050054158A
Other languages
English (en)
Other versions
KR20060073420A (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 KR20060073420A publication Critical patent/KR20060073420A/ko
Application granted granted Critical
Publication of KR100708567B1 publication Critical patent/KR100708567B1/ko

Links

Images

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 메모리의 어드레스의 장해에 의한 디스크립터에 의한 잘못된 데이터 전송을 방지하는 것을 과제로 한다.
데이터 처리 유닛(34)이 디스크립터를 작성할 때에, 디스크립터 내의 미리 결정된 일부에 그 디스크립터를 저장하는 포인터를 메모리(38)에 기록하여, DMA 엔진(40)이 메모리(38)로부터 디스크립터를 판독할 때에, DMA 엔진(40)이 그 값이 옳은지의 여부를 확인하여, 메모리(38)의 데이터의 DMA 전송의 가부를 판정한다. 디스크립터의 기록, 판독의 어느 쪽의 경우에 있어서도, 어드레스 고장에 기인하는 데이터의 파괴를 막을 수 있다.

Description

DMA 회로 및 이것을 이용한 디스크 어레이 장치{DIRECT MEMORY ACCESS CIRCUIT AND DISK APPAY DEVICE USING SAME}
도 1은 본 발명의 제1 실시예의 디스크 어레이 장치의 구성을 나타내는 블록도이다.
도 2는 도 1의 실시예의 제어 모듈의 구성을 나타내는 블록도이다.
도 3은 본 발명의 일 실시예의 디스크립터 기록 처리의 설명도이다.
도 4는 본 발명의 일 실시예의 디스크립터 판독 처리의 설명도이다.
도 5는 본 발명의 실시예의 디스크립터의 포맷의 구성도이다.
도 6은 본 발명의 실시예의 DMA 회로의 구성을 나타내는 블록도이다.
도 7은 본 발명의 제2 실시예의 디스크 어레이 장치의 구성을 나타내는 블록도이다.
도 8은 도 7의 실시예의 제어 모듈의 구성을 나타내는 블록도이다.
도 9는 종래의 DMA 전송의 설명도이다.
도 10은 종래의 디스크립터의 포맷의 구성도이다.
<도면의 주요 부분에 대한 부호의 설명>
10, 10-1, 10-2, 10-3, 10-4 : 제어 모듈(캐쉬 매니저)
11, 11-1∼11-8 : 채널 어댑터
12-1∼12-4 : 디스크 장치(디스크 드라이브군)
13, 13-1∼13-8 : 디바이스 어댑터
14, 14-1∼14-8 : 라우터
16-1, 16-2 : 스위치
17-1, 17-2 : 호스트 컴퓨터(데이터 처리 장치)
24, 26-1, 26-2, 38 : 캐쉬 메모리
20, 22, 34 : CPU
15, 28-1, 28-2, 40 : DMA 회로
44, 46, 48 : 포인터 레지스터
50 : 전송 제어 회로
52, 56 : 비교 회로
54 : 가산 회로
60 : 디스크립터 판독 제어 회로
62 : 디스크립터 스토어 레지스터
380 : 디스크립터 영역
본 발명은 외부의 지시에 따라 메모리를 직접 액세스하여, 데이터 전송하는 DMA 회로 및 이것을 이용한 디스크 어레이 장치에 관한 것으로, 특히, 컴퓨터의 외 부 기억 장치로서 이용되는 디스크 어레이 장치 내부에서의 데이터의 정당성을 보증하는 데에 적합한 DMA 회로 및 이것을 이용한 디스크 어레이 장치에 관한 것이다.
최근, 여러 가지 데이터가 전자화되어 컴퓨터 상에서 다루어지게 됨에 따라서, 컴퓨터와는 독립적으로 대량의 데이터를 효율적으로 전송할 것이 요구되고 있다. 이 때문에, 데이터를 저장하는 메모리를 외부 지시에 따라 독립적으로 액세스하여 데이터 전송하는 기술, 즉, DMA 전송이 활발히 이용되고 있다.
예컨대, 대량의 데이터를 안전하게 저장할 수 있는 디스크 어레이 장치에서는, 호스트 컴퓨터의 액세스에 의해 대량의 데이터를 리드 또는 라이트하기 때문에, 메모리의 데이터를 호스트 컴퓨터나 내부 회로에 전송한다.
도 9 및 도 10은 종래 기술의 설명도이다. 도 9에 도시한 바와 같이, 캐쉬 메모리(104)에 CPU(100)가 데이터를 기록하고, DMA 회로(엔진)(102)가 캐쉬 메모리(104)의 기록 데이터를 판독하여 전송한다. CPU(100)는 호스트 등의 외부로부터의 데이터를 수취하면, 디스크립터를 작성하여, 캐쉬 메모리(104) 내에 설치한 제어 영역(디스크립터 영역이라 함)(106)에 기록한다.
디스크립터는 CPU(100)가 DMA 엔진(102)에 부여하기 위한 명령이며, 전송하고 싶은 데이터의 캐쉬 메모리(104)에서의 어드레스와 데이터 바이트수, 데이터 전송처(메모리)의 어드레스를 포함한다. 예컨대, 도 10의 디스크립터의 포맷에 나타내는 바와 같이, 4워드(1워드, 64비트)의 커맨드로 구성된다. 제1 워드는 커맨드 필드(cmd), 인터럽트 제어 필드(예컨대, 「1」이면, 본 디스크립터의 종료시에 인 터럽트를 발생하는 등), BCC 체크 모드(BCC), 전송처 노드(Tgt), 전송처(Write Side) 메모리 어드레스(DDA)로 구성된다.
제2 워드는 전송 바이트수(SIZE)(예컨대, 최대 1 Mbyte, 최소 8 byte), 전송처(Read Side) 메모리 어드레스(SDA)로 이루어진다. 제3 워드는 체크용 Block-ID 초기값(Check BKID), 제4 워드는 생성용(Replace) Block-ID 초기값으로 이루어진다.
CPU(100)는 캐쉬 메모리(104)에 데이터를 기록할 때마다, 도 10과 같은 디스크립터를 작성하여, 캐쉬 메모리(104) 내의 디스크립터 영역(106)에 기록한다. 디스크립터 영역(106)은 디스크립터 사이즈의 N배의 메모리 영역이 할당된다.
더욱이, CPU(100)는 DMA 기동시에, DMA 엔진(102)이 갖는 디스크립터 베이스 어드레스 레지스터(110)에 디스크립터 영역(106) 자체의 선두 어드레스를 기록한다. 이에 따라, DMA 엔진(102)은 디스크립터가 캐쉬 메모리(104)의 어디에서부터 기록되어지는지를 알 수 있다.
이 DMA 엔진(102)은 디스크립터 탑 포인터 레지스터(112)와 디스크립터 보텀 포인터 레지스터(114)를 갖는다. 이들 레지스터(112, 114)는 각각, CPU(100)가 얼마 만큼의 디스크립터를 디스크립터 영역(106)에 준비했는지, 또, DMA 엔진(102)이 얼마 만큼의 디스크립터의 실행을 끝냈는지를 나타낸다. 즉, 탑 레지스터(112)는 선두의 디스크립터(도면에서는 디스크립터 #5), 보텀 레지스터(114)는 최후의 디스크립터(도면에서는 디스크립터 #1)를 나타낸다.
또, 디스크립터 베이스 어드레스 레지스터(110)가 가리키는 어드레스로부터 하나의 디스크립터 사이즈의 N배까지의 연속된 공간이 디스크립터 영역(106)으로서 사용된다. 도 9의 예에서는, CPU(100)가 #0-#5의 6개의 디스크립터를 작성하여, 디스크립터 영역(106)에 저장하면, DMA 엔진(102)의 디스크립터 탑 포인터 레지스터(112)의 값을 「6」으로 올린다. 이로써, DMA 엔진(102)은 디스크립터가 준비되었음을 알고, 디스크립터의 판독을 최후의 디스크립터에서부터 순차적으로 시작한다(예컨대, 특허문헌 1, 2 참조).
즉, DMA 엔진(102)은 디스크립터 영역(106)의 디스크립터 보텀 포인터 레지스터(114)가 나타내는 위치에서부터 디스크립터를 판독하고, 해석하여, 지정된 데이터 전송을 완료하면, 디스크립터 보텀 포인터 레지스터(114)를 「1」씩 올린다. 예컨대, 도 9에서는, 디스크립터 보텀 포인터 레지스터(114)가 「1」인 경우를 나타내고 있으며, 디스크립터 #0이 이미 완료되었음을 나타내고 있다.
특허문헌 1 : 일본 특허 공개 소63-211032호 공보(제3도)
특허문헌 2 : 일본 특허 공개 2004-110159호 공보(도 1 및 도 2)
데이터 자체에는 체크 코드를 부가함으로써 보장하고 있으며, 캐쉬 메모리의 데이터 자신도 ECC(Error check code)를 가지고, 메모리를 구성하는 DRAM 소자나 메모리 컨트롤러와 DRAM 사이의 데이터 패스의 이상으로 인해 데이터가 파괴되었는지를 검출할 수 있다.
이와 같이, DMA 엔진(102)에 의한 데이터 전송 동작에서는, 데이터는 상기한 체크 코드와 ECC에 의해서 보호되지만, 디스크립터의 보호가 충분하지 않다. 특히, DMA 전송시의 어드레스는 보호되고 있지 않기 때문에, 예컨대, 메모리 컨트롤러와 메모리 사이의 어드레스선에 장해가 발생한 경우에는, CPU가 틀린 어드레스에 디스크립터를 기록하거나, DMA 엔진이 틀린 어드레스로부터 디스크립터를 판독해 버릴 가능성이 있다.
이 경우, 본래의 데이터와는 다른 데이터가 DMA 전송되기 때문에, 결과적으로 데이터가 보장되지 않게 되어 버린다.
따라서, 본 발명의 목적은 DMA 전송을 위한 디스크립터의 보호를 하여, 정확한 DMA 전송을 하기 위한 DMA 회로 및 이것을 이용한 디스크 어레이 장치를 제공하는 데에 있다.
또, 본 발명의 다른 목적은 DMA 전송을 위해, 틀린 어드레스에 디스크립터를 기록하거나, 틀린 어드레스로부터 디스크립터를 판독했음을 검출하기 위한 DMA 회로 및 이것을 이용한 디스크 어레이 장치를 제공하는 데에 있다.
또한, 본 발명의 다른 목적은 DMA 전송을 위한 메모리 액세스시의 어드레스선의 장해를 검출하여, 틀린 DMA 전송을 방지하기 위한 DMA 회로 및 이것을 이용한 디스크 어레이 장치를 제공하는 데에 있다.
이 목적을 달성하기 위해, 본 발명의 DMA 회로는 데이터 처리 유닛이 기록한 DMA 전송 내용을 나타내는 디스크립터를 판독하고, 메모리로부터 디스크립터로 정의된 어드레스의 데이터를 판독하여, 전송하는 DMA 회로이다. 그리고, DMA 회로는 상기 메모리에 상기 데이터 처리 유닛이 기록한 복수의 디스크립터의 탑 포인터와 보텀 포인터를 저장하는 제1 및 제2 레지스터와, 상기 보텀 포인터가 나타내는 상기 메모리의 디스크립터를 판독하고, 해석하여, 상기 메모리의 상기 디스크립터로 지정된 어드레스의 데이터를 판독하여, 전송하는 전송 회로와, 상기 판독한 디스크립터에 포함되는 디스크립터 포인터와 상기 보텀 포인터를 비교하여, 상기 전송 회로의 전송 동작을 제어하기 위한 비교 회로를 갖는다.
또, 본 발명의 디스크 어레이 장치는 복수의 디스크 장치와, 상위로부터의 요구에 따라 상기 디스크 장치의 데이터의 리드/라이트를 행하는 제어 유닛을 갖는다. 그리고, 상기 제어 유닛은 데이터 처리 유닛과, 상기 디스크 장치를 위한 데이터를 저장하는 캐쉬 메모리와, 상기 데이터 처리 유닛이 기록한 DMA 전송 내용을 나타내는 디스크립터를 판독하고, 상기 캐쉬 메모리로부터 디스크립터로 정의된 어드레스의 데이터를 판독하여, 전송하는 DMA 회로를 갖는다. 더욱이, 상기 DMA 회로는 상기 캐쉬 메모리에 상기 데이터 처리 유닛이 기록한 복수의 디스크립터의 탑 포인터와 보텀 포인터를 저장하는 제1 및 제2 레지스터와, 상기 보텀 포인터가 나타내는 상기 캐쉬 메모리의 디스크립터를 판독하고, 해석하여, 상기 캐쉬 메모리의 상기 디스크립터로 지정된 어드레스의 데이터를 판독하여, 전송하는 전송 회로와, 상기 판독한 디스크립터에 포함되는 디스크립터 포인터와 상기 보텀 포인터를 비교하여, 상기 전송 회로의 전송 동작을 제어하기 위한 비교 회로를 갖는다.
또, 본 발명에서는, 바람직하게는, 상기 전송 회로는 어드레스선과 데이터선이 분리된 상기 메모리를 액세스한다.
또, 본 발명에서는, 바람직하게는, 상기 전송 회로는 상기 비교 회로의 비교 결과가 양호하지 않을 때는 상기 메모리의 상기 디스크립터로 지정된 어드레스의 데이터의 판독 동작을 중지한다.
또, 본 발명에서는, 바람직하게는, 상기 전송 회로는 하나의 상기 디스크립터의 판독, 해석에 의한 데이터 전송을 완료한 후에, 상기 보텀 포인터를 저장하는 제2 레지스터를 갱신한다.
또, 본 발명에서는, 바람직하게는, 상기 제1 레지스터의 탑 포인터와 상기 제2 레지스터의 보텀 포인터를 비교하는 제2 비교 회로를 갖고, 상기 전송 회로는 상기 제2 비교 회로의 비교 결과에 따라 지정된 DMA 전송을 종료한다.
또, 본 발명에서는, 바람직하게는, 상기 판독한 디스크립터를 저장하는 제3 레지스터를 더 포함하고, 상기 비교 회로는 상기 제3 레지스터의 상기 판독한 디스크립터에 포함되는 디스크립터 포인터와 상기 제2 레지스터의 상기 보텀 포인터를 비교한다.
또, 본 발명에서는, 바람직하게는, 상기 메모리의 디스크립터 영역의 베이스 위치를 나타내는 베이스 포인터를 저장하는 제4 레지스터를 더 포함하고, 상기 전송 회로는 상기 제2 레지스터의 상기 보텀 포인터와 상기 제4 레지스터의 베이스 포인터의 가산치가 나타내는 상기 메모리의 디스크립터를 판독한다.
또, 본 발명에서는, 바람직하게는, 상기 전송 회로는 상기 메모리에 디스크립터의 판독을 요구하는 디스크립터 판독 제어 회로와, 상기 메모리에 상기 판독한 디스크립터에 따른 데이터의 판독을 요구하는 데이터 전송 회로를 갖고, 상기 디스크립터 판독 제어 회로는 상기 비교 회로의 비교 결과에 따라 상기 데이터 전송 회 로의 판독 요구를 제어한다.
또, 본 발명에서는, 바람직하게는, 상기 디스크립터 판독 제어 회로는 상기 보텀 포인터가 나타내는 상기 메모리의 디스크립터를 요구하고, 상기 데이터 전송 회로는 상기 판독한 디스크립터를 해석하고, 상기 메모리의 상기 디스크립터로 지정된 어드레스의 데이터를 판독하여, 전송한다.
또, 본 발명에서는, 바람직하게는, 상기 판독한 디스크립터를 저장하는 제3 레지스터를 더 포함하고, 상기 비교 회로는 상기 제3 레지스터의 상기 판독한 디스크립터에 포함되는 디스크립터 포인터와 상기 제2 레지스터의 상기 보텀 포인터를 비교하고, 상기 데이터 전송 회로는 상기 디스크립터 판독 회로의 전송 허가에 따라 상기 제3 레지스터의 상기 디스크립터를 해석하고, 상기 메모리의 상기 디스크립터로 지정된 어드레스의 데이터를 판독하여, 전송한다.
또, 본 발명에서는, 바람직하게는, 상기 제어 유닛은 상기 상위와 통신하기 위한 채널 어댑터와, 상기 디스크 장치의 데이터의 일부를 저장하는 캐쉬 메모리를 갖는 제어 회로와, 상기 디스크 장치와 통신하는 디바이스 어댑터를 갖고, 상기 DMA 회로는 상기 채널 어댑터의 상기 캐쉬 메모리와 상기 제어 회로의 상기 캐쉬 메모리 사이에서 상기 DMA 전송을 한다.
또, 본 발명에서는, 바람직하게는, 상기 상위와 통신하기 위한 채널 어댑터와, 상기 디스크 장치의 데이터의 일부를 저장하는 캐쉬 메모리를 갖는 제어 회로와, 상기 디스크 장치와 통신하는 디바이스 어댑터를 갖는 상기 제어 유닛을 복수 갖고, 상기 DMA 회로는 하나의 상기 제어 유닛의 상기 캐쉬 메모리와 다른 상기 제 어 유닛의 상기 캐쉬 메모리 사이에서 상기 DMA 전송에 의한 미러링을 한다.
이하, 본 발명의 실시예를, 디스크 어레이 장치의 제1 실시예, DMA 전송 회로, 디스크 어레이 장치의 제2 실시예, 다른 실시예의 순으로 설명하지만, 본 발명은 이러한 실시예에 한정되지 않고, 여러 가지 변형이 가능하다.
[디스크 어레이 장치의 제1 실시예]
도 1은 본 발명의 디스크 어레이 장치의 제1 실시예의 전체 구성도, 도 2는 도 1의 주요부의 상세 구성도이다.
도 1에 도시한 바와 같이, 디스크 어레이 장치는 주요 유닛인 캐쉬 메모리와 캐쉬 제어부를 구비하는 캐쉬 매니저(도면에서, CM이라 표기)(10-1∼10-4), 호스트 컴퓨터(도시하지 않음)와의 인터페이스인 채널 어댑터(도면에서, CA라 표기)(11-1∼11-8), 복수의 디스크 드라이브를 구비하는 디스크 장치(12-1∼12-4) 및 이 디스크 장치(12-1∼12-4)와의 인터페이스인 디바이스 어댑터(도면에서, DA라 표기)(13-1∼13-8)를 구비한다.
그리고, 캐쉬 매니저(10-1∼10-4), 채널 어댑터(11-1에서 11-8) 및 디바이스 어댑터(13-1∼13-8) 사이를 서로 접속하여, 이들 주요 유닛 사이의 데이터 전송과 통신을 행하는 라우터(Router ; 도면에서, RT라 표기)(14-1∼14-4)가 구비되어 있다.
이 디스크 어레이 장치는, 캐쉬 매니저(10-1∼10-4)가 4개 구비되고, 이들 캐쉬 매니저(10-1∼10-4)에 대응하여 4개의 라우터(14-1∼14-4)가 구비되어 있다. 각 캐쉬 매니저(10-1∼10-4)와 각 라우터(14-1∼14-4)는 1대1로 서로 접속되어 있 다. 이로써, 복수의 캐쉬 매니저(10-1∼10-4) 사이의 접속이 용장화되어, 가용성이 높아지고 있다.
즉, 하나의 라우터(14-1)가 고장난 경우에도, 다른 라우터(14-2, 14-3, 14-4)를 경유함으로써, 복수의 캐쉬 매니저(10-1∼10-4) 사이의 접속은 확보되고 있으며, 이러한 경우에도, 디스크 어레이 장치는 통상의 동작을 계속할 수 있다.
또한, 이 디스크 어레이 장치는 각 라우터(14-1∼14-4)에 2개의 채널 어댑터(11-1∼11-8)와 2개의 디바이스 어댑터(13-1∼13-8)가 접속되어 있다. 따라서, 디스크 어레이 장치는 합계 8개의 채널 어댑터(11-1∼11-8)와 합계 8개의 디바이스 어댑터(13-1∼13-8)를 구비하고 있다.
이들 채널 어댑터(11-1∼11-8) 및 디바이스 어댑터(13-1∼13-8)는 캐쉬 매니저(10-1∼10-4)와 라우터(14-1∼14-4)의 상호 접속에 의해, 모든 캐쉬 매니저(10-1∼10-4)와의 사이에서 통신이 가능하게 되고 있다.
이 채널 어댑터(11-1∼11-4)는 예컨대, 파이버 채널이나 Ethernet(등록상표)에 의해서, 복수의 디스크에 유지된 데이터를 처리 대상으로 하는 호스트 컴퓨터(도시하지 않음)에 접속되어 있다. 또, 디바이스 어댑터(13-1∼13-8)는 예컨대, 파이버 채널에 의해서, 디스크 장치(12)의 각 디스크 드라이브에 접속되어 있다.
그리고, 채널 어댑터(11-1∼11-8)와 캐쉬 매니저(10-1∼10-4) 사이 및 디바이스 어댑터(13-1∼13-8)와 캐쉬 매니저(10-1∼10-4) 사이에서는, 호스트 컴퓨터로부터의 사용자 데이터뿐만 아니라, 디스크 어레이 장치의 내부의 동작의 일관성을 유지하기 위한 여러 가지 정보의 교환(예컨대, 복수의 캐쉬 메모리 사이의 데이터 의 미러링 처리)이 이루어진다.
그 때문에, 캐쉬 매니저(10-1∼10-4), 채널 어댑터(11-1∼11-8) 및 디바이스 어댑터(13-1∼13-8)와, 라우터(14-1∼14-4) 사이는 디스크 어레이 장치와 호스트 컴퓨터 사이나, 디스크 장치 사이보다도 낮은 레이턴시(빠른 응답 속도)를 실현할 수 있는 인터페이스를 통해 접속되어 있다.
예컨대, PCI(Peripheral Component Interconnect) 버스와 같이, LSI(Large Scale Integration)나 프린트 기판 사이를 접속하기 위해서 설계된 버스에 의해서, 캐쉬 매니저(10-1∼10-4), 채널 어댑터(11-1∼11-8) 및 디바이스 어댑터(13-1∼13-8)와, 라우터(14-1∼14-4) 사이가 접속되고 있다.
또한, 디스크 장치(12-1∼12-4)는 2개의 파이버 채널의 포트를 갖고, 각 포트에는 다른 라우터(14-1∼14-4) 배하(配下)에 속하는 디바이스 어댑터(13-1∼13-8)가 접속된다. 이에 따라, 디바이스 어댑터(13-1∼13-8)가 고장나거나 혹은 라우터(14-1∼14-4)가 고장날 때에도, 캐쉬 매니저(10-1∼10-4)로부터의 접속이 절단되지 않게 되어 있다.
이 디스크 어레이 장치는, RAID 기술을 채택함으로써, 단순한 디스크 장치에 비해서 신뢰성을 높이고 있다. 또한, 일반적으로 캐쉬를 내장함으로써, 데이터에의 액세스 시간을 짧게 하는 것을 가능하게 하고 있다.
RAID 기술로서는, 복수의 디스크에 동일한 데이터를 기억시키거나(RAID-1), 패리티 정보를 디스크에 분산하여 기억시키는(RAID-5) 등의 수법에 의해 신뢰성을 높이고 있다. 더욱이, 디스크 어레이 장치의 대부분은 데이터에 대하여 체크 코드 를 부가함으로써, 더욱 데이터의 보증을 하여, 신뢰성을 높이는 수법이 채용되고 있다.
예컨대, 512 바이트의 데이터 블록에 대하여, 데이터로부터 계산된 CRC(Cyclic Redundancy Code) 코드와 데이터의 위치 정보를 나타내는 블록 ID를 부가함으로써 이루어진다. 이 CRC 코드와 블록 ID를 합쳐서, 데이터 블록에 대한 체크 코드라는 의미로, 블록 체크 코드(BCC)라고 부르는 경우가 있다.
CRC는 512 바이트의 데이터와 시드라고 불리는 미리 결정된 값에 대한 어떤 계산에 의해서 얻어진다. 블록 ID는 최초의 512 바이트 데이터 블록에 대하여 정의되고, 다음 512 바이트에 대해서는 「1」 가산된 값이 그 데이터 블록의 블록 ID가 된다.
또, BCC는 ANSI(American National Standards Institute) 규격에서도, 2 바이트의 CRC 코드와 6 바이트의 블록 ID(2 바이트의 Meta Tag와 4 바이트의 Reference Tag로 구성됨)에 의한 체크 코드가 T10 코드라고 하는 명칭으로 표준화되어 있다.
도 2에 도시한 바와 같이, 채널 어댑터(11)(11-1∼11-8을 총칭함)는 호스트 컴퓨터와 접속하기 위한 파이버 채널 칩(30)과, DMA 엔진(40)을 갖는 인터페이스 회로(32)와, CPU(34)와, 메모리 컨트롤러(36)와, 캐쉬 메모리(38)를 갖는다.
CPU(34)는 파이버 채널 칩(30)과 메모리 컨트롤러(36)를 조작하여, 후술하는 호스트 인터페이스 제어나, 호스트와의 리드/라이트 처리를 한다.
캐쉬 매니저 모듈(10)(10-1∼10-4를 총칭함)은 2개의 CPU(20, 22)와, 캐쉬 메모리(26)와, 브릿지 회로의 역할도 하는 메모리 컨트롤러(24)를 가지며, 후술하는 액세스 처리를 한다. 라우터(14)(14-1∼14-4를 총칭)는 스위치 기능을 갖는 것 외에, DMA 엔진(15)을 탑재한다. 또, 라우터(14)는 디바이스 어댑터(디스크 어댑터)(13)(13-1∼13-8을 총칭)에도 접속된다.
캐쉬 메모리(38, 26)는 DDR(Double Data Rate)의 DRAM(Dynamic Random Access Memory)으로 구성되며, 어드레스 버스(A-BUS)(예컨대, 8 비트)로 어드레스가 지정되고, 데이터 버스(D-BUS)로 데이터를 교환한다.
이어서, 전술한 구성에 있어서, 호스트 컴퓨터가 데이터를 저장할(라이트할) 때의 디스크 어레이 장치의 동작을 설명한다. 호스트 컴퓨터가 디스크에 저장하는 데이터는 우선 채널 어댑터(11)에 송신된다. 채널 어댑터(11)는 FC 칩(30)으로 수신한 데이터를 인터페이스 회로(32) 및 메모리 컨트롤러(36)를 통해 캐쉬 메모리(38)에 기록한다. 이 때, CPU(34)는 전술한 디스크립터를 작성하여, 캐쉬 메모리(38)의 디스크립터 영역에 기록한다.
이어서, CPU(34)는 호스트로부터의 데이터 수신을 완료하면 DMA 엔진(40)을 기동하고, DMA 엔진(40)이 캐쉬 메모리(38)의 디스크립터를 판독하여 디스크립터로부터 얻은 어드레스에 따라 캐쉬 메모리(38)의 라이트 데이터(수신 데이터)를 판독하고 라우터(14)를 통해 캐쉬 매니저(10)의 메모리 컨트롤러(24)에 데이터에 블록 체크 코드(BCC)를 부가한 뒤에 전송한다.
메모리 컨트롤러(24)는 CPU(20, 22)의 제어에 따라 캐쉬 메모리(26)에 전송 데이터를 저장한다. 그 후에, DMA 엔진(15)을 기동하여, 도 1과 같이, 다른 캐쉬 매니저(10)의 메모리 컨트롤러(24)에 그 데이터를 전송한다. 이에 따라, 미러링 처리를 실시한다.
미러링이 정상적으로 완료되면, 캐쉬 매니저(10)는 채널 어댑터(11)에 통지를 하고, 채널 어댑터(11)는 호스트 컴퓨터에 데이터의 저장을 정상적으로 종료했음을 알린다. 더욱이, 캐쉬 매니저(10)는 내부 시퀀스에 따라 디바이스 어댑터(13)를 통해 도 1의 자기 디스크 장치(12-1)에 캐쉬 메모리(26) 내의 라이트 데이터를 라이트백(write-back)하고 자기 디스크 장치(12-1)에 데이터를 저장한다.
이어서, 호스트 컴퓨터로부터 리드 요구가 발행된 경우, 우선, 호스트 컴퓨터로부터의 리드 요구를 채널 어댑터(11)가 수신한다. 이어서, 리드 요구를 수신한 채널 어댑터(11)는 담당의 캐쉬 매니저(10)에 대하여 그 리드 요구 대상 데이터를 요구한다.
그리고, 담당의 캐쉬 매니저(10)는 자신의 캐쉬 메모리(26) 내에 그 대상 데이터가 있으면, 그 대상 데이터가 유지된 캐쉬 메모리(26)의 어드레스를 채널 어댑터(11), 라우터(14)에 통지하는 동시에, 라우터(14)의 DMA 엔진(15)에 판독 지시를 한다. 이로써, 라우터(14)는 DMA 엔진(15)을 기동하여, 캐쉬 메모리(26)의 대상 데이터를 판독하여, 채널 어댑터(11)의 캐쉬 메모리(38)에 전송한다. 그 후, DMA 엔진(40)을 기동하여, 캐쉬 메모리(38)의 대상 데이터를 호스트에 전송한다.
한편, 담당의 캐쉬 매니저(10)의 캐쉬 메모리(26) 내에 그 대상 데이터가 없는 경우, 디바이스 어댑터(13)에 대하여 디스크(12-1)로부터 그 대상 데이터를 판독하여 캐쉬 메모리(26)에 전송하도록 요구한다.
그리고, 디바이스 어댑터(13)는 그 대상 데이터를 디스크(12-1)로부터 판독하면, 캐쉬 메모리(26)에 그 대상 데이터를 기록하고, 캐쉬 매니저(10)에 대하여 그 대상 데이터의 기록이 종료되었음을 통지한다.
더욱이, 캐쉬 매니저(10)는 디바이스 어댑터(13)로부터 그 대상 데이터의 캐쉬 메모리(26)에의 기록이 종료되었음을 나타내는 통지를 수취하면, 캐쉬 매니저(10)는 채널 어댑터(11)에 대하여 그 대상 데이터의 준비가 되었음을 통지하는 동시에, 라우터(14)에 그 대상 데이터의 판독을 지시한다.
이에 따라, 라우터(14)는 DMA 엔진(15)을 기동하여, 캐쉬 메모리(26)의 대상 데이터를 판독하여, 채널 어댑터(11)의 캐쉬 메모리(38)에 전송한다. 그 후, DMA 엔진(40)을 기동하여, 캐쉬 메모리(38)의 대상 데이터를 호스트에 전송한다.
이와 같이, 캐쉬 메모리(26, 38)에 DRAM을 사용하는 경우에는, DRAM에 어드레스 버스(A-BUS)로 어드레스를 보내고, 데이터 버스(D-BUS)로 데이터의 교환을 하여, 고속성을 발휘한다. 전술한 바와 같이, 데이터에는 BCC 등의 체크 기능을 갖지만, 어드레스 버스에서의 어드레스에는 체크 기능을 갖지 않는다. 이 때문에, DMA 전송시에 어드레스의 보증 기능을 필요로 한다.
[DMA 회로]
도 3은 본 발명의 일 실시예의 DMA 전송을 설명하기 위한 디스크립터 기록 동작의 설명도, 도 4는 본 발명의 일 실시예의 DMA 전송을 설명하기 위한 디스크립터 판독 동작의 설명도, 도 5는 본 발명의 일 실시예의 디스크립터의 포맷도이다.
도 3 내지 도 4는 도 2의 채널 어댑터(11)의 DMA 회로(40)가 캐쉬 메모리 (38)의 데이터를 캐쉬 매니저(10)의 캐쉬 메모리(26)에 DMA 전송하는 예를 가지고 나타내고 있다.
도 3에 도시한 바와 같이, 디스크립터의 기록 동작에서는, CPU(34)는 디스크립터 프로그램을 기동하고(1), 이 프로그램의 실행에 의해 디스크립터를 작성한다(2). 이 때, 후술하는 바와 같이, CPU(34)는 이 디스크립터의 일부에 디스크립터의 번호를 나타내는 디스크립터 포인터 정보를 기록한다. 그리고, CPU(34)로부터 메모리(38)의 디스크립터 영역(380)에 작성한 디스크립터를 기록한다(3).
이어서, 디스크립터의 판독 동작에서는, 도 4에 도시한 바와 같이, CPU(34)는 DMA 프로그램을 기동하고(1), 이 프로그램의 실행에 의해 DMA 엔진(40)이 기동된다(2). DMA 엔진(40)은 메모리(38)의 디스크립터 영역(380)으로부터 디스크립터를 판독한다(3).
이 판독을 한 후, DMA 엔진(40)은 CPU(34)가 기록한 디스크립터 포인터 정보를 판독에 사용한 디스크립터의 번호를 나타내는 디스크립터 보텀 포인터 레지스터(114)(도 9 참조)의 값과 비교하여, 다른 경우는, 그 디스크립터를 부당하다고 판단하여, DMA 처리를 중지한다.
또, DMA 엔진(40)은 디스크립터의 일부에 CPU(34)가 기록한 디스크립터 포인터의 캐리 정보를 디스크립터 보텀 포인터 레지스터(114)의 캐리 비트와 비교하여, 다른 경우는, 그 디스크립터를 부당하다고 판단하여, DMA 처리를 중지한다.
즉, 디스크립터 영역(380)은 서큘러 버퍼로서 사용되기 때문에, 디스크립터 사이즈의 N배의 디스크립터 영역은 전부 사용이 끝나면, 최초의 위치로 되돌아가 사용된다.
이 때 1주(周)째는 디스크립터 포인터의 캐리 정보로서 "0"을 지정하고, 2주째 이후는 디스크립터 영역을 새롭게 사용할 때마다 "1"→"0"→"1"로 갱신한다.
도 5에 의해, 디스크립터의 포맷의 일례를 설명한다. 전술한 바와 같이, 디스크립터는 CPU(34)가 DMA 엔진(40)에 부여하기 위한 DMA 전송 명령이며, 전송하고 싶은 데이터의 캐쉬 메모리(104)에서의 어드레스와 데이터 바이트수, 데이터 전송처(메모리)의 어드레스를 포함한다. 예컨대, 도 5의 디스크립터의 포맷에 나타내는 바와 같이, 4워드(1워드, 64비트)의 커맨드로 구성된다. 제1 워드는 커맨드 필드(cmd), 인터럽트 제어 필드(예컨대, 「1」이면, 본 디스크립터의 종료시에 인터럽트를 발생하는 등), BCC 체크 모드(BCC), 전송처 노드(Tgt), 전송처(Write Side) 메모리 어드레스(DDA)로 구성된다.
제2 워드는 전송 바이트수(SIZE)(예컨대, 최대 1 Mbyte, 최소 8 byte), 전송원(Read Side) 메모리 어드레스(SDA)로 이루어진다. 제3 워드는 체크용 Block-ID 초기값(Check BKID), 제4 워드는 생성용(Replace) Block-ID 초기값으로 이루어진다. 본 발명의 일 실시예에서는, 이 제4 워드(Word3)에 디스크립터 포인터 정보(DP)와 그 캐리 정보(C)를 둔다.
CPU(34)는 캐시 메모리(38)에 데이터를 기록할 때마다, 도 5와 같은 디스크립터, 즉, 그 디스크립터를 저장하는 포인터값(DP)과 캐리 정보(C)를 포함하는 디스크립터를 작성하여, 캐쉬 메모리(38) 내의 디스크립터 영역(380)에 기록한다.
더욱이, CPU(34)는 DMA 엔진(38)이 갖는 디스크립터 베이스 어드레스 레지스 터(도 6의 48)에 디스크립터 영역(380)의 선두 어드레스를 기록한다. 이에 따라, DMA 엔진(38)은 디스크립터가 캐쉬 메모리(38)의 디스크립터 영역(380)의 어디에 기록되어지는지를 알 수 있다.
이와 같이, CPU는 디스크립터를 작성할 때에, 디스크립터 내의 미리 결정된 일부에 그 디스크립터를 저장하는 포인터 값과 캐리 정보를 기록하여, DMA 엔진이 디스크립터를 판독할 때에, DMA 엔진이 그 값이 옳은지의 여부를 확인한다.
이에 따라, CPU(34)가 디스크립터를 기록할 때에, 메모리 컨트롤러(36)와 메모리(38) 사이의 어드레스에 장해가 일어난 경우는, 원래 갱신되어야 하는 캐리 정보가 갱신되어 있지 않기 때문에, DMA 엔진(40)이 이 디스크립터를 판독할 때에 부당한 것으로서 검출할 수 있다.
또한, DMA 엔진(40)이 디스크립터를 판독할 때에, 어드레스에 고장이 일어난 경우는, 디스크립터 내의 포인터 정보가 판독하려고 한 포인터와 일치하지 않기 때문에, 판독한 디스크립터를 이상한 것으로 검출할 수 있다.
이와 같이 하여, 디스크립터의 기록, 판독의 어느 쪽의 경우에 있어서도, 어드레스 고장에 기인하는 데이터의 파괴를 막을 수 있다.
도 6은 본 발명의 이러한 검출 기능을 갖는 DMA 엔진의 일 실시예의 회로도이다. 도 6에 도시한 바와 같이, DMA 엔진(40)은 CPU I/F 제어부(42), 메모리 I/F 제어부(58), 디스크립터 판독 제어부(60), 데이터 전송 제어부(50)를 갖는다.
또한, 디스크립터 베이스 어드레스 레지스터(48), 디스크립터 탑 포인터 레지스터(44), 디스크립터 보텀 포인터 레지스터(46), 디스크립터 스토어 레지스터 (62)를 갖는다.
또한, 전송 완료에 의해 디스크립터 보텀 레지스터(46)의 포인트값을 「1」씩 갱신하기 위한 가산기(47)와, 레지스터(48)의 베이스 어드레스와 레지스터(46)의 보텀 포인터를 가산하기 위한 가산기(54)와, 레지스터(44)의 탑 포인터와 레지스터(46)의 보텀 포인터를 비교하기 위한 제1 비교기(52)와, 레지스터(62)에 판독한 디스크립터 내의 포인터(DP)와 캐리 비트(C)(Word3)를 레지스터(46)의 보텀 포인터와 비교하기 위한 제2 비교기(56)를 갖는다.
디스크립터 탑 포인터 레지스터(44)의 비트수는 캐쉬 메모리(38) 상에 저장되는 디스크립터의 수에 따라서 결정된다. 예컨대, 1024개의 디스크립터가 저장되는 경우, 탑 포인터 레지스터(44)는 10비트 필요하게 된다. 디스크립터 보텀 포인터 레지스터(46)의 비트수는 탑 포인터 레지스터(44)의 비트수에 캐리의 1비트를 더한 것이 된다.
이 구성의 동작을 설명한다. CPU(34)에 의한 DMA 엔진(40)의 기동시에, 베이스 어드레스, 탑 포인터, 보텀 포인터의 각 레지스터(44, 46, 48)의 설정치를 CPU I/F 제어부(42)를 통해 수취하여, 각 레지스터(44, 46, 48)를 각각 지정 값으로 고쳐쓴다.
제1 비교기(52)에 의해 탑 포인터와 보텀 포인터의 값이 다름을 검출하면, 디스크립터 판독 제어부(60)는 실행하여야 할 디스크립터가 캐쉬 메모리(38) 상에 있다고 판단하여, 보텀 포인터가 나타내는 하나의 디스크립터를 메모리(38)로부터 판독하도록 메모리 I/F 제어부(58)에 지시한다. 이 때, 판독해야 하는 디스크립터 의 메모리(38) 상의 어드레스는 가산기(54)에 의해 베이스 어드레스에 보텀 포인터를 더함으로써 얻어지고, 이 어드레스를 판독 어드레스로 하여, 메모리 I/F 제어부(58)를 통해 캐쉬 메모리(38)와의 어드레스 버스(A-BUS)에 송출한다.
이로써, 메모리(38)로부터 데이터 버스(D-BUS)를 통해 메모리 I/F 제어부(58)를 지나 디스크립터 데이터가 반송되어, 도 5에서 설명한 워드 0, 1, 2, 3의 순으로 디스크립터 스토어 레지스터(62)에 저장된다.
디스크립터를 전부 수취하면, 제2 비교기(56)는 레지스터(62)의 디스크립터 내에 지정된 포인터(DP)와 캐리 비트(C)를 보텀 포인터 레지스터(46)의 값과 비교한다. 그 비교 결과는 디스크립터 판독 제어부(60)에 통지된다.
디스크립터 판독 제어부(60)는 제2 비교기(56)에 의한 비교 결과가 일치하는 경우는 데이터 전송 제어부(50)에 대하여 이 디스크립터에 의한 데이터 전송을 하도록 지시한다. 데이터 전송 제어부(50)는 디스크립터 스토어 레지스터(62)의 디스크립터에 따라 데이터 리드 리퀘스트를 메모리 I/F 제어부(58)를 통해 메모리(38)에 출력하고, 메모리(38)로부터 전송 데이터를 판독하여, 판독 데이터를 지정된 전송처에 전송한다.
또, 전송 제어부(50)는 전송 완료에 의해 디스크립터 판독 제어부(60)를 통해 가산기(47)를 동작하여 보텀 레지스터(46)의 보텀 포인터를 「1」 가산하여 보텀 레지스터(46)를 갱신한다. 디스크립터 판독 제어부(60)는 전술한 제1 비교부(52)의 비교 결과가 일치할(즉, 탑 레지스터(44)의 값과 보텀 레지스터(46)의 값이 일치할) 때까지, 이것을 반복한다.
한편, 제2 비교부(56)의 비교 결과가 불일치인 경우는, 디스크립터 판독 제어부(60)는 이 디스크립터에 의한 데이터 전송은 중지하고(즉, 전송 제어부(50)에 전송 개시를 지시하지 않음), CPU(34)에 대하여 인터럽트로 에러 통지를 한다.
이 비교 결과의 불일치의 원인으로서는, CPU(34)로부터 캐쉬 메모리(38)에 디스크립터를 기록할 때나, DMA 엔진(40)이 캐쉬 메모리(38)로부터 디스크립터를 판독할 때에, 캐쉬 메모리(38)와의 어드레스 버스(A-BUS)에서 이상(예컨대, 단선 등)이 생겨, 어드레스를 정확히 전달할 수 없는 경우이다.
특히, 캐쉬 메모리(38)에 DRAM을 사용하는 경우에는, 어드레스 버스와 데이터 버스가 분리되고, 또한 어드레스 버스 상의 어드레스에 체크 정보가 존재하지 않기 때문에, 이러한 DMA 전송의 데이터 에러를 방지하는 데에 유효하다.
[디스크 어레이 장치의 제2 실시예]
도 7은 본 발명의 디스크 어레이 장치의 제2 실시예의 구성도, 도 8은 그 주요부의 상세 구성도이다. 도 7에 도시한 바와 같이, 디스크 어레이 장치는 파이버 채널 링크(18-1, 18-2)에 의해서 2대의 호스트 컴퓨터(17-1, 17-2)에 접속되어 있다.
디스크 어레이 장치는 호스트 인터페이스를 담당하는 호스트 어댑터(11-1, 11-2), 캐쉬 메모리(26-1, 26-2), 캐쉬 메모리(26-1, 26-2)의 관리 등을 행하는 캐쉬 컨트롤러(10-1, 10-2), 디스크 인터페이스를 담당하는 디스크 어댑터(13-1, 13-2)를 갖는다.
호스트 어댑터(11-1, 11-2), 캐쉬 메모리(26-1, 26-2), 캐쉬 컨트롤러(10-1, 10-2), 디스크 어댑터(13-1, 13-2)는 도 1의 채널 어댑터, 캐쉬 매니저, 디바이스 어댑터와 각각 동일한 것이다.
또한, 디스크 어레이 장치는 디스크 어댑터(13-1, 13-2)와 복수의 디스크 드라이브에의 접속을 제공하는 스위치(16-1, 16-2) 및 디스크 드라이브군(12-1, 12-2)으로 구성되어 있다.
이 캐쉬 컨트롤러(10-1, 10-2)는 호스트 어댑터(11-1, 11-2)와 디스크 어댑터(13-1, 13-2) 사이의 데이터 전송 경로를 제공한다. 또한, 캐쉬 컨트롤러(10-1, 10-2) 사이에도 데이터 전송 경로가 설치되어, 캐쉬 메모리(26-1, 26-2)의 데이터의 미러링에 이용된다.
캐쉬 메모리(26-1, 26-2)는 전술한 바와 같이, DRAM 등의 휘발성의 메모리로 구성되기 때문에, 하나의 캐쉬 메모리(26-1 또는 26-2)에 저장되는 데이터는 반드시 또 한 쪽의 캐쉬 메모리(26-2 또는 26-1)에도 카피를 저장한다. 이 카피 동작에 의해, 장해 발생시에 데이터가 소실되는 일이 없도록 제어된다. 이것을 캐쉬의 미러링이라고 부른다.
도 8에서 후술하는 바와 같이, 각 캐쉬 컨트롤러(10-1, 10-2)는 미러링을 위한 DMA 엔진을 갖고, 캐쉬 메모리(26-1, 26-2) 내에 저장된 데이터를 캐쉬 컨트롤러(10-1, 10-2) 내의 CPU의 지시에 의해 별도의 캐쉬 컨트롤러의 메모리에 전송할 수 있다.
이 구성의 디스크 어레이 장치로 호스트 컴퓨터의 데이터를 저장할 때의 동작을 설명한다. 호스트 컴퓨터(17-1)(또는 17-2)가 디스크에 저장하는 데이터는 우 선 호스트 어댑터(11-1)에 송신된다. 호스트 어댑터(11-1)는 수신한 데이터에 블록 체크 코드(BCC)를 부가한 뒤에, 캐쉬 컨트롤러(10-1)에 전송한다.
캐쉬 컨트롤러(10-1)는 전송된 데이터를 캐쉬 메모리(26-1) 내에 저장한 후에, DMA 엔진을 기동하여, 캐쉬 컨트롤러(10-2)에 상기 데이터를 전송한다. 캐쉬 컨트롤러(10-2)는 캐쉬 메모리(26-2)에 전송 데이터를 저장한다. 이에 따라, 미러링 처리를 행한다.
미러링이 정상적으로 완료되면, 캐쉬 컨트롤러(10-1)는 호스트 어댑터(11-1)에 대하여 통지를 하고, 호스트 어댑터(11-1)는 호스트 컴퓨터(17-1)에 데이터의 저장을 정상적으로 종료했음을 알린다.
또, 캐쉬 메모리(26-1, 26-2) 내의 디스크 드라이브군(12-1, 12-2)으로의 라이트백 및 호스트 컴퓨터로부터의 리드 동작은 도 1 및 도 2와 동일하다.
도 8에 도시한 바와 같이, 캐쉬 컨트롤러(10-1, 10-2)는 브릿지 회로로서도 기능하며, 메모리 제어하는 메모리 컨트롤러(24)를 중심으로 CPU(20, 22)와 DMA 엔진(28-1, 28-2)이 접속되어 구성된다. 도 8과 같이, CPU의 성능 요구에 의해, CPU가 복수 장비되는 경우나, 하나 탑재되는 경우가 있다. CPU(20, 22)와 DMA 엔진(28-1, 28-2)은 메모리 컨트롤러(24)를 통해 캐쉬 메모리(26-1, 26-2)에 액세스할 수 있다.
DMA 엔진(28-1, 28-2)은 캐쉬 컨트롤러(10-1, 10-2) 외부에 인터페이스를 갖고, 별도의 캐쉬 컨트롤러와 접속된다. 또한, 메모리 컨트롤러(24)에는 호스트 어댑터(11-1, 11-2), 디스크 어댑터(13-1, 13-2)가 접속되며, 각각이 캐쉬 메모리 (26-1, 26-2)에 액세스할 수 있다.
호스트 컴퓨터(17-1 또는 17-2)로부터의 데이터(라이트 데이터)를 수취한 후, 데이터의 미러링 시작의 판단은 캐쉬 컨트롤러(10-1 또는 10-2) 내의 CPU(20, 22)가 한다. 이 구성에서는, 도 3에서 설명한 바와 같이, CPU(20, 22)는 호스트로부터의 데이터를 수취하면, 캐쉬 메모리(26-1, 26-2) 내의 제어 영역(디스크립터 영역)에 디스크립터를 작성한다.
도 5에서 설명한 바와 같이, 디스크립터는 CPU(20, 22)가 DMA 엔진(28-1, 28-2)에 DMA 전송 지시를 부여하기 위한 명령이며, 커맨드 필드, 인터럽트 제어 필드, 전송원 메모리 어드레스, 전송처 메모리 어드레스, 전송 데이터 바이트 길이, 체크용 Block-ID 초기값, 생성용 Block-ID 초기값, 캐리 정보, 디스크립터 포인터를 갖는다.
도 4 및 도 6에서 설명한 바와 같이, DMA 엔진(28-1, 28-2)은 도 6과 동일한 구성을 갖고, 디스크립터 베이스 어드레스 레지스터(48)에 디스크립터 영역의 선두 어드레스를 기록하며, 디스크립터 탑 포인터 레지스터(44)와 디스크립터 보텀 포인터 레지스터(46)를 갖는다. 이들 레지스터는 각각, CPU가 얼마 만큼의 디스크립터를 디스크립터 영역에 준비했는지, DMA 엔진이 얼마 만큼의 디스크립터의 실행을 끝냈는지를 나타낸다.
또, DMA 엔진(28-1, 28-2)은 디스크립터를 판독하고, 해석하여, 지정된 데이터 전송을 완료하면, 디스크립터 보텀 포인터 레지스터(46)를 「1」씩 올린다.
이 실시예에서는, 미러링을 위한 DMA 전송에 도 5 및 도 6의 체크 기구를 부 여하고 있다. 즉, 미러링 동작은 데이터의 신뢰성을 높이기 위해서 이루어지는 것이기 때문에, 그 사이에 데이터가 파괴되는 일이 있어서는 안 된다.
이 때문에, 스토리지 장치는 상기에 나타낸 바와 같이 데이터에 대하여 체크 코드를 부가함으로써 보장하는 것이 보통이며, 또 캐쉬 메모리 자신도 데이터에 대하여 ECC 코드를 갖고, 메모리를 구성하는 DRAM 소자의 이상이나 메모리 컨트롤러와 DRAM 사이의 데이터 패스(path)의 이상으로 데이터가 파괴된다고 검출하여, 미러링을 중지한다.
한편, 이 DMA 엔진에 의한 미러링의 동작에서는, 데이터는 상기한 체크 코드와 ECC에 의해서 보호되지만, 디스크립터의 보호가 충분하지 않기 때문에, 예컨대, 메모리 컨트롤러와 메모리 사이의 어드레스선에 고장이 발생한 경우에, CPU가 틀린 어드레스에 디스크립터를 기록하거나, DMA 엔진이 틀린 어드레스로부터 디스크립터를 판독해 버릴 가능성이 있다.
이 경우, 본래의 데이터와는 다른 데이터가 별도의 캐쉬 메모리에 기록되거나, 캐쉬 메모리의 원래 기록하고 싶은 것과는 다른 어드레스에 데이터가 미러링되기도 하여, 결과적으로 정확하게 데이터가 미러링되지 않아, 캐쉬 상의 데이터가 보장되지 않게 되어 버린다.
이 때문에, 미러링의 DMA 전송에서도, 도 5 내지 도 6에서 설명한 디스크립터의 이상 검출 기능이 정확한 미러링에 유효하다. 즉, CPU는 디스크립터를 작성할 때에, 디스크립터 내의 미리 결정된 일부에 그 디스크립터를 저장하는 포인터 값과 캐리 정보를 기록하고, DMA 엔진이 디스크립터를 판독할 때에, 그 값이 옳은지의 여부를 확인한다.
이에 따라, CPU가 디스크립터를 기록할 때에, 메모리 컨트롤러와 메모리 사이의 어드레스에 고장이 일어난 경우는, 원래 갱신되어야 하는 캐리 정보가 갱신되어 있지 않기 때문에, DMA 엔진이 이 디스크립터를 판독할 때에 부당한 것으로서 검출할 수 있다.
또한, DMA 엔진이 디스크립터를 판독할 때에, 어드레스에 고장이 일어난 경우는, 디스크립터 내의 포인터 정보가 판독하고자 한 포인터와 일치하지 않기 때문에, 판독한 디스크립터를 이상한 것으로 검출할 수 있다. 이와 같이 하여, 디스크립터의 기록, 판독의 어느 쪽의 경우에 있어서도, 어드레스 고장(어드레스선의 단선이나 어드레스선의 드라이버 장해 등)에 기인한 데이터의 파괴를 막을 수 있다.
즉, 이 실시예에 따르면, 캐쉬 메모리에 저장되는 데이터의 미러링을 행할 때에, DMA가 부당한 디스크립터를 사용하여 데이터를 전송하는 것을 막을 수 있어, 장치의 신뢰성을 높이는 효과가 있다.
[다른 실시예]
한편, 본 발명은 전술한 실시예에 한정되는 것이 아니라, 본 발명의 취지를 일탈하지 않는 범위에서 여러 가지 변형하여 실시할 수 있다. 예컨대, 전술한 실시예에서는, 데이터를 유지하는 기억부로서 자기 디스크 장치를 예로 들어 설명했지만, 본 발명은 이것에 한정되는 것이 아니라, 기억부에 있어서의 기억 매체는 광 디스크, 광자기 디스크 등에도 적용할 수 있다.
또한, 전술한 제1 실시예에서는, 채널 어댑터로부터 제어 모듈로의 라이트 데이터의 DMA 전송으로 설명했지만, 리드 데이터의 DMA 전송이나, 미러링의 DMA 전송에도 적용할 수 있다.
또한, 각 구성 유닛(디스크 장치, 호스트 컴퓨터, 제어 모듈, 캐쉬 매니저, 채널 어댑터, 디스크 어댑터, DMA 엔진)의 수 혹은 이들 각 유닛이 갖는 포트의 수는 본 발명에 있어서 한정되는 것이 아니라, 필요에 따라서 적절하게 변경, 조합하여 구성하더라도 좋다.
게다가, DMA 전송 회로는 전술한 디스크 어레이 장치에의 적용을 설명했지만, 다른 데이터 처리 장치에도 적용할 수 있으며, 대상으로 하는 메모리도 캐쉬 메모리에 한정되지 않는다.
(부기 1) 데이터 처리 유닛이 기록한 DMA 전송 내용을 나타내는 디스크립터를 판독하고, 메모리로부터 디스크립터로 정의된 어드레스의 데이터를 판독하여, 전송하는 DMA 회로에 있어서, 상기 메모리에 상기 데이터 처리 유닛이 기록한 복수의 디스크립터의 탑 포인터와 보텀 포인터를 저장하는 제1 및 제2 레지스터와, 상기 보텀 포인터가 나타내는 상기 메모리의 디스크립터를 판독하고, 해석하여, 상기 메모리의 상기 디스크립터로 지정된 어드레스의 데이터를 판독하여, 전송하는 전송 회로와, 상기 판독한 디스크립터에 포함되는 디스크립터 포인터와 상기 보텀 포인터를 비교하여, 상기 전송 회로의 전송 동작을 제어하기 위한 비교 회로를 포함하는 것을 특징으로 하는 DMA 회로.
(부기 2) 상기 전송 회로는 어드레스선과 데이터선이 분리된 상기 메모리를 액세스하는 것을 특징으로 하는 부기 1의 DMA 회로.
(부기 3) 상기 전송 회로는 상기 비교 회로의 비교 결과가 양호하지 않을 때는 상기 메모리의 상기 디스크립터로 지정된 어드레스의 데이터의 판독 동작을 중지하는 것을 특징으로 하는 부기 1의 DMA 회로.
(부기 4) 상기 전송 회로는 하나의 상기 디스크립터의 판독, 해석에 의한 데이터 전송을 완료한 후에, 상기 보텀 포인터를 저장하는 제2 레지스터를 갱신하는 것을 특징으로 하는 부기 1의 DMA 회로.
(부기 5) 상기 제1 레지스터의 탑 포인터와 상기 제2 레지스터의 보텀 포인터를 비교하는 제2 비교 회로를 갖고, 상기 전송 회로는 상기 제2 비교 회로의 비교 결과에 따라 지정된 DMA 전송을 종료하는 것을 특징으로 하는 부기 4의 DMA 회로.
(부기 6) 상기 판독한 디스크립터를 저장하는 제3 레지스터를 더 포함하고, 상기 비교 회로는 상기 제3 레지스터의 상기 판독한 디스크립터에 포함되는 디스크립터 포인터와 상기 제2 레지스터의 상기 보텀 포인터를 비교하는 것을 특징으로 하는 부기 1의 DMA 회로.
(부기 7) 상기 메모리의 디스크립터 영역의 베이스 위치를 나타내는 베이스 포인터를 저장하는 제4 레지스터를 더 포함하고, 상기 전송 회로는 상기 제2 레지스터의 상기 보텀 포인터와 상기 제4 레지스터의 베이스 포인터의 가산치가 나타내는 상기 메모리의 디스크립터를 판독하는 것을 특징으로 하는 부기 1의 DMA 회로.
(부기 8) 상기 전송 회로는 상기 메모리에 디스크립터의 판독을 요구하는 디스크립터 판독 제어 회로와, 상기 메모리에 상기 판독한 디스크립터에 따른 데이터 의 판독을 요구하는 데이터 전송 회로를 갖고, 상기 디스크립터 판독 제어 회로는 상기 비교 회로의 비교 결과에 따라 상기 데이터 전송 회로의 판독 요구를 제어하는 것을 특징으로 하는 부기 1의 DMA 회로.
(부기 9) 상기 디스크립터 판독 제어 회로는 상기 보텀 포인터가 나타내는 상기 메모리의 디스크립터를 요구하고, 상기 데이터 전송 회로는 상기 판독한 디스크립터를 해석하고, 상기 메모리의 상기 디스크립터로 지정된 어드레스의 데이터를 판독하여, 전송하는 것을 특징으로 하는 부기 8의 DMA 회로.
(부기 10) 상기 판독한 디스크립터를 저장하는 제3 레지스터를 더 포함하고, 상기 비교 회로는 상기 제3 레지스터의 상기 판독한 디스크립터에 포함되는 디스크립터 포인터와 상기 제2 레지스터의 상기 보텀 포인터를 비교하고, 상기 데이터 전송 회로는 상기 디스크립터 판독 회로의 전송 허가에 따라 상기 제3 레지스터의 상기 디스크립터를 해석하고, 상기 메모리의 상기 디스크립터로 지정된 어드레스의 데이터를 판독하여, 전송하는 것을 특징으로 하는 부기 8의 DMA 회로.
(부기 11) 복수의 디스크 장치와, 상위로부터의 요구에 따라 상기 디스크 장치의 데이터의 리드/라이트를 행하는 제어 유닛을 포함하고, 상기 제어 유닛은, 데이터 처리 유닛과, 상기 디스크 장치를 위한 데이터를 저장하는 캐쉬 메모리와, 상기 데이터 처리 유닛이 기록한 DMA 전송 내용을 나타내는 디스크립터를 판독하고, 상기 캐쉬 메모리로부터 디스크립터로 정의된 어드레스의 데이터를 판독하여, 전송하는 DMA 회로를 포함하며, 상기 DMA 회로는, 상기 캐쉬 메모리에 상기 데이터 처리 유닛이 기록한 복수의 디스크립터의 탑 포인터와 보텀 포인터를 저장하는 제1 및 제2 레지스터와, 상기 보텀 포인터가 나타내는 상기 캐쉬 메모리의 디스크립터를 판독하고, 해석하여, 상기 캐쉬 메모리의 상기 디스크립터로 지정된 어드레스의 데이터를 판독하여, 전송하는 전송 회로와, 상기 판독한 디스크립터에 포함되는 디스크립터 포인터와 상기 보텀 포인터를 비교하여, 상기 전송 회로의 전송 동작을 제어하기 위한 비교 회로를 포함하는 것을 특징으로 하는 디스크 어레이 장치.
(부기 12) 상기 전송 회로는 어드레스선과 데이터선이 분리된 상기 캐쉬 메모리를 액세스하는 것을 특징으로 하는 부기 11의 디스크 어레이 장치.
(부기 13) 상기 전송 회로는 상기 비교 회로의 비교 결과가 양호하지 않을 때는 상기 캐쉬 메모리의 상기 디스크립터로 지정된 어드레스의 데이터의 판독 동작을 중지하는 것을 특징으로 하는 부기 11의 디스크 어레이 장치.
(부기 14) 상기 전송 회로는, 하나의 상기 디스크립터의 판독, 해석에 의한 데이터 전송을 완료한 후에, 상기 보텀 포인터를 저장하는 제2 레지스터를 갱신하는 것을 특징으로 하는 부기 11의 디스크 어레이 장치.
(부기 15) 상기 제1 레지스터의 탑 포인터와 상기 제2 레지스터의 보텀 포인터를 비교하는 제2 비교 회로를 갖고, 상기 전송 회로는 상기 제2 비교 회로의 비교 결과에 따라 지정된 DMA 전송을 종료하는 것을 특징으로 하는 부기 11의 디스크 어레이 장치.
(부기 16) 상기 판독한 디스크립터를 저장하는 제3 레지스터를 더 포함하고, 상기 비교 회로는 상기 제3 레지스터의 상기 판독한 디스크립터에 포함되는 디스크립터 포인터와 상기 제2 레지스터의 상기 보텀 포인터를 비교하는 것을 특징으로 하는 부기 11의 디스크 어레이 장치.
(부기 17) 상기 캐쉬 메모리의 디스크립터 영역의 베이스 위치를 나타내는 베이스 포인터를 저장하는 제4 레지스터를 더 포함하고, 상기 전송 회로는 상기 제2 레지스터의 상기 보텀 포인터와 상기 제4 레지스터의 베이스 포인터의 가산치가 나타내는 상기 캐쉬 메모리의 디스크립터를 판독하는 것을 특징으로 하는 부기 11의 디스크 어레이 장치.
(부기 18) 상기 전송 회로는 상기 캐쉬 메모리에 디스크립터의 판독을 요구하는 디스크립터 판독 제어 회로와, 상기 캐쉬 메모리에 상기 판독한 디스크립터에 따른 데이터의 판독을 요구하는 데이터 전송 회로를 갖고, 상기 디스크립터 판독 제어 회로는 상기 비교 회로의 비교 결과에 따라 상기 데이터 전송 회로의 판독 요구를 제어하는 것을 특징으로 하는 부기 11의 디스크 어레이 장치.
(부기 19) 상기 제어 유닛은 상기 상위와 통신하기 위한 채널 어댑터와, 상기 디스크 장치의 데이터의 일부를 저장하는 캐쉬 메모리를 갖는 제어 회로와, 상기 디스크 장치와 통신하는 디바이스 어댑터를 갖고, 상기 DMA 회로는 상기 채널 어댑터의 상기 캐쉬 메모리와 상기 제어 회로의 상기 캐쉬 메모리 사이에서 상기 DMA 전송하는 것을 특징으로 하는 부기 11의 디스크 어레이 장치.
(부기 20) 상기 상위와 통신하기 위한 채널 어댑터와, 상기 디스크 장치의 데이터의 일부를 저장하는 캐쉬 메모리를 갖는 제어 회로와, 상기 디스크 장치와 통신하는 디바이스 어댑터를 갖는 상기 제어 유닛을 복수 갖고, 상기 DMA 회로는 하나의 상기 제어 유닛의 상기 캐쉬 메모리와 다른 상기 제어 유닛의 상기 캐쉬 메 모리 사이에서 상기 DMA 전송에 의한 미러링을 하는 것을 특징으로 하는 부기 11의 디스크 어레이 장치.
데이터 처리 유닛이 디스크립터를 작성할 때에, 디스크립터 내의 미리 결정된 일부에 그 디스크립터를 저장하는 포인터를 기록하여, DMA 엔진이 디스크립터를 판독할 때에, DMA 엔진이 그 값이 옳은지의 여부를 확인하기 때문에, 디스크립터의 기록, 판독의 어느 쪽의 경우에 있어서도, 어드레스 고장에 기인하는 데이터의 파괴를 막을 수 있다. 특히, 메모리가 어드레스선과 데이터선이 분리되어 있지만, 어드레스 장해를 검출하여, 디스크 어레이 장치의 미러링 처리나 데이터 전송 처리에서의 전송 데이터의 오류를 방지할 수 있어, 신뢰성이 높은 시스템을 구축할 수 있다.
본 발명에서는, 데이터 처리 유닛이 디스크립터를 작성할 때에, 디스크립터 내의 미리 결정된 일부에 그 디스크립터를 저장하는 포인터를 기록하여, DMA 엔진이 디스크립터를 판독할 때에, DMA 엔진이 그 값이 옳은지의 여부를 확인한다.
이에 따라, 데이터 처리 유닛이 디스크립터를 기록할 때에, 메모리와 사이의 어드레스에 장해가 일어난 경우나, DMA 엔진이 디스크립터를 판독할 때에, 어드레스에 고장이 일어난 경우는, 디스크립터 내의 포인터 정보가 판독하려고 한 포인터와 일치하지 않기 때문에, 판독한 디스크립터를 이상한 것으로 검출할 수 있다.
이와 같이 하여, 디스크립터의 기록, 판독의 어느 쪽의 경우에 있어서도, 어드레스 고장에 기인하는 데이터의 파괴를 막을 수 있다. 특히, 메모리가 어드레스 선과 데이터선이 분리되어 있지만, 어드레스 장해를 검출하여, 디스크 어레이 장치의 미러링 처리나 데이터 전송 처리에서의 전송 데이터의 오류를 방지할 수 있어, 신뢰성이 높은 시스템을 구축할 수 있다.

Claims (5)

  1. 데이터 처리 유닛이 기록한 DMA 전송 내용을 나타내는 디스크립터를 판독하고, 메모리로부터 디스크립터로 정의된 어드레스의 데이터를 판독하여, 전송하는 DMA 회로에 있어서,
    상기 메모리에 상기 데이터 처리 유닛이 기록한 복수의 디스크립터의 탑 포인터와 보텀 포인터를 저장하는 제1 및 제2 레지스터와,
    상기 메모리와, 분리된 어드레스선과 데이터 선으로 접속되고, 상기 보텀 포인터가 나타내는 상기 메모리의 디스크립터를 판독하고, 해석하여, 상기 메모리의 상기 디스크립터로 지정된 어드레스의 데이터를 판독하여, 전송함과 동시에, 하나의 상기 디스크립터의 판독, 해석에 의한 데이터 전송을 완료한 후에, 상기 보텀 포인터를 저장하는 제2 레지스터를 갱신하는 전송 회로와,
    상기 판독한 디스크립터에 포함되는 디스크립터 포인터와 상기 보텀 포인터를 비교하여, 상기 전송 회로의 전송 동작을 제어하기 위한 비교 회로
    를 포함하는 것을 특징으로 하는 DMA 회로.
  2. 제1항에 있어서, 상기 메모리의 디스크립터 영역의 베이스 위치를 나타내는 베이스 포인터를 저장하는 제4 레지스터를 더 포함하고, 상기 전송 회로는 상기 제2 레지스터의 상기 보텀 포인터와 상기 제4 레지스터의 베이스 포인터의 가산치가 나타내는 상기 메모리의 디스크립터를 판독하는 것을 특징으로 하는 DMA 회로.
  3. 제1항에 있어서, 상기 전송 회로는 상기 비교 회로의 비교 결과가 양호하지 않을 때는 상기 메모리의 상기 디스크립터로 지정된 어드레스의 데이터의 판독 동작을 중지하는 것을 특징으로 하는 DMA 회로.
  4. 복수의 디스크 장치와,
    상위로부터의 요구에 따라 상기 디스크 장치의 데이터의 리드/라이트를 행하는 제어 유닛
    을 포함하고,
    상기 제어 유닛은,
    데이터 처리 유닛과,
    상기 디스크 장치를 위한 데이터를 저장하는 캐쉬 메모리와,
    상기 데이터 처리 유닛이 기록한 DMA 전송 내용을 나타내는 디스크립터를 판독하고, 상기 캐쉬 메모리로부터 디스크립터로 정의된 어드레스의 데이터를 판독하여, 전송하는 DMA 회로를 포함하며,
    상기 DMA 회로는,
    상기 캐쉬 메모리에 상기 데이터 처리 유닛이 기록한 복수의 디스크립터의 탑 포인터와 보텀 포인터를 저장하는 제1 및 제2 레지스터와,
    상기 보텀 포인터가 나타내는 상기 캐쉬 메모리의 디스크립터를 판독하고, 해석하여, 상기 캐쉬 메모리의 상기 디스크립터로 지정된 어드레스의 데이터를 판독하여, 전송하는 전송 회로와,
    상기 판독한 디스크립터에 포함되는 디스크립터 포인터와 상기 보텀 포인터를 비교하여, 상기 전송 회로의 전송 동작을 제어하기 위한 비교 회로를 포함하는 것을 특징으로 하는 디스크 어레이 장치.
  5. 제4항에 있어서, 상기 전송 회로는 어드레스선과 데이터선이 분리된 상기 캐쉬 메모리를 액세스하는 것을 특징으로 하는 디스크 어레이 장치.
KR1020050054158A 2004-12-24 2005-06-22 Dma 회로 및 이것을 이용한 디스크 어레이 장치 KR100708567B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2004-00372441 2004-12-24
JP2004372441A JP4390694B2 (ja) 2004-12-24 2004-12-24 Dma回路及びこれを用いたディスクアレイ装置

Publications (2)

Publication Number Publication Date
KR20060073420A KR20060073420A (ko) 2006-06-28
KR100708567B1 true KR100708567B1 (ko) 2007-04-19

Family

ID=36613089

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050054158A KR100708567B1 (ko) 2004-12-24 2005-06-22 Dma 회로 및 이것을 이용한 디스크 어레이 장치

Country Status (4)

Country Link
US (1) US7552249B2 (ko)
JP (1) JP4390694B2 (ko)
KR (1) KR100708567B1 (ko)
CN (1) CN100474278C (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007183692A (ja) * 2005-12-29 2007-07-19 Fujitsu Ltd データ処理装置
JP4362135B2 (ja) 2007-02-13 2009-11-11 富士通株式会社 データ転送装置およびデータ転送方法
TWI465905B (zh) * 2010-09-22 2014-12-21 Toshiba Kk 記憶體系統、主機控制器、及直接記憶體存取之控制方法
US10353633B2 (en) * 2013-12-19 2019-07-16 Sony Interactive Entertainment LLC Mass storage virtualization for cloud computing
CN110888675B (zh) * 2018-09-11 2021-04-06 深圳云天励飞技术有限公司 硬件系统和电子设备
FR3094122A1 (fr) * 2019-03-22 2020-09-25 Stmicroelectronics (Grenoble 2) Sas Dispositif électronique de traitement d’images
JP7476733B2 (ja) * 2020-09-07 2024-05-01 オムロン株式会社 通信制御機器および通信制御機器の制御方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980081340A (ko) * 1997-04-16 1998-11-25 가나이츠토무 데이타전송제어장치, 마이크로컴퓨터 및 데이타처리시스템
KR0182709B1 (ko) * 1996-04-19 1999-05-15 유기범 교환기에 있어서 프로세서간 통신방법
JP2001229120A (ja) * 2000-02-18 2001-08-24 Sharp Corp チェーン式dmaの処理誤り検出方法及びdmaコントローラ

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63211032A (ja) 1987-02-27 1988-09-01 Nippon Telegr & Teleph Corp <Ntt> 共通資源制御方式
JPH0358217A (ja) 1989-07-27 1991-03-13 Nec Corp 電子ディスクサブシステム
TWI226546B (en) * 2002-06-18 2005-01-11 Via Tech Inc Method for checking address of data to be transferred in DMA mode and DMA controller
CN1204500C (zh) 2002-06-27 2005-06-01 威盛电子股份有限公司 直接存储器存取控制器及直接存储器存取的控制方法
JP2004110159A (ja) 2002-09-13 2004-04-08 Ricoh Co Ltd データ転送制御装置
CN1296845C (zh) 2003-01-24 2007-01-24 华为技术有限公司 一种磁盘存储系统
US7659904B2 (en) * 2003-04-07 2010-02-09 Ati Technologies Ulc System and method for processing high priority data elements
JP4371724B2 (ja) * 2003-07-03 2009-11-25 株式会社日立製作所 記憶システム及び記憶装置システム
US20050114561A1 (en) * 2003-11-24 2005-05-26 Ho-Keng Lu Method for performing DMA transfers with dynamic descriptor structure

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0182709B1 (ko) * 1996-04-19 1999-05-15 유기범 교환기에 있어서 프로세서간 통신방법
KR19980081340A (ko) * 1997-04-16 1998-11-25 가나이츠토무 데이타전송제어장치, 마이크로컴퓨터 및 데이타처리시스템
JP2001229120A (ja) * 2000-02-18 2001-08-24 Sharp Corp チェーン式dmaの処理誤り検出方法及びdmaコントローラ

Also Published As

Publication number Publication date
US20060143329A1 (en) 2006-06-29
JP4390694B2 (ja) 2009-12-24
JP2006178795A (ja) 2006-07-06
CN1794213A (zh) 2006-06-28
CN100474278C (zh) 2009-04-01
KR20060073420A (ko) 2006-06-28
US7552249B2 (en) 2009-06-23

Similar Documents

Publication Publication Date Title
US7590884B2 (en) Storage system, storage control device, and storage control method detecting read error response and performing retry read access to determine whether response includes an error or is valid
US6760814B2 (en) Methods and apparatus for loading CRC values into a CRC cache in a storage controller
TWI242780B (en) System and method for self-testing and repair of memory modules
US7606971B2 (en) Storage control apparatus and external storage apparatus
JP7121875B1 (ja) パーシステントメモリシステム等のデータ完全性
KR100708567B1 (ko) Dma 회로 및 이것을 이용한 디스크 어레이 장치
TWI498913B (zh) 非ecc組件中之ecc實作
US6981171B2 (en) Data storage array employing block verification information to invoke initialization procedures
US5937174A (en) Scalable hierarchial memory structure for high data bandwidth raid applications
KR100640037B1 (ko) 파일 제어 시스템 및 파일 제어 장치
US7475279B2 (en) Data storage system, data storage control device, and write error diagnosis method for disks thereof
EP1703400B1 (en) Dual storage apparatus and control method for the dual storage apparatus
JP4322870B2 (ja) Raid装置、raid制御方法、及びraid制御プログラム
US7543179B2 (en) Error management topologies
US7293138B1 (en) Method and apparatus for raid on memory
US6988151B2 (en) Storage control device with a plurality of channel control sections
US20130262398A1 (en) Scatter gather list for data integrity
JP2012507784A (ja) 独立ディスク冗長アレイ(raid)の書き込みキャッシュサブアセンブリ
US7921265B2 (en) Data access method, channel adapter, and data access control device
US6901551B1 (en) Method and apparatus for protection of data utilizing CRC
US7353328B2 (en) Memory testing
US20150154073A1 (en) Storage control apparatus and storage control method
KR19990074053A (ko) 아타피(아이디이) 방식의 레이드 컨트롤러
JP2003280981A (ja) メモリコントローラ

Legal Events

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

Payment date: 20130321

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140319

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee