KR100959136B1 - 직접 메모리 접근 제어기 및 직접 메모리 접근 채널의데이터 전송 방법 - Google Patents

직접 메모리 접근 제어기 및 직접 메모리 접근 채널의데이터 전송 방법 Download PDF

Info

Publication number
KR100959136B1
KR100959136B1 KR1020080069127A KR20080069127A KR100959136B1 KR 100959136 B1 KR100959136 B1 KR 100959136B1 KR 1020080069127 A KR1020080069127 A KR 1020080069127A KR 20080069127 A KR20080069127 A KR 20080069127A KR 100959136 B1 KR100959136 B1 KR 100959136B1
Authority
KR
South Korea
Prior art keywords
channel
memory access
direct memory
register
channels
Prior art date
Application number
KR1020080069127A
Other languages
English (en)
Other versions
KR20100008575A (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 KR1020080069127A priority Critical patent/KR100959136B1/ko
Priority to US12/262,412 priority patent/US7970960B2/en
Publication of KR20100008575A publication Critical patent/KR20100008575A/ko
Application granted granted Critical
Publication of KR100959136B1 publication Critical patent/KR100959136B1/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • 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
    • 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

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

본 발명에 따른 직접 메모리 접근 제어기는: 복수의 직접 메모리 접근 채널들을 각각 갖는 복수의 채널 그룹들; 및 채널 그룹 단위로 직접 메모리 접근 채널들의 활성화를 제어하는 채널 그룹 제어기를 포함하되, 상기 채널 그룹 제어기는 데이터 전송시 상기 복수의 채널 그룹들 중 적어도 하나의 채널 그룹의 직접 메모리 접근 채널을 활성화시키는 것을 특징으로 한다.
DMAC, 그룹, 채널 활성화, 대용량

Description

직접 메모리 접근 제어기 및 직접 메모리 접근 채널의 데이터 전송 방법{DIRECT MEMORY ACCESS CONTROLLER AND DATA TRANSMITTING METHOD OF DIRECT MEMORY ACCESS CHANNEL}
본 발명은 직접 메모리 접근 제어기 및 직접 메모리 접근 채널의 데이터 전송 방법에 관한 것이다.
실시간 멀티미디어 어플리케이션은 점점 중요해 지고 있다. 이 어플리케이션들은 초당 수천 메가비트의 데이터와 같은 매우 빠른 처리속도를 요구한다. 빠른 처리속도를 위하여 어떤 처리 시스템은 단일 처리 시스템을 사용하기도 하고, 다른 것들은 멀티 프로세싱 구조를 사용한다. 멀티 프로세싱 시스템에 있어서 대부분의 서브 프로세서(sub-proccesor)는 요구되는 처리 결과를 얻기 위하여 병렬 상태 혹은 적어도 협력하여 동작한다.
최근, 최첨단 컴퓨터 어플리케이션들은 점점 더 복잡해짐으로 처리 시스템에 대한 증가하는 요구를 대체한다. 이에 따라 더 빠른 컴퓨터 데이터 처리량에 대한 요구가 많아지고 있다. 일례로 그래픽 어플리케이션들은 요구되는 결과를 달성하기 위해 상대적으로 짧은 시간 내에 광대한 양의 데이터 접근, 데이터 계산, 데이터 조작을 필요로 한다. 이 때문에 그래픽 어플리케인션들은 처리 시스템에 대하여 가장 높은 요구를 필요로 한다.
어떤 처리 시스템에 있어서는 직접 메모리 접근(direct memory access, DMA)기술이 사용된다. 이러한 시스템의 컴퓨터 구조는 데이터가 데이터 전송에 있어서 어떠한 마이크로프로세서를 포함하지 않고 장치와 메모리 사이에 데이터를 직접 전송토록 한다. 이러한 구조는 통상적으로 데이터 전송을 야기하는 시스템 장치로부터 데이터 전송 명령을 받기 위한 메모리 컨트롤러(memory controller)를 포함한다. 종래의 DMA 명령은 데이터 블록 크기, 데이터가 전송되는 시스템 메모리 내에 있는 시작 가상 주소, 데이터가 전송되는 장치의 시작 주소를 특정한다.
종래의 DMA 기술은 비직접 메모리 접근(non-direct memory access) 기술과 비교하여 처리속도를 증가시킬 수 있었으나, 그럼에도 불구하고 여러가지 제한을 갖고 있다. 예를 들어, 멀티 프로세싱 시스템을 사용하는 그래픽 처리와 같은 계산 어플리케이션에 있어서, 한 개 이상의 서브 프로세서(sub-proccesor)가 필요하다.그러나, 이러한 서브 프로세서는 모든 DMA 데이터 전송을 달성하기 위해 많은 DMA 명령을 생성함으로 프로세서에 부담을 주고 처리능력을 떨어뜨린다. 또한, 종래 DMA 기술에서는 DMA 제어기(direct memory access controller)가 주변 장치와 메모리 사이의 데이터 전송을 제어한다. 하지만, 최근의 미디어 프로세서 등에서는 독립된 복수의 버스에 연결된 메모리 사이에서 이루어지는 DMA 전송의 효율화가 요구되고 있다.
본 발명의 목적은 신호처리 장치와 메모리 사이 혹은 메모리와 메모리 사이의 대용량 데이터의 전송요청을 빠르게 처리하기 위하여 채널 제어 특성이 향상된 직접 메모리 접근 제어기(DMAC)를 제공하는 데 있다.
또한, 본 발명의 목적은 손쉽게 대용량 데이터의 효율적인 전송이 가능한 복수의 신호처리 장치들을 포함한 시스템 온칩(System on chip)의 데이터 직접 전송 방법을 제공하는데 있다.
또한, 본 발명의 목적은 독립된 복수의 버스들 각각에 연결된 메모리들 사이의 DMA 데이터 전송을 효율적으로 실행하는 데이터 전송 방법을 제공하는데 있다.
본 발명에 따른 직접 메모리 접근 제어기는: 복수의 직접 메모리 접근 채널들을 각각 갖는 복수의 채널 그룹들; 및 채널 그룹 단위로 직접 메모리 접근 채널들의 활성화를 제어하는 채널 그룹 제어기를 포함하되, 상기 채널 그룹 제어기는 데이터 전송시 상기 복수의 채널 그룹들 중 적어도 하나의 채널 그룹의 직접 메모리 접근 채널을 활성화시키는 것을 특징으로 한다.
실시 예에 있어서, 상기 접근 채널들의 직접 메모리 접근 채널들은 각각 듀얼 포트 인터페이스를 제공하는 것을 특징으로 한다.
실시 예에 있어서, 상기 직접 메모리 접근 채널들 각각은 물리적으로 독립된 것을 특징으로 한다.
실시 예에 있어서, 상기 채널 그룹 제어기는, 상기 직접 메모리 접근 제어기에 연결된 외부의 프로세서들이 상기 복수의 직접 메모리 접근 채널들을 모두 제어할 수 있도록 구현되는 것을 특징으로 한다.
실시 예에 있어서, 상기 채널 그룹들은 m(여기서, m은 2 이상의 정수)개이고, 상기 채널 그룹 제어기는, n(여기서, n은 2 이상의 정수)개의 프로세서들이 상기 m개의 채널 그룹들 중 어느 하나에 연결되도록 스위칭하는 크로스바 스위치; 상기 n개의 프로세서들이 상기 크로스바 스위치를 통하여 연결되고, 상기 m개의 채널 그룹들 각각의 직접 메모리 채널들을 제어하기 위한 레지스터를 설정하거나 및 제어를 수행하기 위한 레지스터 설정 및 제어 블록들; 및 상기 레지스터 설정 및 제어 블록들 각각에 연결되고, 상기 채널 그룹들의 각각의 직접 메모리 채널들을 제어하기 위한 정보를 저장하는 레지스터들이 포함된 레지스터 뱅크들을 포함한다.
실시 예에 있어서, 상기 메모리 직접 접근 채널들 각각은 물리적으로 하나이지만 복수의 하위 채널들로 설정되어 활성화되는 것을 특징으로 한다.
실시 예에 있어서, 상기 직접 메모리 접근 제어기는 대용량 데이터 전송시 하나의 하위 채널 레지스터 셋을 설정함으로 데이터 전송에 필요한 하위 채널들이 자동으로 활성화되도록 하는 것을 특징으로 한다.
본 발명에 따른 직접 메모리 접근 채널의 데이터 전송 방법은: 데이터 전송시 상기 직접 메모리 접근 채널의 상기 복수의 하위 채널 중 어느 하나의 하위 채널 레지스터 셋을 설정하는 단계; 상기 설정된 하위 채널 레지스터 셋에 따라 하위 채널을 활성화하는 단계; 및 활성화된 하위 채널을 따라 데이터가 전송되는 단계를 포함하되, 데이터 전송시 나머지 하위 채널들은 상기 하위 채널 레지스터 셋의 설정에 따라 자동으로 활성화되는 것을 특징으로 한다.
실시 예에 있어서, 복수의 블록 데이터 전송시 상기 복수의 하위 채널 레지스터 셋들을 설정하는 것을 특징으로 한다.
본 발명에 따른 직접 메모리 접근 제어기(DMAC)는 복수의 프로세서들에 의해 동시에 복수의 DMA 채널들을 제어함으로 대용량 블록 데이터를 전송한다. 이로써 대용량 블록 데이터 전송시 프로세서의 제어 부하가 줄어들게 된다.
그 결과로써 많은 대용량 멀티미디어 데이터 전송 및 멀티 프로세서를 갖는 시스템에서의 데이터 전송에 있어서 빠른 DMA 전송 제어 특성을 제공할 수 있다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명한다.
본 발명에 따른 직접 메모리 접속 제어기(Direct Memory Access Controller: 이하 'DMAC'이라고 함)는 직접 메모리 접근 채널들을 복수의 채널 그룹들로 구분하고, 구분된 복수의 채널 그룹들 중 적어도 하나 이상의 채널 그룹에 속하는 직접 메모리 접근 채널이 활성화되도록 구현된다. 이로써, 복수의 프로세서들은 본 발명의 DMAC를 이용하여 서로 다른 채널 그룹의 DMA 채널을 동시에 제어할 수 있게 된다. 또한, 본 발명에 따른 DMAC를 이용한 시스템 온칩에서는 대용량 블록 데이터 전송시 프로세서의 제어 부하가 줄어들게 된다.
도 1은 본 발명에 따른 DMAC(200)를 갖는 시스템 온칩(10)을 보여주는 도면이다. 도 1을 참조하면, 시스템 온칩(10)은 프로세서들(110,120), DMAC(200), 및 데이터 저장 장치들(311~318,321~328)을 포함한다. 여기서 데이터 저장 장치들에는 메모리 및 시스템 내부에 데이터 저장이 가능한 신호처리 장치들이 포함될 것이다. 이때 이러한 저장장치들은 DMA 채널에 연결될 수 있는 데이터 전송 버스를 통해 연결될 수도 있다. 본 발명의 DMAC(200)는 복수의 DMA 채널들이 그룹핑되어 제어되도록 구현된다. 도 1에 도시된 바와 같이 DMAC(200)에는 2개의 프로세서들(110,120)이 연결되어 있고, 2개의 채널 그룹들(220,230)로 구분된 복수의 DMA 채널들(221~224,231~234)을 포함한다. 하지만 본 발명의 DMAC(200)가 반드시 2개의 프로세서들에 연결되고, 2개의 DMA 그룹 채널들을 포함한다고 국한될 필요가 없다는 것은 당업자에게 자명하다.
프로세서들(110,120) 각각은 제어 인터페이스들(201,202)에 의해 DMAC(200)에 연결되어 있다. 프로세서들(110,120) 각각은 채널 그룹 단위로 DMA 채널들을 독립적으로 제어할 수 있다. 즉, 프로세서들(110,120)은 DMAC(200)을 통하여 제 1 그룹의 데이터 저장 장치들(311~318) 및 제 2 그룹의 데이터 저장 장치들(321~328) 사이의 데이터 전송을 각각 독립적으로 제어할 수 있다.
DMAC(200)는 데이터 저장 장치들(311~318,321~328) 사이에서 데이터가 직접 전송되도록 DMA 채널들을 제어한다. 예를 들어, DMAC(200)는 신호처리 장치(311)와 메모리(312) 사이의 데이터 전송시 제 1 채널 그룹(220)의 제 1 DMA 채널(221)을 활성화시킨다. 이로써, 프로세서의 제어에 따라 신호처리 장치(311)와 메모리(312) 사이에 데이터가 직접 전송되게 한다. 여기서 프로세서는 제 1 프로세서(110) 혹은 제 2 프로세서(120) 중 어느 하나이다. 또한, DMAC(200)는 메모리(315)와 메모리(316) 사이의 데이터 전송시 제 1 채널 그룹(220)의 제 3 DMA 채널(223)을 활성화시킨다. 이로써, 프로세서의 제어에 따라 메모리(315) 및 메모리(316) 사이에 데이터가 직접 전송된다.
본 발명의 DMAC(200)는 DMA 채널들이 2개의 채널 그룹들로 그룹핑되어 있다. 도 1에 도시된 바와 같이, 제 1 채널 그룹은 DMA 채널들(221,222,223,234)을 포함하고, 제 2 채널 그룹은 DMA 채널들(231,232,233,234)을 포함한다.
채널 그룹 제어기(210)는 DMA 채널들이 그룹 단위로 독립적으로 제어될 수 있도록 구현된다. 채널 그룹 제어기(210)에 대한 자세한 설명은 도 2 및 도 3에서 하도록 하겠다.
각 DMA 채널들(221~224,231~234)은 서로 물리적으로 독립되며, 듀얼 포트 인터페이스로 구현된다. 즉, 각 DMA 채널들(221~224,231~234)은 2개의 마스터 포트들(master ports)을 구비한다. 예를 들어 제 1 DMA 채널(221)은 제 1 마스터 포트(241) 및 제 2 마스터 포트(241)를 포함한다. 이러한 듀얼 포트를 갖고 물리적으로 분리된 DMA 채널 구조를 통하여, 최근 미디어 프로세서 등에서 요구하는 독립된 복수의 버스들에 연결된 메모리들 사이에서의 DMA 전송을 효율적으로 수행하게 된다.
데이터 저장 장치들(311~318,321~328)은 DMA 채널들(221~224,231~241) 각각 에 마스터 포트들을 통하여 연결되어 있다. 여기서 데이터 저장 장치들(311~318,321~328)은 도 1에 도시된 바와 같이 데이터를 저장할 수 있는 신호처리 장치 및 메모리일 수 있다. 도 1에 도시된 DMA 채널에 연결될 수 있는 저장장치는 각 마스터 포트에 1개씩해서 2개이다. 하지만, 본 발명의 저장장치가 반드시 마스터 포트들 각각에 연결된 필요는 없다. 본 발명의 저장장치들은 각 마스터 포트가 버스에 연결될 때 그 버스에 연결된 복수의 메모리들 혹은 신호 처리 장치가 포함될 수 있다.
상술 된 바와 같이 본 발명의 DMAC(200)는 그룹핑된 DMA 채널들(221~224,231~234)을 독립적으로 제어하도록 구현된다. 따라서, 본 발명의 DMAC(200)을 갖는 시스템 온칩(10)에서는, 복수의 프로세서들(110,120)이 DMAC(200)을 이용하여 DMA 채널들(221~224,231~234)을 통해 연결된 복수의 데이터 저장 장치들을 독립적으로 제어할 수 있게 된다.
도 2는 도 1에 도시된 DMAC(200)의 채널 그룹 제어기(210)에 대한 실시 예를 보여주는 도면이다. 도 2를 참조하면, 채널 그룹 제어기(210)는 크로스바 스위치(212), 레지스터 설정 및 제어 블록들(213,214) 및 레지스터 뱅크들(215,216)을 포함한다. 본 발명의 채널 그룹 제어기(210)는 프로세서들(110,120)이 독립적으로 제 1 채널 그룹(220)의 DMA 채널들(221~224) 및 제 2 채널 그룹(230)의 DMA 채널들(231~234)을 제어할 수 있도록 레지스터 설정을 제어한다.
크로스바 스위치(212)는 제어 인터페이스들(201,202)에 의하여 연결된 프로세서들(110,120) 각각이 제 1 레지스터 설정 및 제어 블록(213) 혹은 제 2 레지스 터 설정 및 제어 블록(214) 중 어느 하나에 연결되도록 스위칭 동작을 수행한다. 크로스바 스위치(212)의 동작에 따라 프로세서들(110,120)이 제 1 레지스터 설정 및 제어 블록(213)을 제어할 수도 있거나 제 2 레지스터 설정 및 제어 블록(214)을 제어할 수도 있다.
제 1 및 제 2 레지스터 설정 및 제어 블록들(213,214)은 각 프로세서들(110,120)로부터 받은 정보를 제 1 및 제 2 레지스터 뱅크들(215,216)에 저장한다. 여기서 각 레지스터 뱅크에는 각 DMA 채널 제어를 위한 정보가 저장된 레지스터들을 포함한다.
제 1 및 제 2 레지스터 뱅크들(215,216)은 도 2에 도시된 바와 같이 4개의 DMA 채널씩 제어하게 된다. 레지스터 뱅크의 레지스터들(도시되지 않음)은 각 채널의 동작 유무 설정, 버스 폭 설정, 전송 방향 설정, 소스 주소, 목적지 주소, 그리고 전송 단위 등이 저장된다. 이러한 것들은 DMAC(200)의 동작 상태를 보여준다.
레지스터 뱅크들(215,216)에 설정된 값들에 따라 DMA 채널들(221~224,231~234)이 활성화된다. 이로써 활성화된 DMA 채널의 채널 포트들(예를 들어, 241,242)에 연결된 데이터 저장 장치들 사이의 데이터의 전송이 수행된다.
본 발명에 따르면, 서로 다른 2개의 프로세서들(110,120)은 각각 DMAC(200)의 제 1 슬레이브 인터페이스(201) 및 제 2 슬레이브 인터페이스(202) 중 어느 하나의 인터페이스를 통하여 DMA 채널들(221~224,231~234)을 제어할 수 있다. 즉, 제 1 슬레이브 인터페이스(201)에 연결된 프로세서(110)는 크로스바 스위치(212)의 스위칭 동작에 따라 제 1 및 제 2 레지스터 설정 및 제어 블록들(213,214)을 접근할 수 있고, 그 결과로써 제 1 및 제 2 레지스터 뱅크들(215,216)을 설정할 수 있다.
본 발명의 DMAC(200)를 통하여 프로세서들(110,120) 각각은 8개의 DMA 채널들(221~224,231~234)을 제어할 수 있다. 또한, 제 1 프로세서(110)가 크로스바 스위치(212)를 통해 제 1 레지스터 뱅크(215)에 연결된 DMA 채널들(221,222,223,224)을 제어하면서 동시에 제 2 프로세서(120)는 크로스바 스위치(212)를 통해 제 2 레지스터 뱅크(216)에 연결된 DMA 채널들(231,232,233,234)을 제어할 수 있다. 따라서 본 발명에 따른 DMAC(200)는 서로 다른 프로세서들에 의한 데이터 전송 제어에 있어서 동시에 각 프로세서가 필요한 DMA 채널을 제어할 수 있게 한다. 이로써, 본 발명의 DMAC(200)는 다른 프로세서의 DMA 채널 제어에 따른 시간 지연을 줄일 수 있게 된다.
DMAC(200)은 하나의 물리적 DMA 채널에 대하여 복수의 하위 채널들을 포함한다. 여기서 복수의 하위 채널들은 하나의 물리적 DMA 채널을 여러 개의 채널들로 간주한 것이다. 이때 각 하위 채널은 복수의 레지스터들을 설정함으로 제어되고, 하나의 물리적 DMA 채널은 설정된 하위 채널들의 순서에 따라 활성화된다. 이러한 하나의 하위 채널을 구성하는 레지스터의 종류에는 소스 어드레스 레지스터(source address register), 목적지 어드레스 레지스터(destination address register), 채널 링크드 리스트 레지스터(channel linked list register), 채널 제어 레지스터(channel control register), 및 채널 설정 레지스터(channel configuration register) 등이 있다. 상술 된 레지스터들을 설정함으로써 하위 채널들은 데이터 전송을 준비하고, 지정된 순서대로 하나의 DMA 채널을 제어하여 데이터 전송이 수 행된다.
그런데 종래의 DMAC에서는 대용량 블록 데이터 전송시 프로세서에 의한 하위 채널 레지스터들이 빈번하게 설정되는 문제점이 있었다. 반면에 본 발명의 DMAC(200)의 경우에는 대용량 블록 데이터 전송시 한번 하위 채널 레지스터 셋이 설정되고, 설정된 하위 채널 레지스터 셋에 따라 반복적으로 DMA 채널이 활성화되고, 이에 따라 활성화된 DMA 채널을 통하여 데이터 직접 전송이 수행된다. 이로써, 본 발명에 따른 DMAC(200)를 갖는 시스템 온칩(10)에서는 대용량 블록 데이터 전송시 프로세서의 DMA 채널 제어 부하가 줄어들게 되고, 데이터 전송 시간도 단축된다.
본 발명의 DMAC(200)는 하위 채널 설정을 위하여 다음과 같은 레지스터들을 포함한다. 소스 어드레스 레지스터(source address register), 목적지 어드레스 레지스터(destination address register), 오프셋 레지스터(offset register), 채널 제어 레지스터(channel control register), 및 채널 설정 레지스터 (channel configuration register)가 있다. 여기서 오프셋 레지스터는 소스 소스 어드레스 오프셋 레지스터 및 목적지 소스 어드레스 오프셋 레지스터를 갖고, 채널 설정 레지스터는 해당 채널의 채널 반복 값을 저장할 수 있는 비트영역을 갖는다.
도 3은 본 발명에 따른 DMAC(200)의 DMA 채널 활성화 방법을 보여주는 도면이다. 도 1 내지 도 3을 참조하면, DMAC(200)의 DMA 채널 활성화 방법은 다음과 같다. 설명의 편의를 위하여, DMA 채널들(221~224,231~234) 각각은 8개의 하위 채널들을 포함한다고 가정하겠다. 하지만, 본 발명의 DMA 채널들 각각이 8개의 하위 채 널들을 갖는다고 국한될 필요가 없다는 것은 당업자에게 자명하다.
전체 데이터 영역(301)을 전송하기 위하여 제 1 하위 채널부터 제 8 하위 채널까지 차례로 활성화시킨다고 가정하겠다. 본 발명의 DMA 채널 활성화 방법은 데이터 영역(301)을 전송하기 위하여 제 1 하위 채널을 활성화시키는 레지스터 셋만 설정한다. 이때, 나머지 하위 채널들은 설정된 제 1 하위 채널의 레지스터 셋의 정보를 이용하여 차례로 활성화된다.
도 3을 참조하면, 세로축의 값은 어드레스이고, 가로축의 값은 어드레스에 더해지는 오프셋 값이다. 여기서 오프셋 값의 범위는 0x0에서 0xFFF이다. 데이터 처리 장치들의 실제 어드레스는 세로축의 어드레스와 가로축의 오프셋 값이 더하여 표현된다. 예를 들어, 데이터 영역(302)에 대한 실제 어드레스는 '0x10100'에서 '0x101FF'이고, 데이터 영역(302)에 대한 실제 어드레스는 '0x12100'에서 '0x121FF'이다. 제 1 내지 제 8 하위 채널들 각각은 소스 어드레스에 오프셋 값 범위만큼의 더해진 실제 어드레스에 대응하는 데이터를 전송하게 된다.
설명의 편의를 위하여, 아래에서는 신호처리 장치(311)의 데이터 영역(301)을 메모리(312)로 전송하고, 이러한 데이터 전송을 제어하는 프로세서는 제 1 프로세서(110)이라고 가정하겠다. 이때 데이터 전송은 아래와 같이 진행된다.
먼저, 제 1 프로세서(110)는 DMAC(200)을 이용하여 제 1 레지스터 뱅크(215)의 제 1 하위 채널의 레지스터 셋을 설정하게 된다. 도 3에 도시된 바와 같이, 소스 어드레스는 '0x10100'으로 설정되고, 전송 크기는 32비트 단위 전송시 64회로 설정되고, 소스 어드레스 오프셋 값은 '0x01000'으로 설정되고, 채널 반복 회수는 8회로 설정된다. 여기서 32비트 단위 전송시 64회 전송을 하면, 총 256 바이트의 데이터가 전송된다. 이는 어드레스 '0x100'에서부터 '0x1FF'에 대응하는 데이터이다.
제 1 하위 채널의 레지스터 셋 설정에 따라, 제 1 하위 채널이 활성화되고, 소스 어드레스(0x10100)으로부터 시작하여 데이터 저장 장치(311)로부터 32비트 단위의 데이터(4개의 어드레스에 대응하는 데이터)가 활성화된 제 1 하위 채널을 통하여 메모리(312)로 직접 전송된다. 제 1 하위 채널에 대하여 이러한 동작이 64회 수행된다.
제 1 하위 채널에 대한 64회의 데이터 전송이 완료되면, 제 1 하위 채널은 채널 반복 회수 설정값을 하나 줄일고, 설정된 소스 어드레스 오프셋 값인 '0x01000'을 기 설정된 소스 어드레스인 '0x10100'에 더하여 새로운 소스 어드레스를 설정하고 다시 64회의 데이터 전송을 수행한다. 제 1 하위 채널은 이와 같이 설정된 채널 반복 회수만큼 어드레스 오프셋 값을 적용하여 설정된 전송 데이터를 전송한다.
상술 된 과정을 통하여, 전체 데이터 영역(301)에 대응하는 데이터가 전송된다. 이와 같은 설정은 제 1 하위 채널뿐만 아니라 각 하위 채널들에서도 유효하다.
본 발명의 DMAC(200)의 DMA 채널 활성화 방법은 대용량 데이터 전송시 하위 채널의 레지스터에 대응하는 전송영역에 해당하는 소스 어드레스, 목적지 어드레스, 및 전송 크기 등을 설정하고, 오프셋 레지스터에 소스 어드레스 오프셋 값을 설정하고, 채널 설정 레지스터에 반복 회수를 설정하여 DMA 채널을 활성화한다.
이러한 DMA 채널 활성화 방법에서는 적은 개수의 레지스터 설정을 통해 프로세서가 손쉽게 대용량의 블록 데이터를 전송할 수 있다. 또한, 복수의 하위 채널들 각각에 상술 된 DMA 채널 활성화 방법으로 소스 어드레스 오프셋 값과 반복 회수가 설정됨으로 종래의 DMAC보다 레지스터 설정 회수를 적게 한다. 이때 하위 채널들의 개수는 시스템의 구성 및 성능 요구에 따라 변경될 수 있다.
도 4는 복수의 블록 데이터 전송을 위한 하위 채널 설정 방법을 보여주는 도면이다. 도 1 및 4를 참조하면, DMAC(200)의 DMA 채널 활성화 방법은 다음과 같다.
DMA 채널 활성화 방법은 복수의 블록 데이터를 전송하기 위하여 복수의 하위 채널들의 레지스터 각각에 하나의 전송영역에 해당하는 소스 어드레스, 목적지 어드레스, 및 전송 크기 등을 설정하고, 오프셋 레지스터에 해당 소스 어드레스 오프셋 값을 설정하고, 채널 설정 레지스터에 반복 설정함으로 DMA 채널을 활성화시킨다.
예를 들어, 데이터 영역(305) 및 데이터 영역(307)을 전송하기 위하여 DMAC(200)는 데이터 영역(306)을 전송하기 위한 제 1 하위 채널의 레지스터 셋 및 데이터 영역(308)을 전송하기 위한 제 2 하위 채널의 레지스터 셋을 설정한다고 가정하겠다. 도 4를 참조하면, 제 1 하위 채널의 레지스터 셋 설정에서는 소스 어드레스는 '0x10100'으로 설정되고, 전송 크기는 32비트 단위 전송시 64회로 설정되고, 소스 어드레스 오프셋 값은 '0x01000'으로 설정되고, 채널 반복 회수는 8회로 설정된다. 또한, 제 2 하위 채널의 레지스터 셋 절정에서는 소스 어드레스는 '0x51100'으로 설정되고, 전송 크기는 32 비트 단위 전송시 64회로 설정되고, 소스 어드레스 오프셋 값은 '0x01000'으로 설정되고, 채널 반복 회수는 6회로 설정된다. 이로써, 물리적인 DMA 채널이 활성화된다.
도 2에 도시된 DMA 채널들은 2개로 채널 그룹들로 그룹핑 되었으나, 본 발명의 DMA 채널들이 반드시 2개로 채널 그룹으로 그룹핑 된다고 한정할 필요는 없다. 도 5은 본 발명에 따른 DMAC(400)에 대한 다른 실시 예를 보여주고 있다. 도 5을 참조하면, DMAC(400)의 채널 그룹 제어기(410)는 n개의 프로세서들(도시되지 않음)이 m개의 채널 그룹들(420,430,440)의 DMA 채널들을 설정하도록 구현된다. 여기서 각 채널 그룹들의 DMA 채널들의 개수는 서로 다르게 구성될 수 있다. 예를 들어, 제 1 채널 그룹(420)은 p개의 DMA 채널들(421,422)을 포함하고, 제 2 채널 그룹(430)은 q개의 DMA 채널들(431,432)을 포함하고, 제 3 채널 그룹(440)은 r개의 DMA 채널들(441,442)을 포함한다.
크로스바 스위치(412)는 n개의 프로세서들이 m개의 레지스터 설정 및 제어 블록들(413,414,415) 중 어느 하나에 연결되도록 스위칭한다. 이로써, n개의 프로세서들 각각은 m개의 레지스터 뱅크들(416,417,418)을 제어할 수 있게 된다. 또한, n개의 프로세서들 각각은 동시에 서로 다른 레지스터 뱅크들(416,417,418)을 제어할 수 있다.
본 발명의 DMAC(400)는 복수의 물리적으로 분리된 DMA 채널들이 m개의 그룹으로 관리되도록 구현된다. 따라서, n개의 프로세서들 각각은 m개의 채널 그룹의 DMA 채널들을 독립적으로 설정할 수 있게 된다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지로 변형할 수 있다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명에 따른 시스템 온칩을 보여주는 도면이다.
도 2는 도 1에 도시된 DMAC의 채널 그룹 제어기에 대한 실시예를 보여주는 도면이다.
도 3는 본 발명에 따른 DMAC의 하위 채널 활성화 방법을 보여주는 도면이다.
도 4는 본 발명에 따른 DMAC의 또 다른 하위 채널 활성화 방법을 보여주는 도면이다.
도 5는 본 발명에 따른 DMAC의 다른 실시 예를 보여주는 도면이다.
*도면의 주요부분에 대한 부호의 설명*
10: 시스템 온칩 200,400: 직접 메모리 접근 제어기
110,120: 프로세서 311~318,321~328: 데이터 저장 장치
201,202: 제어 인터페이스 212,412: 크로스바 스위치
213,214: 레지스터 설정 및 제어블록
215,216: 레지스터 뱅크
301,305,307: 데이터 영역

Claims (9)

  1. 복수의 직접 메모리 접근 채널들을 각각 갖는 복수의 채널 그룹들; 및
    채널 그룹 단위로 직접 메모리 접근 채널들의 활성화를 제어하는 채널 그룹 제어기를 포함하되,
    상기 채널 그룹 제어기는 데이터 전송시 상기 복수의 채널 그룹들 중 적어도 하나의 채널 그룹의 직접 메모리 접근 채널을 활성화시키는 것을 특징으로 하는 직접 메모리 접근 제어기.
  2. 제 1 항에 있어서,
    상기 직접 메모리 접근 채널들은 각각 듀얼 포트 인터페이스를 제공하는 것을 특징으로 하는 직접 메모리 접근 제어기.
  3. 제 1 항에 있어서,
    상기 직접 메모리 접근 채널들 각각은 물리적으로 독립된 것을 특징으로 하는 직접 메모리 접근 제어기.
  4. 제 1 항에 있어서,
    상기 채널 그룹 제어기는,
    상기 직접 메모리 접근 제어기에 연결된 외부의 프로세서들이 상기 복수의 직접 메모리 접근 채널들을 모두 제어할 수 있도록 구현되는 것을 특징으로 하는 직접 메모리 접근 제어기.
  5. 제 1 항에 있어서,
    상기 채널 그룹들은 m(여기서, m은 2 이상의 정수)개이고,
    상기 채널 그룹 제어기는,
    n(여기서, n은 2 이상의 정수)개의 프로세서들이 상기 m개의 채널 그룹들 중 어느 하나에 연결되도록 스위칭하는 크로스바 스위치;
    상기 n개의 프로세서들이 상기 크로스바 스위치를 통하여 연결되고, 상기 m개의 채널 그룹들 각각의 직접 메모리 접근 채널들을 제어하기 위한 레지스터를 설정하거나 및 제어를 수행하기 위한 레지스터 설정 및 제어 블록들; 및
    상기 레지스터 설정 및 제어 블록들 각각에 연결되고, 상기 채널 그룹들의 각각의 직접 메모리 접근 채널들을 제어하기 위한 정보를 저장하는 레지스터들이 포함된 레지스터 뱅크들을 포함하는 직접 메모리 접근 제어기.
  6. 제 5 항에 있어서,
    상기 m개의 채널 그룹들 각각의 상기 직접 메모리 접근 채널들 각각은 물리적으로 하나이지만 복수의 하위 채널들로 설정되어 활성화되는 것을 특징으로 하는 직접 메모리 접근 제어기.
  7. 제 6 항에 있어서,
    상기 직접 메모리 접근 제어기는 대용량 데이터 전송시 하나의 하위 채널 레지스터 셋을 설정함으로 데이터 전송에 필요한 하위 채널들이 자동으로 활성화되도록 하는 것을 특징으로 하는 직접 메모리 접근 제어기.
  8. 직접 메모리 접근 채널의 데이터 전송 방법에 있어서:
    데이터 전송시 상기 직접 메모리 접근 채널의 복수의 하위 채널들 중 어느 하나의 하위 채널 레지스터 셋을 설정하는 단계;
    상기 설정된 하위 채널 레지스터 셋에 따라 하위 채널을 활성화하는 단계; 및
    상기 활성화된 하위 채널을 따라 데이터가 전송되는 단계를 포함하되,
    데이터 전송시 나머지 하위 채널들은 상기 하위 채널 레지스터 셋의 설정에 따라 자동으로 활성화되는 것을 특징으로 하는 데이터 전송 방법.
  9. 제 8 항에 있어서,
    복수의 블록 데이터 전송시 상기 복수의 하위 채널 레지스터 셋들을 설정하는 것을 특징으로 하는 데이터 전송 방법.
KR1020080069127A 2008-07-16 2008-07-16 직접 메모리 접근 제어기 및 직접 메모리 접근 채널의데이터 전송 방법 KR100959136B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080069127A KR100959136B1 (ko) 2008-07-16 2008-07-16 직접 메모리 접근 제어기 및 직접 메모리 접근 채널의데이터 전송 방법
US12/262,412 US7970960B2 (en) 2008-07-16 2008-10-31 Direct memory access controller and data transmitting method of direct memory access channel

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080069127A KR100959136B1 (ko) 2008-07-16 2008-07-16 직접 메모리 접근 제어기 및 직접 메모리 접근 채널의데이터 전송 방법

Publications (2)

Publication Number Publication Date
KR20100008575A KR20100008575A (ko) 2010-01-26
KR100959136B1 true KR100959136B1 (ko) 2010-05-25

Family

ID=41531266

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080069127A KR100959136B1 (ko) 2008-07-16 2008-07-16 직접 메모리 접근 제어기 및 직접 메모리 접근 채널의데이터 전송 방법

Country Status (2)

Country Link
US (1) US7970960B2 (ko)
KR (1) KR100959136B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101202738B1 (ko) * 2008-12-22 2012-11-20 한국전자통신연구원 멀티 채널 데이터 전송 장치
US8205021B2 (en) * 2009-12-21 2012-06-19 Electronics And Telecommunications Research Institute Memory system and integrated management method for plurality of DMA channels
KR101652694B1 (ko) * 2010-05-04 2016-09-09 삼성전자주식회사 적응적 연산 장치 및 적응적 연산 장치 작동 방법
KR101230397B1 (ko) * 2010-09-29 2013-02-07 (주) 인텍플러스 영상 데이터 고속 송/수신 방법 및 장치
JP5790043B2 (ja) * 2011-03-14 2015-10-07 株式会社リコー データ転送システム及びデータ転送方法
WO2012161107A1 (ja) * 2011-05-20 2012-11-29 日本合成化学工業株式会社 不純物拡散用塗布液
CN104950775A (zh) * 2015-06-29 2015-09-30 小米科技有限责任公司 唤醒主mcu微控制单元的电路、方法及装置
CN114385529A (zh) 2020-10-16 2022-04-22 瑞昱半导体股份有限公司 直接记忆体存取控制器、使用其之电子装置以及操作其的方法
CN114385528A (zh) * 2020-10-16 2022-04-22 瑞昱半导体股份有限公司 直接记忆体存取控制器、使用其之电子装置以及操作其的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020097478A (ko) * 2001-06-21 2002-12-31 삼성전자 주식회사 다중 채널을 가진 고속 직접 메모리 억세스 컨트롤러
KR100441996B1 (ko) 2001-09-19 2004-07-30 주식회사 팬택 직접 메모리 액세스 제어기 및 제어 방법
KR100499350B1 (ko) 1997-10-25 2005-09-30 삼성전자주식회사 다중및단일채널을갖는다이렉트메모리억세스의데이터전송방법
KR20070046694A (ko) * 2005-10-31 2007-05-03 시그마텔, 인크. Dma체인

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3525518B2 (ja) * 1994-10-13 2004-05-10 ヤマハ株式会社 データ転送装置
JP2002024157A (ja) * 2000-07-07 2002-01-25 Matsushita Electric Ind Co Ltd Dma処理方法およびdma処理装置
US7467238B2 (en) * 2004-02-10 2008-12-16 Hitachi, Ltd. Disk controller and storage system
US7698473B2 (en) 2005-01-05 2010-04-13 Sony Computer Entertainment Inc. Methods and apparatus for list transfers using DMA transfers in a multi-processor system
JP2006318139A (ja) 2005-05-11 2006-11-24 Matsushita Electric Ind Co Ltd データ転送装置、データ転送方法およびプログラム
US7650440B2 (en) * 2006-07-25 2010-01-19 Microchip Technology Incorporated Peripheral supplied addressing in a simple DMA module

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100499350B1 (ko) 1997-10-25 2005-09-30 삼성전자주식회사 다중및단일채널을갖는다이렉트메모리억세스의데이터전송방법
KR20020097478A (ko) * 2001-06-21 2002-12-31 삼성전자 주식회사 다중 채널을 가진 고속 직접 메모리 억세스 컨트롤러
KR100441996B1 (ko) 2001-09-19 2004-07-30 주식회사 팬택 직접 메모리 액세스 제어기 및 제어 방법
KR20070046694A (ko) * 2005-10-31 2007-05-03 시그마텔, 인크. Dma체인

Also Published As

Publication number Publication date
US7970960B2 (en) 2011-06-28
US20100017544A1 (en) 2010-01-21
KR20100008575A (ko) 2010-01-26

Similar Documents

Publication Publication Date Title
KR100959136B1 (ko) 직접 메모리 접근 제어기 및 직접 메모리 접근 채널의데이터 전송 방법
US5182801A (en) Apparatus and method for providing fast data transfer between multiple devices through dynamic reconfiguration of the memory space of the devices
US6185654B1 (en) Phantom resource memory address mapping system
CN110083461B (zh) 一种基于fpga的多任务处理***及方法
US20050273544A1 (en) Method of accessing memory via multiple slave ports
EP1564646A2 (en) Configurable embedded processor
EP1381957A2 (en) Data processing apparatus and system and method for controlling memory access
US11907814B2 (en) Data path for GPU machine learning training with key value SSD
US6092136A (en) Multi-processor central processing unit
US5287480A (en) Cache memory for independent parallel accessing by a plurality of processors
US11029847B2 (en) Method and system for shared direct access storage
JP3516431B2 (ja) プロセッサ・バスによるi/oトラフィック伝送
US9164903B2 (en) Memory manager
KR20200138411A (ko) 네트워크 온칩 데이터 처리 방법 및 장치
KR20200138413A (ko) 네트워크 온칩 데이터 처리 방법 및 장치
US9910789B2 (en) Electrical and optical memory access
KR20200138414A (ko) 네트워크 온칩 데이터 처리 방법 및 장치
US20060248247A1 (en) Apparatus and method for controlling access to a memory
JPH09506731A (ja) マルチプロセッサ・システム用バス構造
KR20220122521A (ko) 데이터 프로세서
CN114661654A (zh) 访问处理装置和方法、处理设备、电子设备和存储介质
CN1191530C (zh) 多命令部件共用主控器的pci主桥
US7757048B2 (en) Data processor apparatus and memory interface
US7805578B2 (en) Data processor apparatus and memory interface
KR102496994B1 (ko) PCIe 인터페이스 장치 및 그 동작 방법

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: 20130424

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140430

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150427

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180426

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190425

Year of fee payment: 10