다이렉트 메모리 액세스
Direct memory access![]() |
다이렉트 메모리 액세스(DMA)는 컴퓨터 시스템의 기능으로, 특정 하드웨어 서브시스템이 중앙처리장치(CPU)로부터 독립적으로 메인 시스템 메모리에 액세스 할 수 있도록 합니다.
DMA를 사용하지 않으면 CPU가 프로그래밍된 입출력을 사용할 때 일반적으로 읽기 또는 쓰기 작업 전체 기간 동안 CPU가 완전히 사용되므로 다른 작업을 수행할 수 없습니다.DMA 를 사용하면, CPU 는 최초로 전송을 개시해, 전송중에 다른 조작을 실시해,[citation needed] 조작이 완료되었을 때에 최종적으로 DMA 컨트롤러(DMAC)로부터 인터럽트를 수신합니다.이 기능은 CPU가 데이터 전송 속도를 따라가지 못할 때 또는 비교적 느린 I/O 데이터 전송을 기다리는 동안 CPU가 작업을 수행해야 할 때 유용합니다.디스크 드라이브 컨트롤러, 그래픽 카드, 네트워크 카드, 사운드 카드를 포함한 많은 하드웨어 시스템에서 DMA를 사용합니다.DMA 는, 멀티 코어 프로세서의 칩내 데이터 전송에도 사용됩니다.DMA 채널이 있는 컴퓨터는 DMA 채널이 없는 컴퓨터보다 CPU 오버헤드가 훨씬 적은 장치 간에 데이터를 전송할 수 있습니다.마찬가지로 멀티코어 프로세서 내부의 처리 회로는 프로세서 시간을 차지하지 않고 로컬 메모리에서 데이터를 주고받을 수 있기 때문에 연산과 데이터 전송을 병행할 수 있습니다.
DMA 는, 메모리내의 데이터의 카피나 이동에도 사용할 수 있습니다.DMA는 대용량 복사나 산란 수집 작업 등 고가의 메모리 작업을 CPU에서 전용 DMA 엔진으로 오프로드할 수 있습니다.구현 예로는 I/O액셀러레이션테크놀로지가 있습니다.DMA는 네트워크 온 칩 및 메모리 내 컴퓨팅 아키텍처에 관심이 있습니다.
원칙
서드파티
서드파티제의 DMA라고도 불리는 표준 DMA는 DMA 컨트롤러를 사용합니다.DMA 컨트롤러는 메모리 주소를 생성하여 메모리 읽기 또는 쓰기 사이클을 시작할 수 있습니다.여기에는 CPU에서 쓰고 읽을 수 있는 여러 하드웨어 레지스터가 포함되어 있습니다.여기에는 메모리 주소 레지스터, 바이트 카운트 레지스터 및 하나 이상의 제어 레지스터가 포함됩니다.DMA 컨트롤러가 제공하는 기능에 따라서는, 이러한 제어 레지스터에 의해서, 송신원, 행선지, 전송 방향(I/O 디바이스로부터의 판독 또는 I/O 디바이스로의 기입), 전송 유닛의 사이즈, 및/또는 1회의 [1]버스트에 전송 하는 바이트수의 편성이 지정되는 일이 있습니다.
입력, 출력 또는 메모리 투 메모리 동작을 실행하기 위해 호스트 프로세서는 전송할 워드 수 및 사용할 메모리 주소의 수를 사용하여 DMA 컨트롤러를 초기화합니다.다음으로 CPU는 페리페럴 디바이스에 데이터 전송을 시작하도록 명령합니다.다음으로 DMA 컨트롤러는 시스템메모리에 주소와 읽기/쓰기 제어선을 제공합니다.데이터 바이트가 주변 장치와 메모리 간에 전송될 준비가 될 때마다 DMA 컨트롤러는 데이터의 전체 블록이 전송될 때까지 내부 주소 레지스터를 증가시킨다.
버스 마스터링
퍼스트 파티의 DMA 시스템이라고도 불리는 버스 마스터링 시스템에서는 CPU와 주변기기가 각각 메모리 버스를 제어할 수 있습니다.주변기기가 버스 마스터가 될 수 있는 경우 CPU를 사용하지 않고 시스템 메모리에 직접 쓸 수 있으며 필요에 따라 메모리 주소와 제어 신호를 제공할 수 있습니다.버스 경합이 발생하지 않도록 프로세서를 보류 상태로 만들려면 몇 가지 조치를 취해야 합니다.
동작 모드
버스트 모드
버스트 모드에서는 데이터 블록 전체가 연속된1개의 시퀀스로 전송됩니다.DMA 컨트롤러는 CPU에 의해 시스템버스에 대한 접근이 허가되면 시스템버스의 제어를 CPU로 되돌리기 전에 데이터 블록 내의 모든 바이트의 데이터를 전송하지만 CPU는 비교적 장시간 비활성화됩니다.이 모드를 "블록 전송 모드"라고도 합니다.
사이클 도난 모드
사이클 도용 모드는 버스트 전송 모드에 필요한 시간 동안 CPU를 비활성화해서는 안 되는 시스템에서 사용됩니다.사이클 도용 모드에서는 DMA 컨트롤러는 버스트모드와 마찬가지로 CPU와 DMA 컨트롤러 간의 인터페이스를 제어하는2개의 신호인 BR(Bus Request) 및 BG(Bus Grant) 신호를 사용하여 시스템버스에 액세스합니다.그러나 사이클 도용 모드에서는 데이터 전송의 1단위(예를 들어 바이트) 후에 시스템버스의 제어가 BG를 통해 CPU에 할당됩니다.그런 다음 전체 데이터 블록이 전송될 때까지 요청당 하나의 단위(예: 바이트)의 데이터를 전송하면서 BR을 통해 지속적으로 다시 요청됩니다.DMA 컨트롤러는 시스템버스의 제어를 지속적으로 취득 및 해제함으로써 기본적으로 명령과 데이터 전송을 인터리브합니다.CPU는 명령을 처리하고 DMA 컨트롤러는 1개의 데이터 값을 전송합니다.데이터는 고속으로 전송되지 않지만 버스트모드만큼 CPU가 아이돌 상태가 되지 않습니다.사이클 도용 모드는 데이터를 실시간으로 모니터링하는 컨트롤러에 유용합니다.
트랜스페어런트모드
트랜스페어런트모드는 데이터 블록 전송에 가장 많은 시간이 걸리지만 전체 시스템 성능 측면에서도 가장 효율적인 모드입니다.트랜스페어런트모드에서는 DMA 컨트롤러는 CPU가 시스템버스를 사용하지 않는 동작을 실행하고 있을 때만 데이터를 전송합니다.트랜스페어런트모드의 주요 장점은 CPU가 프로그램 실행을 정지하지 않고 DMA 전송이 시간적으로 자유롭다는 것입니다.단, 단점은 CPU가 시스템버스를 사용하지 않을 때 하드웨어가 판단해야 한다는 것입니다.이것이 복잡해질 수 있습니다.이를 "숨김 DMA 데이터 전송 모드"라고도 합니다.
캐시 일관성
DMA는 캐시 일관성 문제를 일으킬 수 있습니다.DMA를 사용하여 디바이스가 직접 액세스할 수 있는 외부 메모리와 캐시를 갖춘 CPU를 상상해 보십시오. CPU가 메모리 내 위치 X에 액세스하면 현재 값이 캐시에 저장됩니다.X에서 후속 작업을 수행하면 X의 캐시된 복사본이 업데이트되지만, 쓰기 캐시를 가정하여 X의 외부 메모리 버전은 업데이트되지 않습니다.디바이스가 다음에 X 에 액세스 하려고 할 때까지 캐시가 메모리에 플래시 되지 않으면 디바이스는 오래된 값 X 를 받습니다.
마찬가지로 디바이스가 메모리에 새로운 값을 쓸 때 캐시된 X 복사가 비활성화되지 않으면 CPU는 오래된 X 값으로 동작합니다.
이 문제는 시스템 설계에서 다음 두 가지 방법 중 하나로 해결할 수 있습니다.캐시 일관성 시스템은 버스 스누핑이라고 하는 하드웨어 방식을 구현합니다.이 방법을 통해 외부 쓰기가 캐시 컨트롤러에 시그널링되고, 캐시 컨트롤러는 DMA 쓰기에 대한 캐시 비활성화 또는 DMA 읽기에 대한 캐시 플러시를 수행합니다.일관성이 없는 시스템은, 이것을 소프트웨어에 맡깁니다.이 경우, OS 는, 발신 DMA 전송을 개시하기 전에 캐시 라인을 플래시 해, 착신 DMA 전송의 영향을 받는 메모리 범위에 액세스 하기 전에 무효로 할 필요가 있습니다.OS는 그 사이에 실행 중인 스레드에서 메모리 범위에 액세스하지 않도록 해야 합니다.후자의 어프로치에서는, 대부분의 하드웨어에서는, 각 캐시 라인을 개별적으로 무효화하기 위한 루프가 필요하기 때문에, DMA 동작에 약간의 오버헤드가 발생합니다.
보조 L2 캐시는 일관되고 L1 캐시(일반적으로 온 CPU)는 소프트웨어로 관리되는 하이브리드도 있습니다.
예
ISA
원래의 IBM PC(및 후속 PC/XT)에서는, 4개의 DMA 채널(0 ~3)을 제공할 수 있는 인텔8237 DMA 컨트롤러는 1개뿐이었습니다.이러한 DMA 채널은 8비트 전송을 실시했습니다(8237은 8비트 디바이스로 PC의 i8088 CPU/버스 아키텍처와 이상적으로 일치). RAM의 첫 번째 (i8086/8088 표준)메가바이트만 처리할 수 있으며, 그 공간 내의 단일 64kB 세그먼트(소스 채널과 수신처 채널은 서로 다른 segm)에 대응할 수 있습니다.또한 확장버스 I/O 디바이스 간 또는 확장버스 I/O 디바이스 간으로의 전송에는 8237이 사용할 수 있는 것은 채널0과 1뿐입니다.이 중 PC의 채널0(& XT)은 다이내믹 메모리 리프레시 전용입니다.이것에 의해, 범용의 「Blitter」로서 사용할 수 없게 되어, CPU의 일반적인 PIO 속도에 의해서 제한되는 PC내의 블록 메모리 이동이 매우 늦어졌습니다.
IBM PC/AT를 통해 향상된 AT 버스(ISA 또는 "산업 표준 아키텍처"로 더 친숙한 명칭)는 세 개의 추가 기능을 제공하기 위해 두 번째 8237 DMA 컨트롤러를 추가했으며, 리소스 충돌로 인해 원래 PC에 대한 추가 확장성이 강조되었듯이, 채널은 캐스케이드 4로 사용됩니다.t8237).또한 페이지 레지스터는 80286 CPU의 16MB 메모리주소 공간 전체에 대응하도록 배선되어 있습니다.이 두 번째 컨트롤러는 I/O 디바이스가 데이터 소스 및/또는 수신처로 사용될 때 16비트 전송을 수행할 수 있는 방식으로 통합되었습니다(실제로 메모리 간 전송만을 위해 데이터 자체를 처리하며, 그렇지 않으면 16비트 시스템의 다른 부분 간의 데이터 흐름을 제어하여 데이터 버스 폭을 제한합니다).atically inmaterial)의 경우 상위 3개 채널을 사용할 경우 데이터 처리량이 두 배로 증가합니다.호환성을 위해 하위 4개의 DMA 채널은 여전히 8비트 전송으로만 제한되었으며, 현재는 채널0이 DRAM 갱신을 처리할 필요가 없어졌기 때문에 기술적으로 메모리 간 전송이 가능했지만 실제적인 관점에서 컨트롤러의 throughput이 낮기 때문에 가치가 제한되었습니다.o CPU가 실현 가능한 것(즉, 최소 6MHz에서 동작하는 16비트의 최적화 80286과 4.77MHz에서 잠긴 8비트 컨트롤러).두 경우 모두 64kB 세그먼트의 경계 문제는 남아 있습니다.각 전송은 16비트 모드에서도 세그먼트를 통과할 수 없습니다(같은 세그먼트의 선두로 "접속"하는 대신). 그러나 실제로는 DRAM을 독점하기 위해 성능보다 프로그래밍이 더 복잡했습니다.약 15μs마다 버스가 큰 블록 전송(및 빠르고 중단되지 않는 블록 전송)의 사용을 막았습니다.
그들의 뒤떨어진 성능(1.6MB/s 최대 8비트 전송 능력 5MHz,[2]에섰지만 더 이상보다 0.9MB/s은 PC/XT에 1.6MB/s 16비트 전송은 올 댓의 기억 장치 리프레시 interruptions[3] 같은 ISA버스의 일상과 다른 간섭 때문에)과 직접 replaceme의 설치를 허용하는 속도 점수의 입수 불가능 때문에.nts op원래 PC의 표준 4.77MHz 클럭보다 빠른 속도로 지워지는 이 장치들은 1980년대 후반부터 사실상 구식이 되었다.특히 1985년 80386 프로세서의 등장과 32비트 전송용 용량(80186 이후 인텔 CPU의 주소 계산 및 블록 메모리 이동 효율이 크게 향상되었지만 PIO 전송은 16비트 버스 286 및 386SX에서도 8237을 쉽게 능가할 수 있었습니다)이 있었습니다.(EISA, VLB 및 PCI)로의 진화 또는 (MCA, VLB 및 PCI)의 대체는 훨씬 더 높은 성능의 DMA 서브시스템(EISA, 40 MB/s MCA의 경우 최대 33 MB/s, 일반적으로 133 MB/s VLB/CI 컨트롤러의 경우 오리지널 DMA로 제작됨)을 갖춘 "ISA" 버스입니다.이들은 이후 머신에서 내장된 레거시 PC 하드웨어를 지원하기 위해 필요한 범위까지 지원되었습니다.32비트 확장버스가 보편화된 후에도 ISA DMA를 계속 사용한 레거시 하드웨어는 Sound Blaster 카드와 FIR(Fas) 시 내장 플로피 디스크 컨트롤러, IrDA 적외선 컨트롤러가 내장되어 있는 메인보드의 Super I/O 디바이스입니다.적외선) 모드가 선택되고 ECP 모드가 선택되면 IEEE 1284 병렬 포트 컨트롤러가 선택됩니다.원래의 8237 또는 다이렉트 호환성이 아직 사용되고 있는 경우는, 시스템의 실제 주소 공간이나 인스톨 되고 있는 메모리의 용량에 관계없이, 이러한 디바이스와의 사이의 전송은, 메인 RAM 의 최초의 16 MB 로 제한될 가능성이 있습니다.
각 DMA 채널은 16비트 어드레스 레지스터와 16비트 카운트 레지스터를 관련짓는다.데이터 전송을 시작하기 위해 장치 드라이버는 데이터 전송, 읽기 또는 쓰기 방향과 함께 DMA 채널의 주소 및 카운트 레지스터를 설정합니다.다음으로 DMA 하드웨어에 전송을 시작하도록 지시합니다.전송이 완료되면 디바이스는 CPU를 중단합니다.
산란 수집기 또는 벡터형 I/O DMA 를 사용하면, 1 개의 DMA 트랜잭션으로 복수의 메모리 영역간에 데이터를 전송 할 수 있습니다.이것은, 복수의 단순한 DMA 요구를 체인으로 묶는 것과 같습니다.그 이유는 CPU에서 여러 입출력 인터럽트 및 데이터 복사 작업을 오프로드하는 것입니다.
DRQ는 Data request, DACK은 Data Acknowledge의 약자입니다.이러한 기호는 DMA 기능을 갖춘 컴퓨터 시스템의 하드웨어 설계도에서 볼 수 있으며 CPU와 DMA 컨트롤러 사이의 전자 신호 라인을 나타냅니다.각 DMA 채널에는 Request 행과 Acknowledge 행이 1개씩 있습니다.DMA를 사용하는 디바이스는 할당된DMA 채널의 양쪽 회선을 사용하도록 설정해야 합니다.
16비트 ISA는 버스 마스터링을 [4]허용했습니다.
표준 ISA DMA 할당:
PCI
APCI건축, ISA과 달리 어떠한 중심 DMA제어기를 갖고 있다.대신에, 모든 PCI장치로부터 메모리 시스템까지의를 읽고 쓰는 버스("이 버스 마스터")을 통제하고 요청 요청할 수 있다.는 여러 기기 동시에 버스 소유권을 요청하 조정을 할 것이다는 PCI버스 컨트롤러(보통 PCI호스트 브리지, 그리고 PCIPCIbridge[5]에), 한번에 이후는 단지 한명 버스 마스터에서 좀 더 정밀하게, PCI구성 요소 요청 버스 소유권.때 구성 요소가 허여되는 소유권, 일반 read와 PCI버스 컨트롤러로 주장할 것은 PCI버스,으로 명령을 쓰기를 발행할 것이다.
예를 들어 AMD 소켓 AM2 기반 PC에서는 사우스 브릿지가 HyperTransport를 사용하여 메모리 컨트롤러(CPU 다이에는 별도의 회로로 내장)로 트랜잭션을 전송합니다.이 컨트롤러는 이 트랜잭션을 DDR2 동작으로 변환하여 DDR2 메모리버스로 전송합니다.그 결과 PCI DMA 전송에는 많은 단계가 수반되지만 PCI 디바이스 또는 PCI 버스 자체는 다른 컴포넌트보다 훨씬 느리기 때문에 문제가 거의 발생하지 않습니다(디바이스 대역폭 목록 참조).
최신 x86 CPU는 x86-64 CPU의 네이티브 64비트 모드 또는 36비트 주소 지정 모드인 물리 주소 확장(PAE)을 사용하여 4GB 이상의 메모리를 사용할 수 있습니다.이 경우 32비트주소버스와 함께 DMA를 사용하는 디바이스는 4GB 회선 이상의 메모리를 주소 지정할 수 없습니다.PCI 버스와 디바이스 [6]자체에 새로운 Double Address Cycle(DAC; 더블 주소 사이클) 메커니즘이 실장되어 있는 경우, 64비트의 DMA 어드레싱이 가능하게 됩니다.그렇지 않으면 운영체제는 바운스 버퍼(FreeBSD/Linux)라고도 불리는 고가의 더블 버퍼(DOS/Windows 명명법)를 사용하거나 IOMMU를 사용하여 주소 변환 서비스를 제공할 수 있습니다.
I/OAT
범용 CPU에 내장된DMA 엔진의 예로서 일부 인텔 Xeon 칩셋에는 메인 CPU에서 메모리 복사를 오프로드하여 다른 [7]작업을 수행할 수 있는 I/O 액셀러레이션 테크놀로지(I/OAT)라는DMA 엔진이 포함되어 있습니다.2006년에 인텔의 Linux 커널 개발자인 Andrew Grover는 네트워크 트래픽 복사본을 오프로드하기 위해 I/OAT를 사용하여 벤치마크를 실시하여 워크로드 [8]수신 시 CPU 사용률이 10% 이상 향상되지 않았습니다.
디디오
인텔 Xeon E5 프로세서에 Data Direct I/O(DDIO) 기능을 탑재한 DMA 메커니즘의 퍼포먼스 향상이 더해져 DMA의 「Windows」를 시스템 RAM이 아닌 CPU 캐시내에 배치할 수 있게 되었습니다.그 결과 CPU 캐시가 I/O의 주요 소스 및 수신처로 사용되므로 네트워크 인터페이스 컨트롤러(NIC)가 로컬 CPU의 마지막 수준 캐시(L3 캐시)에 직접 DMA를 수행할 수 있으며 시스템 RAM에서 I/O 데이터를 가져오는 비용이 많이 들지 않습니다.그 결과 DDIO는 전체적인 I/O 처리 지연을 줄이고 캐시 내에서 I/O 처리를 완전히 수행할 수 있으며 사용 가능한 RAM 대역폭/레이텐시가 성능 병목 현상이 되는 것을 방지하며 RAM을 저전력 상태로 [9][10][11][12]오래 유지함으로써 소비전력을 낮출 수 있습니다.
AHB
시스템 온 칩 및 임베디드 시스템에서 일반적인 시스템 버스 인프라는 AMBA 고성능 버스와 같은 복잡한 온 칩 버스입니다.AHB 컴포넌트에는 마스터와 슬레이브의 2종류가 정의되어 있습니다.슬레이브 인터페이스는 소프트웨어(예를 들어 ARM 등 임베디드 CPU에서 실행)가 디바이스 내의 I/O 레지스터 또는 로컬 메모리 블록을 쓰기/읽을 수 있는 프로그래밍된 I/O와 유사합니다.마스터 인터페이스는 CPU에 부하를 많이 주지 않고 시스템 메모리와의 DMA 트랜잭션을 수행하기 위해 디바이스에 의해 사용될 수 있습니다.
따라서 시스템 메모리에서 대량의 데이터를 전송해야 하는 네트워크 컨트롤러 등의 고대역폭 디바이스에는 마스터 인터페이스와 슬레이브 인터페이스라는2개의 인터페이스 어댑터가 AHB에 있습니다.이는 AHB와 같은 온칩버스가 버스상의 트라이스테이트 또는 노선의 방향 교체를 지원하지 않기 때문입니다.PCI와 마찬가지로 DMA는 버스 마스터이므로 중앙 DMA 컨트롤러는 필요하지 않지만 시스템에 여러 마스터가 있는 경우 아비터가 필요합니다.
내부적으로는 통상 멀티채널 DMA 엔진이 디바이스에 탑재되어 소프트웨어에 의해 프로그래밍된 복수의 동시 산란수집 조작을 실행합니다.
감방
멀티프로세서 시스템 온칩에서의 DMA 사용 예로서 IBM/Sony/Toshiba의 Cell 프로세서는 1개의 Power Processor Element(PPE; 전력 프로세서 요소)와 8개의 Synergious Processor Element(SPE; 시너지 프로세서 요소)를 포함한 9개의 프로세싱 요소 각각에 DMA 엔진을 내장하고 있습니다.SPE의 로드/스토어 명령은 자신의 로컬 메모리만 읽고 쓸 수 있으므로 SPE는 DMA에 의존하여 다른 SPE의 메인 메모리 및 로컬 메모리와 데이터를 주고 받습니다.따라서 DMA는 이 CPU 내의 코어 간의 주요 데이터 전송 수단으로서 기능합니다(인텔의 취소된 범용 GPU, Larrabee 등 캐시 일관성이 있는 CMP 아키텍처와는 대조적으로).
Cell의 DMA는 완전 캐시 코히런트입니다(단, DMA에 의해 동작하는SPE의 로컬스토어는 표준적인 의미에서 글로벌하게 코히런트캐시로서 동작하지 않습니다).읽기("get")와 쓰기("put") 모두에서 DMA 명령은 크기가 최대 16KB인 단일 블록 영역 또는 2 ~2048의 블록 목록을 전송할 수 있습니다.DMA 명령어는 로컬주소와 리모트주소의 쌍을 지정함으로써 발행됩니다.예를 들어 SPE 프로그램이 put DMA 명령어를 발행할 때 자신의 로컬메모리의 주소를 송신원으로 지정하고 가상 메모리주소(다른 SPE의 메인메모리 또는 로컬메모리 중 하나를 가리키고 있는 것)를 블록사이즈와 함께 타겟으로 지정합니다.한 실험에 따르면 셀 내 DMA의 유효 피크 성능(3GHz, 균일한 트래픽 하)은 [13]초당 200GB에 달합니다.
파이프라인
스크래치패드 메모리와 DMA(디지털 신호 프로세서나 셀 프로세서 등)를 탑재한 프로세서에서는 DMA 메모리와 프로세싱이 중복되어 더블 버퍼링이나 멀티 버퍼링을 통해 중복되는 소프트웨어도 있습니다.예를 들어 온칩메모리는 2개의 버퍼로 분할되어 있습니다.프로세서는 1개의 데이터 상에서 동작하는 반면 DMA 엔진은 다른 쪽의 데이터를 로드 및 저장합니다.이를 통해 시스템은 예측 가능한 메모리액세스 패턴을 필요로 하는 대신 메모리 [citation needed]지연을 회피하고 버스트 전송을 이용할 수 있습니다.
「 」를 참조해 주세요.
- AT 첨부 파일
- Autonomous Peripheral operation – 태스크 오프로드용 MCU 하드웨어 기능
- 블리터 – 신속한 데이터 동기화를 위한 집적회로
- 채널 I/O – 하이 퍼포먼스 입출력 아키텍처
- DMA 공격 – 고속 확장 포트를 이용한 사이버 공격
- 메모리 매핑 I/O – CPU 통신 방법
- 하드웨어 액셀러레이션– 전용 컴퓨터 하드웨어
- 인메모리 처리– 데이터 처리 테크놀로지
- 메모리 관리 – 컴퓨터 메모리 관리 방법론
- 칩상의 네트워크– 집적회로상의 전자통신 서브시스템
- 폴링(컴퓨터 사이언스)– 디바이스 상태 샘플링 프로세스
- 리모트 다이렉트 메모리 액세스– 저레벨 하드웨어 다이렉트 메모리 액세스
- UDMA – ATA 하드 드라이브의 데이터 전송 방법
- 가상 DMA 서비스
메모들
- ^ Osborne, Adam (1980). An Introduction to Microcomputers: Volume 1: Basic Concepts (2nd ed.). Osborne McGraw Hill. pp. 5–64 through 5–93. ISBN 0931988349.
- ^ "Intel 8237 & 8237-2 Datasheet" (PDF). JKbox RC702 subsite. Retrieved 20 April 2019.
- ^ "DMA Fundamentals on various PC platforms, National Instruments, pages 6 & 7". Universidad Nacional de la Plata, Argentina. Retrieved 20 April 2019.
- ^ Intel Corp. (2003-04-25), "Chapter 12: ISA Bus" (PDF), PC Architecture for Technicians: Level 1, retrieved 2015-01-27
- ^ "Bus Specifics - Writing Device Drivers for Oracle® Solaris 11.3". docs.oracle.com. Retrieved 2020-12-18.
- ^ "Physical Address Extension — PAE Memory and Windows". Microsoft Windows Hardware Development Central. 2005. Retrieved 2008-04-07.
- ^ Corbet, Jonathan (December 8, 2005). "Memory copies in hardware". LWN.net.
- ^ Grover, Andrew (2006-06-01). "I/OAT on LinuxNet wiki". Overview of I/OAT on Linux, with links to several benchmarks. Retrieved 2006-12-12.
- ^ "Intel Data Direct I/O (Intel DDIO): Frequently Asked Questions" (PDF). Intel. March 2012. Retrieved 2015-10-11.
- ^ Rashid Khan (2015-09-29). "Pushing the Limits of Kernel Networking". redhat.com. Retrieved 2015-10-11.
- ^ "Achieving Lowest Latencies at Highest Message Rates with Intel Xeon Processor E5-2600 and Solarflare SFN6122F 10 GbE Server Adapter" (PDF). solarflare.com. 2012-06-07. Retrieved 2015-10-11.
- ^ Alexander Duyck (2015-08-19). "Pushing the Limits of Kernel Networking" (PDF). linuxfoundation.org. p. 5. Retrieved 2015-10-11.
- ^ Kistler, Michael (May 2006). "Cell Multiprocessor Communication Network". Extensive benchmarks of DMA performance in Cell Broadband Engine.
레퍼런스
- A의 다양한 PC 플랫폼에서의 DMA 기초F. Harvey 및 데이터 획득 부서 직원 전국 증권
- Linux Device Drivers, 제2판, Alessandro Rubini 및 Jonathan Corbet에서 mmap() 및 DMA 제공
- 메모리 매핑 및 DMA, Linux 디바이스 드라이버, 3rd Edition, Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman에서 제공
- DMA 및 인터럽트 처리
- DMA 모드 및 버스 마스터링
외부 링크
- DMA 및 IOMMU API 마스터링, 임베디드 Linux Conference 2014, San Jose, Laurent Pinchart