KR100468408B1 - 직접메모리엑세스동작을위해출력주변장치를프리챠징하는방법 - Google Patents

직접메모리엑세스동작을위해출력주변장치를프리챠징하는방법 Download PDF

Info

Publication number
KR100468408B1
KR100468408B1 KR1019970025450A KR19970025450A KR100468408B1 KR 100468408 B1 KR100468408 B1 KR 100468408B1 KR 1019970025450 A KR1019970025450 A KR 1019970025450A KR 19970025450 A KR19970025450 A KR 19970025450A KR 100468408 B1 KR100468408 B1 KR 100468408B1
Authority
KR
South Korea
Prior art keywords
data block
output data
output
peripheral
block
Prior art date
Application number
KR1019970025450A
Other languages
English (en)
Other versions
KR980010803A (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 아드밴스트 마이크로 디이바이시스 인코포레이티드
Publication of KR980010803A publication Critical patent/KR980010803A/ko
Application granted granted Critical
Publication of KR100468408B1 publication Critical patent/KR100468408B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Systems (AREA)

Abstract

주변장치를 프리챠징하는 방법이 개시된다. 본 방법에 따르면, 프로그램된 I/O 또는 종속 사이클(slave cycle)을 이용하여, 주변 장치로 향할(targeted) 출력 데이터 블록의 개시부를 상기 주변장치의 출력 버퍼로 전송하고, 상기 주변 장치가 출력 데이터 블록으로부터 출력 경로를 통해 상기 개시부의 전송을 개시하는 동안에, 출력 데이터 블록의 가상 어드레스가 물리적 어드레스로 변환된다. 주변 장치에 의한 직접 메모리 액세스 동작은 출력 데이터 블록의 잉여부를 출력 버퍼로 전송한다.

Description

직접 메모리 엑세스 동작을 위해 출력 주변 장치를 프리챠징하는 방법
본 발명은 컴퓨터 시스템 분야, 특히 컴퓨터 시스템에서의 주변 장치에 대한 데이터 전송 동작에 관한 것이다.
종래의 컴퓨터 시스템은 통상적으로 다양한 입력/출력(I/O) 주변 장치와 함께, 호스트(host) 프로세서 및 호스트 메모리를 포함한다. 예를 들면, 그러한 I/O 주변 장치는 네트워크 인터페이스 및 대용량 저장 디바이스를 위한 I/O 제어기를 포함한다. 통상적으로 종래의 컴퓨터 시스템은 호스트 프로세서와 I/O 주변 장치 사이에서 통신을 가능케하는 주변 장치 버스, 특수 I/O 버스, 또는 호스트 버스 같은 하나 이상의 버스를 포함한다.
이러한 버스를 경유하여 I/O 주변 장치에 정보를 전송하는 종래 기술의 한 방법은 프로그램된 I/O 또는 종속(slave) 사이클로 칭해진다. 프로그램된 I/O는 호스트 프로세서에 의해 실행된다. 호스트 프로세서는 버스 상에서 일련의 판독 사이클 및 기록 사이클을 사용해서 호스트 메모리로부터 I/O 주변장치로 데이터 블록을 전송한다. I/O 주변 장치에 의해 소모되는 데이터 블록이 비교적 큰 경우에, 통상적으로 상기 프로그램된 I/O 동작은 비교적 많은 수의 호스트 프로세서 사이클을 소모한다. 불행하게도, 호스트 프로세서 사이클의 그러한 과도한 소모는 컴퓨터 시스템 내에서의 다른 동작을 느리게 한다.
I/O 주변 장치에 정보를 전송하는 다른 종래 방법은 직접 메모리 액세스(DMA)라고 칭해진다. 통상적으로 이러한 DMA 전송은 호스트 프로세서의 외부에 있는 DMA 회로에 의해 실행된다. 통상적으로, 호스트 프로세서는 호스트 메모리에 포함된 데이터 블록의 길이 및 어드레스를 DMA 회로에 제공한다. 그러면 DMA 회로는 호스트 버스 또는 I/O 버스의 제어를 위한 중재를 행하여, 버스 마스터로서 제어권을 얻는다. 그후, DMA 회로는 호스트 메모리로부터 직접 데이터 블록을 판독 하며, 호스트 프로세서는 다른 태스크(task)를 자유롭게 실행할 수 있게 된다.
프로그램된 I/O 동작보다 DMA 동작이 통상적으로 더 효율적이기 때문에, 비교적 많은 데이터 블록을 소모하는 디스크 제어기 또는 네트워크 제어기와 같은 종래의 I/O 주변 장치는 통상 DMA 데이터 전송 방식을 사용한다. 예를 들어, 프로그램된 I/O 를 이용한 데이터 워드의 전송은 일반적으로 호스트 메모리로부터의 판독 및 I/O 주변장치로의 기록을 포함한 호스트 프로세서에 의한 2 개의 버스 사이클을 필요로 한다. 반면에, DMA 동작은 I/O 주변장치에 의해 호스트 메모리부터 직접 판독되는 데이터 워드당 단지 하나의 버스 트랜잭션(transaction)을 포함한다. 또한, 일부 종래 컴퓨터 시스템은 그런 DMA 동작 동안에 특수 버스트(burst) 데이터 전송을 가능하게 하는 I/O 버스를 포함한다. 통상적으로 그런 버스트 데이터 전송은 I/O 주변장치로의 신속하고도 연속적인 다중 데이터 워드 전송을 가능하게한다.
통상적으로, 종래의 I/O 주변장치는 호스트 프로세서 상에서 실행되는 하드웨어 종속 구동기 루틴에 의해 관리된다. 통상적으로, 호스트 프로세서 상에서 실행되는 운영 체계(operating system)는 특정 I/O 주변장치를 관리하고, 상기 I/O 주변장치로의 데이터 전송을 수행하기위한 구동기 루틴을 호출한다.
또한, 종래의 호스트 프로세서들은 통상적으로 호스트 메모리의 제한된 어드레스 공간을 호스트 프로세서를 위한 가상(virtual) 어드레스 공간으로 맵핑(mapping)하는 메모리 관리 메커니즘을 구현한다. 상기 운영 체계 및 구동기 루틴은 가상 어드레스를 가지고 호스트 메모리 내에 저장된 데이터 블록을 참조한다. 다른 한편으로, I/O 주변장치는 통상적으로 가상 어드레스 보다는 물리적 어드레스를 가지고 호스트 메모리내에 저장된 데이터 블록을 참조한다.
결과적으로, 종래의 구동기 루틴들은 호스트 메모리에 저장된 데이터 블록의 가상 어드레스를 I/O 주변 장치에 의해 이용될 물리적 어드레스로 변환시킨다. 통상적으로 이러한 구동기 루틴은 가상 어드레스를 물리적 어드레스로 변환하는 운영 체계 루틴을 호출해서 가상 어드레스를 물리적 어드레스로 변환시킨다. 또한, 이러한 구동기 루틴은 호스트 메모리 내로 출력 데이터 블록을 잠그는(lock) - 그럼으로써, DMA 동작 동안에 출력 데이터 블록상에서의 페이징(pasing) 동작을 막는 - 운영체계 루틴을 호출한다.
불행하게도, 이와같은 가상 어드레스의 물리적 어드레스로의 변환 및 메모리 페이지 잠금 동작은 시간을 소비하고, 통상적으로 DMA 동작의 개시를 지연시킨다. 통상적으로 DMA 동작 개시 시의 이와같은 지연은 I/O 주변장치들의 전체 데이터 출력 성능을 느리게 한다.
본 발명의 한 목적은 I/O 주변장치의 성능을 향상시키는 것이다.
본 발명의 다른 목적은 I/O 주변장치에 의한 출력 전송의 개시에 대한 지연을 감소시키는 것이다.
본 발명의 또 다른 목적은 DMA 주변장치로 출력 전송을 프리챠징하기위해 종속 사이클 또는 프로그램된 I/O를 사용하는 것이다.
본 발명의 또 다른 목적은 I/O 동작을 제어하는데 요구되는 호스트 프로세서 사이클의 양을 감소시켜, 다른 태스크를 실행하는 데에 유용한 호스트 프로세서 사이클의 수를 증가시키는 것이다.
이들 및 다른 목적들은 출력 버퍼의 DMA 프리챠징을 포함한 컴퓨터 시스템에서의 데이터 전송 방법을 제공하는 것으로서, 주변 장치로 향해질 출력 데이터 블록의 제 1 부분이 상기 주변 장치에 결합된 버스상에서 판독 및 기록 사이클을 이용하여 출력 버퍼로 전송된다. 주변 장치가 출력 버퍼로부터 출력 경로를 통해 상기 제 1 부분의 전송을 개시하는 동안에, 출력 데이터 블록의 가상 어드레스는 물리적 어드레스로 변환된다. 물리적 어드레스를 이용하는 주변 장치에 의한 직접 메모리 액세스 동작은 어드레스 변환이 완료된 후에 상기 출력 데이터 블록의 제 2부분을 출력 버퍼로 전송한다.
본 발명의 다른 목적, 특성 및 잇점은 하기 상세한 설명으로부터 명백해 질 것이다.
이하, 첨부된 도면을 참조로 본원 발명을 상세히 설명하기로 한다.
도 1은 I/O 주변장치(14)에 대한 DMA 전송 및 프리챠징 기능을 포함하는 컴퓨터 시스템(200)을 설명한다. 컴퓨터 시스템(200)은 호스트 프로세서(10) 및 호스트 메모리(12)를 포함한다. 본 실시예에서, 호스트 프로세서(10)는 호스트 버스(16)를 통해 I/O 주변 장치와 통신하는데, 이 호스트 버스는 컴퓨터 시스템(200)의 I/O 버스로서 역할을 한다. 또한, I/O 주변장치(14)는 호스트 버스(16)를 통해 호스트 메모리(12)를 판독해서 DMA 동작을 수행한다.
I/O 주변장치(14)는 출력 버퍼(20) 및 직접 메모리 액세스(DMA) 회로(22) 세트를 포함한다. 일 실시예에서, 출력 버퍼(20) 및 DMA 회로(22)를 포함하는 I/O 주변장치(14)는 하나의 집적 회로칩상에 포함된다. I/O 주변장치(14)는 주변장치 제어기, I/O 제어기 또는 주변장치 인터페이스 칩으로 칭해질 수 있다. 다른 실시예에서, DMA 회로(22)는 I/O 주변장치(14)에 통합되지 않을 수 있다. 이러한 실시예에서, 개별 DMA 회로(22)가 I/O 주변 장치(14)를 포함하는 I/O 주변장치 세트를 서비스할 수 있다.
출력 버퍼(20)는 I/O 경로(18)를 통해 전송할 데이터를 보유(hold)한다. 호스트 프로세서(10)는 호스트 버스(16)를 통해, 프로그램된 I/O 동작으로 I/O 버퍼(20)를 적재(load) 또는 프리챠징한다. 또한, DMA 회로(22)는 호스트 버스(16)의 제어를 위해 중재를 행하고, 호스트 버스(16)를 통해 호스트 메모리(12)로부터의 판독 동작을 수행함으로써 출력버퍼(20)를 적재한다.
일 실시예에서, 출력버퍼(20)는 선입선출(first-in first-out)(FIFO) 출력버퍼로 구성된다. 출력버퍼(20)는 I/O 경로(18)의 데이터 전송율을 호스트 버스(16)의 데이터 전송율로 조정(adjust)한다. 예를 들어 I/O 경로(18)가 이더넷(Ethernet) 네트워크와 같은 네트워크로의 통신 링크가 되는 경우의 응용에서, DMA 동작 또는 프로그램된 I/O 동작 동안에 호스트 버스(16) 상의 데이터 전송율은 I/O 경로(18)상의 데이터 전송율보다 높다. 또한, 호스트 버스(16)를 통한 DMA 전송율은 소형 컴퓨터 시스템 인터페이스(SCSI) 버스와 같은 대용량 저장 디바이스로의 표준 인터페이스 버스에 대한 데이터 전송율보다 높다.
도 2는 출력 버퍼(20) 및 DMA 회로(22)와 통신하는 컴퓨터 시스템(200)의 소프트웨어 요소를 설명한다. 호스트 프로세서(10)는 운영 체계(30) 및 주변장치 구동기 루틴(32)을 실행한다. 주변 장치 구동기 루틴(32)은 I/O 주변 장치(14)에 대한 하드웨어 종속 기능들을 실행한다.
운영 체계(30)는 전송할 한 세트의 데이터 바이트 또는 워드를 포함하는 출력블록(34)을 I/O 경로(18)를 통해 호스트 메모리(12)에 기록함으로써, I/O 주변장치(14)로의 출력 데이터 전송 동작을 개시한다. 이어서, 운영 체계(30)는 주변 장치 구동기 루틴(32)을 호출하고 출력 블록(34)에 대한 개시 가상 어드레스 및 블록 길이를 전달한다.
일 실시예에서, 운영 체계(30)는 기술자(descriptor) 블록에 대한 포인터(pointer)를 주변장치 구동기 루틴(32)에 전달한다. 기술자 블록은 개시 가상 어드레스 및 서브블록 길이를 포함하는 하나 이상의 서브블록을 지정한다. 이어서, 주변 장치구동기 루틴(32)은 상기 서브블록을 개별적으로 처리한다. 주변장치 구동기 루틴(32)은 서브블록 경계 또는 서브블록의 중간에서, 프로그램된 I/O 모드로부터 DMA 모드로 전환될 수 있다.
설명된 예에서, 출력 블록(34)은 한 서브블록에 포함되고, 주변 장치 구동기 루틴 (32)은 그 출력 블록(34)을 출력 버퍼(20)를 프리챠징하는 개시자 블록(36) 과 잉여 블록(38)으로 세분한다. 주변장치 구동기 루틴(32)은 개시자 블록(36)을 출력 버퍼(20)로 전송함으로써 출력 블록(34)의 전송을 프리챠징한다. 그 후에, I/O 주변장치(14)는 개시자 블록(36)을 출력 버퍼(20)로부터 I/O 경로를 거쳐 적당한 목적지로 전송한다. I/O 주변 장치(14)가 상기 개시자 블록(36)을 출력 버퍼(20)로부터 I/O 경로(18)를 통해 적절한 목적지로 전송하는 동안, 구동기 루틴(32)은 출력 블록의 개시 가상 어드레스를 물리적 어드레스로 변환하기 위해 운영 체계(30)에서 가상 어드레스-물리적 어드레스 변환 루틴(50)을 호출한다. 결과적으로, 가상 어드레스-물리적 어드레스 변환 루틴(50)의 호출은 I/O 경로(18)를 통한 데이터 전송의 개시와 중첩(overlap)한다.
가상 어드레스-물리적 어드레스 변환 루틴(50)으로부터 출력 블록(34)의 개시 물리적 어드레스를 수신한 후에, 주변 장치 구동기 루틴(32)은 잉여 블록(38)에 대한 DMA 전송을 셋업(set up)한다. 주변 장치 구동기 루틴(32)은 개시자 블록(36)의 길이에 따른 잉여 블록(38)의 개시 물리적 어드레스 및 가상 어드레스-물리적 어드레스 변환 루틴(50)에 의해 복귀된 개시 물리적 어드레스를 계산한다. DMA 전송의 셋업 동안에 주변장치 구동기 루틴(32)는 잉여 블록(38)의 개시 물리적 어드레스를 DMA 회로(22)에 기록한다.
그 후에, DMA 회로(22)는 호스트 메모리(12)로부터 잉여 블록(38)을 판독하고, 잉여 블록(38)을 출력 버퍼(20)에 전송한다. 이 시간 동안, I/O 주변장치(14)는 개시 블록(36) 전송을 계속하고, 그때 출력 버퍼(20)로부터의 잉여블록(38)을 선입선출 방식으로 I/O경로(18)를 통해 궁극적인 목적지로 전송한다.
개시자 블록(36) 내에 포함된 데이터의 양은 호스트 프로세서(10)가 가상 어드레스-물리적 어드레스 변환 루틴(50)을 수행하는 속도 및, I/O 주변장치(14)가 출력 버퍼 (20)의 내용을 I/O 경로(18)로 옮기는 속도에 따라서 선택된다. 개시자 블록(36)의 길이는 잉여 블록(38)을 출력 버퍼(32)로 적재하는 DMA 동작의 개시 시에 개시자 블록(36)으로부터의 데이터 바이트가 출력버퍼(32)에 거의 남지않도록 하는 식으로 선택된다.
운영 체계(30)가 가상 어드레스-물리적 어드레스 변환을 비교적 빨리 계산하게 되면, 소수의 데이터 바이트만이 개시자 블록(36)에 포함된다. 운영 체계(30)가 가상 어드레스-물리적 어드레스 변환을 비교적 느리게 계산하는 경우에는, 보다 많은 데이터 바이트가 개시자 블록(36)에 포함된다. 출력 블록(34)의 전체 길이가 비교적 작거나 또는 운영 체계(30)가 비교적 느린 경우에, 호스트 프로세서(10)는 프로그램된 I/O동작을 이용하여 출력 버퍼(20)에 출력 블록(34)을 전송하게된다.
운영 체계(30)가 가상 어드레스-물리적 어드레스 변환 루틴(50)을 실행하는 속도는 호스트 프로세서(10)의 하드웨어 구현 유형을 비롯한 다수의 인자(factors)와, 호스트 프로세서(10)에 의해 수행되는 백그라운드(background) 프로그램 및 응용 프로그램의 유형과 수에 좌우된다. 가상 어드레스-물리적 어드레스 변환을 실행하는데 있어서, 운영 체계(30)에 의해 소모되는 시간은 응용 프로그램 및 기타 루틴들의 동작이 시작되거나 해제되는 시간에 따라 크게 변할 수 있다. 주변장치 구동기 루틴(32)은 주기적으로 가상 어드레스-물리적 어드레스 변환 루틴(50)에서 시간 테스트를 수행하고, 잉여 블록(38)을 출력 버퍼(20) 내로 적재하는 DMA 동작의 개시시에 개시자 블록(36)으로부터의 데이터 바이트가 출력 버퍼(20)에 거의 남지 않도록 하는 식으로 개시자 블록(36)내의 바이트의 수를 조정한다.
I/O 주변장치(14)가 출력버퍼(20)의 내용을 I/O 경로(18)로 플러쉬(flush)하는 속도는 I/O 경로(18)의 속도에 좌우된다. 예를 들어, I/O 경로(18)가 초당 10메가비트인 이더넷 통신 링크인 경우에, 장치(14)는 출력 버퍼(20)로 부터 매 800나노초마다 한 바이트를 플러쉬한다. I/O 경로(18)가 초당 100메가비트인 이더넷 통신 링크인 경우, I/O 주변장치(14)는 출력 버퍼(20)로 부터 매 80 나노초마다 한 바이트를 플러쉬한다. 초당 100메가비트인 링크는 운영 체계(30)에 의해 가상 어드레스-물리적 어드레스 변환의 소정속도에 대해 보다 큰 개시자 블록(36)의 데이터 길이를 요구한다.
도 3은 운영 체계(30)에 의한 주변 장치 구동기 루틴(32)의 호출을 설명한다. 운영 체계(30)는 I/O 경로(18)를 통한 목적지로의 출력 블록(34)의 전송을 요청하기위해 주변 장치 구동기 루틴(32)을 호출하고, 출력 블록(34)에 대한 개시 가상 어드레스를 전달한다.
블록(100)에서, 주변장치 구동기 루틴(32)은 개시자 블록(36)을 출력버퍼(20)에 기록한다. 주변 장치 구동기 루틴(32)은 운영 체계(30)로부터의 호출과 함께 전달된 출력 블록(34)에 대한 개시 가상 어드레스를 이용하여 개시자 블록(36)을 어드레스지정한다. 주변장치 구동기 루틴(32)은 호스트 메모리(12)로부터의 프로그램된 판독 사이클 및 출력 버퍼(20)로의 기록 사이클을 이용하여 개시자 블록(36)을 출력 버퍼(20)에 전송한다. 출력 버퍼(20)는 호스트 프로세서(10)의 메모리 어드레스 공간 또는 호스트 프로세서(10)의 I/O 어드레스 공간으로 맵핑될 수 있다.
블록(102)에서, 주변장치 구동기 루틴(32)은 출력 블록(34)의 개시 가상 어드레스를 물리적 어드레스로 변환하기위해 운영 체계(30) 내의 가상 어드레스-물리적 어드레스 변환 루틴(50)을 호출한다. 블록(104)에서, 주변장치 구동기 루틴(32)은 가상 어드레스-물리적 어드레스 변환 루틴(50)로부터 복귀한 물리적 어드레스에 개시자 블록(36)의 길이를 가산함으로써, 잉여 블록(38)에 대한 개시 물리적 어드레스를 산출한다. 이어서, 주변 장치 구동기 루틴(32)은 I/O 주변장치(14)의 DMA 회로(22)를 잉여 블록(38)의 개시 물리적 어드레스를 가지고 프로그램한다.
대안적으로, 주변 장치 구동기 루틴(32)은 운영 체계(30)에 의해 전달된 출력 블록(34)의 개시 가상 어드레스에 개시자 블록(36)의 길이를 가산함으로써, 잉여 블록(38)의 개시 가상 어드레스를 계산한다. 이어서, 주변장치 구동기 회로(32)는 잉여 블록(38)의 개시 가상 어드레스를 물리적 어드레스로 변환하기위해 가상 어드레스-물리적 어드레스 변환 루틴(50)을 호출한다.
블록(106)에서, 주변 장치 구동기 루틴(32)은 호스트 메모리(10)로부터 출력 버퍼(20)로 잉여 블록(38)을 전송하기위한 DMA동작을 개시하도록 DMA 회로(22)에 신호한다. DMA 회로(22)는 호스트 버스(16)의 버스 마스터로서 제어권을 얻고, 호스트 메모리(12)로부터 잉여블록(38)을 판독하기위해 호스트 버스(16)상에 판독 사이클을 발생시킨다.
도 4는 I/O 주변장치(14)를 통한 프리챠징된 데이터 전송의 타이밍을 설명한다. 운영 체계(30) 및 주변장치 구동기 루틴(32) 간의 통신이 I/O 주변장치(14)의 출력버퍼(20) 및 DMA 회로(22)에 관한 동작과 관련되어 도시된다.
t1 와 t2 사이에서, 운영 체계(30)는 출력 블록(34)을 호스트 메모리(12) 내로 어셈블한다. 호스트 메모리(12) 내로의 출력 블록(34)의 어셈블리는 컴퓨터 시스템(200) 내에 구현되는 구동기 프로그램 또는 다른 응용 프로그램을 포함할 수 있다.
시간 t2 에서, 운영 체계(30)는 주변장치 구동기 루틴(32)을 호출하고, 출력 블록(34)의 개시 가상 어드레스를 전달한다. t2 와 t4 사이에서, 주변 장치 구동기 루틴(32)은 호스트 메모리(12)로부터의 판독 및 출력 버퍼(20)로의 기록을 포함하는 호스트 버스(16) 상에서의 프로그램된 I/O 사이클을 이용하여 출력 버퍼(20) 내로 개시자 블록(36)을 기록한다. 프로그램된 I/O 사이클 동안에, 호스트 프로세서(10)의 빌트-인(built-in) 메모리 관리 하드웨어는 주변 장치 구동기 루틴(32)에 의해 발생된 가상 어드레스를 호스트 버스(16)를 통해 전송하기 위한 물리적 어드레스로 자동적으로 변환한다.
시간 t3에서, 개시자 블록(36)으로부터의 데이터의 임계량이 출력 버퍼(20) 내에 포함된다. 데이터의 임계량이 도달하면, I/O 주변장치(14)는 I/O 경로(18)를 통해 출력 버퍼(20)로부터의 데이터를 전송함으로써 출력 버퍼(20)를 플러쉬하기 시작한다.
시간 t4에서, 주변장치 구동기 루틴(32)은 운영 체계(30)의 가상 어드레스-물리적 어드레스 변환 루틴(50)을 호출하고, 출력 블록(34)의 개시 가상 어드레스를 전달한다. 시간 t4와 시간 t5 사이에서, 출력 블록(34)와 개시 가상 어드레스는 물리적 어드레스로 변환된다.
시간 t5에서, 가상 어드레스-물리적 어드레스 변환 루틴(50)은 출력 블록(34)의 개시 물리적 어드레스와 함께 주변장치 구동기 루틴(32)으로 복귀한다. 시간 t5와 t6 사이에서, 주변장치 구동기 루틴(32)은 잉여 블록(38)의 개시 물리적 어드레스를 DMA 회로(22) 내로 프로그램하고, DMA 전송 동작을 개시한다. 시간 t6에서, 주변 장치 구동기 루틴(36)은 DMA 회로(22)가 잉여 블록(38)의 DMA 전송을 개시하는 동안에, 운영 체계(30)로 복귀한다.
시간 t6와 t7 사이에서, DMA 회로(22)는 호스트 버스(16)를 통해 판독 사이클을 발생시켜서 호스트 메모리(12)로부터 잉여 블록(38)을 판독하고, 잉여 블록(38)을 출력 버퍼(20)로 전송한다. 이 시간 동안에, I/O 주변장치(14)는 I/O 경로(18) 및 적절한 목적지에 출력 버퍼의 내용들을 계속 전송 또는 플러쉬한다.
시간 t7에서, DMA 회로(22)는 출력 버퍼(20) 내로의 잉여 블록(38)의 전송을 완료한다. 시간 t7 후에, I/O 주변장치(14)는 출력 버퍼(20)의 내용들을 I/O 경로(18)로 계속 플러쉬한다. 주변장치 구동기 루틴(32)은 데이터 전송 동작의 종료를 수행하고, 출력 블록을 포함하고 있는 서브 블록들을 운영 체계(30) 내의 상위층들로 복귀시킨다.
도 5는 I/O 주변장치(14)로의 전송을 위한 프리챠징을 포함하는 컴퓨터 시스템(210)을 설명한다. 컴퓨터 시스템(210)은 호스트 버스(16)에 결합된 호스트 프로세서(10) 및 양호한 실시예에서 주변 장치 버스(42)에 결합된 I/O 주변장치(14)를 포함한다. 컴퓨터 시스템(210)은 호스트 버스(16)와 주변장치 버스(42) 사이에 통신을 가능하게 하는 브리지 회로(40)를 포함한다. 또한, 브리지 회로(40)는 호스트 버스(16) 및 주변장치 버스(42) 양자로부터 호스트 메모리(12)로의 액세스를 가능하게 한다.
브리지 회로(40)는 호스트 프로세서(10)로부터 호스트 버스(16)를 통해 개시되어 호스트 버스(16)를 통해 I/O 주변장치(14)로 향하게되는 버스 사이클을 주변장치 버스(42)에 대한 버스 사이클로 변환한다. 브리지 회로(40)는 호스트 버스(16)상의 기록 사이클을 주변 장치 버스(42) 상의 기록 사이클로 변환시킴으로써, 운영 체계(30) 및 주변장치 구동기 루틴(32)이 출력 블록(34)을 출력 버퍼(20)로 전송하는 것을 가능하게 한다. 또한, 브리지 회로(40)는 운영 체계(30) 및 주변장치 구동기 루틴(32)이 호스트 버스(16)를 통해 호스트 메모리(12)의 출력 블록(34)을 판독하고 기록하는 것을 가능하게 한다.
브리지 회로(40)는 DMA 회로(22)가 주변장치 버스(42)를 통해 호스트 메모리(12)를 판독하는 것을 가능하게 한다. I/O 주변장치(14)의 DMA(22)회로는 주변장치 버스(42)에 대해 중재를 행하여 이에대한 제어권을 얻고, DMA 동작 동안에 브리지 회로(40)를 통해 호스트 메모리(12)로부터의 판독 동작을 실행한다.
상기 발명의 상세한 설명은 단지 예시 목적으로 제시된 것으로, 본 발명을 예시된 실시예로만 제한하도록 하는 것이 아니다. 따라서, 본 발명의 범주는 첨부한 특허청구의 범위에 의해 한정된다.
도 1은 I/O 주변 장치에 대한 출력 버퍼 프리챠징(precharging)을 수행하는 일 실시예에서의 컴퓨터 시스템의 설명도.
도 2는 출력 버퍼 및 I/O 주변 장치의 DMA 회로와 통신하는 컴퓨터 시스템의 소프트웨어 요소의 설명도.
도 3는 I/O 주변 장치에 의해 출력 데이터 블록의 전송을 요청하기위한 주변장치 구동기 루틴에 대한 호출의 설명도.
도 4는 I/O 주변 장치를 통하여 프리챠칭된 데이터 전송 타이밍의 설명도.
도 5는 I/O 주변 장치에 대해 프리챠징하는 출력 버퍼를 포함하는 다른 실시예에서의 컴퓨터 시스템의 설명도

Claims (13)

  1. 컴퓨터 시스템에서의 데이터 전송 방법에 있어서,
    주변 장치에 결합된 버스상에서 판독 및 기록 사이클을 이용하여, 주변 장치로 향해질 출력 데이터 블록의 제 1부분을 상기 주변장치에 대한 출력 버퍼로 전송하는 단계와;
    상기 주변 장치가 상기 출력 버퍼로부터 출력 경로를 통해 상기 출력 데이터 블록의 제 1부분의 전송을 개시할 동안에, 상기 출력 데이터 블록의 가상 어드레스를 물리적 어드레스로 변환하는 단계와; 그리고
    상기 버스를 통해 상기 출력 데이터 블록의 제 2부분을 판독하여 이를 상기 출력 버퍼에 전송하도록, 상기 주변 장치가 상기 물리적 어드레스를 이용하게 하는 직접 메모리 액세스 동작을 개시하는 단계를 포함하는 것을 특징으로 하는 데이터 전송 방법.
  2. 제 1항에 있어서, 상기 출력 버퍼로부터 출력 경로를 통해 상기 출력 데이터 블록의 제 2부분을 전송하는 단계를 더 포함하는 것을 특징으로 하는 데이터 전송 방법.
  3. 제 1항에 있어서, 상기 가상 어드레스는 상기 출력 데이터 블록의 개시 어드레스를 지정하는 것을 특징으로 하는 데이터 전송 방법.
  4. 제 1항에 있어서, 상기 가상 어드레스는 상기 출력 데이터 블록의 제 2부분의 개시 어드레스를 지정하는 것을 특징으로 하는 데이터 전송 방법.
  5. 제 1항에 있어서, 상기 출력 데이터 블록은 컴퓨터 시스템의 호스트 메모리 내에 포함되는 것을 특징으로 하는 데이터 전송방법.
  6. 제 1항에 있어서, 상기 출력 데이터 블록의 제 1부분을 전송하는 단계는, 상기 컴퓨터 시스템 상에서 실행되고 상기 주변 장치에 대응하는 주변장치 구동기 루틴에 의해 수행되는 것을 특징으로 하는 데이터 전송 방법.
  7. 제 6항에 있어서, 상기 출력 데이터 블록의 가상 어드레스를 물리적 어드레스로 변환하는 단계는, 컴퓨터 시스템 상에서 실행되는 운영 체계에 의해 수행되는 것을 특징으로 하는 데이터 전송 방법.
  8. 제 7항에 있어서, 상기 출력 데이터 블록의 가상 어드레스를 물리적 어드레스로 변환하는 단계는, 운영 체계 내의 변환 루틴에 의해 수행되는 것을 특징으로 하는 데이터 전송 방법.
  9. 제 8항에 있어서, 상기 주변 장치 구동기 루틴은, 상기 출력 데이터 블록의 제 1부분을 상기 출력 버퍼로 전송한 후에 상기 변환 루틴을 호출하는 것을 특징으로 하는 데이터 전송 방법.
  10. 제 9항에 있어서, 상기 변환 루틴의 실행 시간에 근거하여 상기 출력 데이터 블록의 제 1부분의 길이를 결정하는 단계를 더 포함하는 것을 특징으로 하는 데이터 전송 방법.
  11. 제 10항에 있어서, 상기 변환 루틴의 실행 시간에 근거하여 상기 출력 데이터 블록의 제 1부분의 길이를 결정하는 단계는, 상기 변환 루틴의 실행 시간을 측정하는 단계를 포함하는 것을 특징으로 하는 데이터 전송 방법.
  12. 제 11항에 있어서, 상기 변환 루틴의 실행 시간에 근거하여 상기 출력 데이터 블록의 제 1부분의 길이를 결정하는 단계는, 만일 상기 실행 시간이 증가할 경우에, 상기 출력 데이터 블록의 제 1부분의 길이를 증가시키는 단계를 포함하는 것을 특징으로 하는 데이터 전송 방법.
  13. 제 11항에 있어서, 상기 변환 루틴의 실행 시간에 근거하여 상기 출력 데이터 블록의 제 1부분의 길이를 결정하는 단계는, 상기 실행 시간이 감소할 경우에, 상기 출력 데이터 블록의 제 1부분의 길이를 감소시키는 단계를 포함하는 것을 특징으로 하는 데이터 전송 방법.
KR1019970025450A 1996-07-09 1997-06-18 직접메모리엑세스동작을위해출력주변장치를프리챠징하는방법 KR100468408B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/677,406 US5860025A (en) 1996-07-09 1996-07-09 Precharging an output peripheral for a direct memory access operation
US08/677,406 1996-07-09

Publications (2)

Publication Number Publication Date
KR980010803A KR980010803A (ko) 1998-04-30
KR100468408B1 true KR100468408B1 (ko) 2005-06-16

Family

ID=24718578

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970025450A KR100468408B1 (ko) 1996-07-09 1997-06-18 직접메모리엑세스동작을위해출력주변장치를프리챠징하는방법

Country Status (3)

Country Link
US (1) US5860025A (ko)
KR (1) KR100468408B1 (ko)
TW (1) TW326512B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167480A (en) * 1997-06-25 2000-12-26 Advanced Micro Devices, Inc. Information packet reception indicator for reducing the utilization of a host system processor unit
US6256683B1 (en) 1998-12-23 2001-07-03 Bops, Inc. Methods and apparatus for providing direct memory access control
TW430819B (en) * 1999-05-19 2001-04-21 Chen Huei Ru Storage device with random access memory modules for personal computer system application
US7162608B2 (en) * 2001-10-24 2007-01-09 Cray, Inc. Translation lookaside buffer-based memory system and method for use in a computer having a plurality of processor element
US8051338B2 (en) * 2007-07-19 2011-11-01 Cray Inc. Inter-asic data transport using link control block manager

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265942A (ja) * 1992-03-24 1993-10-15 Fujitsu Ltd Dma制御部におけるデータ入出力方法
JPH05324536A (ja) * 1992-05-22 1993-12-07 Oki Electric Ind Co Ltd ダイレクト・メモリ・アクセス転送装置
JPH07160625A (ja) * 1993-12-09 1995-06-23 Matsushita Electric Ind Co Ltd データ転送装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4382179A (en) * 1980-07-21 1983-05-03 Ncr Corporation Address range timer/counter
US4574344A (en) * 1983-09-29 1986-03-04 Tandem Computers Incorporated Entry control store for enhanced CPU pipeline performance
US4812972A (en) * 1984-06-20 1989-03-14 Convex Computer Corporation Microcode computer having dispatch and main control stores for storing the first and the remaining microinstructions of machine instructions
JPS61224051A (ja) * 1985-03-29 1986-10-04 Fujitsu Ltd バッファメモリ制御方法
JPS63163648A (ja) * 1986-12-26 1988-07-07 Hitachi Ltd メモリ管理装置
GB8823077D0 (en) * 1988-09-30 1988-11-09 Int Computers Ltd Data processing apparatus
US5428760A (en) * 1991-12-12 1995-06-27 Intel Corporation Circuitry and method for sharing internal microcontroller memory with an external processor
JP3780011B2 (ja) * 1995-07-14 2006-05-31 株式会社ルネサステクノロジ 半導体記憶装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265942A (ja) * 1992-03-24 1993-10-15 Fujitsu Ltd Dma制御部におけるデータ入出力方法
JPH05324536A (ja) * 1992-05-22 1993-12-07 Oki Electric Ind Co Ltd ダイレクト・メモリ・アクセス転送装置
JPH07160625A (ja) * 1993-12-09 1995-06-23 Matsushita Electric Ind Co Ltd データ転送装置

Also Published As

Publication number Publication date
US5860025A (en) 1999-01-12
TW326512B (en) 1998-02-11
KR980010803A (ko) 1998-04-30

Similar Documents

Publication Publication Date Title
US5819096A (en) PCI to ISA interrupt protocol converter and selection mechanism
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
US5826048A (en) PCI bus with reduced number of signals
US5430847A (en) Method and system for extending system buses to external devices
CN1570907B (zh) 多处理器系统
KR950703766A (ko) 호스트 지시 조합을 구비하는 장치(a device with host indication combination)
WO2013176912A1 (en) Flash memory controller
US5519872A (en) Fast address latch with automatic address incrementing
US5077664A (en) Direct memory access controller
EP1222551B1 (en) Asynchronous centralized multi-channel dma controller
KR100403404B1 (ko) 양방향병렬신호인터페이스
US5923852A (en) Method and system for fast data transmissions in a processing system utilizing interrupts
JPH06208548A (ja) スマート・バス制御ユニット
JPH09160866A (ja) バス・インタフェース論理システム及び同期方法
KR100468408B1 (ko) 직접메모리엑세스동작을위해출력주변장치를프리챠징하는방법
KR100241514B1 (ko) 마이크로 컴퓨터
US5933613A (en) Computer system and inter-bus control circuit
US6742142B2 (en) Emulator, a data processing system including an emulator, and method of emulation for testing a system
JP2006268753A (ja) Dma回路及びコンピュータシステム
US7203781B2 (en) Bus architecture with primary bus and secondary or slave bus wherein transfer via DMA is in single transfer phase engagement of primary bus
US20090119429A1 (en) Semiconductor integrated circuit
CN116303169A (zh) Dma控制装置和方法及芯片
US5561818A (en) Microprocessor and data processing system for data transfer using a register file
US6418491B1 (en) Apparatus and method for controlling timing of transfer requests within a data processing apparatus
CN118138558B (zh) 基于直接内存访问的报文发包方法、计算机设备及介质

Legal Events

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

Payment date: 20101229

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee