KR100195953B1 - 입출력프로세서의 고성능 디엠에이 구동방법 - Google Patents

입출력프로세서의 고성능 디엠에이 구동방법 Download PDF

Info

Publication number
KR100195953B1
KR100195953B1 KR1019960036101A KR19960036101A KR100195953B1 KR 100195953 B1 KR100195953 B1 KR 100195953B1 KR 1019960036101 A KR1019960036101 A KR 1019960036101A KR 19960036101 A KR19960036101 A KR 19960036101A KR 100195953 B1 KR100195953 B1 KR 100195953B1
Authority
KR
South Korea
Prior art keywords
memory access
direct memory
processor
pointer
state
Prior art date
Application number
KR1019960036101A
Other languages
English (en)
Other versions
KR19980016507A (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 KR1019960036101A priority Critical patent/KR100195953B1/ko
Publication of KR19980016507A publication Critical patent/KR19980016507A/ko
Application granted granted Critical
Publication of KR100195953B1 publication Critical patent/KR100195953B1/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/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
    • 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/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver

Landscapes

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

Abstract

본 발명은 중앙처리장치의 간섭을 최소화하고 묶음처리가 가능하도록 직접 메모리 액세스 작업을 링크 리스트(Linked List) 형태로 관리하여 중앙처리장치 성능대비 입출력 성능의 병목현상 문제를 완화함으로써 전체 성능을 향상시키기 위한 주전산기 입출력프로세서(IOP)의 고성능 직접 메모리 액세스(DMA) 구동방법에 관한 것이다.
이를 위한 본 발명은 직접 메모리 액세스에 대한 요청이 발생하면 소스 및 타겟 번지의 영역 및 정합내역을 체크하는 제 1 단계와, 상기 제 1 단계의 판단결과, 직접 메모리 액세스가 가능한 경우 우선 작업내역을 저장하기 위한 작업 포인터를 할당하고, 그 작업 포인터를 직접 메모리 액세스의 리스트의 테일에 접속하는 제 2 단계와, 상기 제 2 단계를 수행한 후 직접 메모리 액세스가 가동여부를 체크하는 제 3 단계와, 상기 제 3 단계의 판단결과, 직접 메모리 액세스가 가동중이 아닌 경우 직접 메모리 액세스 리스트 헤드에서 작업 포인터를 로드하는 제 4 단계와, 상기 제 4 단계에서 로드된 작업 포인터의 작업내용에 의해 직접 메모리 액세스 레지스터를 세팅하는 제 5 단계와, 상기 제 5 단계의 레지스터를 세팅직후 직접 메모리 액세스에 전송이 일어나고, 그 전송이 완료된 경우 직접 메모리 액세스는 프로세서에 인터럽트를 출력하고, 직접 메모리 액세스 상태를 점검하여 에러를 체크하는 제 6 단계와, 상기 제 6 단계의 판단결과, 직접 메모리 액세스 상태가 정상인 경우 상기 작업에 해당되는 프로세서를 대기상태에서 동작상태로 전환하는 제 7 단계와, 상기 제 7 단계를 수행한 후, 직접 메모리 액세스 시작 작업 포인터를 호출하여 동작상태의 프로세서를 할당받아 수행을 계속하고, 해당 작업포인터를 반납한후 복귀하여 자신의 직접 메모리 액세스 처리를 완료하는 제 8 단계로 이루어진다.

Description

입출력프로세서의 고성능 디엠에이(DMA) 구동방법
제1도는 종래의 DMA 구동 방법을 설명하기 위한 동작 흐름도.
제2도는 제1도의 관한 프로세서 가용상태도.
제3도는 본 발명에 관한 DMA 구동기의 기본 블록 구성도.
제4도는 제3도의 DMA에 관한 상세한 블록 구성도.
제5도는 제3도에 관한 고성능 DMA 구동 방법을 설명하기 위한 동작 흐름도.
제6도는 제3도의 개선된 연산방식의 프로세서 가용상태도.
[발명의 목적]
본 발명은 주전산기 입출력보드인 입출력 프로세서(IOP)보드에 내장된 직접 메모리 액세스(DMA : Direct Memory Access)의 성능을 극대화하기 위한 소프트웨어 알고리즘에 관한 것으로, 특히 중앙처리장치의 간섭을 최소화하고 묶음처리가 가능하도록 직접 메모리 액세스 작업을 링크 리스트 형태로 관리하여 중앙처리장치 성능대비 입출력 성능의 병목현상 문제를 완화함으로써 전체 성능을 향상시키는데 그 목적이 있다.
[발명의 속하는 기술분야 및 그분야의 종래기술]
종래의 직접 메모리 액세스(DMA) 구동기에 관한 동작 흐름도는 첨부한 도면 제1도에 도시된 바와 같이, 프로세서가 소스 및 타겟번지와 바이트수를 인수하여 직접 메모리 액세스 복사를 요청하게 되면 소스 및 타겟 번지의 범위를 체크하는 제 1 단계와, 상기 제 1 단계의 판단결과, 직접 메모리 액세스가 가능한 번지인 경우 직접 메모리 액세스를 위한 얼라인먼트인가를 체크하는 제 2 단계와, 상기 제 2 단계의 판단결과, 직접 메모리 액세스를 위한 얼라인먼트인 경우 직접 메모리 액세스가 가동중인가를 체크하는 제 3 단계와, 상기 제 3 단계의 판단결과, 직접 메모리 액세스가 가동중인 경우 직접 메모리 액세스를 대기 상태로 전환하는 제 4 단계 와 상기 제 3 단계의 판단결과, 직접 메모리 액세스가 가동중이 아닌 경우 직접 메모리 액세스를 요청하고 직접 메모리 액세스가 완료되었는가를 체크하는 제 5 단계와, 상기 제 5 단계의 판단결과, 직접 메모리 액세스가 완료된 경우 직접 메모리 액세스 가동 마킹을 해제하고, 가동상태로 전환하는 제 6 단계로 이루어진다.
상기 제 1 단계의 판단결과 직접 메모리 액세스가 불가능한 번지범위인 경우 중앙처리장치에 의해 복사명령을 수행하게 하는 단계를 더 구비하여 이루어진다.
이와 같이 구성된 종래 직접기억장소 액세스구동방법에 관한 동작을 상세히 설명하면 다음과 같다.
먼저 해당 프로세스가 소스 및 타겟번지와 비트수를 인수하여 직접 메모리 액세스 복사를 요청하게 되면, 소스 및 타겟번지영역을 체크하여 직접 메모리 액세스가 가능한 영역인가를 확인한다.
또한 직접 메모리 액세스가 불가능할 경우에는 중앙처리장치가 카피연산을 수행하게 된다.
한편 직접 메모리 액세스가 가능한 경우에는 소스 및 타겟번지의 얼라인먼트를 비교하여 역시 직접 메모리 액세스가 불가능할 경우에는 중앙처리장치의 처리에 의존하고, 반대의 경우에는 현재 직접 메모리 액세스가 구동중인가를 확인한다.
상기 확인절차는 하나의 글로벌 변수(global variable)이라는 소프트웨어구조로 구성되며 이 값의 변경은 설정 우선순위 레벨(SPL : Set Priority Level)에 의해 보호 받는다.
이렇게 직접 메모리 액세스가 다른 프로세서에 의해 사용중이면 현 프로세서는 대기상태로 전환하며, 이전의 직접 메모리 액세스가 완료되어야 동작상태가 된다.
상기 직접 메모리 액세스를 사용중인 프로세서가 없을 경우에는 해당 레지스터 그룹에 특정값을 부여함으로써 직접 메모리 액세스 작업을 요청한다.
또한 직접 메모리 액세스 전송이 일어나는 동안에 본 전송을 요구한 프로세서는 슬리프하지 않고 특정 레지스터를 읽으며 폴링작업을 수행하게 된다.
직접 메모리 액세스가 완료되면 이 프로세서는 직접 메모리 액세스 작업에 대해서 대기상태에 있는 프로세서들을 동작상태로 전환한 후 다음일을 수행하도록 한다.
그러나 이와같은 종래의 직접 메모리 액세스가 일어나고 있는 동안에 중앙처리장치가 다른 일을 처리할 수 없으므로 그만큼의 중앙처리장치의 대기시간이 증가하여 입출력 프로세서 보드의 작업은 90%이상이 데이터 전송을 유발하는 것으로 직접 메모리 액세스 구동방식은 선형적 지체요인을 가져와 시스템 전체의 성능을 저하시키는 문제점이 있었다.
[발명이 이루고자 하는 기술적 과정]
따라서, 본 발명은 종래기술의 문제점을 개선하기 위한 것으로서 중앙처리장치의 간섭을 최소화하고 묶음처리가 가능하도록 직접 메모리 액세스 작업을 링크 리스트 형태로 관리하여 중앙처리장치 성능대비 입출력 성능의 병목현상을 완화함으로써 전체 성능을 향상시키기 위한 입출력 프로세서의 고성능 직접 메모리 액세스(DMA)구동 방법을 제공함에 그 목적이 있다.
이와같은 목적을 달성하기 위한 본 발명은 직접 메모리 액세스에 대한 요청이 발생하면 소스 및 타겟 번지의 영역 및 정합내역을 체크하는 제 1 단계와, 상기 제 1 단계의 판단결과, 직접 메모리 액세스가 가능한 경우 우선 작업내역을 저장하기 위한 작업 포인터를 할당하고, 그 작업 포인터를 직접 메모리 액세스의 리스트의 테일에 접속하는 제 2 단계와, 상기 제 2 단계를 수행한 후 직접 메모리 액세스의 가동여부를 체크하는 제 3단계와, 상기 제 3 단계의 판단결과, 직접 메모리 액세스가 가동중이 아닌 경우 직접 메모리 액세스 리스트 헤드에서 작업 포인터를 로드하는 제 4 단계와, 상기 제 4 단계에서 로드된 작업 포인터의 작업내용에 의해 직접 메모리 액세스 레지스터를 세팅하는 제 5 단계와, 상기 제 5 단계의 레지스터를 세팅직후 직접 메모리 액세스에 전송이 일어나고, 그 전송이 완료된 경우 직접 메모리 액세스는 프로세서에 인터럽트를 출력하고, 직접 메모리 액세스 상태를 점검하여 에러를 체크하는 제 6 단계와, 상기 제 6 단계의 판단결과, 직접 메모리 액세스 상태가 정상인 경우 상기 작업에 해당되는 프로세서를 대기상태에서 동작상태로 전환하는 제 7 단계와 상기 제 7 단계를 수행한 후, 직접 메모리 액세스 시작 작업포인터를 호출하여 동작상태의 프로세서가 프로세서를 할당받아 수행을 계속하고, 해당 작업포인터를 반납한후 복귀하여 자신의 직접 메모리 액세스 처리를 완료하는 제 8 단계로 이루어진 것으로서, 이하 본 발명을 첨부한 도면에 의거 상세히 설명하면 다음과 같다.
[발명의 구성 및 작용]
제5도는 본 발명에 의한 고성능 직접 메모리 액세스(DMA) 구동방법을 설명하기 위한 동작 흐름도로서, 직접 메모리 액세스에 대한 요청이 발생하면 소스 및 타겟 번지의 영역 및 정합내역을 체크하는 제 1 단계와, 상기 제 1 단계의 판단결과, 직접 메모리 액세스가 가능한 경우 우선 작업내역을 저장하기 위한 작업 포인터를 할당하고, 그 작업 포인터를 직접 메모리 액세스의 리스트의 테일에 접속하는 제 2 단계와, 상기 제 2 단계를 수행한 후 직접 메모리 액세스의 가동여부를 체크하는 제 3 단계와, 상기 제 3 단계의 판단결과, 직접 메모리 액세스가 가동중이 아닌 경우 직접 메모리 액세스 리스트 헤드에서 작업 포인터를 로드하는 제 4 단계와, 상기 제 4 단계에서 로드된 작업 포인터의 작업내용에 의해 직접 메모리 액세스 레지스터를 세팅하는 제 5 단계와, 상기 5 단계의 레지스터를 세팅직후 직접 메모리 액세스에 전송이 일어나고, 그 전송이 완료된 경우 직접 메모리 액세스는 프로세서 그리고 작업 수행은 헤드 포인터에 귀속하여 신속한 자료접근이 가능하도록 하였다.
물론 직접 메모리 액세스라는 하드웨어 소자가 하나이기 때문에 액티브라는 글로벌 멤버를 리스트 헤더구조에 포함시켜 직접 메모리 액세스의 중첩을 배제 시켜야 하며 이 값의 변경은 우선순위 레벨 설정에 의해서 보정받는다.
직접 메모리 액세스에 대한 요청이 발생하면 제5도의 동작 흐름도에서 보는바와 같이 먼저 소스 및 타겟어드레스의 영역 및 정합대역을 검사하여 직접 메모리 액세스가 불가능한 경우 중앙처리장치가 복사동작을 수행한다.
이때 고성능의 직접 메모리 액세스를 구현함에 있어 직접 메모리 액세스 가능성을 높이기 위한 소프트웨어적인 직접 메모리 액세스가 가능할 경우에는 우선 작업내역을 저장하기 위한 작업 포인터(rp)를 하나 할당 받는데 가변한 포인터가 없을경우에는 대기상태로 전환하여 다른 프로세서가 작업 포인터(rp)를 반환할 때 동작상태가 되도록 설계한다.
이렇게 하면 작업 포인터(rp)를 할당받고 나면 직접 메모리 액세스(DMA)삽입 작업함수 [dma_insert(rp)]를 호출하여 직접 메모리 액세스 작업 리스트의 테일 포인트에 접속하고 직접 메모리 액세스 삽입(dma_insert) 기능은 직접 메모리 액세스 시작(dma_insert) 기능을 자동으로 호출하게 된다.
이는 직접 메모리 액세스 작업 리스트의 헤드 포인트에서 작업을 하나 떼어오게 되므로 이에 대한 작업 포인터(rp)는 방금 직접 메모리 액세스 삽입(dma_insert)의 인수 작업 포인터(rp)와는 다른 작업일수 있다.
또한 가져온 작업의 내용을 참조하여 직접 메모리 액세스 레지스터들을 해당규격대로 세팅하면 직접 메모리 액세스전송이 바로 일어나게 되고 직접 메모리 액세스 작업중에 중앙처리장치는 대기상태에 의한 상태 전이에 의한 계속 다른 일을 처리하게 된다.
직접 메모리 액세스 전송이 완료되면 직접 메모리 액세스는 프로세서에게 인터럽트를 출력한 후 직접 메모리 액세스 상태를 점검하여 에러가 발생한 경우에는 프린트/재시도 등의 적절한 조치를 시행하며, 반대인 경우에는 해당 작업에 대하여 대기상태에 있는 프로세서들을 동작상태로 전환한다.
그리고 직접 메모리 액세스 시작 함수(dma_start)를 호출함으로써 직접 메모리 액세스 작업 리스트에 대한 묶음처리가 가능하다.
한편 예외처리(interrupt handler)루틴에 의해 동작상태로 전환된 프로세서가 프로세서를 할당받아 수행을 계속하게 되면 해당 작업 구조(structure)를 반환한 뒤 복귀하여 자신의 직접 메모리 액세스 처리를 완료하게 된다.
[발명의 효과]
이상에서 상세히 설명한 바와같이 본 발명의 중앙처리장치는 직접 메모리 액세스 작업 리스트의 할당과 반환 작업을 포함하여 대기 리스트를 관리하게 되면 즉 직접 메모리 액세스 관점에서 보면 소프트웨어적인 직접 메모리 액세스 작업 리스트관리와 실제로 직접 메모리 액세스가 일어나게끔 레지스터 세팅작업을 하는 것이 전부이고, 이 작업리스트의 관리는 직접 메모리 액세스 상태와 무관하다.
또한 프로세서 가용상태를 비교하면 단일 프로세서의 경우에는 성능차이가 없으나 프로세서가 늘어나면 제6도와 같이 직접 메모리 액세스 처리중 중앙처리장치가 놀지않게 되므로 그만큼의 성능향상이 이루어지고 또한 주전산기의 경우 한 번의 직접 메모리 액세스량이 통상 4KB~8KB로서 적지않은 양임을 감안한다면 그 효과는 절대적이라 할 수 있으며, 프로세서가 많을 경우에는 더 높게 나타나는 효과가 있다.

Claims (2)

  1. 직접 메모리 액세스에 대한 요청이 발생하면 소스 및 타겟의 번지 영역 및 정합 내역을 체크하는 제 1 단계와; 상기 제 1 단계의 판단결과, 직접 메모리 액세스가 가능한 경우 우선 작업내역을 저장하기 위한 작업 포인터를 할당하고, 그 작업 포인터를 직접 메모리 액세스의 리스트의 테일에 접속하는 제 2 단계;와 상기 제 2 단계를 수행한 후 직접 메모리 액세스의 가동여부를 체크하는 제 3 단계;와 상기 제 3 단계의 판단결과, 직접 메모리 액세스가 가동중이 아닌 경우 직접 메모리 액세스 리스트 헤드에서 작업 포인터를 로드하는 제 4 단계와 상기 제 4 단계에서 로드된 작업 포인터의 작업내용에 의해 직접 메모리 액세스 레지스터를 세팅하는 제 5 단계;와 상기 제 5 단계의 레지스터를 세팅직후 직접 메모리 액세스에 전송이 일어나고, 그 전송이 완료된 경우 직접 메모리 액세스는 프로세서에 인터럽트를 출력하고, 직접 메모리 액세스 상태를 점검하여 에러를 체크하는 제 6 단계;와 상기 제 6 단계의 판단결과, 직접 메모리 액세스 상태가 정상인 경우 상기 작업에 해당되는 프로세서를 대기상태에서 동작상태로 전환하는 제 7 단계;와 상기 제 7 단계를 수행한 후, 직접 메모리 액세스 시작 작업 포인터를 호출하여 동작상태의 프로세서가 프로세서를 할당받아 수행을 계속하고, 해당 작업포인터를 반납한후 복귀하여 자신의 직접 메모리 액세스 처리를 완료하는 제 8 단계로 이루어진 것을 특징으로 하는 입출력 프로세서의 고성능 DMA 구동방법.
  2. 제1항에 있어서, 상기 제 1 단계의 판단결과, 직접 메모리 액세스가 불가능한 경우 중앙처리장치가 복사 동작을 수행하는 단계를 더 포함하여 이루어진 것을 특징으로 하는 입출력 프로세서의 고성능 DMA 구동방법.
KR1019960036101A 1996-08-28 1996-08-28 입출력프로세서의 고성능 디엠에이 구동방법 KR100195953B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019960036101A KR100195953B1 (ko) 1996-08-28 1996-08-28 입출력프로세서의 고성능 디엠에이 구동방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960036101A KR100195953B1 (ko) 1996-08-28 1996-08-28 입출력프로세서의 고성능 디엠에이 구동방법

Publications (2)

Publication Number Publication Date
KR19980016507A KR19980016507A (ko) 1998-06-05
KR100195953B1 true KR100195953B1 (ko) 1999-06-15

Family

ID=19471202

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960036101A KR100195953B1 (ko) 1996-08-28 1996-08-28 입출력프로세서의 고성능 디엠에이 구동방법

Country Status (1)

Country Link
KR (1) KR100195953B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100499350B1 (ko) * 1997-10-25 2005-09-30 삼성전자주식회사 다중및단일채널을갖는다이렉트메모리억세스의데이터전송방법
KR100451722B1 (ko) * 2000-02-25 2004-10-08 엘지전자 주식회사 직접 메모리 액세스 제어 장치

Also Published As

Publication number Publication date
KR19980016507A (ko) 1998-06-05

Similar Documents

Publication Publication Date Title
US5386566A (en) Inter-processor communication method for transmitting data and processor dependent information predetermined for a receiving process of another processor
US4860190A (en) Computer system for controlling virtual machines
EP0382505B1 (en) Virtual computer system having improved input/output interrupt control
US6553487B1 (en) Device and method for performing high-speed low overhead context switch
US5628026A (en) Multi-dimensional data transfer in a data processing system and method therefor
US20080168443A1 (en) Virtual Devices Using a Plurality of Processors
EP0769173A2 (en) Method and apparatus for consolidated buffer handling for computer device input/output
JPH02267634A (ja) 割込み処理装置
US5805930A (en) System for FIFO informing the availability of stages to store commands which include data and virtual address sent directly from application programs
EP2054800A2 (en) Flash memory access circuit
JPH05274252A (ja) コンピュータシステムにおけるトランザクション実行方法
EP1557755A1 (en) Method for transferring data in a multiprocessor system, multiprocessor system and processor carrying out this method.
US20010047458A1 (en) Independent communication control apparatus and independent communication control method
KR100195953B1 (ko) 입출력프로세서의 고성능 디엠에이 구동방법
US5727179A (en) Memory access method using intermediate addresses
US20080209085A1 (en) Semiconductor device and dma transfer method
JP2001188745A (ja) 制御装置及び制御方法
US5797039A (en) Method of efficiently sending packets onto a network by eliminating an interrupt
JPS6049352B2 (ja) デ−タ処理装置
JPS603229B2 (ja) 情報処理方式
JP2664827B2 (ja) 実時間情報転送制御方法
KR20040101231A (ko) 외부적으로 트리거링되는 이벤트와 연관된 데이터/명령을예비 인출하는 방법
JPH1011387A (ja) 情報処理装置
JPS60215250A (ja) デ−タ処理装置
JPH0713865A (ja) キャッシュメモリ制御システム

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
LAPS Lapse due to unpaid annual fee