[go: up one dir, main page]

KR920007950B1 - 다이렉트 메모리 액세스 제어장치 - Google Patents

다이렉트 메모리 액세스 제어장치 Download PDF

Info

Publication number
KR920007950B1
KR920007950B1 KR1019890002811A KR890002811A KR920007950B1 KR 920007950 B1 KR920007950 B1 KR 920007950B1 KR 1019890002811 A KR1019890002811 A KR 1019890002811A KR 890002811 A KR890002811 A KR 890002811A KR 920007950 B1 KR920007950 B1 KR 920007950B1
Authority
KR
South Korea
Prior art keywords
address
descriptor
register
data
memory access
Prior art date
Legal status (The legal status 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 status listed.)
Expired
Application number
KR1019890002811A
Other languages
English (en)
Other versions
KR890016478A (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
Priority claimed from JP63054366A external-priority patent/JP2515367B2/ja
Priority claimed from JP63090942A external-priority patent/JP2594611B2/ja
Application filed by 후지쓰 가부시끼가이샤, 야마모도 다꾸마 filed Critical 후지쓰 가부시끼가이샤
Publication of KR890016478A publication Critical patent/KR890016478A/ko
Application granted granted Critical
Publication of KR920007950B1 publication Critical patent/KR920007950B1/ko
Expired legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

내용 없음.

Description

다이렉트 메모리 액세스 제어장치
제1도는 DMA 제어장치가 사용된 데이터 처리장치의 블록도.
제2도는 제1도의 구성에 사용된 DMA 제어장치의 블록도.
제3도는 본 발명의 바람직한 실시예인 DMA 제어장치의 블록도.
제4a도 내지 제4c도는 본 발명의 일실시예에 따른 시이퀀셜 디스크립터 체인 모우드(sequential descriptor chain mode)의 예를 나타내는 설명도.
제5a도 내지 제5c도는 본 발명의 실시예에 따른 링크 디스크립터 체인 모우드(link descriptor chain mode)의 예를 나타내는 설명도.
제6도는 본 발명의 다른 실시예에 따라 제공된 DMA 제어장치의 블록도.
제7도는 제6도의 실시예에 따른 동작을 설명하기 위한 블록도.
제8a도와 제8b도는 제6도의 실시예에서 시이퀀셜 스크립터 체인 모우드를 예시하는 흐름도.
제9a도와 제9b도는 제6도의 실시예에서 링크 디스크립터 체인 모우드를 예시하는 흐름도.
본 발명은 다이렉트 메모리 액세스 제어장치에 관한 것으로, 특히 다이렉트 메모리 액세스 전송에 필요한 전송 정보(디스크립터)의 수와 형태를 정의하는 다수의 디스크립터 포맷(format)들을 갖는 다이렉트 메모리 액세스 제어장치에 관한 것이다.
최근, 황상 데이터등의 데이터가 개인용 컴퓨터 및 워크 스테이션(work station)등의 데이터 처리장치와 디스크 장치등의 외부장치 사이에서 초고속, 대량으로 전송되는 것이 요구되고 있다. 또한, 대량의 데이터가 시스템에 설치된 메모리들 사이에서 고속으로 전송되는 것이 요구되고 있다.
종래의 데이터 전송은 데이터 처리장치에 설치된 중앙처리장치(이하부터는 간단히 cpu로 칭함)의 제어하에서 수행된다. 그러므로, 종래 데이터 전송의 비트 레이트(bit rate)는 CPU의 처리속도에 의해 좌우된다. 이러한 관점으로부터 데이터를 CPU의 처리속도보다 빠른 속도로 전송할 수는 없다. 더욱이, 전송 데이터를 취급하는 경우에 있어서는 대량의 데이터를 전송하는 데에는 많은 시간이 소요된다.
상술된 관점으로부터, CPU를 사용하지 않고 데이터를 데이터 처리장치와 외부장치 사이에서 전송하는 것을 가능하게 하는 다이렉트 메모리 액세스 전송이 사용된다. 지금부터, 다이렉트 메모리 엑세스는 간단히 DMA라 칭한다. DMA 전송은 대량의 데이터와 고속 데이터를 효과적으로 처리하기 위해 사용된다.
일반적으로, DMA 전송에서 데이터는 DMA 전송에 필요한 정보인 디스크립터들에 따라서 전송된다. 디스크립터 포맷은 소오스 어드레스, 데스티네이션 어드레스 및 전송되는 데이터의 바이트 수와 같은 DMA 전송에 필요한 디스크립터들의 수와 형태를 모두 정의한다. 그러나, 종래의 DMA 전송에서는 단일 디스크립터 포맷이 정의된다. 다시 말하면, 모든 DMA 전송 동작들은 단일 디스크립터 포맷에 의하여 제어된다. DMA 전송으로는 여러 가지 형들이 제안되어 있다. 그 예로서는 레지스터 다이렉트 모우드와 디스크립터 체인 모우드가 있으며, 디스크립터 체인 모우드는 시이퀀셜 디스크립터 체인 모두드와 링크 디스크립터 체인 모우드로 더 분류된다. 디스크립터 포맷에 정의된 모든 정보는 DMA 전송을 수행하는 데에 항상 필요한 것은 아니다. 결과적으로, 대량의 메모리 용량을 갖는 디스크립터들을 저장하는 것이 필요하며, 데이터 전송속도가 빠르지 않다.
그러므로, 본 발명의 일반적인 목적은 편리하고 유용한 다이렉트 메모리 엑세스 제어장치를 제공함에 있다.
본 발명의 특정한 목적은 메모리 용량을 감소시키는 것이 가능한 다수의 디스크립터 포맷들을 갖는 다이렉트 메모리 엑세스 제어장치를 제공함에 있다.
본 발명의 다른 목적은 다이렉트 메모리 액세스 전송을 고속으로 할 수 있는 다이렉트 메모리 액세스 제어장치를 제공함에 있다.
본 발명의 상기 목적들은 다이렉트 메모리 액세스에 의하여 데이터 전송을 제어하고 내부 버스를 갖는 메모리와 시스템 버스와 내부 버스 사이의 데이터 교환을 제어하고 시스템 버스와 내부 버스에 접속되는 데이터 제어수단과, 전송요구 신호를 수신하고 내부 버스에 접속되는 전송요청 제어수단과 각각이 다이렉트 메모리 전송에 의해 데이터를 전송하는데 필요한 디스크립터들의 수와 형태를 정의하는 복수개의 디스크립터 포맷들 중의 하나를 지시하는 코우드를 기록하는 레지스터를 포함하는 시스템의 시스템 버스에 연결된 다이렉트 메모리 액세스 제어장치에 의하여 성취될 수 있다. 다이렉트 메모리 액세스 제어장치는 레지스터에 기록된 코우드에 의하여 선택된 디스크립터 포맷들 중의 하나로 정의되는 디스크립터들을 기록하기 위한 레지스터 수단과, 레지스터 수단에 기록된 디스크립터 포맷들 중에 선택된 하나로 정의된 디스크립터들에 따라 다이렉트 메모리 액세스에 의해 데이터 전송을 제어하고, 전송요청 제어수단을 통하여 고읍된 전송요청 신호에 의하여 활성화되는 제어수단을 더 포함한다.
본 발명의 다른 목적들, 특징들 및 장점들은 첨부된 도면들에 의거하여 지금부터 상세히 서술하는 것에 의해 명백해질 것이다.
본 발명의 이해를 돕기 위하여 일반적인 DMA 전송을 제1도에 의거해서 기술하기로 한다. DMA 제어장치는 마이크로컴퓨터, 개인용 컴퓨터 및 워크스테이션등의 데이터 처리 시스템의 일부이다. DMA 전송은 데이터 처리 시스템에 설치된 메모리드의 장치들 또는 유니트 사이에서 데이터를 직접 전송할 수 있게하거나 또는 디스크 장치 등의 외부 장치 또는 유니트와 시스템에 설치된 메모리 사이에서 데이터를 직접 전송할 수 있게 한다. 상기 예중에 후자의 경우를 서술하기로 한다.
제1도에 있어서, CPU(4)가 어드레스 버스(36) 제어 버스(37) 및 데이터 버스(38)를 독점 사용하여 데이터를 처리한다고 가정한다. 데이터 전송요청이 입/출력포트(port) 1(이하에서 간단히 I/O 포트라 칭함)에 발생할 때, 그 내부에서 발생된 요청신호(REQ)가 다이렉트 메모리 액세스 제어장치(이하에서는 간단히 DMA 제어장치로 칭함)(5)에 공급된다. 이어 DMA 제어장치(5)는 CPU(4)에 대해서 어드레스 버스(36), 제어 버스(37) 및 데이터 버스(38)의 해제를 요청하기 위해 제어 버스(37)를 통하여 홀드요청 신호(HOLD)를 CPU(4)에 공급한다. 홀드요청 신호(HOLD)가 수신되며, CPU(4)는 홀드인식 신호(HOLD ACK)를 DMA 제어장치(5)에 전송한 다음, 버스 사용권을 DMA 제어장치(5)에 전송한다. 이에 따라, DMA 제어장치(5)는 어드레스 버스(36), 제어 버스(37) 및 데이터 버스(38)를 독점하여 사용할 수 있으며, DMA 전송을 수행할 수 있다.
DMA 제어장치(5)는 요청 응답신호(REQ ACK)를 I/O 포트 1에 전송한다.
제2도는 제1도에 도시된 DMA 제어장치(5)의 구성을 설명하는 블록도이다. DMA 제어장치(5)는 데이터 처리장치(이하에서 간단히 D장치라 칭함)(6), 전송요청 제어장치(이하에서 간단히 R장치로 칭함)(7) 및 마이크로시이퀀스 제어장치(이하에서 간단히 M장치라 칭함(8)를 포함한다. 장치 D장치(6), R장치(7), 및 M장치(8)는 내부 데이터 버스(3)와 내부 어드레스 버스(32)를 통하여 상호 연결된다. R장치(7)에 CPU(4)의 I/O 포트(1)로부터의 요청신호(REQ)가 공급되면, R장치(7)는 요청인식 신호(REQ ACK)를 I/O 포트(1)에 반송한다. 다음에 R장치(7)는 전송요청 신호(TREQ)를 D장치(6)와 M장치(8)에 출력한다. 전송요청 신호(TREQ)를 D장치(6)와 M장치(8)에 출력한다. 전송요청 신호(TREQ)를 수신하면, M장치(8)는 적절한 DMA 전송에 필요한 제어정보(CDA)를 D장치(6)에 전송하며, 동시에 인식신호(ACK)를 R장치(7)에 전송한다. D장치(6)가 전송요청 신호(TREQ)를 수신하면, 그것은 홀드신호(HOLD)를 CPU(4)에 공급한다. 홀드인식 선호(HOLD ACK)가 D장치(6)에 입력되면, D장치(6), 어드레스 버스(36) 및 데이터 버스(38)를 통해서 적절한 DMA 전송이 시작된다.
일반적으로, DMA 전송은 2가지 전송 모우드를 포함한다. 그중에 하나는 레지스터 다이렉트 모우드이고, 다른 하나는 디스크립터 체인 모우드이다. 또한 디스크립터 체인 모우드는 시이퀀셜 디스크립터 체인 모우드와 링크 디스크립터 체인 모우드로 분류된다. 레지스터 다이렉트 모우드에서, CPU 4는 소오스 어드레스, 데스티네이션 어드레스 및 바이트 카운트에 의한 정보(디스크립터)를 DMA 제어장치(5)에 설치된 레지스터들에 직접 기록(WRITE)하며, 기록된 디스크립터들을 참조하므로서 DMA 전송을 수행한다. 디스크립터 체인 모우드에서 DMA 제어장치(5)는 그것의 내부에 저장되고 마이크로코우드들로 구성하는 마이크로프로그램에 따라 그것으로부터 독출되고 테이블의 형태로 메모리(2)(또는 3)에 미리 저장되는 소오스 및 데스티네이션 어드레스와 바이트 카운트를 상용하는 레지스터내에 기록한다. 그 후에 데이터 전송을 행한다. 후자의 경우에, 1세트의 소오스 어드레스, 데스티네이션 어드레스 및 바이트 카운트는 디스크립터 포맷(DF)으로 정의된다. 즉, 디스크립터 포맷은 설정된 3개의 디스크립터들을 정의한다.
그러나, 종래의 DMA 전송에서는 단일 디스크립터 포맷이 고정되며, 그 안에 정의된 모든 디스크립터들은 데이터의 한 블록이 전송될 때마다 참조된다. 그러므로, 메모리 2 또는 3은 전송되는 각 데이터 블록에 대해 소오스 어드레스, 데스티네이션 어드레스 및 바이트 카운트로 이루어진 모든 디스크립터들을 저장하여야만 한다. 이것은 대량의 메모리 용량을 필요로 한다. 예를 들면, 메모리(2와 3)사이에서 DMA 전송을 요청하는 요구가 발생하면, 소오스 어드레스, 데스티네이션 어드레스 및 바이트 카운트는 DMA 제어장치 5에 상응하는 내부의 레지스터들에 셋팅된다. 이 경우에, 두 버스 싸이클은 소오스 어드레스와 데스티네이션 어드레스를 어드레스 버스(36)에 출력하기 위해 필요하다. 이러한 처리를 듀얼 전송(dual transfer)이라 한다. 메모리들은 어드레스 정보에 의하여 관리된다. 한편, I/O 포트(1)와 메모리(2 또는 3)사이의 DMA 전송에서는 소오스 어드레스와 데스티네이션 어드레스 중의 하나만으로도 DMA 전송을 이루는 것이 충분하다. 왜냐하면, I/O 포트(1)가 어드레스 정보에 의하여 관리되는 것이 아니라 요청 응답 신호(REQ ACK)에 의하여 관리되기 때문이다. 다시 말하면, 소오스 및 데스티네이션 어드레스들 중의 어느 하나는 I/O 포트(1)와 메모리(2 또는 3) 사이의 DMA 전송을 위해서 불필요하다.
예를 들면, 데이터가 메모리 2 또는 3으로부터 I/O 포트(1)에 전송되는 DMA 전송에서, 데이터 버스(38)상의 데이터는 소오스 어드레스와 바이트 카운트를 셋팅하므로서 I/O 포트(1)에 입력된다. 한편, 데이터가 I/O 포트(1)로부터 메모리(2 또는 3)에 전송되는 DMA 전송에서, 버스(38)상의 데이터는 데스티네이션 어드레스와 바이트 카운트를 셋팅하므로서 메모리(2 또는 3)에 입력된다. 이 방법에서, 하나의 버스 싸이클만으로 디스크립터를 어드레스 버스(36)에 출력하는 것이 충분하다. 이러한 동작을 단일 전송으로 정의한다. 단일 전송에서는, 디스크립터 포맷(DF)가 단 하나이고, 고정되기 때문에 요청된 DMA 전송 모우드에 대해 불필요한 디스크립터는 메모리(2 또는 3)에 저장되어야만 한다. 결과적으로, 단일 전송 모우드는 디스크립터들을 표의 형태로 저장하기 위하여 메모리(2 또는 3)에 할당된 메모리 영역을 낭비하기 때문에 비경제적이다.
더욱이, 모든 디스크립터들은 DMA 전송이 요청될 때마다 액세스되야만 하기 때문에 고속 DMA 전송을 이루기가 어렵다.
본 발명은 종래 DMA 전송의 문제점들을 해결하기 위한 것이다. 본 발명의 바람직한 제1실시예를 제3도를 참조하여 서술하기로 한다.
제3도는 본 발명의 바람직한 제1실시예인 DMA 제어장치의 블록도이다. 제3도에서, 앞에서의 도면들과 같은 부분들은 동일 참조번호를 부여하였다. 본 실시예는 각 DMA 전송의 초기에 행해지는 초기 셋팅에 중요한 특징들을 갖는다. 초기 셋팅은 주로 M장치와 관련이 있다. 그러므로, 실시예에서 R장치(7)와 D장치(6)는 상세히 서술하지 않기로 한다.
제3도에 있어서, 본 실시예의 DMA 제어장치 50은 디스크립터 포맷 레지스터 DFR(11)이 설치된 마이크로시이퀀스 제어장치(M장치)(10)를 포함한다. 디스크립터 포맷 레지스터(11)는 전송 모우드 레지스터들중의 하나이다. 디스크립터 포맷 레지스터(11)와 더불어, 전송 모우드 레지스터들은 단일 전송과 듀얼 전송등의 DMA 전송 모우드를 나타내는 레지스터(도시되지 않았음)와 레지스터 다이렉트 모우드와 디스크립터 체인 모우드 중의 하나를 나타내는 레지스터(도시되지 않았음)를 포함한다. 디스크립터 포맷 레지스터(11)와 다른 레지스터들은 CPU(4)에 의하여 셋팅될 수 있다. 사용자들은 CPU(4)를 통하여 적절한 값을 디스크립터 포맷 레지스터(11)에 미리 셋팅한다. 디스크립터 포맷 레지스터는 선택되어져야만 하는 다수의 디스크립터 포맷들 중의 하나에 대한 정보를 저장한다. 본 실시예는 3종류의 디스크립터 포맷이 준비되어 있으며, 그들은 2-비트 코우드로 표시한다.
표 1은 디스크립터 포맷 코우드와 DF의 값들과 디스크립터 포맷에 상응하는 내용들을 나타낸다. 후에 상세히 서술되는 바와 같이 선택된 디스크립터 포맷으로 정의된 디스크립터들은 디스크립터 표가 저장된 메모리로부터 독출된 디스크립터들은 DMA 전송을 시작하기 전에 CPU(4)에 의하여 메모리(2)(또는 3)에 기록된다.
[표 1]
Figure kpo00001
디스크립터 포맷 레지스터(11)에 기록된 데이터 또는 디스크립터 포맷 코우드(DF)는 셀렉터 프로그램어블 로직 어레이 12(이하에서 간단히 셀렉터 PLA라 칭함)에 공급되며, 이것은 메트릭스 표를 형성한다. 점프 코우드 JUMP(C)는 데이터 래치 소자(17)로부터 셀렉터 PLA(12)에 공급된다. 점프 코우드 JUMP(C)를 수신하면, 셀렉터 PLA(12)는 디스크립터 포맷 레지스터(11)에 셋팅된 디스크립터 코우드(DF)를 토대로 하여 판정을 행한다. 셀렉터(13)에는 상기 판정의 결과가 공급되며 또한 인크리멘트 소자(14)로부터 공급된 출력신호, 맵핑(mapping)프로그램어블 로직 어레이(이하부터는 간단히 맵핑 PLA라 칭함) 15로부터 공급된 출력신호 및 데이터 래치소자(17)로부터 공급된 점핑 어드레서 JUMP(A)가 공급된다. 셀렉터(13)는 셀렉터 PLA(12)로부터 공급된 판정의 결과를 토대로 하여 입력신호들 중의 하나를 선택하며, 어드레스 정보로서 선택된 신호를 마이크로-리이드-온리-메모리(이하부터는 간단히 마이크로-ROM이라 칭함)(16)에 출력한다. 점프 어드레스 JUMP(A)는 하나의 정보이며, 후에 상세히 서술할 것이다.
인크리멘트 소자(14)는 카운터이며, 예를 들면 그에 의하여 마이크로-ROM(16)에 관한 어드레서 정보는 셀렉터(13)가 입력신호들 중의 하나를 선택할 때마다 1씩 증가한다. 마이크로-ROM(16)은 DMA 전송의 초기 셋팅에 필요한 프로그램을 저장한다. 마이크로-ROM(16)에 저장된 프로그램은 이하에서 간단히 마이크로프로그램이라 칭한다. 마이크로프로그램의 진행은 셀렉터(13)의 출력신호에 따라 제어된다. 마이크로-ROM(16)은 마이크로프로그램의 진행에 따라 제어정보를 출력한다. 마이크로-ROM(169으로부터 발생된 제어정보는 데니탄 래치 소자(17)에서 래치되며, 그것으로부터 제어정보(CDA)가 출력된다. 맵핑 PLA(15)는 마이크로프로그램에 대한 개시 어드레스와 브랜치 어드레스를 저장하며, 전송요청 신호(REQ)가 R장치(7)로부터 공급될 때에 개시 어드레스를 셀렉터(13)에 공급한다.
셀렉터 PLA(12) 셀렉터(13), 인크리멘트 소자(14) 및 맵핑 PLA(15)는 전송정보 셋팅블록(18)을 구성한다. 제어정보(CDA)는 D장치(6)에 공급되며, 또한 소오스 어드레스 레지스터 SAR(19) 데스티네이션 어드레스 레지스터(20), 바이트 카운트 레지스터 BCR(21) 디스크립터 어드레스 레지스터 DSR(22) 및 체인 터미네이터 레지스터 CTR(23)에도 공급된다. 이 레지스터들은 내부의 데이터 버스(31)에 연결된다. 소오스 레지스터(19)는 DMA 전송에 의하여 전송되는 데이터가 저장되는 메모리 영역의 소오스 어드레스를 기록한다. 데스티네이션 레지스터(20)는 전송되는 데이터가 기록되는 메모리 영역의 데스티네이션 어드레스를 기록한다. 바이트 카운트 레지스터(21)는 데이터가 전송되는 것에 의해 바이트 카운트를 기록한다. 디스크립터 체인 레지스터(22)는 메모리(2) 체인 터미네이터 레지스터(23)는 시이퀀셜 디스크립터 체인 모우드가 셋팅되는 경우에 전송되는 블록들의 수를 기록한다. 링크 디스크립터 체인 모우드가 셋팅되는 경우에, 체인 터미네이터 레지스터(23)는 DMA 전송이 종료되어야만 하는 디스크립터 표 어드레스를 기록한다. 레지스터 각각에는 제어정보(CDA)에 따라 상응하는 데이터가 공급된다.
제4a도는 시이퀀셜 디스크립터 체인 모우드의 한 예를 설명한 것이다. 메모리(2)(또는 3)는 블록 A, B 및 C에 관한 디스크립터들을 포함하는 디스크립터 표 1와 블록 A, B 및 C에 관한 데이터 블록들을 포함하는 데이터 영역(Ⅱ)을 갖는다. 설명된 예는 디스크립터 포맷 코우드(DF)가 "00"인 경우에 관한 것이다.
시이퀀셜 디스크립터 체인 모우드에서, 디스크립터 포맷들은 디스크립터 표 1에 연속적으로 기록된다. DMA 전송동작의 초기에 블록(A)에 관한 바이트 카운트, 소오스 어드레스 및 데스티네이션 어드레스는 디스크립터 표 1로부터 독출되며 그들은 각각 바이트 카운트 레지스터(21), 소오스 레지스터(19) 및 데스티네이션 어드레스 레지스터(20)에 기록된다.
동시에, 디스크립터 어드레스 레지스터 22는 블록 A에 관한 디스크립터 포맷이 기록되는 메모리 영역(디스크립터 표 1)의 개시 어드레스를 지시하는 어드레스를 갖는다. 디스크립터 어드레스 레지스터 22에서의 어드레스 값은 각 디스크립터를 읽어낼 때마다 갱신된다. 제4b도와 제4c도에 설명된 바와 같이 디스크립터 포맷들의 사용은 본 실시예의 가장 중요한 특징이다.
제4b도는 디스크립터 포맷 코우드(DF)가 "10"인 시이퀀셜 디스크립터 체인 모우드에서 디스크립터 표 1의 내용들이 예를 설명하고 있다. 제4c도는 디스크립터 포맷 코우드(DF)가 "11"인 시이퀀셜 디스크립터 체인 모우드에서 디스크립터 표 1의 내용들에 대한 예를 설명하고 있다.
제5a도는 링크 디스크립터 체인 모우드의 일예를 설명한다.
설명된 예는 디스크립터 포맷 코우드(DF)가 "00"인 경우에 관한 것이다. 이 경우에 디스크립터 포맷은 소오스 어드레스, 데스티네이션 어드레스, 바이트 카운트 및 다음 디스크립터 어드레스들로 구성한다. 디스크립터 어드레스 레지스터 22에 기록되는 다음 디스크립터 어드레스는 다음 DMA 전송에서 액세스될 한 세트의 디스크립터들이 저장되어 있는 메모리 영역의 개시 어드레스를 나타낸다. 이것은 각 블록에 관한 한 세트의 디스크립터들이 디스크립터 표 1에 연속적으로 저장될 필요가 없기 때문이다. 최초시 적당한 디스크립터들이 저장되어 있는 메모리 영역의 개시 어드레스가 디스크립터 어드레스 레지스터(22)에 기록되며, 전송될 다음 데이터 블록에 관한 디스크립터들이 저장되어 있는 메모리 영역의 개시 어드레스로 대체된다. 예를 들면 먼저, 소오스 어드레스는 디스크립터 어드레스 레지스터 22에 기록된 디스크립터 어드레스에 따라 액세스된다. 이어, 다음 디스크립터 어드레스(A)는 표 1로부터 독출되어 디스크립터 어드레스 레지스터(22)에 기록된다. 그 이후, 블록(B)에 관한 소오스 어드레스(B)가 디스크립터 어드레스 레지스터에 기록된 다음 디스크립터 어드레스(A)에 따라 독출된다.
제5b도는 디스크립터 포맷 코우드(DF)가 "10"인 링크 디스크립터 체인 모우드에서 디스크립터 표 1의 내용들의 일예를 설명하고 있다. 제5c도는 디스크립터 포맷 모우드(DF)가 "11"인 링크 디스크립터 체인모우드에서 디스크립터 표 1의 내용들의 일예를 설명하고 있다. 제5b도와 제5c도에 설명된 바와 같이 디스크립터 포맷들의 사용은 실시예의 가장 중요한 특징이다.
지금부터는 실시예의 동작에 대해서 서술하기로 한다.
다음은 시이퀀셜 디스크립터 체인 모우드가 셋팅되는 경우에 관한 것이다. 링크 디스크립터 체인 모우드에서의 동작은 후에 상세히 서술할 것이다.
DMA 전송의 전송에 대한 지시를 DMA 제어장치(50)에 공급하기 전에, CPU(4)는 메모리(2)(또는 3)에 디스크립터 표 1을 기록한 다음 디스크립터 표 1의 개시 어드레스를 디스크립터 어드레스 레지스터(22)에 기록한다. 그 이후, 전송요청 신호 TREQ가 맵핑 PLA(15)에 입력되면, 설정된 마이크로프로그램을 활성화시키기 위한 어드레스가 셀렉터(13)를 통하여 마이크로-ROM(16) D에 공급된다. 이에 따라, 마이크로-ROM(16) 디스크립터 포맷(DF)의 코드 "00"가 디스크립터 포맷 레지스터(11)에 셋팅되어 있다고 가정한다. 처음에, 셀렉터 PLA 12는 디스크립터 포맷 레지스터(11)에서의 값 또는 디스크립터 포맷 코우드(DF)를 참조하여 판정을 행한다. 이 경우에, 디스크립터 포맷 코우드가 "00"이기 때문에 셀렉터(13)는 인크리멘트 소자 14의 출력을 선택한다. 그 이후, 마이크로-ROM(16)의 어드레스는 순차적으로 1씩 증가되며, 마이크로프로그램은 다음과 같이 동작한다. 가장 먼저, 소오스 어드레스의 기록을 지시하는 제어정보(CDA)가 D장치(6)에 출력된다. 다음, D장치(6)는 상응하는 소오스 어드레스를 데이터 버스(38)를 통하여 디스크립터 표 1로부터 독출하며 그것을 전송정보 셋팅블록(18)의 소오스 어드레스 레지스터(19)에 기록한다. 다음, 마이크로-ROM(16)에서의 어드레스는 갱신되며, 상응하는 데스티네이션 어드레스를 디스크립터 표 1로부터 독출하여 데스티네이션 어드레스 레지스터(20)에 기록한다. 마지막으로 마이크로-ROM(16)에서의 어드레스를 갱신한 후에, 바이트 카운트 정보를 디스크립터 표 1로부터 독출하여 바이크 카운터 레지스터(21)에 기록한다. 즉, 소오스 어드레스, 데스티네이션 어드레스 및 바이튼 카운트는 상응하는 레지스터(19, 20 및 21)에 순차적으로 기록된다.
DF="00"일 때 수행되는 상기 라이팅 동작은 원래 DMA 전송의 동작과 동일하다. 전술된 바와 같이 이 동작은 단일 전송이 수행될 때에 메모리 용량을 낭비하므로 비경제적이다. 본 발명의 기본적인 특징은 다수의 디스크립터 포맷들이 제공되는 것이다. DF="10"이고, DF="11"인 경우에 대해서 서술하기로 한다.
DF "10"
이 경우에, 메모리(2)(또는 3)(제1도)로부터 들어온 디스크립터들은 소오스 어드레스와 바이트 카운트이다. 이것은 데이터를 메모리(2)(또는 3)로부터 독출되어 I/O 포트(1)을 통하여 외부 메모리로 전송하는 단일 전송 모우드에 대해서 적당하다.
전송요청 신호(TREQ)의 인가에 의하여 마이크로-ROM(16)에 저장된 마이크로프로그램이 활성화될 때, 그들로부터 점프 코우드 JUMP(C)가 발생되어 셀렉터 PLA(12)에 공급된다. 셀렉터 PLA(12)는 판정을 행한다.
이 경우에, 디스크립터 포맷 코우드(DF)가 "10"이기 때문에, 셀렉터 PLA(12)는 소오스 어드레스가 DMA 전송에 필요하다는 것을 결정하여, 인크리멘트 소자(14)의 출력을 선택한다. 다음에는 소오스 어드레스를 메모리(2)로부터 독출하여 데이터 버스(38)와 D장치(6)를 통하여 소오스 레지스터(19)에 기록한다. 이때에, 소오스 어드레스가 저장되는 메모리 영역은 디스크립터 어드레스 레지스터(22)에 기록된 어드레스에 나타내진다.
소오스 어드레스가 소오스 레지스터(19)에 기록된후, 셀렉터 PLA(12)에 점프 코우드 JUMP(C)를 다시 기록하며 이에 따라 디스크립터 포맷 레지스터(11)에 기록된 디스크립터 포맷 모우드(DF)를 참조한다. 이때에, 셀렉터 PLA(12)는 데스티네이션 어드레스가 불필요하다는 것을 판단한다. 다음에 셀렉터 PLA(12)는 점프 어드레스 JUMP(A)를 선택하며, 점프 어드레스 JUMP(A)는 소오스 어드레스(19)에 대한 기록이 종료하면 마이크로프로그램에 따라 마이크로-ROM(16)으로부터 출력된다. 이 경우에, 점프 어드레스 JUMP(A)는 바이크 카운트를 바이트 카운트 레지스터(21)에 기록하기 위해 사용되는 마이크로프로그램이 저장되어 있는 마이크로-ROM(16)의 메모리 영역을 나타내는 어드레스 데이터이다. 그러므로, 소오스 레지스터(19)에 관한 기록이 종료하면, 데스티네이션 레지스터(20)에 관한 기록 처리는 점프되며, 바이트 카운트가 바이트 카운트 레지스터(21)에 기록된다. 물론, 바이트 카운트 레지스터(21)에 기록될 바이트 카운트는 메모리(2)로부터 독출되며 데이터 버스(38)와 D장치(6)를 통하여 바이트 카운트 레지스터(21)에 공급된다.
DF"11"
이 경우에, 데스티네이션 어드레스와 바이트 카운트는 메모리(2)로부터 독출되며 상응하는 레지스터들에 입력된다. 이것은 외부 장치가 데이터를 I/O 포트(1)을 통해서 메모리(2)(또는 3)에 전송하는 DMA 전송에 대해 적당하다.
마이크로프로그램이 활성화되면, 점프코우드 JUMP(C)가 마이크로-ROM(16)으로부터 발생되며, 셀렉터 PLA(12)는 디스크립터 포맷 레지스터(11)에 기록된 코우드를 토대로하여 판정을 행한다. 이 경우에, 디스크립터 포맷 코우드(DF)가 "11"이기 때문에 셀렉터 PLA(12)는 소오스 어드레스가 소오스 레지스터(19)에 기록될 필요가 없다는 것을 판단하여, 점프 어드레스 JUMP(A)를 선택한다. 이때에, 점프 어드레스 JUMP(A)는 데스티네이션 어드레스를 데스티네이션 레지스터(20)에 기록하기 위해 사용되는 마이크로프로그램이 저장되어 있는 마이크로-ROM(16)에서의 메모리 영역을 나타내는 어드레스 데이터이다. 다음에, 점프 어드레스 JUMP(A)는 마이크로-ROM(16)에 공급되며, 상응하는 마이크로프로그램이 그곳으로부터 기록된다. 그에 의하여, 데스티네이션 어드레스의 기록이 수행된다. 기록이 종료되면, 점프 어드레스(A)가 다시 발생된다. 다음에, 셀렉터 PLA(12)는 판정을 행한다. 이 경우에 디스크립터 포맷 코우드(DF)가 "11"이기 때문에 셀렉터(13)는 바이트 카운트를 바이트 카운트 레지스터(21)에 기록하기 위해서 인크리멘트 소자(11)의 출력신호를 선택한다. 다음에, 바이트 카운트를 바이트 카운트 레지스터(21)에 기록하기 위해 사용된 마이크로프로그램이 활성화(activated)된다. 이에 따라 바이트 카운트가 메모리(2)로부터 독출되어 데이터 버스(30)와 D장치(6)을 통해서 바이트 카운트 레지스터(21)에 기록된다.
상술한 바와 같이, 본 실시예에 따라, 코우드 "00", "10" 및 "11"로 나타낸 3종류의 디스크립터 포맷들이 도입되므로써, 단일 전송 모우들에서 상응하는 DMA 전송에 필요없는 소오스 또는 데스티네이션 어드레스를 기록할 필요가 없게 되었다. 이러한 이유 때문에, 메모리(2)(또는 3)가 효율적이고 효과적으로 사용될 수 있다.
상술된 실시예는 디스크립터 체인 모우드에 관한 것이다. 레지스터 다이렉트 모우드와 디스크립터 체인 모우드를 결합할 수도 있다. 예를 들면, 소오스 어드레스와 바이트 카운트는 DF="10"의 디스크립터 포맷을 사용하는 디스크립터 체인 모우드에 의하여 셋팅된다. 한편, 데스티네이션 어드레스는 레지스터 다이렉트 모우드에서 CPU(4)에 의하여 셋팅된다(이것은 CPU에 의한 슬레이브 액세스(slave access)라 불린다). 이 동작은 데스티네이션 어드레스가 고정되는 경우에 적당하다. 이러한 고정된 데스티네이션 어드레스는 초기 셋팅치로서 이용될 수 있다. 예를 들면, 기록될 메모리 영역이 고정되는 식으로 메모리(2와 3) 사이의 DMA 전송을 행할 수 있으며, 소오스 어드레스와 바이트 카운트는 하나의 블록이 전송될 때 마다 셋팅된다.
일반적으로, DMA 전송은 체인 터미네이터 레지스터(23)가 제로가 되면 종료된다. 체인 터미네이터 레지스터(23)에서의 값은 데이터 래치소자(17)를 통하여 마이크로-ROM(16)으로부터 발생된 제어정보(CDA) 따라 하나의 블록이 처리될때마다 1씩 감소된다. DMA 전송은 CPU 또는 I/O 포트(1)로부터 공급된 특별신호 이후에 서술되는 DONE 신호), 예를 들면 버스 에러등의 치명적인(fatal) 에러에 의하여 또한 종료될 수 있다. DMA 전송이 치명적인 에러에 의하여 종료되면, 다음 디스크립터 포맷(한 세트의 디스크립터들)을 엔터(enter)하는 것이 불필요하며, CPU(4)(제1도)는 이 때에 얻은 DMA 전송의 상태를 레지스터(19 내지 23)의 내용들을 참조하므로써 알 수 있다. 한편, DMA 전송 동작에서, 상응하는 레지스터들에 기록된 디스크립터들은 다음의 디스크립터 포맷이 상응하는 레지스터에 기록될때에 소멸한다. 그러므로, CPU(4)는 DMA 전송이 종료할때에 관찰된 DMA 전송의 동작 상태를 알 수 없다.
예를 들면, DMA 전송은 체인 터미네이터 레지스터(23)가 제로가 되거나(시이퀀셜 디스크립터 체인 모우드에서), 디스크립터 표 1의 설정된 어드레스가 되면(링크 디스크립터 체인 모우드에서)종료된다. DMA 전송은 또한 CPU(4)로부터 공급된 특별 명령(DONE 신호)가 DMA 전송동안에 DMA 제어장치(50)에 공급될때에도 종료된다. 예를 들면 DMA 전송이 DMA 전송중에 의도적으로 종료되면, 전송된 데이터가 이미 기록된 메모리 영역을 확인하는 것은 불가능하다. 그러므로, 의도적인 종료 이전에 전송되 유효 데이타는 더 이상 확인되지 않는다. 이것은 사용자들에 대해서 편리하지 않은 것이다.
이하에서 서술되는 제2실시예는 상기의 불편을 해결하기 위한 것이다.
제6도는 본 발명의 제2실시예의 블록도이다.
제6도에서, 제3도에 상응하는 동일 부분들은 동일 참조 번호들을 부여하였다. 제2실시예는 디스크립터레지스터 어드레스 기록 레지스터(이하에서 간단히 DSRW 레지스터라 칭함)와 블록정보 갱신 레지스터(이하부터는 BIU 레지스터라 칭함)(27)를 추가하여 구성된다. "1"이 BIU 레지스터(27)에 셋팅되면, 소오스레지스터(19), 데스티네이션 레지스터(20) 및 바이트 카운트 레지스터(21)의 내용들은 DSRW 레지스터(26)에 저장된 어드레스를 나타낸 디스크립터 표 1에서의 메모리영역에 기록된다.
이것은 본 발명의 제2실시예의 가장 중요한 특성이다. DSRW 및 BIU 레지스터(26 및 27)에는 CPU(4)에 의하여 적절한 값들이 제공된다.
더욱이, 제2실시예에서는 전송종료 요청신호(이하부터는 간단히 DONE 신호라 칭함)가 제어 버스(39)를 통하여 CPU(4) 또는 다른 장치로부터 셀렉터 PLA(12)와 맵핑 PLA(15)에 공급된다. 또한, DIO 레지스터(25)가 제공되며, 이들은 제8a도, 제8b도, 제9a도 및 제9b도를 참조하여 이후에 서술될 것이다.
제2실시예에서, 데이터는 제1실시예의 경우에서와 같은 방법으로 전송된다. 제2실시예에 따라, 사용된 레지스터(26과 27)에 대한 동작이 제1실시예의 데이터 전송에 추가된다. 전술된 바와 같이, 이 동작은 제2실시예의 가장 중요한 특징이다. 제2실시예의 동작은 제6도는 물론 도시된 구성의 중요 부분을 나타내는 제7도를 참조하여 이하에서 서술하기로 한다.
전송요청 신호(TREQ)의 입력에 따라 마이크로-ROM(16)으로부터 독출된 제어정보(CDA)에 의하여, 디스크립터 어드레스 레지스터(22)에서의 어드레스는 DSRW 레지스터(26)으로 전송되어 기록되며, 디스크립터(22)에 의하여 표시되는 메모리(2)에서의 메모리 영역은 D장치(6)를 통하여 액세스된다. 전술된 바와 같이, 이때에 얻을 수 있는 디스크립터 어드레스 레지스터(22)에서의 어드레스는 제1블록(예를 들면 제4a도에 도시된 블록 a)에 관한 디스크립터 포맷의 개시 어드레스이다. 지금부터의 설명에서는 소오스 어드레스 또는 데스티네이션 어드레스 혹은 모두를 편리상 메모리 어드레스 MA로 칭한다. 그러므로, 디스크립터 포맷 코우드 DF가 "10"이면 메모리 어드레스 MA는 소오스 어드레스이고, 디스크립터 포맷 코우드(DF)가 "11"이면, 메모리 어드레스 MA 데스티네이션 어드레스이다. 이와 상응하여 제7도에서는 소오스 및 데스티네이션 레지스터(19 및 20)이 메모리 어드레스 레지스터(MAR)라 불리는 단일 블록으로 설명된다.
설명된 예에서, 메모리 어드레스(MA1)와 바이트 카운트 BC1은 디스크립터 어드레스 레지스터(22)에 기록된 어드레스에 의하여 순서대로 액세스된다. 다음에, 메모리 어드레스 MA1과 바이트 카운트(BC1)를 메모리(2)로부터 독출하여, 메모리 어드레스 레지스터(19,20)와 바이트 카운트 레지스터(21)에 기록한다. 이때에 디스크립터 어드레스 레지스터(22)에서의 어드레스는 독출된 데이터에 상응하는 수에 의하여 갱신된다. D장치(6)는 마이크로-ROM(16)으로부터 독출된 상응하는 마이크로프로그램에 의하여 지시되며, 예를 들면 I/O 포트(1)을 통하여 메모리(2)와 외부 장치 사이의 DMA 전송을 행한다. 이어서, 디스크립터 터미네이터 레지스터(23)에서의 값은 전송되는 바이트들의 수만큼 감소된다. 시이퀀셜 디스크립터 체인 모우드가 셋팅되면, 디스크립터 어드레스 레지스터(22)에서의 값은 있는 그대로의 상태를 유지한다. 한편, 링크디스크립터 체인 모우드가 셋팅되면, 디스크립터 어드레스 레지스터(22)에서의 값은 전송되는 바이트들의 수만큼 감소된다. 예를 들면 메모리(2)에서의 데이터가 I/O 포트(1)를 통하여 외부장치에 전송되는 것이 요청될 때, 메모리 어드레스 레지스터(19)에서의 어드레스로 나타낸 메모리 영역의 데이터 불록은 메모리(2)로부터 독출되며, I/O 포트(1)에 전송된다. 데이터 블록의 DMA 전송이 종료되면, BIU 레지스터(27)에서의 값은 마이크로프로그램에 의하여 조사된다. BIU 레지스터(27)에서의 값은 사전에 사용자에 의하여 셋팅된다.
만일 "1"이 BIU 레지스터(27)에 기록되어 있으면, 디스크립터 어드레스 레지스터(22)와 DSRW 레지스터(18)의 내용들은 상호 교환된다. 다음에, 메모리 어드레스 레지스터(19,20)와 바이트 카운트 레지스터(21)의 현재 내용들은 디스크립터 어드레스 레지스터(22)에서의 어드레스에 의하여 지시된 메모리 영역들에 순차적으로 기록된다. 그 이후에, 디스크립터 어드레스 레지스터(22)와 DSRW 레지스터(18)의 내용들은 다시 상호 교환된다. 이 방법에서 DMA 전송에 따라 디스크립터 포맷에서의 갱신된 데이터는 디스크립터들이 독출되는 메모리 영역에 기록된다.
한편, 디스크립터 표의 갱신이 요청되지 않을 때, "0"이 BIU 레지스터(27)에 저장될때에는 디스크립터 표의 갱신이 행해지지 않는다.
제2실시예에 따라, 디스크립터 표의 갱신이 요청되는 경우에, 갱신된 디스크립터들은 하나의 데이터 블록이 DMA 전송에 의하여 전송될때마다 메모리(2)에서의 상응하는 메모리 영역에 기록된다. 체인 터미네이터 레지스터(23)에서의 값이 시이퀀셜 디스크립터 체인 모우드에서 제로가 되면, DMA 전송은 종료된다. 대신에, DONE 신호가 셀렉터 PLA(12)에 공급되면, DMA 전송은 의도적으로 중단된다. DMA 전송이 중단되고, 디스크립터 표 1이 갱신이 BIU 레지스터(27)에 의하여 지시되면, CPU(4)는 디스크립터 표 1을 읽는다. 이에 따라 CPU(4)는 모든 데이터 블록에 대한 종료 상태를 알 수 있게 된다.
제8a도와 제8b도는 시이퀀셜 디스크립터 체인 모우드가 선택되었을 때 제2실시예의 동작을 나타내는 흐름도이다. 제9a도와 제9b도는 링크 디스크립터의 체인 모우드가 선택되었을때의 제2실시예의 동작을 나타내는 흐름도이다. 제8a도와 제8b도에서, 단계(101-107)는 DMA 전송에 대한 절차에 관한 것이고, 단계 (108-116)은 제2실시예의 가장 중요한 특징인 디스크립터 표 1의 갱신에 관한 것이다. 나머지 단게들은 제6도에 도시된 바와 같이 DIO 레지스터(25) 존재에 기인하는 추가 기능에 관한 것이다. 단계(107-107)로 구성되는 절차는 제1실시예에 대해서 유효하다.
제9a도에 따르면, 디스크립터 포맷 레지스터(11)에서의 이 체크된(단계 101), 만일 코우드 DF="11"이면, 단계 104가 처리된다. 만일 코우드 DF="00" 또는 "10"이면, 디스크립터 포맷 레지스터(22)로 나타낸 메모리 영역의 내용들은 소오스 레지스터(19)에 기록된다(단계 102).
또한, 단계(102)에서 현재 메모리 영역에 관한 데이터 양에 상응하는 값(설명된 예에서는 4바이트)을 디스크립터 어드레스 레지스터(22)에서의 어드레스 값에 가산한다. 다음에, 코우드 DF가 "00"인가, "10"인가를 판단한다(단계 103). 만일 코우드(DF)가 "10"이면, 단계(105)가 처리된다. 한편, 코우드(DF)가 "00"이면, 단계(104)가 처리된다. 단계(104)에서. 디스크립터 어드레스 레지스터(22)로 나타낸 메모리 영역의 내용들은 데스티네이션 레지스터(20)에 기록되고, 메모리 영역에 관한 데이터 양에 상응하는 값(예에서는 4바이트)을 디스크립터 어드레스 레지스터(22)의 내용들이 가산한다. 다음에, 체인 터미네이터 레지스터 CTR23의 카운트 값은 "1"씩 감소된다(단계 106). 그 이후, 단계(107)에서 1-오퍼랜드 전송(one-operand transfer)은 소오스 어드레스 및/또는 데스티네이션 어드레스 및 바이트 카운트를 사용하므로서 행해진다. 1-오퍼랜드는 1버스 싸이클에서의 바이트들 수에 상응한다. 또한, 단계(107)에서 1-오퍼랜드에 상응하는 값은 바이트 카운트 래지스터(21)에서의 값으로부터 감산된다. 다음에는 DONE 신호가 입력인지 아닌지를 판단한다(단계 108). 만일 그 결과가 "YES"이면, 단계(110)이 처리된다. 한편, 그 결과가 "NO"이면, 단계(109)가 처리된다. 단계(109)에서, 바이트 카운트 레지스터(21)에서의 값이 "0"인지, 아닌지를 식별한다. 만일 그 결과가 "NO"이면, 하나의 데이터 블록이 아직 전송되지 않았으므로 단계(107)로 되돌아간다. 한편, 만일 그 결과가 "YES"이면, 단계(110)이 처리된다. 단계(110)에서, BIU 레지스터(27)에서의 값이 "1"인지, "0"인지를 판단한다. 만일 BIU 레지스터(27)에서의 값이 디스크립터 표의 갱신을 요구하는 것을 의미하는 "1"이면, 단계(111)로 간다. 한편, 만일 BIU 레지스터(27)에서의 값이 "0"이면, 단계(117)이 처리된다.
전술된 바와 같이, 단계(111-116)의 순서는 디스크립터 표의 갱신에 관한 것이다. 상술된 제2실시예에서, DSRW 레지스터(26)는 디스크립터 표 1에서의 상응하는 메모리 영역에 기록될 디스크립터들을 홀딩하기 위해 사용된다. 한편, 제9b도의 순서에서, DSRW 레지스터(26)는 상응하는 메모리 영역에 디스크립터들을 기록할 목적으로 사용되지 않는다. 단계(111)에서, 디스크립터 어드레스 레지스터(22)에서의 현재값은 디스크립터를 단계(102)에서 디스크립터 표 1로부터 읽어낼 때, 얻은 값으로 대체된다. 이어서 디스크립터 포맷 코우드(DF)중의 하나가 디스크립터 포맷 레지스터(11)에 기록되었는가를 판단한다(단계 112). 만일 코우드 DF가 "00"또는 "01"이면, 소오스 레지스터(19)에서의 어드레스는 디스크립터 어드레스 레지스터(22)로 지시된 메모리 영역에 기록된다(단계 113). 이어서 소오스 레지스터(19)에서의 총 어드레스가 되는 값(예에서는 4바이트)을 디스크립터 어드레스 레지스터(22)에서의 어드레스에 가산한다. 그 이후 단계(114)에서, 코우드(DF)가 "10"인지, 아니면 "00"인지를 판단한다. 만일 코우드(DF)가 "10"이면, 단계(116)이 처리된다. 대신에 코우드(DF)가 "00"이면, 단계(115)에서 데스티네이션 레지스터(20)의 내용들이 디스크립터 어드레스 레지스터(22)의 어드레스로 지시된 메모리 영역에 기록된다. 다음에, 데스티네이션 레지스터(20)에서의 총값에 상응하는 값(예에서는 4바이트)을 디스크립터 어드레스 레지스터(22)에서의 어드레스에 가산한다. 다음 단계(116)에서, 바이트 카운트 레지스터(21)에서의 값은 디스크립터 어드레스 레지스터(22)에서의 어드레스로 지시된 메모리 영역에 기록되며, 바이트 카운트 레지스터(21)에서의 값에 상응하는 값(예에서는 4바이트)을 디스크립터 어드레스 레지스터(22)에서의 어드레스에 가산한다. 이어서 단계(117)을 행한다.
단계(117)에서, DONE 신호가 입력되는지, 입력되지 않는지에 대해서 다시 판별한다. 이것은 버스 싸이클에서 수행된다. 만일 그 결과가 "YES"이면, 단계(118)이 행해진다. 반대로, 만일 그 결과가 "NO"이면, 단계(119)가 처리된다. 단계(118)에서, DIO 레지스터(25)에서의 값이 "0"인지, 아니면 "1"인지를 판별한다. 만일 그 값이 DMA 전송의 종료를 요청하는 "0"이면, DMA 전송이 종료된다. 한편, DIO 레지스터(25)에서의 값이 제로인지를 판단한다(단계 119). 만일 그 결과가 "YES"이면 처리가 종료한다. 반대로 그 결과가 "NO"이면 해당 레지스터를 다음 데이터 블록에 관한 DMA 전송을 요구하는 "1"로 셋팅한 후(단계 120), 단계(101)로 되돌아간다.
링크 디스크립터 체인 모우드에서 수행되는 DMA 전송의 절차는 단계(126, 136 및 138)을 제외하고 시이퀀셜 디스크립터 체인 모우드에서와 거의 같다. 링크 디스크랩터 체인 모우드에서, 단계(126)은 단계(106) 대신에 수행된다. 단계(126)에서, 디스크립터 어드레스 레지스터(22)로 나타낸 메모리 영역의 내용들은 디스크립터 어드레스 레지스터(22)에 기록된다. 이 절차는 "S 126"이 붙은 선(제5a도)에 의하여 지시된다. 단계(136)에서, 디스크립터 어드레스 레지스터(22)에서의 값은 디스크립터가 독출된 후에 유효한 값으로 되돌아간다. 단계(139)에서, 체인 터미네이터 레지스터(23)에서의 값이 디스크립터 어드레스 레지스터(22)의 값과 같은가를 판별한다. 즉, 링크 디스크립터 체인 모우드에서, 체인 터미네이터 레지스터(22)에서의 값은 DMA 전송을 종료시키는 어드레스를 표시한다.
상술된 절차들은 셀렉터 PLA(12)와 함께 마이크로-ROM(16)에 저장된 마이크로프로그램에 의하여 제어된다. 상술된 설명으로부터 숙련된 기술자들은 마이크로-ROM(16)과 셀렉터 PLA(12)를 쉽게 설계할 수 있다.
본 발명은 상술된 실시예들로만 제한되지 않으며, 본 발명의 범위를 벗어나지 않고 다양한 수정과 변형을 가할 수 있다.

Claims (19)

  1. 내부의 버스(31,32)와 상기 시스템 버스(36,37,38)와 상기 내부의 버스(31,32) 사이에서 데이터와 교환을 제어하고, 상기 시스템 버스(36,37,38)와 상기 내부의 버스(31,32)에 연결되는 데이터 제어수단(6)과, 전송요청 신호를 수신하고 상기 내부의 버스(31,32)에 연결되는 전송요청 제어수단(7)을 구비하고, 다이렉트 메모리 액세스에 의하여 데이터 전송을 제어하고 메모리(2,3)를 포함한 시스템의 시스템버스(36,37,38)에 연결되는 다이렉트 메모리 액세스 제어장치에 있어서, 각각이 다이렉트 메모리 액세스에 의해 데이터를 전송하는데 필요한 디스크립터들의 형태와 수를 정의하는 복수개의 디스크립터 포맷들중의 하나를 지정하는 코우드를 기록하는 레지스터(11)와 상기 레지스터(11)에 기록된 코우들에 의하여 선택된 상기 디스크립터 포맷들중의 하나에 정의된 디스크립터들을 기록하기 위한 레지스터 수단(19,23)과 상기 레지스터(11)에 기록된 상기 디스크립터 포맷들중의 선택된 하나에 정의된 디스크립터들에 따라 다이렉트 메모리 액세스에 의한 데이터 전송을 제어하고, 상기 전송요청 제어수단을 통하여 공급된 상기 전송요청 신호에 의하여 활성되는 제어수단(16-18)이 더 구비됨을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  2. 제1항에 있어서, 상기 디스크립터 포맷들은 전송될 데이터가 독출되는 상기 메모리의 소오스 어드레스, 상기 전송되는 데이터가 기록되기 위한 상기 메모리(2,3)의 데스티네이션 어드레스 및 전송되는 데이터의 바아트들 수를 나타내는 바이트 카운트를 포함하는 제1디스크립터 포맷(DF="00")을 구비함을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  3. 제1항에 있어서, 상기 디스크립터 포맷들이, 데이터가 전송되는 상기 메모리(2,3)의 소오스 어드레스와 전송되는 데이터의 바이트들 수를 나타내는 바이트 카운트를 포함하는 제2디스크립터 포맷(DF="10")을 구비함을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  4. 제1항에 있어서, 상기 디스크립터 포맷들은 전송되는 데이터가 기록되는 상기 메모리(2,3)의 데스티네이션 어드레스와 전송되는 데이터의 바이트들 수를 나타내는 바이트 카운트를 포함하는 제3디스크립터 포맷(DF="11")을 구비함을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  5. 제2항에 있어서, 상기 제1디스크립터 포맷(DF="00")은 다이렉트 메모리 액세스에 의한 다음 데이터 전송을 위해 액세스되는 상기 메모리(2,3)의 어드레스를 나타내는 다음의 디스크립터 표 어드레스를 더 포함하는 것을 특징으로 하는 다이렉트 메모리 엑세스 제어장치.
  6. 제3항에 있어서, 상기 제2디스크립터 포맷(DF="10")은 다이렉트 메모리 액세스에 의한 다음의 데이터 전송을 위해 액세스되는 상기 메모리(2,3)의 어드레스를 나타내는 다음의 디스크립터 표 어드레스를 더 포함하는 것을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  7. 제4항에 있어서, 상기 제3디스크립터 포맷(DF="11")은 다이렉트 메모리 액세스에 의한 다음의 데이터 전송을 위해 액세스되는 상기 메모리(2,3)의 어드레스를 나타내는 다음의 디스크립터 표 어드레스를 더 포함하는 것을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  8. 제1항부터 7항까지에 있어서, 상기 레지스터 수단(19-23)이 데이터가 전송되는 메모리(2,3)의 소오스 어드레스를 기록하는 소오스 레지스터(19)와 상기 전송되는 데이터가 기록되는 상기 메모리(2,3)의 데스티네이션 어드레스를 기록하는 데스티네이션 레지스터(20) 및 전송되는 데이터의 바이트들 수를 나타내는 바이트 카운트를 기록하는 바이트 카운트 레지스터(21)를 구비함을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  9. 제8항에 있어서, 상기 레지스터 수단(19-23)은 전송되는 데이터의 단위에 정의된 상기 디스크립터 포맷의 개시 어드레스를 기록하는 디스크립터 어드레스 래지스터(22)를 더 포함하는 것을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  10. 제1항부터 제9항까지에 있어서, 상기 제어수단(16-18)은 상기 레지스터 수단(19-23)을 제어하기 위하여 사용된 제어정보(CDA,JUMPA,JUMPC)를 마이크로프로그램의 형태로 저장하는 마이크로-리이드-온리-메모리(마이크로-ROM)(16)와 상기 마이크로프로그램을 독출하기 위한 어드레스를 상기 마이크로-ROM(16)에 공급하기 위한 전송정보 셋팅수단(18)을 구비함을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  11. 제10항에 있어서, 상기 전송정보 셋팅수단이(18)이 상기 마이크로-ROM(16)에 공급될 개시 어드레스 또는 브랜치 어드레스를 발생하기 위한 제1수단(15)과 상기 마이크로-ROM(16)에 공급될 어드레스를 계속적으로 발생하기 위한 제2수단(14)과 상기 개시 어드레스 또는 브랜치 어드레스, 상기 어드레스와 상기 제어정보 중의 하나를 선택하기 위한 제3수단(12)으로 이루어지고, 상기 데이터들 중의 선택된 하나는 어드레스 정보로서 상기 마이크로-ROM에 공급되는 것을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  12. 제11항에 있어서, 상기 제3수단(12)은 상기 레지스터(11)에 기록된 상기 코우드와 상기 마이크로-ROM(16)으로부터 공급된 상기 제어정보(JUMPC)를 토대로 하여 상기 개시 어드레스, 상기 연속 어드레스 및 상기 제어정보(JUMPA)중의 하나를 선택하는 것을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  13. 내부의 버스(31,32)와 시스템버스(36,37,38)와 상기 내부의 버스(31,32) 사이에서 데이터의 교환을 제어하고, 상기 시스템 버스(36,37,38)와 상기 내부의 버스(31,32)에 연결된 데이터 제어수단(16)과 전송요청 신호를 수신하고, 상기 내부의 버스(31,32)에 연결된 전송요청 제어수단(7)을 구비하고, 메모리(2,3)를 포함하며 다이렉트 메모리 액세스에 의해 데이터 전송을 제어하기 위한 시스템의 시스템 버스(36,37,38)에 연결된 다이렉트 메모리 액세스 제어장치에 있어서, 각각이 다이렉트 메모리 액세스에 의한 데이터 전송에 필요한 디스크립터들의 수와 형태를 정의하는 다수의 디스크립터 포맷들중의 하나를 지정하는 코우드를 기록하는 레지스터(11)와 상기 레지스터(11)에 기록된 코우드에 의하여 선택된 상기 디스크립터 포맷들중의 하나로 정의된 디스크립터들을 기록하기 위한 레지스터 수단(19-23)과 상기 레지스터 수단(19-23)에 기록된 상기 디스크립터 포맷 중에서 선택된 하나에 정의된 디스크립터들에 따라서 디이렉트 메모리 액세스에 의한 데이터 전송을 제어하고, 데이터 전송이 종료할 때 상기 메모리(2,3)내에 설정된 메모리 영역내에 상기 래지스터 수단(19-23)에 기록된 상기 디스크립터들을 기록하고, 상기 전송요청 제어수단(7)을 통하여 공급된 상기 전송요청 신호에 의하여 활성화되는 제어수단(16,18,26,27)을 더 구비함을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  14. 제13항에 있어서, 상기 제어수단(16-18,26,27)은 상기 기록선 디스크립터들이 상기 설정된 메모리 영역에 기록되어야만 하는 가에 대한 판정을 행하기 위한 판정 수행수단(27)을 구비함을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  15. 제13항과 제14항에 있어서, 상기 제어수단(16-18,26,27)은 상기 개시 어드레스에 관련된 상기 디스크립터들이 상기 레지스터 수단(19,20,21)에 기록될때에 전송될 데이터에 관련된 상기 선택된 디스크립터 포맷들내에서 상기 디스크립터가 저장된 메모리 영역의 개시 어드레스를 기록하는 레지스터(26)를 구비함을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  16. 제15항에 있어서, 상기 제어수단(16-18,26,27)은 상기 레지스터 수단(19,20,21)에 기록된 상기 디스크립터들을 상기 개시 어드레스에 의해 지정된 상기 설정된 메모리 영역내에 기록하는 것을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  17. 제16항에 있어서, 상기 레지스터 수단(19-23)은 액세스될 상기 메모리(2,3)의 어드레스를 기록하는 디스크립터 어드레스 레지스터(22)를 구비하고, 상기 기록된 디스크립터들이 상기 설정된 메모리 영역에 기록될 때, 상기 디스크립터 어드레스 레지스터(22)내의 어드레스와 상기 레지스터(26)내의 어드레스가 상호 교환되고, 이에 상기 설정된 메모리 영역은 상기 디스크립터 어드레스 레지스터(22)내에 기록된 어드레스에 의하여 액세스되는 것을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
  18. 제17항에 있어서, 상기 디스크립터들은 상기 설정된 메모리 영역에 라이트된 후에, 상기 디스크립터어드레스 레지스터(22)내의 어드레스와 상기 레지스터(26)내의 어드레스가 다시 상호 교환되는 것을 특징으로 하는 다이렉트 메모링 액세스 제어장치.
  19. 제17항과 제18항에 있어서, 상기 레지스터(26)내의 상기 어드레스와 교환될때에 이용가능한 상기 디스크립터 어드레스 레지스터(22)에 기록된 상기 어드레스가 다음 데이터 전송에서 전송될 데이터에 관련된 디스크립터들이 저장되어 있는 메모리 영역의 개시 어드레스를 지시하는 어드레스인 것을 특징으로 하는 다이렉트 메모리 액세스 제어장치.
KR1019890002811A 1988-03-08 1989-03-07 다이렉트 메모리 액세스 제어장치 Expired KR920007950B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP63-54366 1988-03-08
JP?63-54366 1988-03-08
JP63054366A JP2515367B2 (ja) 1988-03-08 1988-03-08 Dma転送制御装置
JP63-90942 1988-04-13
JP?63-90942 1988-04-13
JP63090942A JP2594611B2 (ja) 1988-04-13 1988-04-13 Dma転送制御装置

Publications (2)

Publication Number Publication Date
KR890016478A KR890016478A (ko) 1989-11-29
KR920007950B1 true KR920007950B1 (ko) 1992-09-19

Family

ID=26395123

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019890002811A Expired KR920007950B1 (ko) 1988-03-08 1989-03-07 다이렉트 메모리 액세스 제어장치

Country Status (4)

Country Link
US (1) US5077664A (ko)
EP (1) EP0332151B1 (ko)
KR (1) KR920007950B1 (ko)
DE (1) DE68925048D1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9019001D0 (en) * 1990-08-31 1990-10-17 Ncr Co Work station including a direct memory access controller and interfacing means to microchannel means
US5471638A (en) * 1991-10-04 1995-11-28 Bull Hn Inforamtion Systems Inc. Bus interface state machines with independent access to memory, processor and registers for concurrent processing of different types of requests
JPH05108548A (ja) * 1991-10-15 1993-04-30 Nec Ic Microcomput Syst Ltd Dmaコントローラ
JPH05173932A (ja) * 1991-12-24 1993-07-13 Toshiba Corp データ転送装置
JPH05250305A (ja) * 1992-03-06 1993-09-28 Mitsubishi Electric Corp データ転送制御方式
US5638530A (en) * 1993-04-20 1997-06-10 Texas Instruments Incorporated Direct memory access scheme using memory with an integrated processor having communication with external devices
US5561821A (en) * 1993-10-29 1996-10-01 Advanced Micro Devices System for performing I/O access and memory access by driving address of DMA configuration registers and memory address stored therein respectively on local bus
US5835742A (en) * 1994-06-14 1998-11-10 Apple Computer, Inc. System and method for executing indivisible memory operations in multiple processor computer systems with multiple busses
US5717952A (en) * 1994-11-16 1998-02-10 Apple Computer, Inc. DMA controller with mechanism for conditional action under control of status register, prespecified parameters, and condition field of channel command
US5713044A (en) * 1995-12-19 1998-01-27 Intel Corporation System for creating new group of chain descriptors by updating link value of last descriptor of group and rereading link value of the updating descriptor
US6202107B1 (en) * 1998-11-19 2001-03-13 Sun Microsystems, Inc. Host controller interface descriptor fetching unit
US6449665B1 (en) 1999-10-14 2002-09-10 Lexmark International, Inc. Means for reducing direct memory access
US6785743B1 (en) * 2000-03-22 2004-08-31 University Of Washington Template data transfer coprocessor
EP1591906A1 (en) * 2004-04-27 2005-11-02 Texas Instruments Incorporated Efficient data transfer from an ASIC to a host using DMA
KR100703406B1 (ko) * 2005-02-04 2007-04-03 삼성전자주식회사 Dma 제어 장치 및 방법
US7669037B1 (en) * 2005-03-10 2010-02-23 Xilinx, Inc. Method and apparatus for communication between a processor and hardware blocks in a programmable logic device
US7743176B1 (en) 2005-03-10 2010-06-22 Xilinx, Inc. Method and apparatus for communication between a processor and hardware blocks in a programmable logic device
JP2008299425A (ja) * 2007-05-29 2008-12-11 Toshiba Corp データ転送装置及びデータ転送方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2139384B (en) * 1983-04-19 1986-05-14 Texas Instruments Ltd Computing apparatus
US4783730A (en) * 1986-09-19 1988-11-08 Datapoint Corporation Input/output control technique utilizing multilevel memory structure for processor and I/O communication

Also Published As

Publication number Publication date
EP0332151B1 (en) 1995-12-13
US5077664A (en) 1991-12-31
DE68925048D1 (de) 1996-01-25
KR890016478A (ko) 1989-11-29
EP0332151A2 (en) 1989-09-13
EP0332151A3 (en) 1993-01-07

Similar Documents

Publication Publication Date Title
KR920007950B1 (ko) 다이렉트 메모리 액세스 제어장치
US4475155A (en) I/O Adapter with direct memory access to I/O control information
US4145739A (en) Distributed data processing system
US5101490A (en) Peripheral device controller with an EEPROM with microinstructions for a RAM control store
US4860244A (en) Buffer system for input/output portion of digital data processing system
US4423480A (en) Buffered peripheral system with priority queue and preparation for signal transfer in overlapped operations
KR100290944B1 (ko) 복합 유니버설 시리얼 버스 제어기에 인터페이스를 제공하기 위한 장치 및 방법
US5301279A (en) Apparatus for conditioning priority arbitration
KR100225744B1 (ko) 동적연쇄화조작동안레이스상태를막는방법및장치
US5121479A (en) Early start mode data transfer apparatus
US5890012A (en) System for programming peripheral with address and direction information and sending the information through data bus or control line when DMA controller asserts data knowledge line
KR910005997B1 (ko) 데이타 처리장치에 있어서 오퍼레이팅 시스템 슈퍼바이저 방법 및 장치
EP1012734B1 (en) Address translation in computer bus bridge devices
US6105076A (en) Method, system, and program for performing data transfer operations on user data
US5901291A (en) Method and apparatus for maintaining message order in multi-user FIFO stacks
JPH08235106A (ja) アップグレード・プロセッサのインタフェース方法及びシステム
US3833930A (en) Input/output system for a microprogram digital computer
US6105080A (en) Host adapter DMA controller with automated host reply capability
EP0321775B1 (en) Secure data processing system using commodity devices
EP0397778B1 (en) An early start mode method and apparatus
JPH0115098B2 (ko)
US4589091A (en) Numerical control device
US5797040A (en) Computer system having system bus which couples adapter and processing units and requires acquisition for data transmission thereover
JPS61150054A (ja) データ処理装置
US5829043A (en) Coupler circuit and its use in a card and process

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

R17-X000 Change to representative recorded

St.27 status event code: A-3-3-R10-R17-oth-X000

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

G160 Decision to publish patent application
PG1605 Publication of application before grant of patent

St.27 status event code: A-2-2-Q10-Q13-nap-PG1605

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 19950920

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 19950920

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000