직접 메모리 액세스 (DMA) 란 무엇이며 어떻게 작동합니까? [MiniTool 위키]
What Is Direct Memory Access
빠른 탐색 :
당신은 채택 할 수 있습니다 RDMA 네트워크의 컴퓨터가 컴퓨터의 프로세서, 캐시 또는 운영 체제를 사용하지 않고도 주 메모리의 데이터를 교환 할 수 있도록하는 기술입니다. 그러나 DMA 기능을 사용하여 연결된 장치에서 컴퓨터 마더 보드의 메모리로 데이터를 직접 전송할 수도 있습니다. 이 게시물 MiniTool 주로 DMA에 대해 이야기하고 있습니다.
직접 메모리 액세스의 정의
먼저 직접 메모리 액세스 란 무엇입니까? Direct Memory Access는 컴퓨터 시스템의 기능인 DMA로 축약 될 수 있습니다. 입 / 출력 (I / O) 장치가 주 시스템 메모리 ( 랜덤 액세스 메모리 ), 중앙 처리 장치 (CPU)와 무관하여 메모리 작업 속도를 높입니다.
팁: 이 게시물에 관심이있을 수 있습니다. Windows 10에서 CPU를 100 % 수정하는 8 가지 유용한 솔루션 .
직접 메모리 액세스가 없으면 CPU가 프로그래밍 된 입력 / 출력을 사용할 때 일반적으로 전체 읽기 또는 쓰기 작업 동안 완전히 점유되므로 다른 작업을 수행 할 수 없습니다. DMA를 사용하면 CPU는 먼저 전송을 시작한 다음 전송이 진행되는 동안 다른 작업을 수행하고 마지막으로 작업이 완료되면 DMA 컨트롤러 (DMAC)로부터 인터럽트를받습니다.
직접 메모리 액세스는 CPU가 데이터 전송 속도를 따라갈 수 없거나 CPU가 비교적 느린 I / O 데이터 전송을 기다리는 동안 작업을 수행해야 할 때 유용합니다.
여러 하드웨어 시스템은 디스크 드라이브 컨트롤러, 그래픽 카드, 네트워크 카드 및 사운드 카드와 같은 직접 메모리 액세스를 채택합니다. DMA는 멀티 코어 프로세서에서 온칩 데이터 전송에도 사용됩니다. 직접 메모리 액세스 채널이없는 컴퓨터에 비해 DMA 채널이있는 컴퓨터는 CPU 오버 헤드가 훨씬 적은 장치간에 데이터를 전송할 수 있습니다.
직접 메모리 액세스는 메모리에서 데이터를 복사하거나 이동하기 위해 '메모리 대 메모리'에 사용할 수도 있습니다. CPU에서 전용 DMA 엔진으로 값 비싼 메모리 작업 (예 : 대용량 복사본 또는 분산 수집 작업)을 전송할 수 있습니다. DMA는 네트워크 온칩 및 메모리 컴퓨팅 아키텍처에서 중요합니다.
직접 메모리 액세스는 어떻게 작동합니까?
그렇다면 직접 메모리 액세스는 어떻게 작동합니까? 표준 직접 메모리 액세스 (타사 DMA라고도 함)는 DMA 컨트롤러를 채택합니다. DMA 컨트롤러는 메모리 주소를 생성하고 메모리 읽기 또는 쓰기주기를 시작할 수 있습니다. CPU에서 읽고 쓸 수있는 여러 하드웨어 레지스터를 다룹니다.
이러한 레지스터는 메모리 주소 레지스터, 바이트 카운트 레지스터 및 하나 이상의 제어 레지스터로 구성됩니다. Direct Memory Access 컨트롤러에서 제공하는 기능에 따라 이러한 제어 레지스터는 소스, 대상, 전송 방향 (I / O 장치에서 읽기 또는 쓰기), 전송 장치의 크기 및 / 또는 수의 일부 조합을 지정할 수 있습니다. 한 번에 전송할 바이트.
입력, 출력 또는 메모리 대 메모리 작업을 수행하기 위해 호스트 프로세서는 전송할 단어 수와 사용할 메모리 주소로 DMA 컨트롤러를 초기화합니다. 그런 다음 CPU는 주변 장치에 데이터 전송을 시작하도록 명령합니다.
그런 다음 Direct Memory Access 컨트롤러는 시스템 메모리에 주소 및 읽기 / 쓰기 제어 라인을 제공합니다. 주변 장치와 메모리간에 데이터 바이트가 전송 될 준비가 될 때마다 DMA 컨트롤러는 완전한 데이터 블록이 전송 될 때까지 내부 주소 레지스터를 증가시킵니다.
작동 모드
직접 메모리 액세스는 작동 모드에 따라 다르게 작동합니다.
버스트 모드
버스트 모드에서는 전체 데이터 블록이 연속적인 순서로 전송됩니다. CPU가 DMA 컨트롤러가 시스템 버스에 액세스하도록 허용하면 DMA 컨트롤러는 시스템 버스 제어를 CPU로 다시 해제하기 전에 데이터 블록에있는 모든 데이터 바이트를 전송하지만 CPU가 상당한 오랜 시간. 이 모드는 '블록 전송 모드'라고도합니다.
사이클 스틸 링 모드
사이클 스틸 링 모드는 버스트 전송 모드에 필요한 시간 동안 CPU를 비활성화 할 수없는 시스템에서 사용됩니다. 사이클 스틸 링 모드에서 DMA 컨트롤러는 버스트 모드와 동일한 BR (Bus Request) 및 BG (Bus Grant) 신호를 사용하여 시스템 버스에 대한 액세스 권한을 얻습니다. 이 두 신호는 CPU와 DMA 컨트롤러 간의 인터페이스를 제어합니다.
한편으로 사이클 스틸 링 모드에서 데이터 블록 전송 속도는 버스트 모드에서만큼 빠르지 않지만 다른 한편으로 CPU 유휴 시간은 버스트 모드에서만큼 길지 않습니다.
투명 모드
투명 모드는 데이터 블록을 전송하는 데 가장 오랜 시간이 걸리지 만 전체 시스템 성능 측면에서 가장 효율적인 모드이기도합니다. 투명 모드에서 Direct Memory Access 컨트롤러는 CPU가 시스템 버스를 사용하지 않는 작업을 수행 할 때만 데이터를 전송합니다.
투명 모드의 가장 큰 장점은 CPU가 프로그램 실행을 멈추지 않고 직접 메모리 액세스 전송이 시간 측면에서 무료라는 점입니다. 반면에 단점은 CPU가 시스템 버스를 사용하지 않는시기를 하드웨어가 결정해야한다는 것입니다. 복잡하다. 이를 '숨겨진 DMA 데이터 전송 모드'라고도합니다.