1. DMA 제어기
DMA 제어기는 다음과 같은 목적으로 만들어졌습니다.
① I/O 장치가 직접 기억 장치 버스를 관리하도록 하여 기억 장치와 주변 장치 사이에 직접 입출력합니다.
② 전송 속도의 개선과 CPU 시간을 효율적으로 이용할 수 있습니다.
③ DMA 전송이 행해지는 동안 CPU는 기억 장치 버스를 제어하지 못하고 정지하고 있습니다.
④ DMA 제어기가 기억 장치 버스의 사용을 요청하면 CPU는 버스 제어권을 넘기고, DMA 제어기가 버스를 제어하여 CPU의 개입 없이 기억 장치와 직접 전송할 수 있습니다.
DMA 제어기는 CPU와 I/O 장치 사이의 데이터 전송을 위한 인터페이스와 주소 레지스터, 워드 카운트 레지스터 등으로 구성됩니다. 주소 레지스터는 기억 장치와 직접 통신하기 위해 사용하고 워드 카운트 레지스터는 전송할 워드 개수를 표시합니다. CPU는 데이터 버스와 제어 버스를 이용하여 DMA 제어기와 통신하며 CPU는 DS와 RS를 이용하여 DMA의 레지스터를 선택합니다. BG가 0이면 데이터 버스를 통해 CPU와 DMA 레지스터가 데이터를 주고받을 수 있고, BG가 1이면 CPU가 버스를 사용하지 않으므로 DMA가 직접 주소를 지정하고 RD, WR 신호를 보내 기억 장치와 통신합니다. 따라서 RD와 WR는 양방향 신호이며 DMA는 핸드셰이킹 절차에 따라 외부 장치와 통신합니다.
DMA 제어기는 3개의 레지스터를 가지고 있습니다. 주소 레지스터의 기억 장치 주소는 버스 버퍼를 통해 주소 버스로 가며 워드를 전송할 때마다 값이 1씩 증가합니다. 워드 카운트 레지스터는 워드를 전송할 때마다 1씩 감소하는지 0이 될 때까지 검사하는 기능을 가지고 있습니다. 그리고 제어 레지스터는 전송 모드를 지정합니다. 이 같은 DMA 레지스터들은 전송 초기에 CPU가 데이터 버스를 통해 내용을 지정할 수 있도록 합니다.
DMA는 CPU에 의하여 초기화된 다음 전체 블락을 전송할 때까지 기억 장치와 주변 장치 사이에서 데이터를 전송합니다. CPU는 DMA 레지스터 주소가 포함된 I/O 명령으로 DMA 제어기를 다음과 같이 초기화 합니다.
① 입출력할 기억 장치 블락의 시작 주소
② 기억 장치 블락의 워드 개수를 나타내는 워드 카운트
③ 읽기나 쓰기 같은 전송 모드를 지정하는 제어
④ DMA 전송 개시 신호
시작 주소, 워드 카운트, 제어 정보는 각각 주소 레지스터, 워드 카운트 레지스터 및 제어 레지스터에 저장됩니다. 일단 DMA가 초기화되면 인터럽트가 요청되거나 전송된 워드수를 검사하는 경우 외에는 CPU와 DMA 사이의 통신은 중단됩니다.
2. DMA 전송 방법
① burst transfer : DMA 제어기가 기억 장치 버스를 제어하고 있는 동안 한 블락을 지속적으로 전송하며 마그네틱 디스크와 같은 고속 장치를 위해 사용합니다.
② cycle steal : 한 번에 한 워드씩 전송하고 버스 제어권을 CPU에게 반환하므로 DMA 전송으로 인한 CPU의 동작 지연이 거의 없으며 단지 한 번에 한 기억 장치 사이클을 DMA에게 빼앗깁니다. 명령의 실행 간격을 이용하여 한 워드씩 정보를 직접 전송하는 방식입니다.
컴퓨터 시스템에서 DMA 전송 방식으로 CPU는 주소 버스와 데이터 버스를 이용하여 DMA와 통신하며 자신의 주소를 받으면 DS와 RS입력을 ON시킵니다. CPU는 데이터 버스를 통해 DMA를 초기화합니다. 주변 장치가 DMA request 신호를 보내면 제어기는 BR신호로 CPU에게 버스 사용을 요청하고 이에 대해 CPU는 BG 신호로 DMA에게 버스를 양보함을 알립니다. 그러면 DMA는 주소 레지스터의 주소를 주소 버스에 출력하고 RD 또는 WR 신호를 보내며 주변 장치로 DMA acknowledge 신호를 보냅니다. 제어기의 RD, WR선은 양방향으로 사용되며 BG 상태에 따라 전송 방향이 다릅니다.
즉 BG=0이면 입력 방향이 되어 CPU가 DMA의 내부 레지스터와 통신하고, BG=1이면 출력 방향이 되어 DMA 제어기가 기억 장치의 일기나 쓰기 동작을 지정합니다. 주변 장치가 DMA로 ACK 신호를 받으면 데이터 버스를 통해 기억 장치와 데이터를 전송할 수 있습니다. 워드가 전송될 때마다 DMA는 주소 레지스터를 1씩 증가시키고 워드 카운트 레지스터를 1씩 감소시킵니다. 워드 카운트가 0이 아니면 DMA는 주변 장치의 request를 검사하여 요청되면 다음 전송을 시작합니다. 워드 카운트 레지스터가 0이 되면 DMA는 인터럽트를 이용하여 CPU에게 전송이 끝났음을 알리고 CPU는 인터럽트에 응답하여 워드 카운트 레지스터의 내용을 읽어 전송이 완료되었는지를 확인합니다.
'컴퓨터정보' 카테고리의 다른 글
인터럽트에 대해 알아보자 (0) | 2022.01.10 |
---|---|
데이터 전송 입출력 방식 (0) | 2022.01.09 |
데이터 전송 개념과 방식 (0) | 2022.01.08 |
입출력 장치를 알아보자 (0) | 2022.01.08 |
가상 기억 장치 (0) | 2022.01.07 |