KR20010057244A - 직접 메모리 억세스 버스 제어 방법 - Google Patents

직접 메모리 억세스 버스 제어 방법 Download PDF

Info

Publication number
KR20010057244A
KR20010057244A KR1019990059442A KR19990059442A KR20010057244A KR 20010057244 A KR20010057244 A KR 20010057244A KR 1019990059442 A KR1019990059442 A KR 1019990059442A KR 19990059442 A KR19990059442 A KR 19990059442A KR 20010057244 A KR20010057244 A KR 20010057244A
Authority
KR
South Korea
Prior art keywords
bus
dma
cpu
data
dma controller
Prior art date
Application number
KR1019990059442A
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 윤종용
Priority to KR1019990059442A priority Critical patent/KR20010057244A/ko
Publication of KR20010057244A publication Critical patent/KR20010057244A/ko

Links

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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

직접 메모리 억세스(DMA:Direct Memory Access) 버스 제어 방법이 개시된다. 본 발명은 CPU를 거치지 않고 주변기기와 메모리와의 데이터 전송을 제어하는 DMA 콘트롤러의 버스 제어 방법에 있어서, 주변기기의 리퀘스트 신호(REQ)에 대해 CPU로부터 받은 응답신호(ACK)에 응답하여 데이터 전송을 위하여 버스를 홀드(hold) 하되, 전송할 데이터 량을 분할하여 일정 데이터 량을 전송한 뒤, 버스 홀드를 풀어 CPU가 상기 버스를 사용할 수 있도록 내부 리퀘스트 신호를 발생하여 버스로 내보내고, CPU가 버스를 사용하지 않으면 데이터 전송을 계속하는 것을 특징으로 한다.

Description

직접 메모리 억세스 버스 제어 방법{DMA(Direct Memory Access) bus control method}
본 발명은 DMA의 버스 제어 방법에 관한 것으로서, 특히 DMA의 버스 점유 시간을 분할하여 이를 제어 할 수 있는 방식에 관한 것이다.
DMA(Direct Memory Access)는 CPU를 거치지 않고 입출력 기기와 메모리 사이에 데이터를 직접 전송하는 방법이다. 보통 CPU를 거쳐 데이터를 전송하는 경우에는 프로그램에서 입출력 기기나 메모리로부터 데이터를 CPU의 레지스터에 읽어 들인 후, 이를 메모리나 출력 장치로 출력하는 방법으로 이루어진다. 그래서 DMA는 CPU를 거치는 경우와 비교하여 짧은 시간 내에 데이터 전송이 가능하다. 이러한 DMA 방식은 보통 전용 집적회로인 DMA 콘트롤러에 의하여 구현되지만 마이크로 콘트롤러 칩 내에 내장되어 있는 수가 있다.
CPU와 DMA 콘트롤러는 버스로 연결되어 있다. 이 버스에는 입출력 기기들, 일명 USB(Universial Serial Bus) 디바이스들도 연결되어 있다. USB 디바이스로는 모니터, 프린터, 대용량 저장 드라이버(mass storage driver), 모뎀, 펙스 등이 포함된다. DMA 콘트롤러는 CPU를 통하지 않고 이 버스를 이용하여 USB 디바이스로 데이터를 전송하기 때문에 버스 제어를 위한 중재가 필요하다. 이러한 중재 방법으로는 다음과 같은 종류가 있다.
하나의 방법은 연속 전송 모드(continuous mode)이다. 이 모드에서는 DMA 리퀘스트가 있으면 DMA 콘트롤러는 CPU가 버스와의 접속을 끊었다는 신호를 받는 즉시 DMA 전송을 시작한다. 그리고 미리 정해진 데이터량 만큼 전송을 끝낼 때 까지 버스를 점유하여 데이터 전송을 계속한다. 따라서, 이 동안에는 버스 제어권을 DMA 콘트롤러가 가지기 때문에 CPU는 버스를 사용할 수 없다.
다른 방법으로는 디맨드 전송 모드(demand mode)인 데, DMA 콘트롤러는 내장된 카운터에 저장되는 수 만큼 DMA의 리퀘스트를 하여 이 동안 버스를 점유하지만 DMA 요구를 취소하면 데이터 전송을 중단하며 요구(request)를 재개하면 데이터 전송이 다시 시작된다.
그런데, 이러한 연속 전송 모드 및 디맨드 전송 모드에서의 데이터 전송 방법은 도 1에 도시되어 있는 바와 같이, DMA 리퀘스트 신호 또는 리퀘스트 카운트 수 만큼의 데이터를 처리하는 동안 버스를 놓지 않는다. 즉, 먼저 USB 디바이스는 DMA로 리퀘스트 신호(USB-to-DMA request(nDREQ))를 내보낸다. 이에 대해 DMA 콘트롤러는 버스를 잡기 위해 버스 리퀘스트 신호(DMA-to-BUS request)를 내보낸다. 시스템 메니저(system manager)로부터 버스를 사용해도 된다는 신호(BUS-to-DMA ack)가 DMA 콘트롤러로 보내지면 DMA 콘트롤러는 버스 홀드 신호(DMA-to-BUS hold)를 만들어 이 신호의 활성화 구간 동안 버스를 점유하게 된다. 그리고 DMA 콘트롤러는 USB 디바이스로 데이터를 전송해도 된다는 신호(DMA-to-USB ack)를 내보낸다. 이에 따라 USB 디바이스에서 버스를 통해 메모리로의 데이터 전송이 일어나게 된다. 이 데이터 전송은 USB 디바이스에서 DMA로의 리퀘스트 신호(USB-to-DMA request(nDREQ)) 동안 계속된다. 그리하여, 인터럽트(interrupt)와 같이 CPU가 급하게 프로세스를 처리해야 하는 경우에도 버스를 놓지 않아 CPU의 시스템 효율이 떨어진다.
따라서, DMA 리퀘스트 중에서도 DMA의 버스 점유 시간을 분할하여 CPU 에서 버스를 사용할 수 있는 방법이 요구된다.
본 발명의 목적은 DMA의 버스 점유 시간을 분할하여 이를 제어 할 수 있는 DMA 방식을 제공하는 것이다.
본 발명의 상세한 설명에서 사용되는 도면을 보다 충분히 이해하기 위하여, 각 도면의 간단한 설명이 제공된다.
도 1은 종래의 DMA 방식에서 DMA와 USB 디바이스 사이의 데이터 전송을 위한 버스 사용에 관련되는 신호 다이어그램을 나타내는 도면이다.
도 2는 본 발명의 일실시예에 따른 DMA 방식을 적용한 블락 다이어그램을 나타내는 도면이다.
도 3은 도 2의 DMA 방식을 신호 다이어그램으로 나타내는 도면이다.
상기 목적을 달성하기 위하여 본 발명의 DMA 버스 제어 방법은 CPU를 거치지않고 주변기기와 메모리와의 데이터 전송을 제어하는 DMA 콘트롤러에 있어서, 상기 주변기기의 리퀘스트 신호(REQ)에 대해 상기 CPU로부터 받은 응답신호(ACK)에 응답하여 상기 데이터 전송을 위하여 버스를 홀드(hold) 하되, 전송할 데이터 량을 분할하여 일정 데이터 량을 전송한 뒤, 상기 버스 홀드를 풀어 상기 CPU가 상기 버스를 사용할 수 있도록 내부 리퀘스트 신호를 발생하여 상기 버스로 내보내고, 상기 CPU가 상기 버스를 사용하지 않으면 상기 데이터 전송을 계속하는 것을 특징으로 한다.
바람직하기로, 상기 DMA 콘트롤러는 상기 일정 데이터 량을 전송하는 횟수를 설정한 값이 상기 DMA 콘트롤러 내 레지스터에 저장되고, 상기 일정 데이터 량을 전송하는 횟수는 상기 DMA 콘트롤러 내 카운터에 의하여 결정된다.
이와 같은 본 발명은 주변기기와 메모리와의 데이터 전송시 DMA에서 일정 데이터를 전송한 후에 잠시 버스 홀드를 풀어 CPU에서 버스를 사용하여 급히 처리해야 할 프로세스를 처리한 후에 다시 데이터 전송을 계속하여 시스템 효율을 향상시킨다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 대하여, 동일한 참조부호는 동일한 부재임을 나타낸다.
도 2는 본 발명의 일실시예에 따른 DMA 방식을 적용한 블록 다이어그램을 나타내는 도면이다. 이를 참조하면, DMA 콘트롤러(10)는 외부 리퀘스트(nXDREQ), UART 리퀘스트(UART REQ) 및 USB 리퀘스트(USB REQ) 등의 리퀘스트 신호들 중 하나를 선택하는 모드 선택부(20)의 출력을 입력으로 하고 이에 대하여 CPU에게 버스(BUS) 사용을 요청하는 DMA-to-BUS 리퀘스트 신호(미도시)를 내보낸다. 이 후, CPU로부터 버스를 사용해도 좋다는 BUS-to-DMA 응답(ACK) 신호(미도시)에 대하여 DMA 콘트롤러(10)는 선택된 리퀘스트 신호에 해당하는 디바이스, 즉 외부 리퀘스트나 UART 또는 USB 디바이스로 응답신호(nDACK)를 내보낸다. 이 응답신호(nDACK)에 응답하여 해당 디바이스에서 버스를 통해 메모리로의 데이터 전송이 시작된다. 여기에서, UART 또는 USB 디바이스는 주변기기들로서 모니터, 프린터, 대용량 저장 드라이버(mass storage driver), 모뎀, 펙스 등을 포함하는 다양한 주변장치들이다.
또한, DMA 콘트롤러(10)는 내부 리퀘스트 신호(iREQ)를 발생하여 이를 버스(BUS)로 내보내는 데, 특히 USB 디바이스와 같이 많은 데이터를 빠른 속도로 전송하는 경우 해당 디바이스에서 버스를 통해 메모리로 전송되는 데이터는 일정하게 분할(이하 "패킷 데이터(packet data)"라고 칭함)된다. 따라서, 내부 리퀘스트 신호(iREQ)는 이 패킷 데이터를 소정횟수 만큼 전송한 후에 버스 홀드를 해제하는 신호이다. 버스 홀드를 해제하는 동안 CPU는 버스를 사용하여 처리해야 할 프로세스가 있다면 버스를 점유하여 해당 프로세스를 처리하게 된다. 즉, 버스 제어권이 CPU에게 넘어간다. 한편, CPU가 처리해야 할 프로세스가 없다면 DMA 콘트롤러(10)는 계속하여 앞서 전송한 데이터의 다음 패킷 데이터를 전송하게 된다. 이 때 버스 제어권은 다시 DMA 콘트롤러(10)가 가지게 된다.
내부 리퀘스트 신호(iREQ)에 의하여 DMA 콘트롤러(10)는 데이터 전송 개시후 소정의 패킷 데이터를 전송하고 버스 홀드를 풀고, 다시 소정의 패킷 데이터를 전송한 후 버스 홀드를 푸는 방법을 반복 수행한다. 따라서, 내부 리퀘스트 신호(iREQ)는 소정의 패킷 데이터를 전송하는 데 필요한 데이터 전송 횟수와 버스 홀드를 풀기 위한 신호 사이클 즉, 버스 홀드 사이클에 대한 정보를 가져야 한다. 이 데이터 전송 회수와 버스 홀드 사이클은 DMA 콘트롤러(10) 내 레지스터에 저장되고, 저장된 레지스터의 값에 따라 내부 카운터가 동작되어 설정된 데이터 전송 횟수 만큼씩 데이터 전송이 일어나고 버스 홀드를 푼다.
도 3은 도 2의 DMA 방식에서 신호들의 다이어그램을 나타내는 도면이다. 이를 참조하면, 도 2에서 모드 선택부(20)에 의하여 선택된 리퀘스트가 USB 디바이스에서 요구된 것이라고 가정하면, USB 디바이스에서는 DMA로 리퀘스트 신호( USB-to-DMA request(nDREQ))를 내보낸다. 이에 대해 DMA 콘트롤러는 버스를 잡기 위해 버스 리퀘스트 신호(DMA-to-BUS request)를 내보낸다. 시스템 메니저(system manager) 예컨대, CPU 등의 상위 레벨 디바이스로부터 버스를 사용해도 된다는 신호(BUS-to-DMA ack)가 DMA 콘트롤러로 보내지면 DMA 콘트롤러는 버스 홀드 신호(DMA-to-BUS hold)를 만들어 이 신호의 활성화 구간 동안 버스를 점유하게 된다. 그리고 DMA 콘트롤러는 USB 디바이스로 데이터를 전송해도 된다는 신호(DMA-to-USB ack)를 내보낸다. 이에 따라 USB 디바이스에서 버스(BUS)를 통해 메모리로의 데이터 전송이 직접 일어나게 된다. 여기까지는 종래의 DMA 버스 제어 방식과 동일하다. 그런데, 본 발명에서의 이 데이터 전송은 DMA 콘트롤러(10, 도 2)에서 내부 리퀘스트 신호(iREQ)가 발생되기 전 까지만 계속된다.
내부 리퀘스트 신호(iREQ)에 의하여 DMA 콘트롤러(10)는 데이터 전송을 위해 점유했던 버스를 놓게 된다. 즉, 버스 홀드 신호(DMA-to-BUS hold)를 비활성화시킨다. 이 동안 CPU는 버스를 사용하여 처리해야 하는 프로세스가 있으면 이를 수행한다. CPU가 처리해야 할 프로세스가 없다면, DMA 콘트롤러는 다음 데이터 전송을 위하여 다시 버스 리퀘스트 신호(DMA-to-BUS request)를 발생한다. 이에 대해 시스템 메니저(system manager)로부터 버스를 사용해도 된다는 신호(BUS-to-DMA ack)가 DMA 콘트롤러(10)로 보내지면 DMA 콘트롤러(10)는 버스 홀드 신호(DMA-to-BUS hold)를 만들어 이 신호의 활성화 구간 동안 버스를 점유하고 USB 디바이스로 데이터를 전송해도 된다는 신호(DMA-to-USB ack)를 내보낸다.
여기에서, 도 3에서 보여주듯이 내부 리퀘스트 신호(iREQ)와 시스템 메니저(system manager)로부터 버스를 사용해도 된다는 신호(BUS-to-DMA ack) 사이의 A 구간이 DMA 콘트롤러(10, 도 2)가 버스 홀드를 풀고 CPU에게 버스 사용권을 잠시 내어주는 구간이 된다.
계속하여, DMA 콘트롤러에서 USB 디바이스로 데이터를 전송해도 된다는 신호(DMA-to-USB ack)에 응답하여 USB 디바이스는 다음 데이터를 전송하게 된다. 본 실시예에서는 DMA의 버스 홀드 신호(DMA-to-BUS hold) 동안 4번의 데이터 전송이 이루어지는 예를 나타내고 있으나, 이는 앞서 설명한 바 있는 레지스트에 저장되는 값을 변화시킴으로 다양하게 구현될 수 있음은 물론이다.
따라서, 본 발명의 DMA 버스 제어 방법에 의하면, 종래에는 주변기기에서 메모리로 데이터 전송시 DMA 콘트롤러에 의하여 버스 사용권이 데이터 전송이 끝날때 까지 점유되어 이로 인하여 CPU가 급히 처리해야 하는 프로세스를 처리하지 못하던 것에 비하여, 일정 데이터를 전송한 후에 DMA 콘트롤러(10)가 잠시 버스 홀드를 풀어 CPU에서 버스를 사용하여 급히 처리해야 할 프로세스를 처리한 후에 다시 데이터 전송을 계속하므로 시스템 효율을 향상시킨다.
본 발명은 도면에 도시된 일 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 본 발명은 주변기기와 메모리와의 데이터 전송시 일정 데이터를 전송한 후에 DMA 콘트롤러가 잠시 버스 홀드를 풀어 CPU에서 버스를 사용하여 급히 처리해야 할 프로세스를 처리한 후에 다시 데이터 전송을 계속하기 때문에 시스템 효율을 향상시킨다.

Claims (3)

  1. CPU를 거치지 않고 주변기기와 메모리와의 데이터 전송을 제어하는 DMA 콘트롤러의 버스 제어 방법에 있어서,
    상기 주변기기의 리퀘스트 신호에 대해 상기 CPU로부터 받은 응답신호에 응답하여 상기 데이터 전송을 위하여 버스를 점유하는 단계;
    전송할 데이터 량을 분할하여 일정 데이터를 전송하는 단계;
    상기 버스 점유를 풀어 상기 CPU가 상기 버스를 사용할 수 있도록 내부 리퀘스트 신호를 발생하여 상기 CPU로 내보내는 단계; 및
    상기 CPU가 상기 버스를 사용하지 않으면 상기 데이터 전송을 계속하는 것을 특징으로 하는 DMA 버스 제어 방법.
  2. 제1항에 있어서, 상기 DMA 콘트롤러는
    상기 일정 데이터를 전송하는 횟수를 설정한 값이 상기 DMA 콘트롤러 내 레지스터에 저장되는 것을 특징으로 하는 DMA 버스 제어 방법.
  3. 제2항에 있어서, 상기 DMA 콘트롤러는
    상기 일정 데이터를 전송하는 횟수는 상기 DMA 콘트롤러 내 카운터에 의하여 결정되는 것을 특징으로 하는 DMA 버스 제어 방법.
KR1019990059442A 1999-12-20 1999-12-20 직접 메모리 억세스 버스 제어 방법 KR20010057244A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990059442A KR20010057244A (ko) 1999-12-20 1999-12-20 직접 메모리 억세스 버스 제어 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990059442A KR20010057244A (ko) 1999-12-20 1999-12-20 직접 메모리 억세스 버스 제어 방법

Publications (1)

Publication Number Publication Date
KR20010057244A true KR20010057244A (ko) 2001-07-04

Family

ID=19627323

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990059442A KR20010057244A (ko) 1999-12-20 1999-12-20 직접 메모리 억세스 버스 제어 방법

Country Status (1)

Country Link
KR (1) KR20010057244A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100389030B1 (ko) * 2001-06-21 2003-06-25 삼성전자주식회사 다중 채널을 가진 고속 직접 메모리 억세스 컨트롤러
KR100775406B1 (ko) * 2006-02-28 2007-11-12 후지쯔 가부시끼가이샤 Dma 데이터 전송 장치 및 dma 데이터 전송 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100389030B1 (ko) * 2001-06-21 2003-06-25 삼성전자주식회사 다중 채널을 가진 고속 직접 메모리 억세스 컨트롤러
KR100775406B1 (ko) * 2006-02-28 2007-11-12 후지쯔 가부시끼가이샤 Dma 데이터 전송 장치 및 dma 데이터 전송 방법

Similar Documents

Publication Publication Date Title
US5572686A (en) Bus arbitration scheme with priority switching and timer
US6032178A (en) Method and arrangement for data transmission between units on a bus system selectively transmitting data in one of a first and a second data transmission configurations
US7689732B2 (en) Method for improving flexibility of arbitration of direct memory access (DMA) engines requesting access to shared DMA channels
CN1551592B (zh) 数据传输控制装置、电子设备及数据传输控制方法
KR20000053380A (ko) 다양한 기능 모듈 접속용 포트 매니저 제어기
EP0535793B1 (en) Method for managing data transfers in a computing system having a dual bus structure
JP3284311B2 (ja) データ処理システムにおける通信バス制御装置およびバス制御方法
KR100644596B1 (ko) 버스 시스템 및 그 버스 중재방법
KR930002787B1 (ko) 주변 제어기와 어댑터 인터페이스
US20070067527A1 (en) Data transfer bus system connecting a plurality of bus masters
KR100630071B1 (ko) 다중 프로세서 환경에서의 dma를 이용한 고속 데이터전송 방법 및 그 장치
JPS6048791B2 (ja) アクセス制御装置
US7007124B2 (en) Image processing system, and semiconductor device and digital still camera apparatus using image processing system
JP2004133942A (ja) データバスシステム及びバス間クロスアクセス方法
KR20010057244A (ko) 직접 메모리 억세스 버스 제어 방법
KR100475438B1 (ko) 데이터 버스 시스템 및 버스간 크로스 액세스 방법
KR19990023279A (ko) 인터페이스를 구비한 통신 시스템
JP2624989B2 (ja) データ転送制御装置
JP4102405B2 (ja) データ処理装置、データ通信方法及びシリアル入出力装置
JPH10320349A (ja) プロセッサ及び当該プロセッサを用いるデータ転送システム
JP2004355435A (ja) アクセス調停装置
JP5146796B2 (ja) ホストコントローラ
US7117281B1 (en) Circuit, system, and method for data transfer control for enhancing data bus utilization
KR100190184B1 (ko) 직렬버스를 통해 데이타를 송신하는 회로
KR100525379B1 (ko) 반이중 데이터 전송방식의 기억장치 직접접근 로직의데이터 충돌 방지 방법

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination