KR101706201B1 - 다이렉트 메모리 액세스 컨트롤러 및 그것의 동작 방법 - Google Patents
다이렉트 메모리 액세스 컨트롤러 및 그것의 동작 방법 Download PDFInfo
- Publication number
- KR101706201B1 KR101706201B1 KR1020100128379A KR20100128379A KR101706201B1 KR 101706201 B1 KR101706201 B1 KR 101706201B1 KR 1020100128379 A KR1020100128379 A KR 1020100128379A KR 20100128379 A KR20100128379 A KR 20100128379A KR 101706201 B1 KR101706201 B1 KR 101706201B1
- Authority
- KR
- South Korea
- Prior art keywords
- dma
- loop
- memory access
- direct memory
- register
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling 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
본 발명은 다이렉트 메모리 액세스 컨트롤러 및 그것의 동작 방법에 관한 것으로, 더욱 상세하게는 채널 루프 전송 동작을 수행할 수 있는 다이렉트 메모리 액세스 컨트롤러 및 그것의 동작 방법에 관한 것이다.
초고속 정보 통신망을 근간으로 구축되는 정보화 시대에서 실현되는 서비스들은 문자, 음성, 영상을 통해 보고 듣는 멀티미디어형 서비스로 발전하고 있다. 이에 따라, 시스템의 프로세서는 대용량의 데이터를 처리한다. 특히, 멀티미디어 및 영상 데이터와 같은 대용량 데이터의 전송 시, 시스템의 프로세서는 매우 빈번히 메모리를 액세스한다.
시스템의 성능은 데이터를 처리하는 주변 장치와 메모리 장치 사이의 데이터 전송 속도에 의해서 크게 좌우될 수 있다. 시스템의 성능을 향상시키기 위해서 다이렉트 메모리 액세스(DMA: Direct Memory Access) 전송 기술이 사용된다. 다이렉트 메모리 액세스(DMA) 전송 기술에서는 프로세서가 데이터 전송을 담당하지 않는다. 즉, 버스에 연결된 메모리 장치와 주변 장치 사이에 직접 데이터 전송이 수행된다. 이러한 동작을 수행하기 위해서 다이렉트 메모리 액세스(DMA) 컨트롤러가 사용된다. 다시 말해서, 다이렉트 메모리 액세스(DMA) 전송 기술에 있어서, 다이렉트 메모리 액세스(DMA) 컨트롤러는 프로세서 대신 데이터 전송을 담당한다.
한편, 최근의 시스템은 프로세서 및 메모리 장치(또는 복수의 메모리 장치들)가 복수의 주변 장치들과 연결된다. 이에 따라, 메모리 장치와 주변 장치들 사이의 데이터 전송이 빠르고 효율적으로 수행되도록 요구된다. 이를 해결하기 위해서 복수의 전송 채널을 갖는 멀티 채널(multi-channel) 다이렉트 메모리 액세스(DMA) 컨트롤러가 사용된다. 멀티 채널 다이렉트 메모리 액세스(DMA) 컨트롤러는 메모리와 복수의 주변 장치 사이의 데이터 전송을 서로 다른 채널을 사용하여 수행한다. 다이렉트 메모리 액세스(DMA) 컨트롤러는 복수의 채널들 각각의 동작을 결정하는 레지스터들의 설정을 통해 다이렉트 메모리 액세스(DMA) 전송을 수행하게 된다.
일반적으로, 시스템의 프로세서는, 다이렉트 메모리 액세스(DMA) 전송을 제어하기 위해서, 다이렉트 메모리 액세스(DMA) 컨트롤러의 레지스터들을 빈번히 설정하며, 다이렉트 메모리 액세스(DMA) 전송의 완료에 따른 인터럽트 역시 빈번히 처리한다. 특히, 시스템의 프로세서는, 대용량 데이터의 전송 시, 복수의 채널들 각각의 동작을 결정하는 레지스터들을 설정하기 위해서 긴 시간을 소모하며, 채널들 각각의 전송 완료에 따른 인터럽트를 처리하기 위해서 역시 긴 시간을 소모한다. 이는 시스템의 동작 성능을 저하시키는 요인 중에 하나이다.
본 발명의 목적은 복수의 다이렉트 메모리 액세스 채널들에 대한 루프 동작을 수행할 수 있는 다이렉트 메모리 액세스 컨트롤러 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 제 1 및 제 2 다이렉트 메모리 액세스(DMA) 채널을 갖는 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작 방법은, (a) 전송 정보와 루프 정보를 참조하여 상기 제 1 다이렉트 메모리 액세스(DMA) 채널의 다이렉트 메모리 액세스(DMA) 전송 동작을 반복적으로 수행하는 단계; (b) 전송 정보와 루프 정보를 참조하여 상기 제 2 다이렉트 메모리 액세스(DMA) 채널의 다이렉트 메모리 액세스(DMA) 전송 동작을 반복적으로 수행하는 단계; (c) 상기 제 1 및 제 2 다이렉트 메모리 액세스(DMA) 채널 각각의 상기 전송 정보와 상기 루프 정보를 재설정하는 단계; 및 (d) 상기 재설정된 전송 정보와 상기 재설정된 루프 정보를 참조하여 상기 (a) 단계와 상기 (b) 단계를 다시 수행하는 단계를 포함한다.
실시 예에 있어서, 상기 (a) 단계와 상기 (b) 단계 각각은, (e) 상기 전송 정보에 포함된 소스 어드레스와 목적지 어드레스에 따라 다이렉트 메모리 액세스(DMA) 전송 동작을 수행하는 단계; (f) 상기 소스 어드레스를 상기 루프 정보에 포함된 소스 어드레스 오프셋 값만큼 증가시키고, 상기 목적지 어드레스를 상기 루프 정보에 포함된 목적지 어드레스 오프셋 값만큼 증가시키는 단계; 및 (g) 상기 증가된 소스 어드레스와 상기 증가된 목적지 어드레스에 따라 다이렉트 메모리 액세스(DMA) 전송 동작을 반복적으로 수생하는 단계를 포함한다.
실시 예에 있어서, 상기 (e) 단계 내지 상기 (g) 단계를 상기 루프 정보에 포함된 루프 횟수만큼 반복한다.
실시 예에 있어서, 상기 제 1 및 제 2 다이렉트 메모리 액세스(DMA) 채널 각각의 상기 전송 정보와 상기 루프 정보를 재설정하는 횟수를 설정하는 단계를 더 포함한다.
실시 예에 있어서, 상기 (c) 단계와 상기 (d) 단계를 상기 재설정 횟수만큼 반복한다.
실시 예에 있어서, 상기 제 1 및 제 2 다이렉트 메모리 액세스(DMA) 채널 각각의 상기 전송 정보와 상기 루프 정보를 설정하는 단계를 더 포함한다.
실시 예에 있어서, 상기 제 1 및 제 2 다이렉트 메모리 액세스(DMA) 채널 각각의 상기 전송 정보와 상기 루프 정보를 재설정하기 위한 데이터를 저장하는 단계를 더 포함한다.
실시 예에 있어서, 상기 (c) 단계는 상기 제 1 및 제 2 다이렉트 메모리 액세스(DMA) 채널 각각의 상기 전송 정보와 상기 루프 정보를 초기화하는 단계를 포함한다.
본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러는, 다이렉트 메모리 액세스(DMA) 채널의 다이렉트 메모리 액세스(DMA) 전송 동작을 설정하기 위한 복수의 레지스터 셋들을 포함하는 레지스터 셋 유닛; 상기 레지스터 셋들을 재설정하기 위한 데이터를 저장하는 채널 루프 관리 메모리 장치; 및 상기 채널 루프 관리 메모리 장치에 저장된 데이터로 상기 레지스터 셋 유닛을 재설정한 후 상기 채널의 다이렉트 메모리 액세스(DMA) 전송 동작을 반복적으로 수행하는 다이렉트 메모리 액세스(DMA) 전송 제어 로직을 포함한다.
실시 예에 있어서, 상기 레지스터 셋 유닛은 상기 채널 루프 관리 메모리 장치에 저장된 데이터로 상기 레지스터 셋을 재설정하는 횟수를 저장하기 위한 레지스터를 포함하되, 상기 다이렉트 메모리 액세스(DMA) 전송 제어 로직은 상기 재설정 횟수만큼 상기 레지스터 셋 유닛을 재설정한다.
실시 예에 있어서, 상기 레지스터 셋 유닛은, 상기 채널의 다이렉트 메모리 액세스(DMA) 전송 동작을 설정하는 정보를 저장하기 위한 기본 레지스터 셋; 및 상기 채널의 다이렉트 메모리 액세스(DMA) 전송 동작을 반복적으로 수행하기 위한 루프 정보를 저장하기 위한 루프 레지스터 셋을 포함한다.
실시 예에 있어서, 상기 루프 레지스터 셋은, 상기 다이렉트 메모리 액세스(DMA) 전송 동작을 반복적으로 수행할지의 여부를 저장하기 위한 루프 설정 레지스터; 루프 횟수를 저장하기 위한 루프 횟수 레지스터; 소스 어드레스를 증가시키기 위한 소스 어드레스 오프셋 값을 저장하기 위한 소스 어드레스 오프셋 레지스터; 및 목적지 어드레스를 증가시키기 위한 목적지 어드레스 오프셋 값을 저장하기 위한 목적지 어드레스 오프셋 레지스터를 포함한다.
실시 예에 있어서, 상기 다이렉트 메모리 액세스(DMA) 전송 제어 로직은 상기 루프 레지스터 셋의 상기 루프 정보를 참조하여 상기 채널의 다이렉트 메모리 액세스(DMA) 전송 동작을 반복적으로 수행한다.
실시 예에 있어서, 상기 채널 루프 관리 메모리 장치는 레지스터로 구성되는 것을 특징으로 한다.
본 발명의 실시 예에 따른 다이렉트 메모리 액세스 컨트롤러는 다이렉트 메모리 액세스 채널 제어를 위한 레지스터 설정 시간을 감소시킬 수 있고, 다이렉트 메모리 액세스 전송이 완료됨을 의미하는 인터럽트의 발생 횟수를 감소시킬 수 있다.
도 1은 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러를 포함하는 시스템을 예시적으로 보여주는 블럭도이다.
도 2는 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러를 예시적으로 보여주는 블럭도이다.
도 3은 도 2에 도시된 다이렉트 메모리 액세스(DMA) 컨트롤러의 레지스터 셋 유닛을 예시적으로 보여주는 구성도이다.
도 4는 도 2에 도시된 다이렉트 메모리 액세스(DMA) 컨트롤러의 채널 루프 관리 메모리 장치에 저장되는 데이터를 예시적으로 보여주는 개념도이다.
도 5는 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작을 예시적으로 보여주는 순서도이다.
도 6은 도 5의 다이렉트 메모리 액세스(DMA) 루프 전송 동작을 구체적으로 보여주는 순서도이다.
도 7은 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작을 예시적으로 설명하기 위한 메모리 장치의 블럭 데이터를 보여주는 도면이다.
도 8은 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작을 예시적으로 설명하기 위한 레지스터 셋 유닛의 설정 값을 보여주는 도면이다.
도 9는 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작을 예시적으로 설명하기 위한 채널 루프 관리 메모리 장치의 저장 값을 보여주는 도면이다.
도 10은 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작을 예시적으로 설명하기 위한 레지스터 셋 유닛의 재설정 값을 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러를 예시적으로 보여주는 블럭도이다.
도 3은 도 2에 도시된 다이렉트 메모리 액세스(DMA) 컨트롤러의 레지스터 셋 유닛을 예시적으로 보여주는 구성도이다.
도 4는 도 2에 도시된 다이렉트 메모리 액세스(DMA) 컨트롤러의 채널 루프 관리 메모리 장치에 저장되는 데이터를 예시적으로 보여주는 개념도이다.
도 5는 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작을 예시적으로 보여주는 순서도이다.
도 6은 도 5의 다이렉트 메모리 액세스(DMA) 루프 전송 동작을 구체적으로 보여주는 순서도이다.
도 7은 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작을 예시적으로 설명하기 위한 메모리 장치의 블럭 데이터를 보여주는 도면이다.
도 8은 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작을 예시적으로 설명하기 위한 레지스터 셋 유닛의 설정 값을 보여주는 도면이다.
도 9는 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작을 예시적으로 설명하기 위한 채널 루프 관리 메모리 장치의 저장 값을 보여주는 도면이다.
도 10은 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작을 예시적으로 설명하기 위한 레지스터 셋 유닛의 재설정 값을 보여주는 도면이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 본 명세서에서 특정한 용어들이 사용되었으나. 이는 본 발명을 설명하기 위한 목적에서 사용된 것이며, 의미 한정이나 특허 청구 범위에 기재된 본 발명의 권리 범위를 제한하기 위하여 사용된 것은 아니다. 또한, 명세서에서 사용되는 ‘포함한다’ 또는 ‘포함하는’으로 언급된 구성요소, 단계, 동작 및 소자는 하나 이상의 다른 구성요소, 단계, 동작 및 소자의 존재 또는 추가를 의미한다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러를 포함하는 시스템을 예시적으로 보여주는 블럭도이다. 도 1을 참조하면, 시스템(1000)은 시스템 내부 버스(100), 프로세서(200), 인터럽트 컨트롤러(300), 주변 장치(400), 메모리 장치(500), 및 다이렉트 메모리 액세스(DMA) 컨트롤러(600)를 포함한다.
프로세서(200)와 시스템의 각 구성 블럭들, 즉, 인터럽트 컨트롤러(300), 주변 장치(400), 메모리 장치(500), 다이렉트 메모리 액세스 컨트롤러(600)는 시스템 내부 버스(100)를 통해 서로 연결된다. 프로세서(200)와 시스템의 각 구성 블럭들은 시스템 내부 버스(100)를 통해 제어 신호 및 데이터를 전송한다. 프로세서(200)는 시스템(1000)의 전반적인 동작을 제어한다.
시스템(1000)의 성능은 메모리 장치(500)로부터의 데이터 전송 속도에 의해서 크게 좌우될 수 있다. 시스템(1000)의 성능을 향상시키기 위해서 다이렉트 메모리 액세스(DMA: Direct Memory Access, 이하 'DMA'라 칭함) 전송 방법이 사용된다. DMA 전송 방법이 사용되는 시스템(1000)은, 시스템 내부 버스(100)에 연결된 메모리 장치(500)와 프로세서(200)의 로컬 메모리(도시되지 않음) 사이, 메모리 장치(500)와 주변 장치(400) 사이, 메모리 장치(500)와 또 다른 메모리 장치(도시되지 않음) 사이, 또는 프로세서(200)와 주변 장치(400) 사이에 데이터가 직접 전송된다.
이러한 DMA 전송 동작은 DMA 컨트롤러(600)의 제어에 따라 수행된다. 즉, DMA 컨트롤러(600)는 프로세서(200) 대신 DMA 전송 동작을 제어한다. DMA 전송 동작이 완료되면, DMA 컨트롤러(600)는 인터럽트 컨트롤러(300)를 통해 프로세서(200)로 데이터 전송이 완료되었음을 알리는 인터럽트를 전송한다. 이러한 인터럽트는 인터럽트 컨트롤러(300)를 통하지 않고 프로세서(200)로 직접 전송될 수 있다.
본 발명의 실시 예에 따른 DMA 컨트롤러(600)는 복수의 전송 채널을 갖는 멀티 채널(multi-channel) DMA 컨트롤러로 구성될 수 있다. 도 1에서는, 설명의 간략화를 위해서, 하나의 주변 장치(400)와 하나의 메모리 장치(500) 만을 도시하였지만, 시스템(1000)은 복수의 주변 장치들과 복수의 메모리 장치들을 포함할 수 있다. 이 경우, DMA 컨트롤러(600)는 복수의 메모리 장치들과 복수의 주변 장치들 사이의 데이터 전송을 서로 다른 채널을 사용하여 수행한다.
본 발명의 실시 예에 따른 DMA 컨트롤러(600)는, DMA 전송 동작을 수행하기 위한 레지스터 설정 시간을 줄이기 위해서, 채널들 각각에 할당된 루프 레지스터 셋(loop register set)을 포함한다. DMA 컨트롤러(600)는 루프 레지스터 셋을 참조하여 채널들 각각의 DMA 루프 전송 동작을 수행할 수 있다. 또한, DMA 컨트롤러(600)는, DMA 전송 동작을 수행하기 위한 레지스터 설정 시간을 줄이기 위해서, 채널 루프 관리 메모리 장치를 포함한다. DMA 컨트롤러(600)는 채널 루프 관리 메모리 장치를 참조하여 채널들 각각에 할당된 레지스터 셋을 재설정하고, 전체 DMA 채널에 대한 DMA 루프 전송 동작을 수행할 수 있다. 따라서, 프로세서(200)는 DMA 전송 동작을 수행하기 위한 레지스터 설정 횟수 및 시간을 줄일 수 있다. 또한, 프로세서(200)는 채널들 각각의 전송 완료에 따른 인터럽트를 처리하기 위한 횟수 및 시간을 줄일 수 있다. 그 결과, 시스템(1000)의 성능은 향상될 것이다.
도 2는 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러를 예시적으로 보여주는 블럭도이다. DMA 컨트롤러(600)는 버스 인터페이스(610), 레지스터 셋 유닛(620), 채널 루프 관리 메모리 장치(630), DMA 전송 제어 로직(640), DMA 마스터 인터페이스(650), FIFO 버퍼 메모리 장치(660), 및 인터럽트 제어 로직(670)을 포함한다.
버스 인터페이스(610)는 시스템 내부 버스(100)에 연결된 버스를 통해 프로세서(도 1의 200 참조)로부터 제공된 DMA 제어 데이터를 수신한다. 버스 인터페이스(610)는 수신된 DMA 제어 데이터의 종류를 판별하고, 판별된 DMA 제어 데이터를 레지스터 셋 유닛(620)과 채널 루프 관리 메모리 장치(630)에 각각 저장한다. 예를 들면, 버스 인터페이스(610)는 기본적인 DMA 전송 및 각각의 DMA 채널에 대한 DMA 루프 전송과 관련된 제어 데이터는 레지스터 셋 유닛(620)에, 전체 DMA 채널에 대한 DMA 루프 전송과 관련된 제어 데이터는 채널 루프 관리 메모리 장치(630)에 저장한다.
레지스터 셋 유닛(620)은 복수의 DMA 채널들에 대한 동작을 설정하기 위한 기본 레지스터 셋, 그리고 DMA 채널 각각의 루프 동작을 설정하기 위한 루프 레지스터 셋을 포함한다. 그리고 레지스터 셋 유닛(620)은 DMA 채널을 활성화하기 위한 레지스터 셋 선택 레지스터와 같은 DMA 전송을 설정하기 위한 레지스터들을 더 포함할 수 있다. 본 발명의 실시 예에 따른 레지스터 셋 유닛(620)은 후술되는 도 3을 참조하여 상세히 설명될 것이다.
채널 루프 관리 메모리 장치(630)는 레지스터 셋 유닛(620)에 포함된 레지스터 셋들(기본 레지스터 셋 및 루프 레지스터 셋)을 재설정하기 위한 데이터를 저장한다. 채널 루프 관리 메모리 장치(630)에 저장되는 데이터는, DMA 루프 전송 동작을 수행하기 위한 데이터들로서, 전체 DMA 채널에 대한 DMA 루프 동작 시 레지스터 셋 유닛(620)을 재설정하는 데 사용된다. 채널 루프 관리 메모리 장치(630)는 휘발성 메모리 장치뿐만 아니라, 레지스터와 같은 임시 저장 장치로 구성될 수 있다. 본 발명의 실시 예에 따른 채널 루프 관리 메모리 장치(630)는 후술되는 도 4를 참조하여 상세히 설명될 것이다.
DMA 전송 제어 로직(640)은 DMA 컨트롤러(600)의 제반 동작을 제어한다. 즉, DMA 전송 제어 로직(640)은 레지스터 셋 유닛(620)에 설정된 DMA 제어 데이터를 참조하여 DMA 전송 동작을 수행하고, DMA 전송 동작이 완료되면 인터럽트를 발생한다. 본 발명의 실시 예에 따르면, DMA 전송 제어 로직(640)은 레지스터 셋 유닛(620)에 설정된 DMA 제어 데이터와 채널 루프 관리 메모리 장치(630)에 저장된 DMA 제어 데이터를 사용하여 DMA 루프 전송을 수행한다.
DMA 전송 제어 로직(640)은 DMA 루프 전송을 수행하기 위해서 레지스터 셋 유닛(620)과 채널 루프 관리 메모리 장치(630)를 제어한다. DMA 전송 제어 로직(640)은, 기본적인 DMA 전송 및 각각의 DMA 채널에 대한 DMA 루프 전송 시, 레지스터 셋 유닛(620)에 설정된 제어 데이터의 값을 참조하여 DMA 채널들 각각의 DMA 전송 동작을 제어한다. 또한, DMA 전송 제어 로직(640)은, 전체 DMA 채널에 대한 DMA 루프 전송 시, 레지스터 셋 유닛(620)을 채널 루프 관리 메모리 장치(630)에 저장된 제어 데이터로 재설정한다. 그 후, DMA 전송 제어 로직(640)은 레지스터 셋 유닛(620)에 재설정된 제어 데이터의 값을 참조하여 DMA 채널들 각각의 DMA 전송 동작을 제어한다.
DMA 마스터 인터페이스(650)는 DMA 전송 제어 로직(640)의 제어에 따라 물리적인 데이터 전송 동작을 수행한다. DMA 마스터 인터페이스(650)는 시스템 내부 버스(100)와 연결되는 듀얼 포트 DMA 인터페이스 버스를 통해 데이터 전송 동작을 수행할 수 있다. 다른 예로써, DMA 마스터 인터페이스(650)는 시스템 내부 버스(100)와 연결되는 싱글 포트 DMA 인터페이스 버스를 통해 데이터 전송 동작을 수행할 수도 있다.
FIFO 버퍼 메모리 장치(660)는, DMA 전송 동작 시, 전송 데이터 및 관련 제어 신호를 임시 저장하는 버퍼로 동작한다. 인터럽트 제어 로직(670)은, DMA 전송 동작이 완료되면, DMA 전송 제어 로직(640)의 제어에 따라 데이터 전송이 완료되었음을 알리는 인터럽트를 발생한다. 이러한 인터럽트는 시스템 내부의 인터럽트를 통합적으로 관리하는 인터럽트 컨트롤러(도 1의 300 참조)와 연결된 인터럽트 신호선을 통해 전송될 수 있다.
도 3은 도 2에 도시된 다이렉트 메모리 액세스(DMA) 컨트롤러의 레지스터 셋 유닛(620)을 예시적으로 보여주는 구성도이다. 도 3을 참조하면, 레지스터 셋 유닛(620)은 복수의 DMA 채널들 각각에 할당된 레지스터 셋들(620_0 내지 620_m)을 포함한다. DMA 컨트롤러(도 1의 600 참조)는 복수의 DMA 채널들을 사용하여 DMA 전송 동작을 수행한다. 레지스터 셋 유닛(620)은, 이러한 복수의 DMA 채널들 각각에 대한 DMA 동작 설정이 가능하도록 DMA 채널들 각각에 할당된 레지스터 셋들을 포함한다.
DMA 채널들 각각의 DMA 전송 동작을 설정하기 위한 레지스터 셋들(620_0 내지 620_m)은 기본적인 DMA 전송 동작을 설정하기 위한 기본 레지스터 셋들(620_0a 내지 620_ma), 그리고 DMA 채널들 각각의 루프 동작을 설정하기 위한 루프 레지스터 셋들(620_0b 내지 620_mb)을 각각 포함한다.
기본 레지스터 셋들(620_0a 내지 620_ma) 각각은 소스 어드레스 레지스터, 목적지 어드레스 레지스터, 전송 크기 레지스터, 전송 단위 레지스터를 포함한다. 루프 레지스터 셋들(620_0b 내지 620_mb) 각각은 루프 동작의 수행 여부를 설정하기 위한 루프 설정 레지스터, 루프 횟수를 설정하기 위한 채널 루프 횟수 레지스터, 소스 어드레스 오프셋 레지스터, 목적지 어드레스 오프셋 레지스터를 포함한다.
또한, 레지스터 셋 유닛(620)은 DMA 채널을 활성화하기 위한 레지스터 셋 선택 레지스터(621)를 포함한다. 그리고 레지스터 셋 유닛(620)은 전체 DMA 채널의 루프 횟수를 설정하기 위한 전체 채널 루프 횟수 레지스터(622)를 포함한다. 즉, 전체 채널 루프 횟수 레지스터(622)에 설정된 전체 DMA 채널의 루프 횟수는 레지스터 셋 유닛(620)을 채널 루프 관리 메모리 장치(630)에 저장된 제어 데이터로 재설정하는 횟수와 동일하다.
도 4는 도 2에 도시된 다이렉트 메모리 액세스(DMA) 컨트롤러의 채널 루프 관리 메모리 장치(630)에 저장되는 데이터를 예시적으로 보여주는 개념도이다. 도 4를 참조하면, 채널 루프 관리 메모리 장치(630)는 레지스터 셋들(도 3의 620_0 내지 620_m)을 각각 재설정하기 위한 데이터들(630_0 내지 630_m)을 저장한다. 전체 DMA 채널에 대한 DMA 루프 전송 시, 레지스터 셋들(620_0 내지 620_m)은 데이터들(630_0 내지 630_m)로 각각 재설정된다.
레지스터 셋들(620_0 내지 620_m)을 재설정하기 위한 데이터들(630_0 내지 630_m) 각각은 소스 어드레스의 변경 값, 목적지 어드레스의 변경 값, 전송 크기의 변경 값, 루프 횟수의 변경 값, 소스 어드레스 오프셋의 변경 값, 및 목적지 어드레스 오프셋의 변경 값으로 구성된다.
도 5는 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작을 예시적으로 보여주는 순서도이다. 도 2 및 도 5를 참조하여 DMA 컨트롤러(600)의 DMA 루프 전송 동작이 상세히 설명될 것이다.
프로세서(도 1의 200 참조)로부터 제공된 DMA 제어 데이터로 레지스터 셋 유닛(620)의 DMA 채널들 각각에 할당된 기본 레지스터 셋이 설정된다(S110 단계). 프로세서(200)로부터 제공된 DMA 제어 데이터로 레지스터 셋 유닛(620)의 전체 채널 루프 횟수 레지스터(622)가 설정되고, DMA 채널들 각각에 할당된 루프 레지스터 셋이 설정된다(S120 단계). 그리고 전체 DMA 채널에 대한 루프 동작에 필요한 설정 데이터들(즉, 채널 루프 관리 데이터)이 채널 루프 관리 메모리 장치(630)에 저장된다(S130 단계).
S110 단계 내지 S130 단계와 같이 DMA 전송 동작에 필요한 DMA 제어 데이터들이 레지스터 셋 유닛(620)에 설정되고, 채널 루프 관리 메모리 장치(630)에 저장된 후, DMA 전송 제어 로직(640)은 레지스터 셋 선택 레지스터(621)에 따라 선택된 DMA 채널을 우선 순위에 따라 활성화시켜 DMA 전송 동작을 수행한다. 이 경우, DMA 전송 제어 로직(640)은 루프 레지스터 셋과 전체 채널 루프 횟수 레지스터(622)를 참조하여 DMA 루프 전송 동작이 설정되었는지의 여부를 판단한다(S140 단계).
DMA 루프 전송 동작이 설정되지 않았다면(아니오), DMA 전송 제어 로직(640)은 기본적인 DMA 전송 동작을 수행한다(S150 단계). 그리고 DMA 전송이 완료되면, DMA 전송 제어 로직(640)은 인터럽트 제어 로직(670) 제어하여 인터럽트를 발생한다(S170 단계).
DMA 루프 전송 동작이 설정되었다면(예), DMA 전송 제어 로직(640)은 루프 레지스터 셋과 전체 채널 루프 횟수 레지스터(622), 및 채널 루프 관리 메모리 장치(630)를 참조하여 DMA 루프 전송 동작을 수행한다(S160 단계). 이러한 DMA 루프 전송 동작은 도 6을 참조하여 상세히 설명될 것이다. DMA 루프 전송 동작이 완료되면, DMA 전송 제어 로직(640)은 인터럽트 제어 로직(670) 제어하여 인터럽트를 발생한다(S170 단계).
도 6은 도 5의 다이렉트 메모리 액세스(DMA) 루프 전송 동작을 구체적으로 보여주는 순서도이다. 도 2 및 도 6을 참조하여 DMA 컨트롤러(600)의 DMA 루프 전송 동작이 상세히 설명될 것이다.
대용량 블록 데이터를 전송 시, 메모리 장치의 영역이 각각의 채널이 전송할 영역으로 나누어지고, 나누어진 전송 영역에 대한 전송 정보가 DMA 채널들 각각에 할당된다. 즉, 나누어진 전송 영역에 대한 전송 정보는 해당 레지스터 셋에 각각 설정된다. 이러한 설정이 끝난 후 각 DMA 채널을 순차적으로 동작시킴으로써 대용량 블록 데이터에 대한 DMA 루프 전송을 동작을 수행한다.
DMA 루프 전송 동작은 DMA 채널의 우선 순위에 따라 순차적으로 수행된다. 즉, DMA 루프 전송 동작은 DMA 채널들의 우선 순위에 따라 하나의 DMA 채널씩 순차적으로 수행된다. 도 6에서는 설명의 간략화를 위해서 2개의 DMA 채널에 대한 DMA 루프 전송 동작을 설명할 것이다. 그러나, DMA 루프 전송 동작은 DMA 채널의 우선 순위에 따라 복수의 DMA 채널에 대해 수행될 수 있음은 잘 이해될 것이다.
제 1 DMA 채널이 선택되면, 제 1 DMA 채널의 기본 레지스터 셋에 설정된 DMA 전송 정보를 참조하여 DMA 전송 동작이 시작된다(S161 단계). 그 후, 제 1 DMA 채널의 루프 레지스터 셋에 설정된 채널 루프 정보를 참조하여 제 1 DMA 채널의 DMA 전송 동작이 반복적으로 수행된다(S162 단계).
예를 들면, DMA 전송 제어 로직(640)은 기본 레지스터 셋에 설정된 소스 어드레스, 목적지 어드레스, 및 전송 크기를 참조하여 DMA 전송 동작을 수행한다. 그 후, DMA 전송 제어 로직(640)은 루프 레지스터 셋에 설정된 소스 어드레스 오프셋 값과 목적지 어드레스 오프셋 값을 이전의 소스 어드레스와 목적지 어드레스에 더하여 다음 전송에 대한 기본 레지스터 셋을 재설정하여 DMA 전송 동작을 수행한다. DMA 전송 제어 로직(640)은 이러한 동작을 루프 레지스터 셋에 설정된 채널 루프 횟수만큼 반복함으로써 선택된 DMA 채널의 DMA 루프 전송을 완료한다.
제 1 DMA 채널의 DMA 전송 동작이 완료되면, 제 2 DMA 채널의 기본 레지스터 셋에 설정된 DMA 전송 정보를 참조하여 DMA 전송 동작이 시작된다(S163 단계). 그 후, 제 2 DMA 채널의 루프 레지스터 셋에 설정된 채널 루프 정보를 참조하여 제 2 DMA 채널의 DMA 전송 동작이 반복적으로 수행된다(S164 단계).
선택된 모든 DMA 채널에 대한 DMA 전송 동작이 완료되면(도 6에서는 2개의 DMA 채널을 예시하였기 때문에, 제 1 및 제 2 DMA 채널에 대한 DMA 전송 동작이 완료되면), 전체 채널 루프 횟수 레지스터(622)에 설정된 루프 횟수만큼 전체 DMA 채널에 대한 DMA 루프 전송 동작을 수행한다(S165 단계). 전체 DMA 채널에 대한 DMA 루프 전송 동작은 채널 루프 관리 메모리 장치(630)에 저장된 데이터들을 사용하여 레지스터 셋 유닛(620)의 레지스터들을 재설정함으로써 수행된다(S166 단계). 채널 루프 관리 메모리 장치(630)에 저장된 데이터는 모든 DMA 전송 동작이 완료됨과 동시에 삭제되거나 또는 유지될 수 있다.
레지스터 셋 유닛(620)의 레지스터들이 재설정된 후, 선택된 모든 DMA 채널들 각각에 대하여 S161 단계부터 S164 단계의 DMA 전송 동작을 수행한다.
예를 들면, DMA 전송 제어 로직(640)은, 전체 DMA 채널에 대한 DMA 루프 전송 동작이 수행되면, 레지스터 셋 유닛(620)의 레지스터들을 초기화한다. DMA 전송 제어 로직(640)은 채널 루프 관리 메모리 장치(630)에 저장된 변경된 전송 영역에 대한 데이터로 레지스터 셋 유닛(620)의 레지스터들을 재설정한다. 즉, DMA 전송 제어 로직(640)은 채널 루프 관리 메모리 장치(630)에 저장된 소스 어드레스 변경 값으로 소스 어드레스 레지스터를, 목적지 어드레스 변경 값으로 목적지 어드레스 레지스터를, 전송 크기 변경 값으로 전송 크기 레지스터를 각각 재설정한다. 또한, DMA 전송 제어 로직(640)은 루프 횟수 변경 값으로 채널 루프 횟수 레지스터를, 소스 어드레스 오프셋 변경 값으로 소스 어드레스 오프셋 레지스터를, 그리고 목적지 어드레스 오프셋 변경 값으로 목적지 어드레스 오프셋 레지스터를 각각 재설정한다. 이러한 재설정은 레지스터 셋 선택 레지스터(621)를 통해 선택된 모든 레지스터 셋들에 대해 수행된다.
상술한 바와 같이, 본 발명의 실시 예에 따른 DMA 컨트롤러(600)는 레지스터 셋(620)의 루프 레지스터 셋을 통해 DMA 채널 별 DMA 루프 전송을, 채널 루프 관리 메모리 장치(630)에 저장된 데이터를 통해 전체 DMA 채널에 대한 DMA 루프 전송을 수행한다. 즉, 본 발명의 실시 예에 따른 DMA 컨트롤러(600)는 메모리 장치의 전송 영역을 자체적으로 변경하여 DMA 전송 동작을 수행한다. DMA 채널 루프 전송 동작을 수행하는 DMA 컨트롤러(600)로 인해, 시스템의 프로세서(도 1의 200 참조)는 DMA 채널 제어를 위한 레지스터 설정 시간을 줄일 수 있고, DMA 전송이 완료됨을 알리는 인터럽트를 처리하기 위한 시간을 줄일 수 있다.
도 7은 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작을 예시적으로 설명하기 위한 메모리 장치의 블럭 데이터를 보여주는 도면이다. 도 8은 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작을 예시적으로 설명하기 위한 레지스터 셋 유닛의 설정 값을 보여주는 도면이다. 도 2, 도 7 및 도 8을 통하여 블럭 데이터에 대한 DMA 루프 전송 동작을 예시적으로 설명할 것이다.
도 7 및 도 8에서는, 설명의 간략화를 위해서, DMA 컨트롤러(600)를 통해 전송될 블럭 데이터는 6개(즉, D0 내지 D5)임을 가정하고, 레지스터 셋 유닛(720)은 3개의 DMA 채널들(DMA 채널0 내지 DMA 채널2)에 각각 할당된 3개의 레지스터 셋들(720_0 내지 720_2)을 포함하는 것을 가정한다. 그리고 DMA 컨트롤러(600)는 32비트 단위로 데이터를 전송하는 것을 가정한다.
3개의 블럭 데이터들(D0 내지 D2)은 3개의 DMA 채널들(DMA 채널0 내지 DMA 채널2)에 각각 할당되어 DMA 전송되고, 나머지 3개의 블럭 데이터들(D3 내지 D5)은 전체 DMA 채널에 대한 DMA 루프 전송 동작에 의해서 3개의 DMA 채널들(DMA 채널0 내지 DMA 채널2)에 각각 할당되어 DMA 전송된다. 그리고 블럭 데이터들(D0 내지 D5) 각각의 DMA 전송 동작 시, DMA 채널 별 DMA 루프 전송 동작이 수행된다.
먼저, 블럭 데이터들(D0 내지 D2)이 저장된 전송 영역이 DMA 채널들(DMA 채널0 내지 DMA 채널2) 각각에 할당되고, DMA 채널들(DMA 채널0 내지 DMA 채널2) 각각의 레지스터 셋들(레지스터 셋0 내지 레지스터 셋2)이 설정된다. 그리고 DMA 채널들(DMA 채널0 내지 DMA 채널2)을 모두 활성화하기 위한 레지스터 셋 선택 레지스터(721)가 설정(0x7)된다.
도 8은 블럭 데이터들(D0 내지 D2)의 전송 정보에 따른 레지스터 셋들(720_0 내지 720_2)의 설정 값을 보여준다.
예시적으로, 블럭 데이터(D0)에 대한 레지스터 설정 값을 설명하면 다음과 같다. 시작 어드레스 레지스터(720_01)는 블럭 데이터(D0)가 저장된 전송 영역의 시작 어드레스(0x10010)로 설정된다. 목적지 어드레스 레지스터(720_02)는 블럭 데이터(D0)가 전송될 목적지 어드레스(목적지 어드레스0)로 설정된다. 앞서 가정한 바와 같이 데이터 전송 단위는 32비트임으로, 전송 단위 레지스터(720_04)는 전송 단위(0x20)로 설정된다. 전송 단위에 따라서, 전송 크기 레지스터(720_03)는 전송 크기(0x8)로 설정된다.
기본 레지스터 셋이 설정된 후, DMA 채널 별 DMA 루프 전송 동작을 수행하기 위한 루프 레지스터 셋이 설정된다. DMA 채널의 루프 동작이 수행되므로, 루프 설정 레지스터(720_05)는 루프 활성화 값(0x1)으로 설정된다. 시작 어드레스(0x10010)부터 어드레스 오프셋(0x1000)만큼 어드레스가 증가되어 4번의 DMA 전송 동작이 반복 수행되므로, 채널 루프 횟수 레지스터(720_06)는 루프 횟수(0x4)로, 시작 어드레스 오프셋 레지스터(720_07)는 시작 어드레스 오프셋(0x1000)으로 각각 설정된다. 그리고 목적지 어드레스 오프셋 레지스터(720_08)는 목적지 어드레스 오프셋(목적지 어드레스 오프셋0)으로 설정된다.
DMA 채널0의 DMA 루프 전송 동작은, 레지스터 셋0(720_0)에 설정된 소스 어드레스와 목적지 어드레스, 전송 크기를 참조하여 DMA 전송 동작을 수행하고, 소스 어드레스 오프셋 값과 목적지 어드레스 오프셋 값을 이전의 소스 어드레스와 목적지 어드레스에 더하여 다음 전송 영역에 대한 전송 정보로 레지스터들을 재설정한 후 DMA 전송 동작을 재수행한다. 이러한 과정을 루프 횟수만큼 반복함으로써 DMA 채널0의 DMA 루프 전송 동작이 완료된다. DMA 컨트롤러(600)는 2개의 블럭 데이터들(D1 및 D2)에 대하여 동일한 방법으로 DMA 루프 전송 동작을 수행한다.
DMA 채널 별 DMA 루프 전송 동작이 완료되면, 전체 DMA 채널에 대한 DMA 루프 전송 동작을 통해 나머지 블럭 데이터들(D3 내지 D5)에 대한 DMA 전송 동작이 수행된다. 나머지 블럭 데이터들((D3 내지 D5)에 대한 DMA 전송 동작은 채널 루프 관리 메모리 장치(630)에 저장된 데이터들로 레지스터 셋 유닛(620)을 재설정함으로써 이루어진다. 전체 DMA 채널에 대한 DMA 루프 전송 동작은 전체 채널 루프 횟수 레지스터(722)에 설정된 루프 횟수(0x2)만큼 수행된다. 전체 DMA 채널에 대한 DMA 루프 전송 동작은 도 7 내지 도 10을 참조하여 설명될 것이다.
도 9는 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작을 예시적으로 설명하기 위한 채널 루프 관리 메모리 장치의 저장 값을 보여주는 도면이다. 도 10은 본 발명의 실시 예에 따른 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작을 예시적으로 설명하기 위한 레지스터 셋 유닛의 재설정 값을 보여주는 도면이다.
블럭 데이터들(D0 내지 D2)을 전송하기 위한 DMA 채널 별 DMA 루프 전송 동작이 완료된 후 전체 DMA 채널에 대한 DMA 루프 전송 동작이 수행되면, 레지스터 셋 유닛(720)의 레지스터들은 초기화된다. 초기화된 레지스터 셋(720)의 레지스터들은 채널 루프 관리 메모리 장치(730)에 저장된 변경된 전송 영역에 대한 데이터로 재설정된다. 즉, 소스 어드레스 레지스터는 소스 어드레스 변경 값으로, 목적지 어드레스 레지스터는 목적지 어드레스 변경 값으로, 전송 크기 레지스터는 전송 크기 변경 값으로 각각 재설정된다. 또한, 채널 루프 횟수 레지스터는 루프 횟수 변경 값으로, 소스 어드레스 오프셋 레지스터는 소스 어드레스 오프셋 변경 값으로, 목적지 어드레스 오프셋 레지스터는 목적지 어드레스 오프셋 변경 값으로 각각 재설정된다. 그리고 전체 채널 루프 횟수 레지스터(722)는 남은 루프 횟수로 갱신된다.
예시적으로, 채널 루프 관리 메모리 장치(730)에 저장된 레지스터 셋0 데이터(730_0)로 재설정된 레지스터 셋0(720_0)의 설정 값을 설명하면 다음과 같다. 시작 어드레스 레지스터(720_01)는 블럭 데이터(D3)가 저장된 전송 영역의 시작 어드레스(0x18010)로 재설정된다. 목적지 어드레스 레지스터(720_02)는 블럭 데이터(D3)가 전송될 목적지 어드레스(목적지 어드레스3)로 재설정된다. 블럭 데이터(D3)의 크기가 변경되었기 때문에, 전송 크기 레지스터(720_03)는 전송 크기 변경 값(0x10)으로 재설정된다. 그리고 전체 채널 루프 횟수 레지스터(722)는 남은 루프 횟수(0x1)로 갱신된다.
기본 레지스터 셋이 설정된 후, DMA 채널 별 DMA 루프 전송 동작을 수행하기 위한 루프 레지스터 셋이 재설정된다. 루프 횟수 레지스터(720_06)는 루프 횟수 변경 값(0x4)으로, 시작 어드레스 오프셋 레지스터(720_07)는 시작 어드레스 오프셋 변경 값(0x1000)으로, 목적지 어드레스 오프셋 레지스터(720_08)는 목적지 어드레스 오프셋 변경 값(목적지 어드레스 오프셋3)으로 재설정된다.
이러한 방법으로 나머지 레지스터 셋들(720_1 및 720_2) 역시 재설정되며, 블럭 데이터들(D3 내지 D5)에 대한 DMA 채널 별 DMA 루프 전송 동작이 수행된다.
상술한 바와 같이, 본 발명의 실시 예에 따른 DMA 컨트롤러(도 1의 600 참조)는 레지스터 셋(620)의 루프 레지스터 셋을 통해 DMA 채널 별 DMA 루프 전송을, 채널 루프 관리 메모리 장치(630)에 저장된 데이터를 통해 전체 DMA 채널에 대한 DMA 루프 전송을 수행한다. 즉, 본 발명의 실시 예에 따른 DMA 컨트롤러(600)는 전송할 블럭 데이터에 대한 전송 정보를 자체적으로 변경하여 DMA 전송 동작을 수행한다. 본 발명의 실시 예에 따르면, DMA 전송을 수행하기 위한 레지스터 설정 횟수 및 시간을 감소시킬 수 있고, 채널들 각각의 전송 완료에 따른 인터럽트를 처리하기 위한 횟수 및 시간을 감소시킬 수 있다.
이상에서, 본 발명은 구체적인 실시 예를 통해 설명되고 있으나, 본 발명은 그 범위에서 벗어나지 않는 한도 내에서 여러 가지로 변형할 수 있음은 잘 이해될 것이다. 그러므로, 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며, 후술하는 특허청구범위 및 이와 균등한 것들에 의해 정해져야 한다. 본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 잘 이해될 것이다.
600 : DMA 컨트롤러
610 : 버스 인터페이스
620 : 레지스터 셋 유닛
630 : 채널 루프 관리 메모리 장치
640 : DMA 전송 제어 로직
650 : DMA 마스터 인터페이스
660 : FIFO 버퍼 메모리 장치
670 : 인터럽트 제어 로직
610 : 버스 인터페이스
620 : 레지스터 셋 유닛
630 : 채널 루프 관리 메모리 장치
640 : DMA 전송 제어 로직
650 : DMA 마스터 인터페이스
660 : FIFO 버퍼 메모리 장치
670 : 인터럽트 제어 로직
Claims (13)
- 제 1 및 제 2 다이렉트 메모리 액세스(DMA) 채널 및 채널 루프 관리 메모리 장치를 포함하는 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작 방법에 있어서:
(a) 상기 제 1 다이렉트 메모리 액세스(DMA) 채널의 전송 정보와 루프 정보를 참조하여 상기 제 1 다이렉트 메모리 액세스(DMA) 채널의 다이렉트 메모리 액세스(DMA) 전송 동작을 반복적으로 수행하는 단계;
(b) 상기 제 2 다이렉트 메모리 액세스(DMA) 채널의 전송 정보와 루프 정보를 참조하여 상기 제 2 다이렉트 메모리 액세스(DMA) 채널의 다이렉트 메모리 액세스(DMA) 전송 동작을 반복적으로 수행하는 단계;
(c) 전체 채널 루프들의 횟수를 표시하는 전체 채널 루프 횟수 레지스터를 확인하는 단계;
(d) 상기 전체 채널 루프 횟수 레지스터가 하나 이상의 전체 채널 루프들을 표시하는 경우, 상기 채널 루프 관리 메모리 장치의 데이터를 이용하여 상기 제 1 및 제 2 다이렉트 메모리 액세스(DMA) 채널 각각의 상기 전송 정보들과 상기 루프 정보들을 재설정하고, 상기 전체 채널 루프 횟수 레지스터를 업데이트하는 단계; 및
(e) 상기 재설정된 전송 정보들과 상기 재설정된 루프 정보들을 참조하여 상기 (a) 단계 내지 상기 (d) 단계를 다시 수행하는 단계를 포함하되,
상기 (d) 단계는 상기 (a) 단계 및 상기 (b) 단계를 모두 완료한 후에 수행되는 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작 방법. - 제 1 항에 있어서,
상기 (a) 단계와 상기 (b) 단계 각각은,
(f) 상기 전송 정보에 포함된 소스 어드레스와 목적지 어드레스에 따라 다이렉트 메모리 액세스(DMA) 전송 동작을 수행하는 단계;
(g) 상기 소스 어드레스를 상기 루프 정보에 포함된 소스 어드레스 오프셋 값만큼 증가시키고, 상기 목적지 어드레스를 상기 루프 정보에 포함된 목적지 어드레스 오프셋 값만큼 증가시키는 단계; 및
(h) 상기 증가된 소스 어드레스와 상기 증가된 목적지 어드레스에 따라 다이렉트 메모리 액세스(DMA) 전송 동작을 반복적으로 수생하는 단계를 포함하는 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작 방법. - 제 2 항에 있어서,
상기 (f) 단계 내지 상기 (h) 단계를 상기 루프 정보에 포함된 루프 횟수만큼 반복하는 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작 방법. - 제 1 항에 있어서,
상기 제 1 및 제 2 다이렉트 메모리 액세스(DMA) 채널 각각의 상기 전송 정보들과 상기 루프 정보들을 재설정하는 횟수를 설정하는 단계를 더 포함하는 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작 방법. - 제 4 항에 있어서,
상기 (c) 단계와 상기 (d) 단계를 상기 재설정 횟수만큼 반복하는 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작 방법. - 제 1 항에 있어서,
상기 제 1 및 제 2 다이렉트 메모리 액세스(DMA) 채널 각각의 상기 전송 정보들과 상기 루프 정보들을 설정하는 단계를 더 포함하는 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작 방법. - 제 1 항에 있어서,
상기 제 1 및 제 2 다이렉트 메모리 액세스(DMA) 채널 각각의 상기 전송 정보들과 상기 루프 정보들을 재설정하기 위한 데이터를 저장하는 단계를 더 포함하는 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작 방법. - 제 1 항에 있어서,
상기 (d) 단계는 상기 제 1 및 제 2 다이렉트 메모리 액세스(DMA) 채널 각각의 상기 전송 정보들과 상기 루프 정보들을 초기화하는 단계를 포함하는 다이렉트 메모리 액세스(DMA) 컨트롤러의 동작 방법. - 복수의 다이렉트 메모리 액세스(DMA) 채널들의 다이렉트 메모리 액세스(DMA) 전송 동작들을 개별적으로 설정하기 위한 복수의 레지스터 셋들을 포함하는 레지스터 셋 유닛;
전체 채널 루프들의 횟수를 표시하는 전체 채널 루프 횟수 레지스터;
상기 레지스터 셋들을 재설정하기 위한 데이터를 저장하는 채널 루프 관리 메모리 장치; 및
상기 전체 채널 루프 횟수 레지스터가 하나 이상의 전체 채널 루프들을 표시하는 경우, 상기 채널 루프 관리 메모리 장치에 저장된 데이터로 상기 레지스터 셋 유닛을 재설정한 후, 상기 전체 채널 루프 횟수 레지스터의 값에 기초하여 상기 레지스터 셋들에 대응하는 모든 다이렉트 메모리 액세스(DMA) 채널들의 다이렉트 메모리 액세스(DMA) 전송 동작들을 반복적으로 수행하는 다이렉트 메모리 액세스(DMA) 전송 제어 로직을 포함하되,
상기 레지스터 셋 유닛을 재설정한 후 상기 전체 채널 루프 횟수 레지스터는 업데이트되는 다이렉트 메모리 액세스(DMA) 컨트롤러. - 제 9 항에 있어서,
상기 레지스터 셋 유닛은 상기 채널 루프 관리 메모리 장치에 저장된 데이터로 상기 레지스터 셋들을 재설정하는 횟수를 저장하기 위한 레지스터를 포함하되,
상기 다이렉트 메모리 액세스(DMA) 전송 제어 로직은 상기 재설정 횟수만큼 상기 레지스터 셋 유닛을 재설정하는 다이렉트 메모리 액세스(DMA) 컨트롤러. - 제 9 항에 있어서,
상기 레지스터 셋 유닛은,
상기 다이렉트 메모리 액세스(DMA) 채널들 각각의 다이렉트 메모리 액세스(DMA) 전송 동작을 설정하는 정보를 저장하기 위한 기본 레지스터 셋; 및
상기 다이렉트 메모리 액세스(DMA) 채널들 각각의 다이렉트 메모리 액세스(DMA) 전송 동작을 반복적으로 수행하기 위한 루프 정보를 저장하기 위한 루프 레지스터 셋을 포함하는 다이렉트 메모리 액세스(DMA) 컨트롤러. - 제 11 항에 있어서,
상기 루프 레지스터 셋은,
상기 다이렉트 메모리 액세스(DMA) 전송 동작을 반복적으로 수행할지의 여부를 저장하기 위한 루프 설정 레지스터;
루프 횟수를 저장하기 위한 루프 횟수 레지스터;
소스 어드레스를 증가시키기 위한 소스 어드레스 오프셋 값을 저장하기 위한 소스 어드레스 오프셋 레지스터; 및
목적지 어드레스를 증가시키기 위한 목적지 어드레스 오프셋 값을 저장하기 위한 목적지 어드레스 오프셋 레지스터를 포함하는 다이렉트 메모리 액세스(DMA) 컨트롤러. - 제 11 항에 있어서,
상기 다이렉트 메모리 액세스(DMA) 전송 제어 로직은 상기 루프 레지스터 셋의 상기 루프 정보를 참조하여 상기 다이렉트 메모리 액세스(DMA) 채널들 각각의 다이렉트 메모리 액세스(DMA) 전송 동작을 반복적으로 수행하는 다이렉트 메모리 액세스(DMA) 컨트롤러.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100128379A KR101706201B1 (ko) | 2010-12-15 | 2010-12-15 | 다이렉트 메모리 액세스 컨트롤러 및 그것의 동작 방법 |
US13/243,470 US8799529B2 (en) | 2010-12-15 | 2011-09-23 | Direct memory access controller and operating method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100128379A KR101706201B1 (ko) | 2010-12-15 | 2010-12-15 | 다이렉트 메모리 액세스 컨트롤러 및 그것의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120066999A KR20120066999A (ko) | 2012-06-25 |
KR101706201B1 true KR101706201B1 (ko) | 2017-02-15 |
Family
ID=46235930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100128379A KR101706201B1 (ko) | 2010-12-15 | 2010-12-15 | 다이렉트 메모리 액세스 컨트롤러 및 그것의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8799529B2 (ko) |
KR (1) | KR101706201B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542811B (zh) * | 2018-10-15 | 2021-12-07 | 广东宝莱特医用科技股份有限公司 | 一种数据通讯处理方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5748945A (en) * | 1996-05-31 | 1998-05-05 | International Business Machiens Corporation | Method for slave DMA emulation on a computer system bus |
DE69924475T2 (de) * | 1999-06-09 | 2006-02-16 | Texas Instruments Inc., Dallas | Multikanal-DMA mit Datenverkehrplanung auf die Ausgänge |
US6418489B1 (en) * | 1999-10-25 | 2002-07-09 | Motorola, Inc. | Direct memory access controller and method therefor |
KR20050094989A (ko) | 2004-03-24 | 2005-09-29 | 삼성전자주식회사 | 디엠에이 설정값의 설정방법 및 장치 |
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 |
KR20070060854A (ko) | 2005-12-09 | 2007-06-13 | 엠텍비젼 주식회사 | 멀티 채널 직접 메모리 접근 제어기 |
KR101202738B1 (ko) | 2008-12-22 | 2012-11-20 | 한국전자통신연구원 | 멀티 채널 데이터 전송 장치 |
-
2010
- 2010-12-15 KR KR1020100128379A patent/KR101706201B1/ko active IP Right Grant
-
2011
- 2011-09-23 US US13/243,470 patent/US8799529B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20120159015A1 (en) | 2012-06-21 |
KR20120066999A (ko) | 2012-06-25 |
US8799529B2 (en) | 2014-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7640374B2 (en) | Data transfer apparatus by direct memory access controller | |
US10713202B2 (en) | Quality of service (QOS)-aware input/output (IO) management for peripheral component interconnect express (PCIE) storage system with reconfigurable multi-ports | |
CN100464318C (zh) | 一种实现高效dma传输的dma控制器及传输方法 | |
US20080209084A1 (en) | Hardware-Based Concurrent Direct Memory Access (DMA) Engines On Serial Rapid Input/Output SRIO Interface | |
CN102122256B (zh) | 一种用于进程间通信的管道式通信方法及系统 | |
US9471521B2 (en) | Communication system for interfacing a plurality of transmission circuits with an interconnection network, and corresponding integrated circuit | |
US9684615B1 (en) | Apparatus and methods for multiple-channel direct memory access | |
WO2021128776A1 (zh) | 数据处理方法、装置、设备、系统、存储介质和程序产品 | |
KR20120040535A (ko) | 버스 시스템 및 그것의 동작 방법 | |
EP3777059B1 (en) | Queue in a network switch | |
EP2214103B1 (en) | I/O controller and descriptor transfer method | |
US7447872B2 (en) | Inter-chip processor control plane communication | |
CN116547644A (zh) | 检测可编程原子事务中的无限循环 | |
EP1891503B1 (en) | Concurrent read response acknowledge enhanced direct memory access unit | |
CN117312201B (zh) | 一种数据传输方法、装置及加速器设备、主机和存储介质 | |
US20190286589A1 (en) | Apparatus and method to improve performance in dma transfer of data | |
US7577774B2 (en) | Independent source read and destination write enhanced DMA | |
US9846662B2 (en) | Chained CPP command | |
CN116685943A (zh) | 可编程原子单元中的自调度线程 | |
KR101706201B1 (ko) | 다이렉트 메모리 액세스 컨트롤러 및 그것의 동작 방법 | |
KR20150119565A (ko) | 복수의 기능 블록들을 포함하는 반도체 장치 | |
US9804959B2 (en) | In-flight packet processing | |
US9910812B2 (en) | Initiating multiple data transactions on a system bus | |
CN115955441A (zh) | 一种基于tsn队列的管理调度方法、装置 | |
US20060259665A1 (en) | Configurable multiple write-enhanced direct memory access unit |
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: 20200128 Year of fee payment: 4 |