KR20100132899A - 동시의 중간 프록시 직접 메모리 액세스 - Google Patents

동시의 중간 프록시 직접 메모리 액세스 Download PDF

Info

Publication number
KR20100132899A
KR20100132899A KR1020090110765A KR20090110765A KR20100132899A KR 20100132899 A KR20100132899 A KR 20100132899A KR 1020090110765 A KR1020090110765 A KR 1020090110765A KR 20090110765 A KR20090110765 A KR 20090110765A KR 20100132899 A KR20100132899 A KR 20100132899A
Authority
KR
South Korea
Prior art keywords
data
block
dma
processor
address space
Prior art date
Application number
KR1020090110765A
Other languages
English (en)
Inventor
브렛 에스. 웨버
티모시 이. 호글런드
모하마드 엘-바탈
Original Assignee
엘에스아이 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘에스아이 코포레이션 filed Critical 엘에스아이 코포레이션
Publication of KR20100132899A publication Critical patent/KR20100132899A/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Bus Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

DMA 데이터를 주변 장치에서 하드웨어 보조 기능 및 프로세서 메모리로 동시에 전송하는 방법이 개시된다. 제 1 DMA 전송은 데이터를 주변 장치에서 주변 DMA 엔진에 전송하도록 구성된다. 데이터를 수신하면서, DMA 엔진은 이러한 데이터를 프로세서 메모리로 동시에 전송한다. DMA 엔진은 또한 데이터의 사본을 하드웨어 보조 기능에 전송한다. DMA 엔진은 또한, 사본을 하드웨어 보조 기능에 전송하면서 데이터를 프로세서 메모리에서 주변 장치에 동시에 전송할 수 있다.
Figure P1020090110765
직접 메모리 액세스(DMA), 주변 메모리 어드레스 공간, PCI-익스프레스 채널, RAID 저장 시스템, 프로세서 메모리 어드레스 공간

Description

동시의 중간 프록시 직접 메모리 액세스{Simultaneous intermediate proxy direct memory access}
본 발명은 동시의 중간 프록시 직접 메모리 액세스에 관한 것이다.
대용량 저장 시스템들은 사용자 요구들을 만족시키기 위해 증가된 저장 용량들을 계속하여 제공한다. 사진 및 영화 저장, 및 사진 및 영화 공유는, 더욱 더 큰 저장 시스템들에 대한 요구의 성장을 자극하는 애플리케이션들의 예들이다.
이러한 증가하는 요구들에 대한 해결책은 다중의 저렴한 디스크들의 어레이들을 이용하는 것이다. 이러한 어레이들은 임의의 데이터 손실 없이 리던던시(redundancy) 및 에러 복구를 제공하는 방법들로 구성될 수 있다. 이러한 어레이들은 또한, 데이터가 다중 디스크 드라이브들에 동시에 판독 또는 기록되도록 허용함으로써 판독 및 기록 성능을 증가시키도록 구성될 수 있다. 이러한 어레이들은 또한, 상기 어레이의 저장 서비스들을 중지하지 않고 실패한 디스크가 대체되도록 허용하는 "핫-스와핑(hot-swapping)"을 허용하도록 구성될 수 있다. 임의의 리던던시가 제공되든지 아니든지 간에, 이러한 어레이들은 일반적으로 독립 디스크들의 리던던트 어레이들(또는 보다 일반적으로 약어 RAID)로서 지칭된다. 버클리 소재의 캘리포니아 대학교의 David A. Patterson, 그 외 저자의 명칭이 "A Case for Redundant Arrays of Inexpensive Disks(RAID)"인 1987 공보는 RAID 기술의 기본 개념들 및 레벨들을 논의하고 있다.
RAID 저장 시스템은, 통상적으로 저장 어레이를 관리하는 상세들(details)로부터 사용자 또는 호스트 시스템을 보호하는 제어기를 활용한다. 제어기는 저장 어레이를 하나 이상의 디스크 드라이브들(또는 볼륨들)로서 보이게 한다. 이것은, 특정 볼륨에 대한 데이터(또는 예비 데이터)가 다중 디스크 드라이브들에 걸쳐 분포될 수 있다는 사실에도 불구하고 성취될 수 있다.
따라서, 본 발명의 실시예는 데이터를 전송하는 방법을 포함하고, 상기 방법은: 제 1 블록의 데이터를 주변 장치에서 주변 메모리 어드레스 공간의 어드레스 범위로 전송하는 단계; 상기 제 1 블록의 데이터 전송과 동시에, 상기 제 1 블록의 데이터를 프로세서 메모리 어드레스 공간의 어드레스 범위로 전송하는 단계; 및 상기 제 1 블록의 데이터를 하드웨어 기능으로 전송하는 단계를 포함한다.
따라서, 본 발명의 실시예는 직접 메모리 액세스(direct memory access; DMA) 데이터를 하드웨어 기능으로 미러링하는 방법을 더 포함하고, 상기 방법은: 제 1 블록의 데이터를 주변 장치에서 주변 메모리 어드레스 공간으로 전송하도록 제 1 DMA 전송을 구성하는 단계; 상기 제 1 DMA 전송과 동시에 발생하도록 제 2 DMA 전송을 구성하는 단계로서, 상기 제 2 DMA 전송은 상기 제 1 블록의 데이터를 상기 주변 메모리 어드레스 공간에서 프로세서 메모리 어드레스 공간으로 전송하도록 구성되는, 상기 제 2 DMA 전송 구성 단계; 및 상기 제 1 블록의 데이터를 하드 웨어 기능으로 전송하는 단계를 포함한다.
따라서, 본 발명의 실시예는 직접 메모리 액세스(DMA) 데이터를 하드웨어 기능으로 미러링하기 위한 명령들을 저장하는 컴퓨터 판독 가능한 매체를 더 포함하고, 상기 명령이 컴퓨터에 의해 실행될 때: 제 1 블록의 데이터를 주변 장치에서 주변 메모리 어드레스 공간으로 전송하기 위해 제 1 DMA 전송을 구성하고; 상기 제 1 DMA 전송과 동시에 발생시키기 위해 제 2 DMA 전송을 구성하고, 상기 제 2 DMA 전송은 상기 제 1 블록의 데이터를 상기 주변 메모리 어드레스 공간에서 프로세서 메모리 어드레스 공간으로 전송하도록 구성되고; 상기 제 1 블록의 데이터를 하드웨어 기능으로 전송하도록 컴퓨터에 적어도 지시한다.
본 발명은 DMA 데이터를 주변 장치에서 하드웨어 보조 기능 및 프로세서 메모리로 동시에 전송하는 방법을 제공한다.
도 1은 동시의 중간 프록시 DMA를 수행하는 시스템의 블록이다. 도 1에서, 직접 메모리 액세스(direct memory access; DMA) 시스템(100)은 프로세서(110), 프로세서 RAM(111), 프로세서 칩셋(112), DMA 엔진(120), 미러 엔진(121), RAID 엔진(122), 정규 표현(regular expression; regex) 엔진(123), 해시 엔진(124), 호스트 인터페이스(125), 디스크 드라이브(130), 및 디스크 드라이브(131)를 포함한다. 프로세서(110)는 프로세서 RAM(111)에 동작 가능하게 결합된다. 프로세서(110)는 프로세서 칩셋(112)에 동작 가능하게 결합된다. 프로세서 칩셋(112)은 PCI-익스프 레스(PCIe) 인터페이스(113)를 포함한다. 프로세서 칩셋(112)은 디스크 드라이브들(130-131)에 동작 가능하게 결합된다.
PCI-익스프레스 인터페이스(113)는 호스트 인터페이스(125)에 동작 가능하게 결합된다. PCI-익스프레스 인터페이스(113)는 DMA 엔진(120)에 동작 가능하게 결합된다. DMA 엔진(120)은 미러 엔진(121), RAID 엔진(122), regex 엔진(123), 및 해시 엔진(124)에 동작 가능하게 결합된다.
프로세서(110), 프로세서 RAM(111), 및 프로세서 칩셋(112)은 표준 마더보드(101) 상에 포함될 수 있다. 따라서, DMA 엔진(120), 미러 엔진(121), RAID 엔진(122), regex 엔진(123), 해시 엔진(124), 호스트 인터페이스(125), 및 디스크 드라이브들(130-131)은 마더보드(101)에 플러그 인(plug in)되는 주변 장치들 또는 호스트 어댑터들로서 고려될 수 있다. 마더보드(101)가 산업 표준 마더보드일 수 있기 때문에, 이는 맞춤 마더보드에 비교하여 상대적으로 저렴할 수 있다.
실시예에서, 호스트 인터페이스(125)는, DMA 시스템(100)으로부터의 데이터를 전송/수신하는 프로세서 또는 컴퓨터 시스템에 결합될 수 있다. 예를 들면, DMA 시스템(100)이 RAID 저장 어레이로서 구성되면, 호스트 인터페이스(125)는 디스크 드라이브들(130-131)로부터의 데이터를 전송/수신하는 컴퓨터 시스템에 결합될 수 있다. DMA 시스템(100)은 하나 이상의 논리 유닛들을 이러한 컴퓨터 시스템에 프로젝팅(project)할 수 있다.
실시예에서, 미러 엔진(121)은 원격 프로세서 또는 컴퓨터 시스템에 결합된다. 이러한 컴퓨터 시스템은 DMA 시스템(100)에 대한 유사한 기능성을 포함할 수 있다. 따라서, DMA 시스템(100)으로부터 판독되고, DMA 시스템(100)에 기록되거나, DMA 시스템(100)에 의해 프로세싱된 데이터는 또 다른 프로세서와 연관된 메모리로 미러링될 수 있다. 이러한 메모리는 프로세서 및/또는 다른 프로세서의 주변 어드레스 공간 내에 존재할 수 있다. RAID 엔진(122)은, 디스크 드라이브들(130-131)에 결쳐 RAID 기술들을 구현하기 위한 리던던트 데이터를 계산하는 것을 돕는 하드웨어 기능일 수 있다. regex 엔진(123)은 정규 표현 검색(regular expression searching)을 수행할 수 있다. 이러한 정규 표현 검색은 DPI(deep packet inspection) 또는 바이러스 서명 인지(virus signature recognition)와 같은 그러한 기능들을 위해 이용될 수 있다. 해시 엔진(124)은 중복 방지(de-duplication)를 돕기 위해 해시 함수를 계산할 수 있다. 다른 하드웨어 기능들은 프록시 DMA 데이터를 전송/수신하기 위해 DMA 엔진(120)에 동작 가능하게 결합될 수 있고, 따라서, 하드웨어 보조/가속 기능들을 DMA 시스템(100)에 제공한다.
실시예에서, DMA 시스템(100)이, 예를 들면, 호스트 인터페이스(125) 또는 디스크 드라이브들(130-131)로부터의 데이터를 직접 전달할 때, DMA 시스템(100)은 우선 데이터를 DMA 엔진(120)에 전송한다. DMA 엔진(120)은 데이터를 미러 엔진(121), RAID 엔진(122), regex 엔진(123), 및 해시 엔진(124) 중 하나 이상에 전송한다. DMA 엔진(120)이 데이터를 수신하는 동시에, DMA 엔진(120)은 프로세서 RAM(111)에 기록되도록 데이터를 프로세서 칩셋(112)에 전송한다. PCI-익스프레스 인터페이스(113)와 DMA 엔진(120) 간의 접속이 동시의 비직접적인 전송들을 허용하기 때문에, 이것이 가능하다. 따라서, PCI-익스프레이스 인터페이스(113)가 PCI-익 스프레스 채널을 통해 데이터를 DMA 엔진(120)에 전송하면서, DMA 엔진(120)은 또 다른 또는 동일한 PCI-익스프레스 채널을 통해 데이터를 PCI-익스프레스 인터페이스(113)에 전송할 수 있다.
도 2는 동시의 중간 프록시 DMA를 수행하는 데이터 흐름을 예시하는 블록도이다. 도 2는 디스크 드라이브(130)에서 프로세서 RAM(111) 및 RAID 엔진(122)에 데이터를 동시에 전송하는 동시의 DMA 동작의 예를 예시한다.
도 2에서, 제 1 DMA 동작은 데이터를 디스크 드라이브(130)에서 DMA 엔진(120)에 전송하도록 구성된다. 이러한 DMA 동작은 DMA 엔진(120)과 연관된 메모리 위치들에 대한 DMA 동작으로서 구성된다. 다시 말해서, DMA 엔진(120)은 메모리의 블록을 갖거나 시뮬레이팅한다. 이러한 메모리는 PCI-익스프레스 어드레스 공간 내의 주변 메모리처럼 보일 수 있다. 이러한 제 1 DMA 동작은 화살표들(201, 202, 203)에 의해 도 2에 도시된다. 화살표(201)는 디스크 드라이브(130)에서 프로세서 칩셋(112)으로의 데이터 전송을 도시한다. 화살표(202)는 PCI-익스프레스 인터페이스(113)로의 데이터 전송을 도시한다. 화살표(203)는 PCI-익스프레스 채널을 통한 PCI-익스프레스 인터페이스(113)에서 DMA 엔진(120)으로의 데이터 전송을 도시한다.
DMA 엔진(120)은 그가 수신한 데이터를 하나 이상의 하드웨어 기능들로 전송할 수 있다. 이것은, 예를 들면, DMA 엔진(120)에서 RAID 엔진(122)으로 흐르는 화살표(204)에 의해 도시된다.
제 2 DMA 동작은 데이터를 DMA 엔진(120)에서 프로세서 RAM(111)로 전송하도 록 구성된다. 이러한 DMA 동작은 프로세서(110) 및 프로세서 RAM(111)와 연관된 메모리 위치들에 대한 DMA 동작으로서 구성된다. 다시 말해서, DMA 엔진(120)은 마더보드(101) 상의 디스크 드라이브(130)에서 프로세서 RAM(111)의 블록으로의 DMA 동작을 완료하고, 이것은 프로세서(110)에 의해 직접 판독 가능 및 기록 가능하다. 제 2 DMA 동작은 화살표들(205, 206, 207)에 의해 도 2에 도시된다. 화살표(205)는, 화살표(203)를 통해 수신된 데이터가 PCI-익스프레스 채널을 통해 DMA 엔진(120)에서 PCI-익스프레스 인터페이스(113)에 전송되는 것을 도시한다. 화살표(206)는 프로세서 칩셋(112)의 나머지 부분으로의 PCI-익스프레스 인터페이스(113)의 외부의 데이터 전송을 도시한다. 화살표(207)는 프로세서(110)를 통해 프로세서 칩셋(112)에서 프로세서 RAM(111)로의 데이터 전송을 도시한다. 실시예에서, 이러한 데이터 전송은 DMA 엔진(120)에 의해 제어되는 DMA 동작이다.
도 2에 도시된 데이터 흐름들은 예시를 위한 것이라는 것은 이해되어야 한다. DMA 동작들은 데이터의 블록들을 프로세서 RAM(111)에서 DMA 엔진(120), 미러 엔진(121), RAID 엔진(122), regex 엔진(123), 해시 엔진(124), 호스트 인터페이스(125), 및 디스크 드라이브들(130-131)을 포함하는 임의의 주변 장치로 전송하도록 구성될 수 있다. 또한, DMA 엔진(120)은 미러 엔진(121), RAID 엔진(122), regex 엔진(123), 호스트 인터페이스(125), 및 해시 엔진(124) 중 하나 이상으로/으로부터 데이터를 전송 또는 수신할 수 있다. DMA 엔진(120)이 프로세서 메모리(111) 및 미러 엔진(121), RAID 엔진(122), regex 엔진(123), 해시 엔진(124), 호스트 인터페이스(125) 중 하나 이상에 데이터를 동시에 판독/기록하도록 허용하 는 다른 DMA 구성들이 가능하다.
도 3은 데이터를 전송하는 방법을 예시하는 흐름도이다. 도 3에 예시된 단계들은 DMA 시스템(100)의 하나 이상의 요소들에 의해 수행될 수 있다.
제 1 블록의 데이터는 주변 장치에서 주변 메모리 어드레스 공간(302)의 어드레스 범위로 전송된다. 예를 들면, 데이터의 블록은 호스트 인터페이스(125)에서 DMA 엔진(120)과 연관된 PCI-익스프레스 어드레스 공간의 어드레스 범위로 전송될 수 있다. 제 1 블록을 주변 메모리 어드레스 공간의 어드레스 범위로 전송하는 동시에, 제 1 블록의 데이터는 프로세서 메모리 어드레스 공간(304)의 어드레스 범위로 전송된다. 예를 들면, 제 1 블록의 데이터를 수신하는 즉시 또는 동시에, DMA 엔진(120)은 DMA 동작을 이용하여 데이터의 블록을 프로세서 RAM(111)로 전송할 수 있다. 이러한 DMA 동작은 화살표들(205, 206, 207)에 의해 도시된 데이터 흐름들을 따를 수 있다. 이러한 DMA 동작은 데이터가 블록(302)에서 수신되는 것과 같이 동일한 PCI-익스프레스 채널 상에서 수행될 수 있다.
제 1 블록의 데이터는 하드웨어 기능(306)으로 전송된다. 예를 들면, DMA 엔진(120)은 제 1 블록의 데이터를 RAID 엔진(122)으로 전송할 수 있다. 또 다른 예에서, DMA 엔진(120)은 제 1 블록의 데이터를 미러 엔진(121), RAID 엔진(122), regex 엔진(123), 해시 엔진(124), 및/또는 호스트 인터페이스(125) 중 하나 이상에 전송할 수 있다. 도 3은 주변 장치에서 프로세서 RAM(111)으로의 DMA 동작을 예시한다. DMA 엔진(120)에 의해 하드웨어 기능으로 미러링되는 프로세서 RAM(111)에서 주변 장치로의 DMA 동작이 또한 고려된다는 것이 이해되어야 한다.
도 4는 DMA 데이터를 하드웨어 기능으로 미러링하는 방법을 예시하는 흐름도이다. 도 4에 예시된 단계들은 DMA 시스템(100)의 하나 이상의 요소들에 의해 수행될 수 있다.
제 1 DMA 전송은 제 1 블록의 데이터를 주변 장치에서 주변 메모리 어드레스 공간(402)으로 전송하도록 구성된다. 예를 들면, DMA 시스템(100)은 데이터를 디스크 드라이브(130)에서 DMA 엔진(120)으로 전송하도록 DMA 전송을 구성할 수 있다. 제 2 DMA 전송은 제 1 DMA 전송(404)과 동시에 발생하도록 구성된다. 예를 들면, DMA 시스템(100)은 블록(402)에서 구성된 DMA 전송과 동시에 발생하도록 DMA 전송을 구성할 수 있다. 이러한 DMA 전송은 데이터를 DMA 엔진(120)에서 프로세서 RAM(111)로 전송할 수 있다.
제 1 블록의 데이터는 하드웨어 기능(406)으로 전송된다. 예를 들면, DMA 엔진(120)은 제 1 블록의 데이터를 RAID 엔진(122)에 전송할 수 있다. 또 다른 예에서, DMA 엔진(120)은 제 1 블록의 데이터를 미러 엔진(121), RAID 엔진(122), regex 엔진(123), 해시 엔진(124), 및/또는 호스트 인터페이스(125) 중 하나 이상에 전송할 수 있다. 이러한 전송 동작은 제 1 및/또는 제 2 DMA 동작들과 즉시 또는 동시에 발생할 수 있다.
도 5는 DMA 데이터를 하드웨어 기능으로 미러링하는 방법을 예시하는 흐름도이다. 도 5에 도시된 단계들은 DMA 시스템(100)의 하나 이상의 요소들에 의해 수행될 수 있다.
제 1 DMA 전송은 제 1 블록의 데이터를 프로세서 메모리 어드레스 공간에서 주변 메모리 어드레스 공간(502)으로 전송하도록 구성된다. 예를 들면, DMA 시스템(100)은 데이터를 프로세서 RAM(111)에서 DMA 엔진(120)으로 전송하도록 DMA 전송을 구성할 수 있다. 제 2 DMA 전송은 제 1 DMA 전송(504)과 동시에 발생하도록 구성된다. 예를 들면, DMA 시스템(100)은 블록(502)에서 구성된 DMA 전송과 동시에 발생하도록 DMA 전송을 구성할 수 있다. 이러한 DMA 전송은 데이터를 DMA 엔진(120)에서 디스크 드라이브(130), 호스트 인터페이스(125), 또는 양자 모두와 같은 주변 장치에 전송할 수 있다.
제 1 블록의 데이터는 하드웨어 기능(506)으로 전송된다. 예를 들면, DMA 엔진(120)은 제 1 블록의 데이터를 RAID 엔진(122)에 전송될 수 있다. 또 다른 예에서, DMA 엔진(120)은 제 1 블록의 데이터를 미러 엔진(121), RAID 엔진(122), regex 엔진(123), 해시 엔진(124), 및/또는 호스트 인터페이스(125) 중 하나 이상으로 전송할 수 있다. 이러한 전송 동작은 제 1 및/또는 제 2 DMA 동작들과 즉시 또는 동시에 발생할 수 있다.
상술된 시스템들, 드라이브들, 프로세서들, 엔진들, 인터페이스들, 및 기능들은 하나 이상의 컴퓨터 시스템들과 구현될 수 있거나 하나 이상의 컴퓨터 시스템들에 의해 실행될 수 있다. 상술된 방법들은 컴퓨터 판독 가능한 매체 상에 저장될 수 있다. DMA 시스템(100)의 다수의 요소들은 컴퓨터 시스템들을 포함할 수 있다. 이것은 프로세서(110), 프로세서 칩셋(112), PCI-익스프레스 인터페이스(113), DMA 엔진(120), 미러 엔진(121), RAID 엔진(122), regex 엔진(123), 해시 엔진(124), 디스크 드라이브(130) 및 디스크 드라이브(131)를 포함하지만, 이에 제한되지 않는 다.
도 6은 컴퓨터 시스템의 블록도를 예시한다. 컴퓨터 시스템(600)은 통신 인터페이스(620), 프로세싱 시스템(630), 저장 시스템(640), 및 사용자 인터페이스(660)를 포함한다. 프로세싱 시스템(630)은 저장 시스템(640)에 동작 가능하게 결합된다. 저장 시스템(640)은 소프트웨어(650) 및 데이터(670)를 저장한다. 프로세싱 시스템(630)은 통신 인터페이스(620) 및 사용자 인터페이스(660)에 동작 가능하게 결합된다. 컴퓨터 시스템(600)은 프로그래밍된 범용 컴퓨터를 포함할 수 있다. 컴퓨터 시스템(600)은 마이크로프로세서를 포함할 수 있다. 컴퓨터 시스템(600)은 프로그래밍 가능하거나 특별 목적의 회로를 포함할 수 있다. 컴퓨터 시스템(600)은 요소들(620-670)을 함께 포함하는 다중 장치들, 프로세서들, 저장 장치, 및/또는 인터페이스들 사이에 분포될 수 있다.
통신 인터페이스(620)는 네트워크 인터페이스, 모뎀, 포트, 버스, 링크, 트랜시버, 또는 다른 통신 장치를 포함할 수 있다. 통신 인터페이스(620)는 다중 통신 장치들 사이에 분포될 수 있다. 프로세싱 시스템(630)은 마이크로프로세서, 마이크로제어기, 논리 회로, 또는 다른 프로세싱 장치를 포함할 수 있다. 프로세싱 시스템(630)은 다중 프로세싱 장치들 사이에 분포될 수 있다. 사용자 인터페이스(660)는 키보드, 마우스, 음성 인식 인터페이스, 마이크로폰 및 스피커들, 그래픽 디스플레이, 터치 스크린, 또는 다른 형태의 사용자 인터페이스 장치를 포함할 수 있다. 사용자 인터페이스(660)는 다중 인터페이스 장치들 사이에 분포될 수 있다. 저장 시스템(640)은 디스크, 테이프, 집적 회로, RAM, ROM, 네트워크 저장 장 치, 서버, 또는 다른 메모리 기능을 포함할 수 있다. 저장 시스템(640)은 컴퓨터 판독 가능한 매체일 수 있다. 저장 시스템(640)은 다중 메모리 장치들 사이에 분포될 수 있다.
프로세싱 시스템(630)은 저장 시스템(640)으로부터의 소프트웨어(650)를 검색 및 실행한다. 프로세싱 시스템은 데이터(670)를 검색 및 저장할 수 있다. 프로세싱 시스템은 또한 통신 인터페이스(620)를 통해 데이터를 검색 및 저장할 수 있다. 프로세싱 시스템(630)은 실체적인 결과를 성취하기 위해 소프트웨어(650) 또는 데이터(670)를 생성 또는 변경할 수 있다. 프로세싱 시스템은 실체적인 결과를 성취하기 위해 통신 인터페이스(620) 또는 사용자 인터페이스(670)를 제어할 수 있다. 프로세싱 시스템은 통신 인터페이스(620)를 통해 원격 저장된 소프트웨어를 검색 및 실행할 수 있다.
소프트웨어(650) 및 원격 저장된 소프트웨어는 운영 시스템, 유틸리티들, 드라이버들, 네트워킹 소프트웨어, 및 컴퓨터 시스템에 의해 통상적으로 실행되는 다른 소프트웨어를 포함할 수 있다. 소프트웨어(650)는 애플리케이션 프로그램, 애플릿, 펌웨어, 또는 컴퓨터 시스템에 의해 통상적으로 실행되는 다른 형태의 기계-판독 가능한 프로세싱 명령들을 포함할 수 있다. 프로세싱 시스템(630)에 의해 실행될 때, 소프트웨어(650) 또는 원격 저장된 소프트웨어는 컴퓨터 시스템(600)이 상술된 바와 같이 동작하도록 지시할 수 있다.
본 발명의 상술된 기재는 예시 및 설명을 위해 제공되었다. 이는 속속들이 규명한 것이거나 개시된 정확한 형태로 본 발명을 제한하려고 의도된 것이 아니며, 상기 사상들을 고려하여 다른 변경들 및 변동들이 가능할 수 있다. 실시예는, 본 발명의 원리들 및 그의 실제 애플리케이션을 최상으로 설명하기 위해 선택 및 기재되었고, 이로써, 당업자들이 예상된 특정 이용에 대해 적응된 다양한 실시예들 및 다양한 변경들로 본 발명을 최상으로 활용하도록 하는 것이 가능하다. 첨부한 특허청구범위는 종래 기술에 의해 제한된 것을 제외하고 본 발명의 다른 대안적인 실시예들을 포함하도록 구성되는 것이 의도된다.
도 1은 동시의 중간 프록시 DMA를 수행하는 시스템의 블록도.
도 2는 동시의 중간 프록시 DMA를 수행하는 데이터 흐름들을 예시하는 블록도.
도 3은 데이터를 전송하는 방법을 예시하는 흐름도.
도 4는 DMA 데이터를 하드웨어 기능으로 미러링하는 방법을 예시하는 흐름도.
도 5는 DMA 데이터를 하드웨어 기능으로 미러링하는 방법을 예시하는 흐름도.
도 6은 컴퓨터 시스템의 블록도.
* 도면의 주요 부분에 대한 부호의 설명 *
100 : 직접 메모리 액세스 시스템 110 : 프로세서
111 : 프로세서 RAM 112 : 프로세서 칩셋
120 : DMA 엔진 121 : 미러 엔진
122 : RAID 엔진 123 : REGEX 엔진
124 : 해시 엔진 125 : 호스트 인터페이스
130 : 디스크 드라이브 131 : 디스크 드라이브

Claims (20)

  1. 데이터를 전송하는 방법에 있어서:
    제 1 블록의 데이터를 주변 장치에서 주변 메모리 어드레스 공간의 어드레스 범위로 전송하는 단계;
    상기 제 1 블록의 데이터 전송과 동시에, 상기 제 1 블록의 데이터를 프로세서 메모리 어드레스 공간의 어드레스 범위로 전송하는 단계; 및
    상기 제 1 블록의 데이터를 하드웨어 기능으로 전송하는 단계를 포함하는, 데이터 전송 방법.
  2. 제 1 항에 있어서,
    상기 제 1 블록의 데이터 전송 단계 및 상기 제 1 블록 전송과 동시에 전송하는 단계는 단일의 PCI-익스프레스 채널 상에서 수행되는, 데이터 전송 방법.
  3. 제 1 항에 있어서,
    상기 제 1 블록의 데이터 전송 단계 및 상기 제 1 블록 전송과 동시에 전송하는 단계는 하나 이상의 PCI-익스프레스 채널들 상에서 수행되는, 데이터 전송 방법.
  4. 제 1 항에 있어서,
    상기 프로세서 메모리 어드레스 공간은 제 1 프로세서와 연관되고,
    상기 하드웨어 기능은 상기 제 1 블록의 데이터를 제 2 프로세서와 연관된 프로세서 메모리 어드레스 공간으로 미러링(mirror)하는, 데이터 전송 방법.
  5. 제 1 항에 있어서,
    상기 하드웨어 기능은 RAID 기술을 구현하기 위해 리던던트 데이터(redundant data)를 계산하는 것을 돕는, 데이터 전송 방법.
  6. 제 1 항에 있어서,
    상기 하드웨어 기능은 정규 표현 검색(regular expression searching)을 수행하는, 데이터 전송 방법.
  7. 제 1 항에 있어서,
    상기 하드웨어 기능은 해시 함수(hash function)를 계산하는, 데이터 전송 방법.
  8. 직접 메모리 액세스(direct memory access; DMA) 데이터를 하드웨어 기능으로 미러링하는 방법에 있어서:
    제 1 블록의 데이터를 주변 장치에서 주변 메모리 어드레스 공간으로 전송하도록 제 1 DMA 전송을 구성하는 단계;
    상기 제 1 DMA 전송과 동시에 발생하도록 제 2 DMA 전송을 구성하는 단계로서, 상기 제 2 DMA 전송은 상기 제 1 블록의 데이터를 상기 주변 메모리 어드레스 공간에서 프로세서 메모리 어드레스 공간으로 전송하도록 구성되는, 상기 제 2 DMA 전송 구성 단계; 및
    상기 제 1 블록의 데이터를 하드웨어 기능으로 전송하는 단계를 포함하는, 직접 메모리 액세스(DMA) 데이터 미러링 방법.
  9. 제 8 항에 있어서,
    상기 제 1 DMA 전송 및 상기 제 2 DMA 전송은 단일의 PCI-익스프레스 채널 상에서 수행되는, 직접 메모리 액세스(DMA) 데이터 미러링 방법.
  10. 제 8 항에 있어서,
    상기 제 1 DMA 전송 및 상기 제 2 DMA 전송은 하나 이상의 PCI-익스프레스 채널들 상에서 수행되는, 직접 메모리 액세스(DMA) 데이터 미러링 방법.
  11. 제 8 항에 있어서,
    상기 프로세서 메모리 어드레스 공간은 제 1 프로세서와 연관되고, 상기 하드웨어 기능은 상기 제 1 블록의 데이터를 제 2 프로세서와 연관된 프로세서 메모리 어드레스 공간으로 미러링하는, 직접 메모리 액세스(DMA) 데이터 미러링 방법.
  12. 제 8 항에 있어서,
    상기 하드웨어 기능은 RAID 기술을 구현하기 위해 리던던트 데이터를 계산하는 것을 돕는, 직접 메모리 액세스(DMA) 데이터 미러링 방법.
  13. 제 8 항에 있어서,
    상기 하드웨어 기능은 정규 표현 검색을 수행하는, 직접 메모리 액세스(DMA) 데이터 미러링 방법.
  14. 제 8 항에 있어서,
    상기 하드웨어 기능은 해시 함수를 계산하는, 직접 메모리 액세스(DMA) 데이터 미러링 방법.
  15. 직접 메모리 액세스(DMA) 데이터를 하드웨어 기능으로 미러링하기 위한 명령들을 저장하는 컴퓨터 판독 가능한 매체에 있어서,
    상기 명령이 컴퓨터에 의해 실행될 때:
    제 1 블록의 데이터를 주변 장치에서 주변 메모리 어드레스 공간으로 전송하도록 제 1 DMA 전송을 구성하고;
    상기 제 1 DMA 전송과 동시에 발생하도록 제 2 DMA 전송을 구성하고, 상기 제 2 DMA 전송은 상기 제 1 블록의 데이터를 상기 주변 메모리 어드레스 공간에서 프로세서 메모리 어드레스 공간으로 전송하도록 구성되고;
    상기 제 1 블록의 데이터를 하드웨어 기능으로 전송하도록 상기 컴퓨터에 적어도 지시하는, 컴퓨터 판독 가능한 매체.
  16. 제 15 항에 있어서,
    상기 제 1 DMA 전송 및 상기 제 2 DMA 전송은 단일의 PCI-익스프레스 채널 상에서 수행되도록 구성되는, 컴퓨터 판독 가능한 매체.
  17. 제 15 항에 있어서,
    상기 제 1 DMA 전송 및 상기 제 2 DMA 전송은 하나 이상의 PCI-익스프레스 채널들 상에서 수행되도록 구성되는, 컴퓨터 판독 가능한 매체.
  18. 제 15 항에 있어서,
    상기 프로세서 메모리 어드레스 공간은 제 1 프로세서와 연관되고,
    상기 하드웨어 기능은 상기 제 1 블록의 데이터를 제 2 프로세서와 연관된 프로세서 메모리 어드레스 공간으로 미러링하는, 컴퓨터 판독 가능한 매체.
  19. 제 15 항에 있어서,
    상기 하드웨어 기능은 RAID 기술을 구현하기 위해 리던던트 데이터를 계산하는 것을 돕는, 컴퓨터 판독 가능한 매체.
  20. 제 15 항에 있어서,
    상기 하드웨어 기능은 정규 표현 검색을 수행하는, 컴퓨터 판독 가능한 매체.
KR1020090110765A 2009-06-10 2009-11-17 동시의 중간 프록시 직접 메모리 액세스 KR20100132899A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/482,123 2009-06-10
US12/482,123 US8260980B2 (en) 2009-06-10 2009-06-10 Simultaneous intermediate proxy direct memory access

Publications (1)

Publication Number Publication Date
KR20100132899A true KR20100132899A (ko) 2010-12-20

Family

ID=43307363

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090110765A KR20100132899A (ko) 2009-06-10 2009-11-17 동시의 중간 프록시 직접 메모리 액세스

Country Status (4)

Country Link
US (1) US8260980B2 (ko)
JP (1) JP2010287211A (ko)
KR (1) KR20100132899A (ko)
TW (1) TW201044174A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011132923A2 (ko) * 2010-04-20 2011-10-27 주식회사 태진인포텍 알에이아이디 제어 반도체 저장 장치 및 그 형성 방법
WO2011132922A2 (ko) * 2010-04-20 2011-10-27 주식회사 태진인포텍 반도체 저장장치를 위한 알에이아이디 제어기 및 그 제공 방법

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9298648B2 (en) * 2013-05-08 2016-03-29 Avago Technologies General Ip (Singapore) Pte Ltd Method and system for I/O flow management using RAID controller with DMA capabilitiy to directly send data to PCI-E devices connected to PCI-E switch
US9489151B2 (en) 2013-05-23 2016-11-08 Netapp, Inc. Systems and methods including an application server in an enclosure with a communication link to an external controller
US8949486B1 (en) * 2013-07-17 2015-02-03 Mellanox Technologies Ltd. Direct memory access to storage devices
US9727503B2 (en) 2014-03-17 2017-08-08 Mellanox Technologies, Ltd. Storage system and server
US9696942B2 (en) 2014-03-17 2017-07-04 Mellanox Technologies, Ltd. Accessing remote storage devices using a local bus protocol
US9952979B1 (en) * 2015-01-14 2018-04-24 Cavium, Inc. Methods and systems for direct memory access operations
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device
US11934333B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Storage protocol emulation in a peripheral device
US11726666B2 (en) 2021-07-11 2023-08-15 Mellanox Technologies, Ltd. Network adapter with efficient storage-protocol emulation
US12007921B2 (en) 2022-11-02 2024-06-11 Mellanox Technologies, Ltd. Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA)

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5550989A (en) * 1993-05-28 1996-08-27 International Business Machines Corporation Bridge circuit that can eliminate invalid data during information transfer between buses of different bitwidths
US5758182A (en) * 1995-05-15 1998-05-26 Nvidia Corporation DMA controller translates virtual I/O device address received directly from application program command to physical i/o device address of I/O device on device bus
US5713044A (en) * 1995-12-19 1998-01-27 Intel Corporation System for creating new group of chain descriptors by updating link value of last descriptor of group and rereading link value of the updating descriptor
US6044225A (en) * 1996-03-13 2000-03-28 Diamond Multimedia Systems, Inc. Multiple parallel digital data stream channel controller
US6748463B1 (en) * 1996-03-13 2004-06-08 Hitachi, Ltd. Information processor with snoop suppressing function, memory controller, and direct memory access processing method
US6128307A (en) * 1997-12-01 2000-10-03 Advanced Micro Devices, Inc. Programmable data flow processor for performing data transfers
US6493811B1 (en) * 1998-01-26 2002-12-10 Computer Associated Think, Inc. Intelligent controller accessed through addressable virtual space
US20030187977A1 (en) * 2001-07-24 2003-10-02 At&T Corp. System and method for monitoring a network
US7062591B2 (en) * 2001-09-28 2006-06-13 Dot Hill Systems Corp. Controller data sharing using a modular DMA architecture
JP2004005382A (ja) * 2002-03-29 2004-01-08 Fujitsu Ltd データ転送装置および方法
US7194578B2 (en) * 2003-12-08 2007-03-20 Lsi Logic Corporation Onboard indicator
US7395460B2 (en) * 2004-04-02 2008-07-01 Lsi Corporation Failed drive locator for removable disk array modules
US7484016B2 (en) * 2004-06-30 2009-01-27 Intel Corporation Apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine
US7383412B1 (en) * 2005-02-28 2008-06-03 Nvidia Corporation On-demand memory synchronization for peripheral systems with multiple parallel processors
US7743189B2 (en) * 2008-05-05 2010-06-22 International Business Machines Corporation PCI function south-side data management

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011132923A2 (ko) * 2010-04-20 2011-10-27 주식회사 태진인포텍 알에이아이디 제어 반도체 저장 장치 및 그 형성 방법
WO2011132922A2 (ko) * 2010-04-20 2011-10-27 주식회사 태진인포텍 반도체 저장장치를 위한 알에이아이디 제어기 및 그 제공 방법
WO2011132922A3 (ko) * 2010-04-20 2012-03-08 주식회사 태진인포텍 반도체 저장장치를 위한 알에이아이디 제어기 및 그 제공 방법
WO2011132923A3 (ko) * 2010-04-20 2012-05-10 주식회사 태진인포텍 알에이아이디 제어 반도체 저장 장치 및 그 형성 방법

Also Published As

Publication number Publication date
US8260980B2 (en) 2012-09-04
JP2010287211A (ja) 2010-12-24
US20100318711A1 (en) 2010-12-16
TW201044174A (en) 2010-12-16

Similar Documents

Publication Publication Date Title
KR20100132899A (ko) 동시의 중간 프록시 직접 메모리 액세스
US8074105B2 (en) High data availability SAS-based RAID system
JP6074056B2 (ja) 計算機システムおよびデータ制御方法
US7676614B2 (en) Redundant storage virtualization computer system
KR101340176B1 (ko) 스마트 스케일러블 스토리지 스위치 아키텍처
US9052829B2 (en) Methods and structure for improved I/O shipping in a clustered storage system
US9189418B2 (en) Computer system, server module, and storage module
US9361262B2 (en) Redundant storage enclosure processor (SEP) implementation for use in serial attached SCSI (SAS) environment
US20060271758A1 (en) Storage system and operation method of storage system
US8583992B2 (en) SAS-based semiconductor storage device memory disk unit
US8595397B2 (en) Storage array assist architecture
US20130132766A1 (en) Method and apparatus for failover and recovery in storage cluster solutions using embedded storage controller
JP2009053946A (ja) 二重化コントーラ構成ブロックデバイス制御装置
US9940019B2 (en) Online migration of a logical volume between storage systems
WO2005115108A2 (en) System and method for unit attention handling
US9009375B2 (en) Sharing of bypassed I/O transaction information
JPWO2012035618A1 (ja) ストレージシステム、ストレージシステムのアクセス制御方法及びコンピュータシステム
JP4640770B2 (ja) 外部の装置に接続される制御装置
US10216652B1 (en) Split target data transfer
US10318171B1 (en) Accessing fast memory in a data storage array
US8275743B1 (en) Method and apparatus for securing data volumes to a remote computer using journal volumes
US11570282B2 (en) Using high speed data transfer protocol
US11144496B2 (en) Self-configuring SSD multi-protocol support in host-less environment
US20160321198A1 (en) Control apparatus, storage apparatus and computer-readable recording medium having stored therein control program
US11983138B2 (en) Self-configuring SSD multi-protocol support in host-less environment

Legal Events

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