KR20020073784A - 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로변환되는 직접 메모리 억세스 컨트롤러 - Google Patents

전송될 데이터 길이 값에 따라 전송 모드가 유동적으로변환되는 직접 메모리 억세스 컨트롤러 Download PDF

Info

Publication number
KR20020073784A
KR20020073784A KR1020010013620A KR20010013620A KR20020073784A KR 20020073784 A KR20020073784 A KR 20020073784A KR 1020010013620 A KR1020010013620 A KR 1020010013620A KR 20010013620 A KR20010013620 A KR 20010013620A KR 20020073784 A KR20020073784 A KR 20020073784A
Authority
KR
South Korea
Prior art keywords
mode
data
burst
length value
dma transfer
Prior art date
Application number
KR1020010013620A
Other languages
English (en)
Other versions
KR100375233B1 (ko
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 KR10-2001-0013620A priority Critical patent/KR100375233B1/ko
Priority to TW090115888A priority patent/TW541459B/zh
Priority to US09/956,534 priority patent/US6691179B2/en
Publication of KR20020073784A publication Critical patent/KR20020073784A/ko
Application granted granted Critical
Publication of KR100375233B1 publication Critical patent/KR100375233B1/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/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

Abstract

여기에 개시된 직접 메모리 억세스 컨트롤러는, 전송될 데이터의 길이 값에 관계없이 자동으로 DMA 전송 모드를 버스트 모드 및/또는 싱글 모드로 변환하여 DMA 전송을 수행하는 버스트/싱글모드 제어회로를 포함한다. 버스트/싱글모드 제어회로는, 중앙처리장치의 개입 없이 전송될 데이터 길이 값에서 버스트 길이를 나누어 준 몫에 해당되는 회수만큼 버스트 모드 DMA 전송을 수행하고, 상기 나눗셈의 나머지에 해당되는 회수만큼 싱글 모드 DMA 전송을 연속적으로 수행한다.

Description

전송될 데이터 길이 값에 따라 전송 모드가 유동적으로 변환되는 직접 메모리 억세스 컨트롤러{DIRECT MEMORY ACCESS CONTROLLER BEING CONVERTED TRANSFER MODE FLEXIBLY ACCORDING TO DATA TRANSFER COUNTER VALUE}
발명은 직접 메모리 억세스(Direct Memory Access : DMA, 이하 DMA라 함)전송방법에 관한 것으로, 좀 더 구체적으로는 DMA 컨트롤러 내에서 고속 데이터 전송을 수행할 수 있도록 하는 장치에 관한 것이다.
DMA 전송방법은 중앙처리장치(central processing unit ; CPU)를 거치지 않고 메인 메모리(main memory)와 입/출력 장치(input/output device) 사이에서 직접 수행되는 데이터 전송 방법 중 하나 이다. 이 방법에서는 중앙처리장치가 입출력 명령을 처리하는 동안, 데이터는 연결되어 있는 장치로 입/출력 장치를 통해 직접 전송된다.
DMA 전송방법을 사용하기 위해서는 시스템 버스 상에 DMA 컨트롤러(DMA controller)와 같은 DMA 모듈이 시스템 버스 상에 추가되어야 한다. DMA 컨트롤러는 중앙처리장치로부터 시스템의 제어를 넘겨받아 중앙처리장치의 기능 중 일부분을 대신 처리한다. 이를 위해 중앙처리장치는 데이터 블록을 기입하거나 독출하기를 원할 때 기입/독출 동작 지정, I/O 장치의 주소, 메모리 내에 데이터가 기입/독출될 부분의 시작 주소, 그리고 기입/독출될 단어들의 개수에 관한 정보를 포함한명령어를 DMA 컨트롤러로 보내준다. 명령을 보낸 다음 중앙처리장치 다른 일을 계속한다. 즉, 중앙처리장치는 I/O 동작을 DMA 컨트롤러에게 일임한 것이며, DMA 컨트롤러가 I/O 동작을 중앙처리장치를 대신하여 처리하게 된다. 이 때, DMA 컨트롤러는 중앙처리장치를 통하지 않고 한 번에 한 단어씩 모든 데이터 블록을 메모리로 직접 전송한다. 모든 데이터 전송이 완료되면, DMA 모듈은 중앙처리장치에게 인터럽트(interrupt)를 발생한다. 따라서, 중앙처리장치는 데이터 전송의 시작과 끝 부분에만 관여하게 된다. 이와 같은 DMA 전송방법은 U.S. Pats. No. 5,669,014; 5,613,162; 5,590,286 및 5,513,374 등에 개시되어 있다.
잘 알려져 있는 바와 같이, DMA 전송은 크게 싱글 모드(single mode)와 버스트 모드(burst mode)로 구분된다. 싱글 모드는 데이터를 전송하는 도중 상위 인터럽트가 발생되면 발생된 인터럽트를 우선 순위로 처리한 후 데이터를 전송하는 모드이고, 버스트 모드는 데이터 전송 시 연속적인 블록 전체를 전송하는 동안 아무런 인터럽트를 받지 않고 전송을 완료하는 모드이다. 따라서, 버스트 모드의 지원 여부에 따라 DMA 컨트롤러의 시스템 버스 전송 성능이 좌우된다 할 수 있다. 근래 들어 개발되고 있는 DMA 컨트롤러들은 버스트 모드를 지원하고 있고, 버스트 모드를 위해 다양한 전송 데이터 사이즈(예를 들면, 바이트(byte), 하프-워드(half-word), 워드(word)) 및 다양한 버스트 길이(예를 들면, 4, 8, 16 length)를 지원하고 있다.
그러나, 현재 DMA 컨트롤러에 지원되고 있는 버스트 모드 DMA 전송 방법은 전송될 데이터의 길이 값(data transfer counter value)이 버스트 길이(burstlength) 값으로 나누어지는 경우만 지원하고 있다. 그 결과, 전송될 데이터의 길이 값이 버스트 길이 값으로 완전히 나누어지지 않는 경우에는 버스트 모드를 지원하지 못하는 한계를 가지고 있다. 이와 같은 문제를 해결하기 위해 프로그래머들은 전송될 데이터의 길이 값을 미리 계산하여 프로그램 함으로써 버스트 모드를 적용하고 있다. 그러나, 이와 같은 방법은 프로그래머가 일일이 전송될 데이터 길이 값을 미리 계산하고 각 데이터 길이 별로 프로그램을 해야 하는 번거로움을 가지고 있다.
따라서, 본 발명의 목적은 전송될 데이터의 길이 값에 관계없이 DMA 전송 모드를 버스트 모드 및/또는 싱글 모드로 자동으로 변환함으로서, 데이터의 전송 속도를 향상시킬 수 있는 장치를 제공하는데 있다.
도 1은 본 발명에 의한 DMA 컨트롤러의 구조를 보여주기 위한 블록도;
도 2는 도 1에 도시된 버스트/싱글 모드 제어회로의 상세 구조를 보여주기 위한 블록도;
도 3 및 도 4는 종래 기술에 의한 DMA 컨트롤러의 DMA 전송 타이밍을 보여주기 위한 타이밍도; 그리고
도 5는 본 발명에 의한 DMA 컨트롤러의 DMA 전송 타이밍을 보여주기 위한 타이밍도.
*도면의 주요 부분에 대한 부호의 설명*
10 : 시스템 버스 인터페이스20 : 레지스터 제어회로
30 : 버스트/싱글 모드 제어회로31 : 제어부
32 : 전송모드 자동변환부33 : 감소기
34 : 비교기35 : 모드 변환기
36 : 제 1 신호 발생기37 : 제 2 신호 발생기
40 : 레지스터41 : 제 1 레지스터(SAR)
42 : 제 2 레지스터(DAR)43 : 제 3 레지스터(TCR)
44 : 제 4 레지스터(DCR)50 : 메모리
100 : DMA 컨트롤러
상술한 바와 같은 본 발명의 목적을 달성하기 위한 본 발명의 특징에 의하면, 직접 메모리 억세스 컨트롤러는, 시스템 버스 인터페이스, 제 1 내지 제 4 레지스터, 레지스터 제어회로, 그리고 버스트/싱글모드 제어회로를 포함한다. 시스템 버스 인터페이스는, 중앙처리장치로부터 입/출력 장치의 주소, 메모리로부터 데이터가 기입/독출될 주소, 기입/독출될 데이터의 길이 값, 그리고 DMA 전송에 사용되는 제어 신호에 대한 인터페이스를 수행한다. 제 1 레지스터에는 입/출력 장치의 주소가 저장되고, 제 2 레지스터에는 메모리로부터 데이터가 기입/독출될 부분의 시작 주소가 저장되고, 제 3 레지스터에는 전송될 데이터의 길이 값이 저장되고,그리고 제 4 레지스터에는 제어 신호가 저장된다. 레지스터 제어회로는 시스템 버스 인터페이스를 통해 받아들인 주소, 데이터의 길이 값 및 제어신호를 제 1 내지 제 4 레지스터의 적정 위치에 실어준다. 그리고 버스트/싱글모드 제어회로는 제 3 및 제 4 레지스터들로부터 데이터의 길이 값과 제어 신호를 받아들여 DMA 전송 모드를 버스트 모드 또는 싱글 모드로 자동 변환하고, 변환된 DMA 전송 모드에 따른 DMA 전송 동작을 수행한다.
바람직한 실시예에 있어서, 버스트/싱글모드 제어회로는 데이터 길이 값에서 버스트 길이를 나누어 준 몫에 해당되는 회수만큼 버스트 모드 DMA 전송을 수행하고, 상기 나눗셈의 나머지에 해당되는 회수만큼 싱글 모드 DMA 전송을 수행한다.
바람직한 실시예에 있어서, 버스트/싱글모드 제어회로에 의한 버스트 모드 DMA 전송과 싱글 모드 DMA 전송은 중앙처리장치의 개입 없이 연속적으로 수행된다.
(실시예)
이하 본 발명에 따른 실시예를 첨부된 도면 도 1 내지 도 5를 참조하여 상세히 설명한다.
본 발명의 신규한 DMA 컨트롤러는, 전송될 데이터의 길이 값에 관계없이 버스트 모드 및 싱글 모드를 자동으로 변환하여 데이터를 전송하여, 다양한 데이터 길이 값을 가지는 데이터에 대한 최적의 고속 DMA 전송을 수행한다.
도 1은 본 발명에 의한 DMA 컨트롤러(100)의 구조를 보여주기 위한 블록도이다. 도 1을 참조하면, DMA 컨트롤러(100)는 시스템 버스 인터페이스(10), 레지스터 제어회로(20), 버스트/싱글 모드 제어회로(30), 레지스터(40), 그리고 메모리(50)로 구성된다.
시스템 버스 인터페이스(10)는 중앙처리장치(미 도시됨)와의 인터페이스를 수행하여, I/O 장치(미 도시됨)의 주소, 메모리(50)로부터 데이터가 기입/독출될 주소, 그리고 기입/독출될 데이터의 길이에 관한 정보 등을 받아들인다.
레지스터 제어회로(20)는 시스템 버스 인터페이스(10)를 통해 받아들인 상기 정보를 레지스터(40)의 적정 위치에 싣는 역할을 수행한다. 여기서, 레지스터(40)는, 제 1 내지 제 4 레지스터(41-44)로 구성되는데, 제 1 레지스터(41)는 I/O 장치(미 도시됨)의 주소를 저장하는 소오스 어드레스 레지스터(source address register ; SAR)로 사용되고, 제 2 레지스터(42)는 메모리(50)로부터 데이터가 기입/독출될 부분의 시작 주소를 저장하는 목적 어드레스 레지스터(destination address register ; DAR)로 사용된다. 제 3 레지스터(43)는 전송될 데이터의 길이 값(transfer counter value)(즉, 기입/독출될 단어들의 개수에 관한 정보)을 저장하는 전송 카운터 레지스터(transfer counter register ; TCR)로 사용되고, 제 4 레지스터(44)는 DMA 전송에 사용되는 제어 신호를 저장하는 DMA 제어 레지스터(DMA control register ; DCR)로 사용된다.
버스트/싱글 모드 제어회로(30)는 제어부(31)와 전송모드 자동 변환부(32)로 구성되어, DMA 전송 모드를 버스트 모드 또는 싱글 모드로 자동 변환시키고, 이에 따른 DMA 전송 동작을 수행한다. 특히, 본 발명에 의한 버스트/싱글 모드 제어회로(30)에 의해 수행되는 DMA 전송 모드의 변환은, 특정 데이터 길이 값에만 국한되지 않고, 어떠한 길이 값을 가지는 데이터에도 적용이 가능한 특징을 가진다.
예를 들어, 종래의 DMA 컨트롤러에서 수행되는 버스트 모드 동작은, 전송될 데이터의 길이 값(transfer counter value)이 버스트 길이(burst length)로 나누어 떨어지는 경우에만 가능하였다. 그러나, 본 발명에 의한 DMA 컨트롤러(100)에서 수행되는 버스트 모드 동작은, 전송될 데이터의 길이 값이 버스트 길이로 나누어 떨어지지 않더라도, 수행할 수 있는 최대한의 버스트 모드 동작을 수행하고, 버스트 모드 데이터 전송 후 남은 데이터를 싱글 모드로 전송한다. 이와 같은 일련의 모드 변환 과정은 제 3 및 제 4 레지스터들(43, 44)에 저장되어 있는 전송될 데이터의 길이 값(TCR_VALUE)과 DMA 전송에 사용되는 제어 신호(DCR_VALUE)에 응답해서 전송모드 자동 변환부(32)에서 자동으로 이루어지며, DMA 전송이 모두 완료된 후에는 DMA 전송의 완료를 알리는 인터럽트 신호(TR_END_INT)가 제어부(31)를 통해 중앙처리장치(미 도시됨)로 발생된다. 버스트/싱글 모드 제어회로(30)에 대한 보다 상세한 구성을 살펴보면 다음과 같다.
도 2는 도 1에 도시된 버스트/싱글 모드 제어회로(30)의 상세 구조를 보여주기 위한 블록도이다. 도 2를 참조하면, 버스트/싱글 모드 제어회로(30)의 전송모드 자동 변환부(32)는, 감소기(decrementor ; 33), 비교기(comparator ; 34), 모드 변환기(mode converter ; 35), 그리고 제 1 및 제 2 신호 발생기(1st and 2nd signal generators ; 36, 37)로 구성된다.
제어부(31)는 제 4 레지스터들(44)에 저장되어 있는 제어 신호(DCR_VALUE)에 응답해서 버스트/싱글 모드 제어회로(30)에서 수행되는 DMA 전송 모드 변환과, 이에 따른 DMA 전송 동작을 제어한다.
감소기(33)에는 초기 값으로 제 3 레지스터(43)에 저장되어 있는 전송될 데이터의 길이 값(TCR_VALUE)이 저장되고, 버스트 모드 DMA 전송 또는 싱글 모드 DMA 전송이 수행될 때마다 제어부(31)의 제어에 의해서 소정의 값이 감소된다. 예를 들어, 버스트 길이가 8일 때, 감소기(33)에 저장되어 있는 값(TCR_VALUE)은 버스트 모드 DMA 전송마다 8 만큼씩 감소되고, 싱글 모드 DMA 전송마다 1 만큼씩 감소된다. 감소기(33)에 의해 소정의 값만큼 감소된 데이터의 길이 값(TCR_VALUE)은 비교기(34)로 입력된다.
비교기(34)는 감소기(33)로부터 데이터의 길이 값(TCR_VALUE)을 받아들여서, 상기 값(TCR_VALUE)이 버스트 길이로 나누어질 수 있는지 여부를 판별하는 기능을 수행한다. 그리고, 비교기(34)는 판별 결과에 따라 DMA 전송 모드를 버스트 모드 또는 싱글 모드로 변환시키기 위한 플래그 값(R_flag)을 모드 변환기(35)로 발생한다. 예를 들어, 데이터의 길이 값(TCR_VALUE)이 버스트 길이로 나누어진다면 플래그 값(R_flag)은 0(또는 1)의 값으로 출력되어 DMA 컨트롤러(100)로 하여금 버스트 모드로 데이터 전송을 하도록 하고, 데이터의 길이 값(TCR_VALUE)이 버스트 길이로 나누어지지 않는다면 플래그 값(R_flag)은 1(또는 0)의 값으로 출력되어 DMA 컨트롤러(100)로 하여금 싱글 모드로 데이터 전송을 하도록 한다. 이와 같은 기능을 회로로 구현하는 데에는 여러 가지 방법이 있을 수 있으나, 본 발명에서는 간단히 24-비트 비교기로 구성하여 사용한다.
앞에서 예를 든 경우처럼 버스트 길이가 8인 경우, 데이터의 길이값(TCR_VALUE)에 따른 전송 모드 변환에는 데이터의 길이 값(TCR_VALUE)을 구성하는 다수의 비트들 중 3개의 최하위 비트(least significant bit ; LBS)들(예를 들면, b2, b1, b0)이 중요한 요소로서 작용하게 된다. 예를 들어, 데이터의 길이 값(TCR_VALUE)이 버스트 길이로 나누어지는 경우, 상기 3개의 최하위 비트들(b2, b1, b0)을 제외한 상위 비트들 중에는 적어도 하나 이상의 값이 1을 가지게 되고, 데이터의 길이 값(TCR_VALUE)이 버스트 길이로 나누어지지 않고 나머지로서 존재하는 경우, 상기 3개의 최하위 비트들(b2, b1, b0)을 제외한 상위 비트들은 모두 0의 값을 가지게 된다. 이 때, 바로 이들 3개의 최하위 비트들(b2, b1, b0)은 데이터의 길이 값(TCR_VALUE)이 버스트 길이로 나누어지지 않고 나머지로서 존재하는 값(예를 들면, 0 내지 7의 값)을 나타내게 된다. 특히, 이 경우 상기 3개의 최하위 비트들(b2, b1, b0)이 모두 0이고, 상기 비트들(b2, b1, b0)을 제외한 상위 비트들이 모두 0이면, 데이터의 길이 값(TCR_VALUE)은 0이 되고, 더 이상의 DMA 전송은 수행되지 않게 된다.
즉, 비교기(34)에서의 비교 결과, 상기 3개의 최하위 비트들(b2, b1, b0)을 제외한 상위 비트들 중 적어도 하나 이상이 1의 값을 가지면, 데이터의 길이 값(TCR_VALUE)이 버스트 길이로 나누어질 수 있으므로 플래그 값(R_flag)은 0(또는 1)의 값으로 출력된다. 그리고, 비교기(34)에서의 비교 결과, 상기 3개의 최하위 비트들(b2, b1, b0)을 제외한 상위 비트들이 모두 0의 값을 가지고, 상기 3개의 최하위 비트들(b2, b1, b0)이 모두 0의 값을 갖지 않으면, 데이터의 길이 값(TCR_VALUE)이 버스트 길이로 나누어지지 않고 나머지로 존재하게 되므로 플래그값(R_flag)은 1(또는 0)의 값으로 출력된다.
제 1 신호 발생기(36)는 버스트 모드 DMA 전송을 위한 제어 신호를 발생하는 신호발생기이고, 제 2 신호 발생기(37)는 싱글 모드 DMA 전송을 위한 제어 신호를 발생하는 신호발생기이다. 이들 신호 발생기(36, 37)는, 비교기(34)로부터 발생되는 플래그 값(R_flag)에 따른 모드 변환기(35)의 제어에 의해서 선택적으로 인에이블 된다. 예를 들어, 비교기(34)로부터 버스트 모드를 나타내는 0(또는 1)의 값을 가지는 플래그 값(R_flag)이 발생되면, 제 1 신호 발생기(36)는 모드 변환기(35)에 의해 인에이블 되어 버스트 모드 DMA 전송을 위한 제어 신호를 발생하게 된다. 그리고, 비교기(34)로부터 싱글 모드를 나타내는 1(또는 0)의 값을 가지는 플래그 값(R_flag)이 발생되면, 제 2 신호 발생기(37)는 모드 변환기(35)에 의해 인에이블 되어 싱글 모드 DMA 전송을 위한 제어 신호를 발생하게 된다. 이 때, 모드 변환기(35)는, 설정된 전송 모드를 나타내는(즉, 현재 수행되는 DMA 전송 모드를 나타내는) 플래그 신호(Selected Transfer Mode Flag Signal ; STM_flag)를 감소기(33)로 전송한다. 이와 같은 동작을 수행하는 모드 변환기(35)는 멀티플렉서 등으로 구성 가능하다.
감소기(33)는, 앞에서 설명한 바와 같이 모드 변환기(35)로부터 발생된 플래그 신호(STM_flag) 및 제어부(31)의 제어에 의해 현재 수행중인 DMA 모드에 따라 소정의 값(예를 들면, 버스트 모드에서는 버스트 길이 만큼, 싱글 모드에서는 1 만큼)을 전송될 데이터의 길이 값(TCR_VALUE)에서 감소시킨다. 이 때, 감소기(33)에 의해 감소된 전송될 데이터의 길이 값(TCR_VALUE)이 0이 되면, 제어부(31)는 DMA전송의 종료를 알리는 인터럽트 신호(TR_END_INT)를 시스템 버스 인터페이스(10)를 통해 중앙처리장치(미 도시됨)로 전송한다.
이와 같은 동작을 수행하는 버스트/싱글 모드 제어회로(30)는 전송될 데이터의 길이 값(TCR_VALUE)에 제한을 받지 않고 자동으로 버스트 모드 및/또는 싱글 모드를 설정하여 DMA 전송을 수행한다. 이 때, 버스트/싱글 모드 제어회로(30)에 의해 자동으로 수행되는 버스트 모드 DMA 전송의 회수는 전송될 데이터의 길이 값(TCR_VALUE)에서 버스트 길이를 나누어 준 몫에 해당되고, 버스트 모드 DMA 전송 이후 버스트/싱글 모드 제어회로(30)에 의해 자동으로 수행되는 싱글 모드 DMA 전송의 회수는 상기 나눗셈의 나머지에 해당된다. 이와 같이, 전송될 데이터의 길이 값(TCR_VALUE)에 의해서 전송 모드가 유동적으로 변환되는 DMA 컨트롤러(100)는 종래의 방법에 비해 DMA 전송 속도가 현저히 향상된다. 이와 같은 특징을 가지는 DMA 컨트롤러(100)는 버스트 모드를 지원하는 모든 DMA 컨트롤러에 적용될 수 있을 뿐만 아니라, USB(Universal Serial Bus), Memory-to-Memory, 그리고 시스템-온-칩(System On a Chip) 등과 같은 고성능 장치들에 적용될 수 있다.
이와 같이, 전송될 데이터의 길이 값(TCR_VALUE)에 제한을 받지 않고 자동으로 버스트 모드 및 싱글 모드를 설정할 수 있는 본 발명에 의한 DMA 컨트롤러(100)의 성능을 종래의 DMA 컨트롤러와 비교하면 다음과 같다.
도 3에는 전송될 데이터의 길이 값(TCR_VALUE)이 버스트 길이로 나누어 떨어지는 경우의 종래 기술에 의한 버스트 모드 DMA 전송 타이밍이 도시되어 있다. 이와 같은 방식을 따르는 종래의 DMA 컨트롤러는 버스트 길이 만큼의 데이터 길이값(TCR_VALUE)에 대한 버스트 모드 DMA 전송만을 수행할 수 있다. 따라서, 전송될 데이터의 길이 값(TCR_VALUE)이 버스트 길이로 나누어 떨어지는 경우에만 버스트 모드 DMA 전송을 수행할 수 있다. 따라서, 전송될 데이터의 길이 값(TCR_VALUE)이 10이고 버스트 길이가 8인 경우처럼 전송될 데이터의 길이 값(TCR_VALUE)이 버스트 길이로 나누어 떨어지지 않는 경우에는, 버스트 길이인 8에 해당되는 데이터를 제외한 나머지 2 만큼의 데이터에 대해서는 버스트 모드로 전송하지 못하는 한계가 있다. 바로 이와 같은 나머지 데이터를 싱글 모드로 전송할 수 있는 DMA 전송 방법이 도 4에 도시되어 있다.
도 4에는 전송될 데이터의 길이 값(TCR_VALUE)이 버스트 길이로 나누어 떨어지지 않는 경우의 버스트 모드 DMA 전송 및 싱글 모드 DMA 전송 타이밍이 도시되어 있다. 예를 들어, 전송될 데이터의 길이 값(TCR_VALUE)이 10이고 버스트 길이가 8인 경우, 종래의 DMA 컨트롤러는 도면에 도시된 바와 같이 1 번의 버스트 모드 DMA 전송을 우선 수행하고, 중앙처리장치에 의해 싱글 모드 세팅이 수행된 후 두 차례에 걸친 싱글 모드 DMA 전송을 수행하게 된다. DMA 컨트롤러는 기본적으로 버스트 길이인 8만큼의 버스트 모드 DMA 전송만을 수행할 수 있기 때문에, 2 만큼의 데이터의 길이 값(TCR_VALUE)을 전송하기 위해서는 싱글 모드로의 전송 모드 전환이 필요한 것이다. 그러나, 이와 같은 데이터 전송을 수행하기 위해서는 중앙처리장치의 개입이 필요하게 되고, 이에 따른 지연이 따르게 된다. 뿐만 아니라, 이와 같은 싱글 모드로의 전환은, 프로그래머에 의한 데이터 길이 값의 계산이 사전에 요구된다.
도 5에는 전송될 데이터의 길이 값(TCR_VALUE)이 버스트 길이로 나누어 떨어지지 않는 경우 수행되는 본 발명에 의한 DMA 전송 타이밍이 도시되어 있다. 이와 같은 DMA 전송 방법은, 중앙처리장치의 개입 없이 전송 모드가 버스트 모드에서 싱글 모드로 자동 변환되고 데이터 전송이 연속적으로 이루어지기 때문에, 중앙처리장치의 개입에 따른 지연이 발생되지 않는 특징을 가진다. 그리고, 본 발명에 의한 DMA 컨트롤러의 DMA 전송은 전송될 데이터의 길이에 제한을 받지 않고 유동적으로 전송 모드를 변환시킬 수 있기 때문에, 도 4에 도시된 경우와 같이 프로그래머에 의한 데이터 길이 값의 계산이 필요치 않은 특징을 가진다.
이상에서, 본 발명에 따른 회로의 구성 및 동작을 상기한 설명 및 도면에 따라 도시하였지만 이는 예를 들어 설명한 것에 불과하며 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능함은 물론이다.
이상과 같은 본 발명에 의하면, DMA 전송 모드가 전송될 데이터의 길이 값에 관계없이 유동적으로 버스트 모드 및/또는 싱글 모드로 변환되므로, 다양한 데이터 길이 값을 가지는 데이터에 대한 최적의 고속 DMA 전송이 수행된다.

Claims (8)

  1. 중앙처리장치를 거치지 않고 메모리와 입/출력 장치 사이에서 데이터 전송을 직접 수행하기 위한 직접 메모리 억세스 컨트롤러에 있어서:
    상기 중앙처리장치로부터 상기 입/출력 장치의 주소, 상기 메모리로부터 데이터가 기입/독출될 주소, 상기 기입/독출될 데이터의 길이 값, 그리고 DMA 전송에 사용되는 제어 신호에 대한 인터페이스를 수행하기 위한 시스템 버스 인터페이스와;
    상기 입/출력 장치의 주소를 저장하기 위한 제 1 레지스터와;
    상기 메모리로부터 데이터가 기입/독출될 부분의 시작 주소를 저장하기 위한 제 2 레지스터와;
    상기 데이터의 길이 값을 저장하기 위한 제 3 레지스터와;
    상기 제어 신호를 저장하기 위한 제 4 레지스터와;
    상기 시스템 버스 인터페이스를 통해 받아들인 상기 주소, 상기 데이터의 길이 값 및 상기 제어신호를 상기 제 1 내지 제 4 레지스터의 적정 위치에 실어주기 위한 레지스터 제어회로; 그리고
    상기 제 3 및 제 4 레지스터들로부터 상기 데이터의 길이 값과 상기 제어 신호를 받아들여 DMA 전송 모드를 버스트 모드 또는 싱글 모드로 자동 변환하고, 변환된 상기 DMA 전송 모드에 따른 DMA 전송 동작을 수행하기 위한 버스트/싱글모드 제어회로를 포함하는 것을 특징으로 하는 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로 변환되는 직접 메모리 억세스 컨트롤러.
  2. 제 1 항에 있어서,
    상기 버스트/싱글모드 제어회로는,
    상기 데이터 길이 값에서 버스트 길이를 나누어 준 몫에 해당되는 회수만큼 상기 버스트 모드 DMA 전송을 수행하고, 상기 나눗셈의 나머지에 해당되는 회수만큼 상기 싱글 모드 DMA 전송을 수행하는 것을 특징으로 하는 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로 변환되는 직접 메모리 억세스 컨트롤러.
  3. 제 2 항에 있어서,
    상기 버스트 모드 DMA 전송과 상기 싱글 모드 DMA 전송은 상기 중앙처리장치의 개입 없이 연속적으로 수행되는 것을 특징으로 하는 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로 변환되는 직접 메모리 억세스 컨트롤러.
  4. 제 1 항에 있어서,
    상기 버스트/싱글모드 제어회로는,
    상기 제 4 레지스터에 저장되어 있는 상기 제어 신호에 응답해서 DMA 전송 모드 변환과, 이에 따른 DMA 전송 동작을 제어하기 위한 제어부와;
    상기 제 3 레지스터에 저장되어 있는 상기 데이터 길이 값을 받아들이고, 상기 버스트 모드 DMA 전송 또는 상기 싱글 모드 DMA 전송이 수행될 때마다 상기 제어부의 제어에 의해서 DMA 전송 모드별로 각기 다른 값을 상기 데이터 길이 값으로부터 감소시키기 위한 감소기와;
    상기 데이터 길이 값을 구성하는 다수의 비트들 중 소정의 비트로 구성되는 하위 비트군과, 상기 하위 비트군을 제외한 비트들로 구성되는 상위 비트군 각각을 구성하는 비트들의 값에 의해서 상기 DMA 전송 모드를 결정하기 위한 비교기와;
    상기 버스트 모드 DMA 전송을 위한 제어 신호를 발생하기 위한 제 1 신호 발생기와;
    상기 싱글 모드 DMA 전송을 위한 제어 신호를 발생하기 위한 제 2 신호 발생기; 그리고
    상기 비교기에 의해 결정된 상기 DMA 전송 모드에 응답해서 상기 제 1 및 제 2 신호 발생기 중 어느 하나를 인에이블 시켜 DMA 전송을 수행하고, 수행중인 DMA 전송 모드 정보를 상기 감소기로 전송하는 모드 변환기를 포함하는 것을 특징으로 하는 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로 변환되는 직접 메모리 억세스 컨트롤러.
  5. 제 4 항에 있어서,
    상기 감소기는,
    상기 DMA 모드 정보에 응답해서, 상기 DMA 전송 모드가 상기 버스트 모드인 경우 상기 데이터 길이 값을 상기 버스트 길이만큼 감소시키고, 상기 DMA 전송 모드가 상기 싱글 모드인 경우 상기 데이터 길이 값을 1 만큼 감소시키는 것을 특징으로 하는 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로 변환되는 직접 메모리 억세스 컨트롤러.
  6. 제 4 항에 있어서,
    상기 비교기는,
    상기 상위 비트군에 1의 값을 가지는 비트가 적어도 하나 이상 존재하면, 상기 DMA 전송 모드를 상기 버스트 모드로 결정하는 것을 특징으로 하는 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로 변환되는 직접 메모리 억세스 컨트롤러.
  7. 제 4 항에 있어서,
    상기 비교기는,
    상기 상위 비트군의 모든 비트들이 0의 값을 가지고, 상기 하위 비트군 중 1의 값을 가지는 비트가 적어도 하나 이상 존재하면, 상기 DMA 전송 모드를 상기 싱글 모드로 결정하는 것을 특징으로 하는 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로 변환되는 직접 메모리 억세스 컨트롤러.
  8. 제 4 항에 있어서,
    상기 제어부는,
    상기 감소기에 의해 감소된 데이터 길이 값이 0인 경우, 인터럽트 신호를 상기 시스템 버스 인터페이스로 발생하여 상기 DMA 전송을 종료하는 것을 특징으로 하는 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로 변환되는 직접 메모리 억세스 컨트롤러.
KR10-2001-0013620A 2001-03-16 2001-03-16 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로변환되는 직접 메모리 억세스 컨트롤러 KR100375233B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR10-2001-0013620A KR100375233B1 (ko) 2001-03-16 2001-03-16 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로변환되는 직접 메모리 억세스 컨트롤러
TW090115888A TW541459B (en) 2001-03-16 2001-06-29 Direct memory access controller for converting a transfer mode flexibly in accordance with a data transfer counter value
US09/956,534 US6691179B2 (en) 2001-03-16 2001-09-19 Direct memory access controller for converting a transfer mode flexibly in accordance with a data transfer counter value

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0013620A KR100375233B1 (ko) 2001-03-16 2001-03-16 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로변환되는 직접 메모리 억세스 컨트롤러

Publications (2)

Publication Number Publication Date
KR20020073784A true KR20020073784A (ko) 2002-09-28
KR100375233B1 KR100375233B1 (ko) 2003-03-08

Family

ID=19707015

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0013620A KR100375233B1 (ko) 2001-03-16 2001-03-16 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로변환되는 직접 메모리 억세스 컨트롤러

Country Status (3)

Country Link
US (1) US6691179B2 (ko)
KR (1) KR100375233B1 (ko)
TW (1) TW541459B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100708266B1 (ko) * 2005-01-27 2007-04-17 후지쯔 가부시끼가이샤 다이렉트 메모리 액세스 제어 방법, 다이렉트 메모리액세스 제어 장치, 정보 처리 시스템, 프로그램을 기록한컴퓨터 판독 가능한 기록 매체
US8037214B2 (en) 2006-12-01 2011-10-11 Electronics And Telecommunications Research Institute Method and apparatus for controlling direct memory access
KR101109600B1 (ko) * 2006-11-03 2012-01-31 삼성전자주식회사 직접 메모리 접근 제어를 이용한 데이터 전송 방법 및 그장치

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002023463A1 (en) * 2000-09-11 2002-03-21 David Edgar System, method, and computer program product for optimization and acceleration of data transport and processing
US7484028B2 (en) * 2005-12-20 2009-01-27 Fujitsu Limited Burst-capable bus bridges for coupling devices to interface buses
JP4353211B2 (ja) * 2006-07-11 2009-10-28 株式会社日立製作所 通信機能内蔵制御装置
JP2008097372A (ja) * 2006-10-12 2008-04-24 Matsushita Electric Ind Co Ltd システム制御装置
US7779174B2 (en) * 2006-11-03 2010-08-17 Samsung Electronics Co., Ltd. Method and apparatus for dynamically changing burst length using direct memory access control
US8660234B2 (en) 2008-07-31 2014-02-25 International Business Machines Corporation RAM based implementation for scalable, reliable high speed event counters
JP5504747B2 (ja) * 2009-08-20 2014-05-28 セイコーエプソン株式会社 プロジェクター
JP5434812B2 (ja) * 2010-06-21 2014-03-05 富士通セミコンダクター株式会社 データ処理システム
JP6029433B2 (ja) * 2012-11-26 2016-11-24 ルネサスエレクトロニクス株式会社 マイコン
US11550509B2 (en) 2018-10-01 2023-01-10 Samsung Electronics Co., Ltd. Method and apparatus for adaptive data transfer in a memory system
TWI771852B (zh) * 2020-12-29 2022-07-21 新唐科技股份有限公司 直接記憶體存取裝置、資料傳輸方法與電子設備
CN117807001A (zh) * 2024-02-29 2024-04-02 山东云海国创云计算装备产业创新中心有限公司 一种基于dma/直接内存访问的任务处理方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4530053A (en) * 1983-04-14 1985-07-16 International Business Machines Corporation DMA multimode transfer controls
US4799199A (en) * 1986-09-18 1989-01-17 Motorola, Inc. Bus master having burst transfer mode
US5513374A (en) 1993-09-27 1996-04-30 Hitachi America, Inc. On-chip interface and DMA controller with interrupt functions for digital signal processor
US5590286A (en) 1993-10-07 1996-12-31 Sun Microsystems, Inc. Method and apparatus for the pipelining of data during direct memory accesses
US5669014A (en) 1994-08-29 1997-09-16 Intel Corporation System and method having processor with selectable burst or no-burst write back mode depending upon signal indicating the system is configured to accept bit width larger than the bus width
US5613162A (en) 1995-01-04 1997-03-18 Ast Research, Inc. Method and apparatus for performing efficient direct memory access data transfers
KR19980037643A (ko) * 1996-11-22 1998-08-05 구자홍 디엠에이 컨트롤러의 전송방법
KR100229897B1 (ko) * 1997-01-10 1999-11-15 윤종용 직접 메모리 억세스 전송방법에 따른 타이밍 모드선택장치
JPH10326248A (ja) * 1997-05-23 1998-12-08 Brother Ind Ltd Dmaコントローラ
KR100499350B1 (ko) * 1997-10-25 2005-09-30 삼성전자주식회사 다중및단일채널을갖는다이렉트메모리억세스의데이터전송방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100708266B1 (ko) * 2005-01-27 2007-04-17 후지쯔 가부시끼가이샤 다이렉트 메모리 액세스 제어 방법, 다이렉트 메모리액세스 제어 장치, 정보 처리 시스템, 프로그램을 기록한컴퓨터 판독 가능한 기록 매체
KR101109600B1 (ko) * 2006-11-03 2012-01-31 삼성전자주식회사 직접 메모리 접근 제어를 이용한 데이터 전송 방법 및 그장치
US8037214B2 (en) 2006-12-01 2011-10-11 Electronics And Telecommunications Research Institute Method and apparatus for controlling direct memory access

Also Published As

Publication number Publication date
TW541459B (en) 2003-07-11
US20020133645A1 (en) 2002-09-19
KR100375233B1 (ko) 2003-03-08
US6691179B2 (en) 2004-02-10

Similar Documents

Publication Publication Date Title
KR100375233B1 (ko) 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로변환되는 직접 메모리 억세스 컨트롤러
KR0160128B1 (ko) 동적으로 버스제어를 실행하는 마이크로컴퓨터 및 그것을 이용한 데이터처리시스템
KR920008448B1 (ko) 데이터 프로세서
KR100403404B1 (ko) 양방향병렬신호인터페이스
US5608889A (en) DNA controller with wrap-around buffer mode
US6584512B1 (en) Communication DMA device for freeing the data bus from the CPU and outputting divided data
EP0473059B1 (en) Communication control system
KR100229897B1 (ko) 직접 메모리 억세스 전송방법에 따른 타이밍 모드선택장치
US5588120A (en) Communication control system for transmitting, from one data processing device to another, data of different formats along with an identification of the format and its corresponding DMA controller
JPS6111873A (ja) 16ビツトマイクロプロセツサによる8ビツトおよび16ビツトの各周辺装置へのアクセス方法
KR100633742B1 (ko) 주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는직접 메모리 액세스 제어 장치 및 방법
JP2004227580A (ja) 直接メモリ接近媒体のデータ伝送装置及び方法
JPH1063617A (ja) シリアル通信装置
JP3418734B2 (ja) シリアルデータ転送方法
JP3698483B2 (ja) シリアルi/o
JP2002288115A (ja) Usbコントローラ
JP2564624B2 (ja) スタック方式
JP2006195810A (ja) メモリコントローラおよび高速データ転送方法
JPS6020263A (ja) 入出力装置の選択方式
JPH09259071A (ja) 通信制御装置
JPH06149724A (ja) Dma転送装置
JPH06332842A (ja) ダイレクト・メモリ・アクセス・制御回路
KR19990066427A (ko) 다중 비트 송수신기
JPH06161945A (ja) メモリデータ転送装置
JPH0991244A (ja) データ転送装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130131

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20140129

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20150202

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20200131

Year of fee payment: 18