KR20090091228A - 직접 메모리 액세스 컨트롤러 - Google Patents

직접 메모리 액세스 컨트롤러 Download PDF

Info

Publication number
KR20090091228A
KR20090091228A KR1020097014827A KR20097014827A KR20090091228A KR 20090091228 A KR20090091228 A KR 20090091228A KR 1020097014827 A KR1020097014827 A KR 1020097014827A KR 20097014827 A KR20097014827 A KR 20097014827A KR 20090091228 A KR20090091228 A KR 20090091228A
Authority
KR
South Korea
Prior art keywords
mode
cpu
dma
dma controller
low power
Prior art date
Application number
KR1020097014827A
Other languages
English (en)
Other versions
KR101467439B1 (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 KR20090091228A publication Critical patent/KR20090091228A/ko
Application granted granted Critical
Publication of KR101467439B1 publication Critical patent/KR101467439B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • 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
    • 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/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Bus Control (AREA)

Abstract

시스템은 슬립 모드 또는 저전력 모드 및 활동 모드에서 작동하도록 조작 가능한 중앙처리장치(CPU), 슬립 모드 또는 저전력 모드 및 활동 모드에서 작동하도록 조작 가능한 복수의 시스템 구성 요소들, 및 CPU로부터 독립적으로 작동하고 슬립 모드 또는 저전력 모드 및 활동 모드에서 작동하도록 조작 가능한 DMA 컨트롤러를 포함할 수 있고, DMA 컨트롤러는 메모리 또는 주변장치로부터 또한 메모리 또는 주변장치로 데이터를 전송하도록 더 조작가능하고, 시스템이 슬립 모드 또는 저전력 모드일 때 DMA 컨트롤러만이 그리고 필요하다면 DMA 트랜잭션을 실행하는데 필요한 시스템 구성 요소들도 활동 모드로 스위칭된다.

Description

직접 메모리 액세스 컨트롤러 {DIRECT MEMORY ACCESS CONTROLLER}
본 발명의 기술분야는 직접 메모리 액세스 컨트롤러에 관한 것이다.
직접 메모리 액세스(DMA) 컨트롤러는 일반적으로 마이크로프로세서 시스템, 집적된 마이크로컨트롤러(integrated microcontrollers) 등에 사용된다. DMA 컨트롤러들은 컴퓨터 시스템의 중앙처리장치(CPU)와는 독립하여, 메모리와 주변장치들 사이에서 데이터 전송을 수행하는데 사용된다. 이 때문에 DMA 컨트롤러는 제한된 능력을 가진 제2의 프로그램가능한 처리 장치(processing unit)로 볼 수 있다. 보통, DMA 컨트롤러는 소스 위치로부터 목적지 위치로 일정량의 데이터를 전송할 것을 명령받는다. 소스는, 메모리 내, 예를 들어 마이크로컨트롤러의 데이터 메모리, 주변장치의 메모리 내에 있을 수 있으며, 또한 아날로그/디지털 변환기, 포트, 수집 비교 장치(capture compare unit)와 같은 주변장치로부터 생성되거나 주변장치의 내부에서 액세스 가능한 데이터일 수도 있다. 목적지 또한 메모리 내에 있을 수 있으며, 따라서 컴퓨터 시스템 또는 마이크로컨트롤러의 메모리 장치에서 고속 전송을 가능하게 한다. 그러나 목적지는 아날로그/디지털 변환기, 포트 등과 같은 주변장치에 있을 수 있다. 소스로부터 목적지로 데이터를 전송하기 위해서 DMA 컨트롤러는 각각의 소스 어드레스와 목적지 어드레스를 받아야 한다. 또한, 각각의 전 송 길이는 지정될 필요가 있다. 이 때문에 DMA 컨트롤러는 데이터 전송 길이를 받거나 또는 전송할 데이터의 시작 및 종료 어드레스를 받을 필요가 있다.
더욱이, DMA 컨트롤러들은 특히 긴 데이터 전송을 위해, 시스템 내에서 중앙처리장치(CPU)를 지원하는데 사용된다. 그러면, CPU는 다른 기능을 수행하는 데 자유롭다. 그러나 CPU와 DMA 컨트롤러는 동일한 메모리 버스 시스템을 공유한다. 따라서, 버스에 액세스할 때, CPU에 의해 DMA 컨트롤러를 기능정지(stall)시킬 수 있는 CPU와 DMA 컨트롤러 사이의 어떠한 형태의 충돌도 방지하기 위하여, 전송이 진행중인 동안에 DMA는 일반적으로 메모리 버스로의 액세스가 금지된 CPU보다 우선권을 가진다. CPU가 공유 메모리 버스에 액세스를 수반하지 않는 다른 기능을 수행하더라도 이런 DMA 우선권은 시스템의 유연성을 제한할 수 있다. 따라서, DMA 컨트롤러를 구비한 개선된 시스템에 대한 요구가 있어왔다.
일 실시예로, 시스템은 슬립 모드 또는 저전력 모드 및 활성화 모드에서 작동하도록 조작 가능한 중앙처리장치(CPU), 슬립 모드 또는 저전력 모드 및 활성화 모드에서 작동하도록 조작 가능한 복수의 시스템 구성 요소들 및 상기 CPU로부터 독립적으로 작동하고 슬립 모드 또는 저전력 모드 및 활성화 모드에서 작동하도록 조작 가능한 DMA 컨트롤러를 포함할 수 있고, 상기 DMA 컨트롤러는 메모리 또는 주변장치로부터 또한 상기 메모리 또는 상기 주변장치로 데이터를 전송하도록 더 조작가능하고, 상기 시스템이 슬립 모드 또는 저전력 모드일 때 상기 DMA 컨트롤러만이 그리고 필요하다면 DMA 트랜잭션을 실행하는데 필요한 시스템 구성 요소들도 활성화 모드로 스위칭된다.
다른 실시예로, 상기 DMA 컨트롤러와 상기 DMA 트랜잭션을 실행하는데 필요한 시스템 구성 요소들은 상기 DMA 트랜잭션이 완료된 후 슬립 모드 또는 저전력 모드로 다시 스위칭될 수 있다. 다른 실시예로, 상기 DMA 컨트롤러는 적어도 하나의 데이터 송신이 적어도 부분적으로 완료된 후, 상기 CPU의 슬립 모드를 비활성화하기 위해 사용되는 신호를 생성할 수 있다. 다른 실시예로, 시스템은 복수의 저전력 동작 모드를 제어하기 위한 파워 관리 유닛(a power management unit) 을 더 포함할 수 있고, 상기 CPU 및 상기 DMA 컨트롤러는 서로 독립하여 저전력 모드로 설정될 수 있고, 제1 저전력 동작 모드 중에는 상기 CPU는 감소된 클록속도로 작동하고, 제2 저전력 동작 모드 동안에는 상기 중앙처리장치는 멈춘다. 다른 실시예로, 상기 CPU는 제1 인터럽트 레벨(a first interrupt level)에 의해 저전력 동작 모드로부터 더 높은 전력 동작 모드로 스위칭될 수 있고, 상기 DMA 컨트롤러는 제1 인터럽트 레벨과는 상이한 제2 인터럽트 레벨에 의해 저전력 동작 모드로부터 더 높은 전력 동작 모드로 스위치될 수 있다. 다른 실시예로, 상기 DMA 컨트롤러는 복수의 채널들을 포함할 수 있고, 각 채널은 데이터 전송이 완료되면 신호가 생성되는지 여부를 결정하는 프로그램 가능 비트(a programmable bit)를 포함한 제어 레지스터(a control register)를 포함한다. 다른 실시예로, 상기 신호는 데이터 전송이 완료되면 인터럽트 신호(an interrupt signal)가 될 수 있고, 상기 제어 레지스터는 상기 인터럽트의 우선 순위(a priority level)를 결정하는 프로그램 가능 비트 필드를 포함한다. 다른 실시예로, 시스템은 예정된 수를 저장하는 제1 레지스터, 완료된 DMA 송신의 수를 세는 제2 레지스터 및, 상기 제1 레지스터와 상기 제2 레지스터의 콘텐트를 비교하는 비교기(a comparator)를 더 포함할 수 있고, 상기 신호는 상기 제2 레지스터의 콘텐트가 상기 제1 레지스터의 콘텐트와 동등하거나 더 높으면 생성된다. 다른 실시예로, 상기 DMA 컨트롤러는 복수의 채널을 포함할 수 있고, 각 채널은 오프셋 비트 필드(an offset bit field)를 포함하는 제어 레지스터를 포함할 수 있으며, 상기 신호는 소스 또는 목적지 어드레스(a source or destination address)가 오프셋을 뺀 종료 어드레스(an end address minus the offset)와 동등하면 생성된다. 다른 실시예로, 상기 DMA 컨트롤러는 복수의 채널들을 포함할 수 있고, 각 채널은 웨이크업 레지스터(a wake up register)를 포함하고, 상기 신호는 소스 또는 목적지 어드레스가 웨이크업 레지스터에 저장된 웨이크업 어드레스(a wake up address )와 동등하면 생성된다.
또 다른 실시예로, 마이크로컨트롤러는 제1전력소비를 갖는 제1 동작 모드와 상기 제1 전력소비(a first power consumption)보다 낮은 제2 전력소비(a second power consumption)를 갖는 제2 동작 모드에서 프로그램할 수 있게 조작가능한 중앙처리장치; 상기 중앙처리장치와 연결된 버스; 상기 버스와 연결된 메모리; 상기 버스와 연결된 주변장치; 및 상기 버스와 연결된 직접 메모리 액세스(DMA) 컨트롤러를 포함할 수 있고, 상기 DMA 컨트롤러는 상기 CPU가 제2 동작 모드에 있는 동안 상기 메모리 또는 상기 주변장치로부터 또한 상기 메모리 또는 상기 주변장치로 데이터를 전송하기 위해 상기 CPU로부터 독립적으로 작동하고, 상기 DMA 컨트롤러는 데이터 전송이 완료되면 상기 제2 동작 모드에서 상기 제1 동작 모드로 상기 CPU를 스위칭하는 신호를 생성한다.
다른 실시예로, 마이크로컨트롤러는 복수의 저전력 동작 모드를 제어하는 파워 관리 유닛을 더 포함할 수 있고, 상기 DMA 컨트롤러 및 상기 CPU는 상기 저전력 동작 모드 중 하나에 독립적으로 놓여지도록 조작 가능하다.
또 다른 실시예로, 중앙 처리 장치(CPU)를 포함하는 시스템 내에서 DMA 컨트롤러에 의해 소스에서 목적지로 복수의 데이터 송신을 독립적으로 실행하는 방법은: a) 적어도 상기 CPU 및 상기 DMA 컨트롤러를 고전력 소비모드에서 저전력 소비 모드로 스위칭하는 단계; b) DMA 요청을 수신하는 단계; c) 상기 CPU가 상기 저전력 소비 모드에 남아있는 동안 상기 DMA 컨트롤러를 고전력 소비모드로 스위칭하는 단계; d) 상기 CPU가 상기 저전력 소비 모드를 유지하는 동안 상기 DMA 컨트롤러에 의해 DMA를 실행하는 단계; 및 e) 적어도 상기 DMA 요청이 완료되면, 상기 DMA 컨트롤러를 상기 저전력 소비 모드로 스위칭하는 단계를 포함한다.
다른 실시예로, 상기 CPU는 상기 저전력 모드 중에 멈출 수 있다. 다른 실시예로, 상기 CPU는 상기 저전력 모드 중에 감소된 클록 속도로 작동할 수 있다. 다른 실시예로, 상기 DMA 컨트롤러는 복수의 채널을 포함할 수 있고, 각 채널을 위한 우선 순위를 설정하도록 프로그램 가능할 수 있으며 우선 순위는 채널을 위한 실행 선호(execution preference)를 정의한다. 다른 실시예로, 상기 DMA 컨트롤러는 복수의 채널을 포함할 수 있고, 각 채널은 채널에 대한 DMA 요청이 완료되면 상기 CPU를 고전력 소비모드로 스위칭하는 신호가 생성되는지를 결정하도록 프로그램 가능할 수 있다. 다른 실시예로 상기 신호는 데이터 전송이 완료되면 인터럽트 신호가 될 수 있다. 다른 실시예로 각 채널을 위해, 상기 인터럽트 신호의 우선순위는 프로그램 가능할 수 있다. 다른 실시예로, 상기 데이터 전송의 완료는 목표 종료 어드레스(a target end address) 또는 전송된 데이터를 매칭하는 미리 설정된 데이터에 의해 결정될 수 있다. 다른 실시예로, 단계 e)는 DMA 요청이 완료되면, 상기 CPU를 상기 고전력 소비 모드로 스위칭하게 하는 신호를 생성하는 것을 포함할 수 있다. 다른 실시예로, 단계 e)는 복수의 DMA 요청이 완료되면, 상기 CPU를 상기 고전력 소비 모드로 스위칭하게 하는 신호를 생성하는 것을 포함할 수 있다. 다른 실시예로, 단계 a)에서 시스템은 저전력 소비 모드에 놓여지고, 상기 DMA 요청을 수신한 후에 상기 DMA 컨트롤러 및 상기 DMA 요청을 필요로 하는 시스템 유닛은 동작 모드로 스위칭될 수 있다.
또 다른 실시예로, CPU를 포함하는 시스템내의 DMA 컨트롤러가 소스로부터 목적지로 복수의 데이터 송신을 독립적으로 실행하는 방법은: a) 적어도 상기 CPU와 상기 DMA 컨트롤러를 고전력 소비 모드에서 저전력 소비 모드로 스위칭하는 단계; b) DMA 요청을 수신하는 단계; c) 상기 DMA 컨트롤러를 상기 동작 모드로 스위칭하는 단계; 및 d) 상기 CPU가 저전력 소비 모드를 유지하는 동안 상기 DMA 컨트롤러에 의해 DMA를 실행하는 단계를 포함할 수 있다.
다른 실시예로, 상기 방법은 상기 DMA 요청이 완료되면, 상기 CPU를 상기 고전력 소비 모드로 스위칭하고, 상기 DMA 컨트롤러를 상기 저전력 소비 모드로 스위칭하는 단계 e) 를 더 포함할 수 있다.
본 발명의 다른 기술적 장점들은 아래의 도면, 설명 및 청구범위로부터 이 기술분야의 당업자들에게는 쉽게 명확해질 것이다. 본 발명의 다양한 실시예들은 상술한 장점들의 일부분만을 얻을 수 있다. 어느 하나의 장점이 실시예에 결정적이지는 않다.
동일한 부호는 동일한 구성 요소를 나타내는 첨부한 도면과 함께 다음 설명을 참조함으로써 본 발명과 그 장점들을 더욱 완전히 이해할 수 있다.
도 1은 예를 들어 마이크로컨트롤러와 같은, 컴퓨터 시스템 내의 전형적인 DMA 컨트롤러를 나타낸 블록도이다.
도 2는 버스 매트릭스에 사용되는 대표적인 버스를 보여준다.
도 3은 DMA 컨트롤러의 제1 실시예의 세부를 나타낸 블록도이다.
도 4는 DMA 컨트롤러의 제2 실시예의 세부를 나타낸 블록도이다.
도 5는 DMA 컨트롤러의 제2 실시예의 세부를 나타낸 블록도이다.
도 6A 및 6B는 실시예에 따라 DMA 컨트롤러를 구비한 시스템의 일정한 애스펙트(aspect)를 제어하기 위해 사용되는 전형적인 레지스터들을 보여준다.
도 7은 실시예에 따른 시스템 제어 루틴의 흐름도를 나타낸다.
도 8은 DMA 초기화 루틴을 나타낸다.
도 9는 DMA 컨트롤러의 전송 루틴의 흐름도를 나타낸다.
도 10은 멀티플 채널 전송의 타이밍도이다.
도11은 시스템의 상관 관계를 제어하기 위해 인터럽트를 사용하는 DMA 컨트 롤러를 구비한 시스템을 보여준다.
일 실시예로, 상술한 바와 같이 DMA 컨트롤러와 CPU는 메모리로부터 메모리로 데이터를 전송하기 위해 동일한 데이터와 어드레스 버스를 공유한다. CPU와 DMA 컨트롤러의 각각은 버스에 액세스하는 것을 제어할 수 있다. 따라서, CPU 또는 DMA 컨트롤러, 둘 중 하나는 마스터가 될 수 있다. 더욱이, 복수의 주변장치들은 버스에 액세스하도록 구성 가능하고 그 버스에 마스터(master)나 슬레이브(slave), 둘 중 하나가 될 수 있다. 시스템은 "선착순(first come)" 우선권에 따라 또는 할당된 우선권을 사용하여 버스에 액세스하는 것을 허가할 수 있다. "선착순" 우선권 스킴("first come" priority scheme)는 액세스 요청을 제일 먼저 한 자에게 버스에 액세스하는 것을 허가한다. 다른 신청자들은 기다려야 하고, 신청의 순서에 따라 순차적으로 액세스하게 된다. 그러나 대부분의 시스템은, 각각의 가능한 마스터가 더 낮은 우선권에 우선할 수 있는 할당된 액세스 우선권을 갖는 할당형 우선권 스킴(assigned priority scheme)을 사용한다. 일반적으로, 이러한 시스템에서 DMA 컨트롤러는 최상위의 우선권을 갖는다. 따라서, CPU 또는 주변 마스터 및 DMA 컨트롤러가 적극적으로 버스로의 허가를 추구한다면, 일반적으로 DMA 컨트롤러는 모든 다른 가능한 마스터 장치들에 비해 버스에 액세스하는 우선권을 갖는다. DMA 컨트롤러를 통한 전송의 활성화는 CPU 또는 주변장치를 기능정지(stall)하게 한다. 일 실시예로, DMA 컨트롤러는 예를 들어 지정 제어 레지스터에 비트를 설정함으로써, CPU가 DMA 컨트롤러의 전송을 중단할 수 있는 그런 방식으로 프로그램 가능하도록 디자인된다.
그러나 예를 들어 CPU와 DMA 컨트롤러 사이의 지정 제어 라인을 통해, DMA 컨트롤러를 중단하기 위해 다른 제어 메커니즘이 제공될 수 있다. 예를 들면, CPU가 인터럽트 또는 다른 이의(exception)를 수신할 때, CPU는 공유된 메모리의 스택에 데이터를 밀어 넣음으로써 문맥(context)을 변경해야 한다. 만약, CPU가 이의 레벨 신호를 제공한다면, DMA는 CPU가 문맥을 더 빨리 저장하고 서비스 루틴으로 더 빨리 액세스하도록 허용하는 활성화를 중단하도록 그 신호를 사용할 수 있다.
디지털 장치에서 중앙 CPU와 관련 로직이 파워 다운(power-down) 또는 슬립 모드(sleep mode)에 있는 동안, DMA 컨트롤러는 인터럽트와 같은 이벤트(event)에 웨이크업(wake up)하는 것이 허용될 수도 있다. 이렇게, CPU와 관련 로직이 슬립 모드에 있는 동안, DMA 로직 또는 DMA 컨트롤러가 요청들을 처리할 수 있다. 버퍼 카운트(buffer count)에 도달하거나 또는 송신 종료가 다른 방법으로 결정되는 때, 프로세서는 예를 들어 다른 인터럽트 신호에 의해 웨이크업하고 CPU는 파워 다운(power-down) 또는 슬립 모드를 종료한다.
종래의 디지털 장치들은 일반적으로 프로세서 코어 또는 전체 시스템을 웨이크시키거나 각 인터럽트 시스템을 통해 각 명령을 실행함으로써 이벤트에 대응한다. 이것은 시간 소모적이고, 슬립 모드로 돌아가기 전에 서비스 루틴을 실행하기 위해서 CPU와 프로그램 메모리에 동력을 공급하기 위해 더 많은 전류를 소모하는 결과를 낳는다. 일 실시예로 비동기식 이벤트를 서비스하기 위해 DMA 컨트롤러만을 웨이크시키는 것은, CPU, 프로그램 메모리 및 그 서비스에 필요하지 않은 다른 구성 요소들이 이벤트가 처리되는 동안 로우 파워 상태를 유지할 수 있게 한다. 이벤트는 종종 주변 콘텐츠(contents)를 읽고 로컬 메모리에 그 값을 저장하는 것일 뿐이다. 이것은 DMA 컨트롤러만으로도 할 수 있다. 일 실시예로 이벤트를 처리한 후에, DMA 컨트롤러는 슬립 모드로 돌아갈 수 있다.
마이크로컨트롤러 또는 칩 상의 시스템(system on a chip)은 각 제어된 인터럽트 시스템 또는 다른 적당한 제어를 통해 구체화될 수 있는 하기의 모드를 가질 수 있다. 런 모드(run mode)에서: 모든 클록들은 모든 주변기기 및 중앙처리장치를 위하여 각각의 구성 값(configuration values)에 따라 실행한다. 이 모드에서 CPU는 활성화 상태이며 전력을 소모한다. 제1 저전력 모드, 대기 모드(idle mode)에서: 프로세서 클록은 멈추고 대기 전력만을 소비함, 예를 들어 클록은 게이트-오프(gate-off)한다. 버스 매트릭스 상의 버스 클록들은 계속 실행된다. 플래시 프로그램 메모리는 스탠바이 모드(standby mode)에 있다. 인터럽트 이벤트는 DMA 컨트롤러만을 움직이게 하거나 또는 DMA 컨트롤러는 전속력으로 그리고 프로세서 클록은 축소된 클록으로 움직이게 한다. 제2 절전 모드, 슬립 모드에서: 프로세서와 버스 클록들은 멈춘다. 플래시 프로그램 메모리는 전력이 차단된다. 비동기식 인터럽트 이벤트는 오직 DMA 컨트롤러만을 위해서 클록들을 움직이게 한다. 다른 실시예로, 일정한 장치들만이 클록을 수신하여 작동할 수 있는 많은 모드들이 제공될 수 있다.
종래 기술의 디지털 장치들은 CPU를 인에이블시키지 않고 절전 모드를 종료 하는 능력이 없다. 아래에서 더 상술하는 실시예로, DMA 컨트롤러는 시스템 클록에 의사 동기화(pseudo synchronous)된 분리된 시스템 클록으로부터 실행할 수 있다. 예를 들어 인터럽트와 같은 외부 이벤트가 DMA를 웨이크시키도록 프로그램되는 때, 이 클록은 인에이블될 것이다. CPU는 이 과정에서 인에블될 필요가 없고, 이것이 전력을 절약한다. 한 실시예로, DMA 컨트롤러가 전송을 완료하는 때마다, 숫자 n을 저장하는 레지스터는 1만큼 증가한다. 일단 DMA 이벤트의 정의된 숫자 N>=1이 기록되면, CPU는 인터럽트 이벤트로 경보를 낼 수 있다. 일 실시예로, 주변장치들이 그들의 버퍼를 시스템 데이터 랜덤 액세스 메모리(RAM)에 기록할 수 있도록, 인터럽트 컨트롤러는 USB 또는 이더넷과 같은 주변기기들을 위한 이벤트를 검출하고 그것들을 예를 들어 대기 모드로 웨이크업시킬 수 있다. 따라서, 만약 슬립 모드에서 DMA 이벤트가 발생한다면, DMA 컨트롤러만이, 그리고 메모리와 임의로 각각의 주변기기가 슬립 모드에서 활성화 모드로 스위칭된다. 따라서, DMA 트랜잭션에 필요한 시스템 구성 요소들만이 요청에 따라 활성화되고, 그 요청이 완료되면 다시 비활성화될 것이다.
이하, 본 발명의 실시예를 도면을 참조하여 상세히 설명한다. 도 1은 마이크로컨트롤러(100)과 같이, 컴퓨터 시스템 내의 DMA 컨트롤러의 전형적인 실시예를 나타낸다. 마이크로컨트롤러(100)는 일반적으로 시스템 구성 요소들 및 주변기기들(예를 들어, 버스 매트릭스(120))에 연결된 CPU(110)를 포함한다. CPU(110)는 복수의 주변장치들(i~k)(145~150)과는 버스 매트릭스(120)을 통해, 그리고/또는 주변장치들(n~m)(165~170)과는 주변 브리지(180)를 통해 직접적으로 통신할 수 있다. 주변장치들은 I/O 포트, 메모리들, A/D 변환기, D/A 변환기, 타이머, 펄스폭 변조기 등과 같은 장치가 될 수 있지만, 여기에 한정되지 않는다. CPU(110) 내에서 인터럽트 루틴의 비동기식 시작을 제공하기 위해 사용되는 인터럽트 신호를 제어하는 인터럽트 컨트롤러(155)가 제공될 수 있다. 인터럽트 신호는 명령어 스트림의 현재 실행을 인터럽트하고 CPU(110)가 각각의 인터럽트 서비스 루틴으로 분기하도록 사용될 수 있다. 인터럽트 신호는 DMA 컨트롤러(125)의 상관 관계(예를 들면, 새로운 채널 송신의 기동)을 제어하기 위해서도 사용될 수 있다. 그 외에도, 인터럽트 신호는 CPU(110), DMA 컨트롤러(125) 및 다른 주변장치들을 웨이크업시키기 위해서도 사용될 수 있다. 버스 매트릭스(120)는 전용 인터럽트 버스가 이러한 신호들을 전달하도록 제공될 수 있다. 인터럽트 컨트롤러(155)는 특정 인터럽트 레벨을 마스크하도록(예를 들면, 특정 인터럽트 신호들이 CPU(110)를 인터럽트하거나 웨이크업시키지 못하도록) 프로그램될 수 있다.
한편, 전용 메모리 버스는 캐시를 통해 CPU(110)과 플래시 프로그램 메모리(135)를 연결하기 위해 버스 매트릭스(120) 내에 제공될 수 있다. 데이터 랜덤 액세스 메모리(RAM)(140)도 버스 매트릭스(120)를 통해 CPU(110)에 연결될 수 있다. 직접 메모리 액세스(DMA) 컨트롤러는 참조부호 125로 도시된다. 이 DMA 컨트롤러(125) 또한 버스 매트릭스(120)에 연결된 장치들 간의 전송을 허용하기 위해 버스 매트릭스(120)에 연결될 수 있다. 버스 매트릭스(120)에서, DMA 유닛은 다양한 버스들을 통해 메모리(140) 및 주변장치(145~150 및 165~170)와 연결될 수 있다. 더욱이, DMA 컨트롤러(125)는 버스 매트릭스(120)를 통해 CPU(110)로부터 복수의 제어신호를 받을 수 있다. 시스템 클록 장치(115)는 직접적으로 또는 버스 매트릭스(120)에서 각각의 제어신호를 통해 클록을 요구하는 CPU 및 모든 유닛들에 다양한 클록 신호를 제공한다. 일 실시예로, CPU와 DMA 컨트롤러의 독립적인 동작을 허용하기 위해, 두 개 또는 다수의 독립적인 클록 신호들이 CPU와 DMA 컨트롤러에 제공된다. 다른 클록들 또한 버스 매트릭스(120)를 통해 다른 시스템 구성 요소들에 제공될 수 있다. 또한, 선택적으로 시스템 내의 각 구성 요소는 자신의 파워 모드를 제어하도록 사용 가능할 수 있다. 이 때문에, 버스 매트릭스(120)는 단일 또는 다수의 클록 신호, 파워 모드 신호 및 어떤 유닛들이 어떤 파워 모드에서 동작하는지를 나타내는 제어 신호들을 포함하는 파워 관리 유닛(175)과 연결된 전용 파워 제어 버스를 포함할 수 있다. 그러나 파워 관리 유닛은 선택적으로 모든 유닛들을 직접 제어할 수 있다.
이러한 시스템은 CPU(110)의 직접적인 관여 없이, 주변장치들(145~150, 165~170)과 메모리(140) 사이에서뿐만 아니라, 버스 매트릭스(120)에 연결된 주변장치들(145~150, 165~170) 사이에서, 또는 메모리(140) 내에서 DMA 컨트롤러(125)에 의한 전송을 허용한다. CPU(110)는 보통 DMA 컨트롤러(125)를 초기화하거나 일단 전송된 데이터를 처리하는데 필요할 뿐이다. 일단 DMA 컨트롤러(125)가 프로그램되면, 데이터 전송 프라퍼(data transfer proper)는 CPU(110)의 도움없이 처리된다. 그렇게 되면 CPU(110)는 자유롭게 다른 작업을 실행할 수 있다. 이 때문에, 병렬 DMA 전송을 실행하는 시스템은 보통 시스템과 연관되어 있는 유닛들의 파워 관리를 변경하지 않고 이는 예를 들면 몇몇 경우에 DMA 컨트롤러(125)가 전송을 실행 하는 동안 CPU(110)는 독립된 기능을 실행할 수 있기 때문이다. 파워 관리 유닛(175)은 장치들의 유연한 제어를 허용한다. 따라서, 절전 모드에 의존하여, 시스템의 상이한 유닛들은 꺼질 수 있다. 절전 모드는 전력 소비가 하이부터 로우까지 다양하다. CPU(110)는 보통 대부분의 절전 모드에서 가동중이며 다른 클록 속도로 작동할 수 있다. 일반적으로 최고 절전 모드에서만, CPU(110)는 완전히 꺼질 것이다.
일 실시예로, CPU(110)과 DMA 컨트롤러(125)를 갖는 시스템은, DMA 컨트롤러(125)가 CPU(110)과는 별도로 활성화될 수 있고, CPU(110)이 줄어든 클록 속도로부터 완전 비활성화까지 상이한 레벨의 절전 모드를 동시에 입력할 수 있는 특정 모드를 허용한다. 일단, CPU(110)와 DMA 컨트롤러(125)가 CPU(110)와 DMA 컨트롤러(125)가 작동을 멈춘 정적 모드(static mode)와 같은 높은 레벨의 절전 모드로 들어가면, 일 실시예로 DMA 컨트롤러(125)는 DMA 전송 요구를 통해 독립적으로 활성화될 수 있다. 이러한 요청은 각 인터럽트 신호를 통해 발생할 수 있다. 일단 이러한 전송 요청이 들어오면, DMA 컨트롤러(125)는 작동한다. 이를 위해 필요하다면, 파워 관리 유닛은 DMA 컨트롤러(125)와 하나 이상의 요청 받은 주변장치들을 웨이크업시킬 수 있다. 그러나 일 실시예로 인터럽트 신호는 그 자체로 DMA 컨트롤러(125)를 활성화할 수 있다. 데이터 랜덤 액세스 메모리(140)는 심지어 절전 모드 중에도 이미 활동 중일 수 있으며, 그렇지 않더라도 필요하면 재활성화될 수 있다. 일단, 각 DMA 전송에 필요한 모든 유닛들이 활동 상태가 되면, DMA 컨트롤러(125)는 DMA 전송 프라퍼를 시작한다. 이 시간 동안, 트랜잭션에 필요하지 않은 CPU와 다른 장치들은 각 슬립 모드로 남는다. 이것은 각 인터럽트 레벨은 오직 DMA 컨트롤러(125)만을 활성화하고 CPU(110)는 활성화되지 않는 것과 같은 방식으로 인터럽트 레벨을 마스크함으로써 달성될 수 있다. DMA 컨트롤러(125)는 전송을 모니터링 및 제어하고, CPU(110)를 웨이크업시킬 신호를 직접 또는 파워 관리 유닛(175)을 통해 CPU(110)로 보낸다. 일 실시예로 DMA 컨트롤러(125)는 DMA 송신을 완료하면, CPU(110)를 웨이크업시키기에 충분히 높은 레벨을 가진 인터럽트를 생성할 수 있다. 따라서, CPU는 전송된 데이터를 더 처리할 수 있다. 일단 CPU(110)가 필요한 처리 과정을 마치면 CPU(110)는 다시 각 절전 모드로 들어갈 수 있다. 또한, DMA 컨트롤러(125)가 DMA 요청을 서비스한 후에는 다시 슬립 모드 또는 저전력 모드로 들어갈 수 있다. 일 실시예로, 미리 정의된 수의 DMA 송신이 완료되면, CPU(110)를 웨이크업시키는 프로세스가 시작될 뿐이다. 이를 위해, DMA 송신이 완료될 때마다 1만큼 증가되는 각각의 레지스터가 제공된다. 이 레지스터의 컨텐츠가 미리 정의된 숫자(n>=1)보다 높거나 동일하면, CPU(110)를 웨이크업시키기 위한 인터럽트 신호는 생성될 수 있을 뿐이다.
또 다른 실시예로, 특별 레지스터는 CPU(110)의 활성화를 시작하는 어드레스 또는 데이터를 포함할 수 있다. CPU(110)가 슬립 모드에서 활성화 모드로 변환하는 데 상당한 시간을 필요로 한다면, 이 실시예는 유용하다. 따라서, 송신의 시작과 종료 어드레스 사이에서 미리 정의된 수의 메모리 플레이스들로 설정된 중간 어드레스는 CPU(110)의 재활성화를 유발할 수 있다. 따라서, DMA 전송이 완료될 때마다, 예를 들어 오실레이터 시동 시간에 의해 야기되는 추가적인 지연없이 CPU는 활 성화될 것이다. 특별 레지스터 대신, 제어 레지스터 내의 비트 필드는 DMA 송신이 완료되기 전에 웨이크업 신호를 생성하기 위해 사용될 수 있는 종료 어드레스로부터 오프셋을 정의하기 위해 사용될 수 있다.
도 2는 버스 매트릭스(120) 내에서 사용되는 버스(200)의 버스 신호들을 나타낸다. 예를 들어, 버스는 복수의 제어신호들뿐만 아니라 일반적인 어드레스와 데이터 신호들을 포함할 수 있다. 제어신호들은 복수의 제어신호들 중의 하나로서, 도시된 바와 같이 상이한 우선권/레벨을 가진 상이한 인터럽트 신호들을 정의하는 복수의 인터럽트 신호들, 슬립 모드를 표시하는 특정 신호 및 어떤 유형의 슬립 모드가 입력되어야 하는지를 나타내는 연관 모드 신호들을 포함할 수 있다. 어떤 유닛들이 각각의 슬립 모드에 들어가야 하는지를 표시하는 다른 신호들도 포함될 수 있다. 도 2는 특정 유닛들은 개별적으로 상이한 파워 모드로 지정될 수 없는 시스템에서 사용될 수 있는 전용 CPU 클록 신호 및 분리된 DMA 클록 신호의 예를 나타낸다. 아래쪽의 제어 라인들은 보통 마이크로프로세서 또는 마이크로컨트롤러에서 구체화되는 다른 제어 신호들을 표시한다.
도 3은 DMA 컨트롤러의 실시예를 나타낸다. 복수의 DMA 채널(350~360)이 제공되고 인터럽트 요청 제어 버스와 같은 제어 버스(340)에 의해 제어된다. DMA 채널(350~360)은 데이터와 어드레스를 받기 위해 버스(310)에 연결된다. 어드레스 디코더(320)는 특히, DMA 전송의 상관 관계를 제어하기 위해, 어드레스(320)를 받고 각 제어 레지스터(330)와 비교한다. 멀티플렉서(370)는 각 채널들(350~360)의 출력을 제어하는데 사용될 수 있다. 컨트롤러(380)는 멀티플렉서(370)을 제어하고, 그 리하여 데이터는 하기의 버스 매트릭스 인터페이스(390)를 통해 흐른다. 도 3에 도시된 실시예는 각 인터럽트 신호들에 의해 제어될 수 있다. 예를 들면, 인터럽트 신호는 각 채널을 통해 전송을 시작하기 위해 사용될 수 있다. 이를 위해, 각 채널에는 각각의 인터럽트 레벨이 할당된다. 인터럽트 레벨의 서브 세트가 사용될 수 있고, DMA 컨트롤러(125)는 일정한 인터럽트 레벨을 각 전송 채널에 할당하도록 프로그램 가능할 수 있다. 더욱이, 송신의 완료, 채널 버퍼 절반의 전송과 같이 송신의 일정 지점에 도달, 채널 버퍼 내의 미리 정의된 지점에 도달, 또는 전송되는 미리 정의된 데이터 패턴의 매칭에 따라, DMA 컨트롤러는 복수의 인터럽트 신호들을 생성하도록 프로그램 가능할 수 있다. 다른 인터럽트 제어 신호들은 구체화될 수 있다.
도 4는 DMA 컨트롤러(125) 내의 채널의 실시예를 더욱 상세하게 보여준다. 일 실시예로, DMA 컨트롤러(125)는 정적 설계를 가질 수 있고 이로써 직접적으로 상이한 파워 모드를 제어하는데 사용될 수 있는 고유의 DMA 클록 신호(490)를 받을 수 있다. 예를 들면, 높은 파워 모드에서, 장치는 최고 클록 속도를 받고, 최저 파워 모드에서는 클록 신호가 없고, 중간 파워 모드는 다양한 중간 클록 속도를 포함할 수 있다. DMA 컨트롤러(125)는 클록 신호를 받고, 슬립 모드로 들어가면 클록 신호를 차단할 수 있고, 인터럽트 웨이크업 신호를 받으면 게이트를 열 수 있는 프로그램가능 게이트를 포함할 수 있다. DMA 컨트롤러(125)는 적어도, 버스 매트릭스(120) 내에서 수신 버스(470)와 송신 버스(480)에 연결되어 있는 레지스터 또는 래치(410a) 및 연관 어드레스 레지스터 또는 래치(440a,440b)를 더 포함한다. 도 4 는 수신 버스(470)와 송신 버스(480)가 도 2에 나타난 버스(200)처럼 하나이고 동일할 수 있음을 점선으로 표시한다. 그러나 다른 실시예에서 DMA 컨트롤러(125)는 두 개의 상이한 버스 사이에서 통신하도록 설정할 수도 있다. 이러한 실시예에서, 수신 버스(470)는 예를 들어 도 3에 도시되어 있는 바와 같이 버스(310)일 수 있고, 송신 버스(480)는 도 3에 도시되어 있는 바와 같이 버스 매트릭스 인터페이스(390)에 접속된 다른 버스일 수 있다. 어드레스와 데이터용 레지스터 또는 래치(410a, 440a, 440b) 모두는 이 버스들에 연결되어 있다. 더욱, 송신과 수신용으로 분리된 레지스터들이 사용될 수 있다. 보통 소스와 목적지 어드레스가 다르기 때문에, 도 4에 도시된 바와 같이 분리된 어드레스 레지스터(440a 및 440b)가 유용하다. 데이터 레지스터(410a)와 송신 및/또는 수신 레지스터(440a, 440b)는 데이터 또는 어드레스의 매칭을 결정하기 위해 비교기(420, 450)와 더 연결될 수 있다.
DMA 데이터 전송 중, DMA 컨트롤러(125)는 소스 시작 어드레스에서 시작되고 소스 종료 어드레스에서 종료되는 특정량의 데이터를, 마찬가지로 목적지 시작 어드레스에서 시작하고 목적지 종료 어드레스에서 종료되는 목적지로 전송하도록 프로그램될 수 있다. 이를 위해 예를 들면, 레지스터(440a)에는 소스 시작 어드레스가 로드되고, 레지스터(440b)에는 목적지 시작 어드레스가 로드된다. DMA 컨트롤러(125)는 전송될 데이터 블록의 길이 또는 소스 종료 어드레스를 더 수신한다. 만약, 소스 종료 어드레스가 사용되면, 이 어드레스는 비교기 유닛(450)에 연결된 각각의 레지스터(440c)에 로드된다. 대안으로, 목적지 종료 어드레스 또는 상술한 바와 같이 데이터 블록의 길이는 전송의 종료를 결정하기 위해 사용될 수 있다. 이러 한 전형적인 초기화가 실행되기만 하면, 데이터 전송 프라퍼가 발생한다. DMA 컨트롤러(125)는 전송이 일정한 지점에 도달했다는 신호를 생성하기 위한 특정한 중간 어드레스를 정의하는데 사용할 수 있는 다른 레지스터(440d)를 더 포함할 수 있다. 이를 위해, 레지스터(440d)는 전송 버퍼의 중간 지점이나 버퍼 내의 다른 지점을 표시하는 어드레스로 미리 설정될 수 있다. 비교기 유닛(450)은 일단의 비교기들을 포함할 수 있거나 상이한 레지스터 콘텐츠를 비교할 때 분리된 신호들을 생성하도록 설정될 수 있다. 비교기 출력 신호들은 특정한 인터럽트 신호를 생성하기 위해 사용될 수 있다.
하기에서 단일 버스(single bus)를 사용한 전송을 설명한다. DMA 컨트롤러(125)는 제1 주소, 레지스터(440a)에 저장된 소스 시작 어드레스를 버스에 놓는다. 이 어드레스는 메모리 내부 또는 버스와 연결된 어떤 장치에도 있을 수 있다. 연관 데이터는 데이터 레지스터(410a)로 전송된다. 하기 단계에서, 레지스터(440a)는 버스로부터 분리되고 레지스터(440b)는 버스에 연결된다. 대안으로, 오직 하나의 어드레스 레지스터만 사용된다면, 이 어드레스 레지스터는 목적지 시작 어드레스로 로드된다. 따라서, 목적지 어드레스는 버스에 연결된 장치 또는 메모리와 같은 각 목적지를 번지 지정하는 버스에 실린다. 그러면, 레지스터(410a)에 저장된 데이터는 이 목적지 어드레스로 전송된다. 소스 어드레스 레지스터(440a)와 목적지 어드레스 레지스터(440b)는 증분되고 그 프로세스는 소스 어드레스 레지스터(440a)가 소스 종료 어드레스를 포함할 때까지 반복된다. 이런 송신 종료는, 예를 들면, 어드레스 레지스터(440a)와 레지스터(440c)의 콘텐츠를 비교하는 비교기(450)에 의 해 검출될 수 있다. 레지스터(440d)는 송신의 일정한 상태/시간에 도달하였다는 것을 표시하는 중간신호들을 생성하도록 사용될 수 있다.
또한, DMA 컨트롤러(125)는 일단 미리 정의된 데이터 바이트와 같이 특정 패턴이 수신되면 전송을 멈추는 조건부 전송(conditional transfer)을 허용한다. 이를 위해, DMA 컨트롤러(125)는 패턴 레지스터(410b)를 더 포함한다. 초기화할 때, 패턴 레지스터(410b)는 특정 바이트와 같은 패턴으로 로드된다. 일단 비교기(420)가 레지스터(410a)에 로드된 데이터와 패턴 레지스터(410b) 사이에서 매칭을 검출하면, 송신의 종료에 도달했다는 것을 DMA 컨트롤러(125)에게 표시하는 각각의 신호(430)가 생성된다. 무한한 송신을 막기 위해, 어드레스 비교기(450)는 최대 전송을 정의하기 위해서도 사용될 수 있다.
따라서, 이러한 실시예의 DMA 컨트롤러(125)는 일반적으로 두 개의 상이한 유형의 트랜잭션을 허용한다. 제1 트랜잭션은 DMA 컨트롤러에 의해 전송되는 정의된 데이터 블록을 허용하는 고정 길이 송신으로 정의된다. 제2 트랜잭션은 개방된 길이를 갖고, 그 길이는 특정한 패턴으로 정의된다. 예를 들면, 송신의 종료는 특정한 심볼로 정의될 수 있다. 더욱이 다른 실시예로, 일련의 심볼들은 송신의 종료를 정의할 수 있다. 따라서, 송신의 종료에 대한 더욱 유연한 정의가 가능하다. 예를 들면, 단일 바이트 대신에, 캐리지 리턴(CR) 라인 피드(LF)시퀀스와 같은 2바이트 시퀀스가 사용될 수 있다. 이를 위해, 각각의 시퀀스로 프로그램된 복수의 레지스터들이 제공될 수 있다. 제2 트랜잭션 유형은 무한한 전송 루프를 회피하고 추가적인 보안을 제공하기 위해 최대 전송 길이로 향상될 수 있다.
도 5는 DMA 컨트롤러(125)의 또 다른 전형적인 실시예를 나타낸다. 이 실시예에서, 소스 레지스터(510) 및 목적지 어드레스 레지스터(520)가 제공된다. 또한, 길이/최대 길이 레지스터(530)는 종료 어드레스(EndAddr) 검출을 생성할 수 있는 비교기(580)와 연결된다. 비교기(580)는 카운터(570)에도 연결된다. 패턴 레지스터(540)는 데이터 프라퍼(Din 및 Dout)를 수신하고 송신하는 레지스터(560)에 연결된 다른 비교기(550)에 연결된다. 비교기(550)는 송신 신호의 종료(EofTrans)를 만들어낼 수 있는 신호(Match)를 생성한다. 멀티플 패턴 레지스터(540)와 연관 비교기들은 점선을 사용한 각 요소들에 의해 표시된 것처럼 제공될 수 있다. 레지스터와 비교기 사이의 각 로직은 상이한 유형의 송신을 허용하기 위해 제공될 수 있다. 예로서, 도 5는 비교기(580)로부터 신호(EndAddr)를 수신하는 제1 제어가능 드라이버(585)를 나타낸다. 드라이버(585)의 출력은 OR 게이트(590)의 제1 입력과 연결된다. 제2 제어가능 인버터(555)는 비교기(550)로부터 신호(Match)를 수신한다. 드라이버(555)의 출력은 OR 게이트(590)의 제2 입력과 연결된다. 따라서, OR 게이트(590)의 출력은 송신 신호의 종료(EofTrans)를 제공한다. 이 신호는 데이터 전송을 제어하는데 사용될 수 있다. 또한, 이 신호는 파워 관리 유닛(175)에 입력될 수 있다.
대안으로, 비교기 유닛(565)은 송신 신호(EoTrans)의 종료를 직접 생성하기 위해 소스 또는 목적지 어드레스 레지스터(510, 520) 중 하나의 콘텐츠와 종료 어드레스 레지스터(595)와 비교하는데 제공된다. 또 다른 실시예에서, 오프셋 레지스터(545)가 제공되고, 그 콘텐츠는 아래에서 더욱 상세하게 설명되는 것과 같이 독 립된 초기 웨이크업 신호를 생성하기 위해, 종료 어드레스 레지스터(595)로부터 오프셋을 제거하기 위해 사용된다. 또 다른 대안으로, 웨이크업 어드레스 레지스터(475)는 오프셋 레지스터(545) 대신에 사용된다. 이 실시예에서, 송신 신호의 종료(EoTrans)는 소스 또는 목적지 어드레스 레지스터(510, 520) 중 하나와 종료 어드레스 레지스터(595)와 비교함으로써 생성되고, 웨이크업 신호(WakeUp)는 소스 또는 목적지 어드레스 레지스터(510, 520) 중 하나와 웨이크업 어드레스 레지스터(575)와 비교함으로써 생성된다.
또한, 다른 실시예로, 미리 정의된 프로그램 가능 숫자(n)를 저장한 제어 레지스터(515)와 카운터로 기능하고 DMA 컨트롤러에 의해 실행된 송신 횟수를 세는 레지스터(535)가 제공될 수 있다. 양 레지스터의 콘텐츠는 비교기(525)에 의해 비교되고 그 결과는 파워 관리 유닛(175)에 입력된다. 레지스터(515)는 CPU(110)를 통해 사용자에 의해 프로그램된 정수(n)를 저장한다. 시스템을 슬립 모드로 설정하면, 레지스터(535)는 DMA#=0으로 재설정된다. 만약 DMA 요청이 슬립 모드 중에 수신되면, DMA 송신에 필요한 DMA 컨트롤러와 각 장치들은 재활성화된다. 만약 송신이 완료되면, 레지스터(535), 즉 DMA#은 증분된다. 비교기(525)는 레지스터(515 및 535)의 콘텐츠를 비교하고 결과를 파워 관리 유닛(175)으로 보낸다. 만약 DMA#>=n이면, 파워 관리 유닛(175)는 웨이크업 신호를 생성한다. 그렇지 않으면, DMA 컨트롤러(125)는 다음 DMA 요청이 도착할 때까지 슬립 모드로 되돌려진다.
DMA 송신은 서로 다른 모드에서 실행될 수 있다. 제1 모드에서, 드라이버(555)는 OR 게이트(590)의 제2 입력에 상수 로직 로우 신호(constant logic low signal)를 생성하여 OR 게이트(590)로부터 비교기(550)를 분리하도록 제어되고, 드라이버(585)는 비교기(580)를 OR 게이트(590)에 연결하도록 제어된다. 레지스터(510 및 520)는 각 소스 시작 어드레스 및 목적지 시작 어드레스로 로드된다. 레지스터(530)는 송신될 데이터 블록의 길이가 로드되고 카운터(570)은 0으로 재설정된다. 그리하여 데이터 전송은 시작될 수 있다. 이를 위해, 레지스터(510)에 의해 번지가 지정된 데이터는 레지스터(560)로 로드되고 레지스터(520)에 포함된 어드레스에 기록된다. 그리고, 레지스터(510 및 520)은 송신된 데이터의 크기에 의해 증분된다. 예를 들면, 데이터 레지스터가 바이트 와이드 레지스터(byte wide register)이면, 레지스터(510 및 520)는 1만큼 증분된다. 만약 데이터 레지스터가 16비트 레지스터이면, 레지스터(510 및 520)는 2 또는 그 정도로 증분된다. 카운터(570)는 그에 따라 증분된다. 비교기(580)는 카운터(570)의 카운터 값과 레지스터(530)를 비교한다. 데이터의 전송은 카운터 값이 레지스터(530)의 콘텐츠와 매치할 때까지 반복된다. 만약 이러한 매치에 도달하면, 신호(EndAddr)는 로직 하이(logic high)가 되고 OR 게이트(590)의 출력은 송신 종료(EofTrans)를 표시하는 하이가 될 것이다. 그 결과 DMA 컨트롤러는 멈춘다.
제2 모드에서, 드라이버(585)는 OR 게이트(590)의 제1입력에 상수 로직 로우(constant logic low) 신호를 생성하여 OR 게이트(590)로부터 비교기(580)를 분리하도록 제어되고, 드라이버(555)는 비교기(550)를 OR 게이트(590)에 연결하도록 제어된다. 이 모드에서, 다시 소스 및 목적지 레지스터(510 및 520)는 각 시작 어드레스로 로드된다. 또한, 패턴 레지스터(540)는 미리 정의된 패턴으로 로드된다. 다시, DMA 전송이 시작되고 소스 레지스터와 연관된 제1 데이터는 데이터 레지스터(560)로 로드되고 패턴 레지스터(540)와 비교된다. 만약, 매치가 일어나면, 비교기(550)는 그 출력에 하이 신호를 생성하고, 이는 OR 게이트(590)의 출력에 하이 신호를 야기하고 송신의 종료를 표시한다. 그렇지 않으면, 레지스터(510 및 520)는 증분되고 송신된 데이터와 패턴 레지스터(540) 사이에 매치가 일어날 때까지 전송은 계속된다. 제3 모드에서, 드라이버(555 및 585)는 비교기(550 및 580)를 OR 게이트(590)와 연결하면서 활성화된다. 이 모드에서, 레지스터(510 및 520)는 각 시작 어드레스로 다시 로드된다. 또한, 최대 길이 값이 레지스터(530)에 로드되고, 패턴은 레지스터(540)에 로드된다. 데이터 전송은 상술한 바와 같이 발생한다. 그러나 송신의 종료는 비교기(550 또는 580) 중 어느 하나에 의해 생성된다.
DMA 컨트롤러(125)와 각 주변장치들이 활성인 반면, CPU(110)는 활성화 또는 중단 또는 슬립 모드에 있는 동안, 모든 DMA 전송 모드는 실행될 수 있다. 그러면, 파워 관리 유닛(175)은 더 많은 프로세스를 제어하기 위해 사용된다. 이를 위해, 신호(EofTrans)는 파워 관리 유닛(175)으로 전달될 수도 있다. 파워 관리 유닛(175)은 상기한 바와 같이 DMA 송신의 횟수에 따라, 또는 채널, 주변장치 등에 따라, CPU(110)로 보내지는 웨이크업 신호를 생성하도록 프로그램될 수 있는 각 레지스터를 포함할 수 있다. CPU(110)가 특정 DMA 전송의 데이터를 즉시 처리해야만 하는 프로그램된 모드에서, CPU(110)가 슬립 또는 중단 모드에 있다면, 파워 관리 유닛(175)은 각 DMA 전송을 완료하면 CPU(110)를 웨이크업시킬 것이다. 일단 CPU(110)는 그 프로세싱을 완료하고, 요청을 받으면, CPU(110)는 추가적인 프로그 래밍에 따라 슬립 또는 중단 모드로 다시 들어간다. 유사하게, 모든 진행중인 송신이 완료되면 DMA 컨트롤러(125)는 각 슬립 모드로 돌아간다.
또한, CPU(110)과 DMA 컨트롤러(125) 둘 다 활성일 때, 보통 DMA 컨트롤러(125)는 어떤 버스 액세스보다 우선권을 갖는다. 따라서 버스에서 데이터를 전송하는 동안, CPU(110)는 같은 버스에 액세스하지 못하게 저지되고 그리하여 기능정지(stall)된다. 버스에서 마스터가 될 수 있는 주변장치에게도 이는 마찬가지다. 그러나 DMA 컨트롤러(125)가 현재 사용하는 버스로 CPU 또는 다른 주변장치가 액세스하도록 허용되는 것은 때때로 중요하다. 이러한 액세스를 허용하기 위해, DMA 컨트롤러는 레지스터를 통해 현재의 전송을 중단하도록 프로그램 가능하다. 이를 위해, CPU(110)는 DMA 컨트롤러 내에, CPU(110)가 각 비트를 리셋할 때까지 DMA 컨트롤러(125)는 현재의 전송을 중단해야 한다는 것을 DMA 컨트롤러(125)에 표시하는 전용 비트를 설정할 수 있다. 제어 레지스터 내의 전용 비트를 사용하는 대신, 상기한 바와 같이, 전용 제어 라인이 DMA 컨트롤러를 현재의 데이터 송신으로부터 중단시키기 위해 사용될 수 있다. 더 나아가, 각 DMA 채널 및/또는 연관 DMA 유닛이 특정 우선순위에 할당될 수 있는 우선권 스킴이 사용될 수 있다. 중단 신호(suspend signal)는 특정 우선순위를 포함할 수 있다. 따라서 특정 우선순위 아래의 채널들만이 CPU의 요청에 따라 중단될 것이다.
따라서, 중단 신호를 검출하면, DMA 컨트롤러(125)는 현재의 데이터 전송, 즉 대기 비트/신호가 완료되었음을 검출하기 전에 시작되고 레지스터(410a/560)를 사용한 단일 데이터 전송을 종료한다. 다른 실시예로, 이미 시작된 전송은 전송을 완료하지 않고 포기된다. 이러한 이미 시작된 전송을 완료 또는 포기한 후에, DMA 컨트롤러는 다른 추가적인 전송으로부터 중단되지만 저장된 현상태를 유지한다. 달리 말해, DMA 컨트롤러가 중단 모드에 있는 동안 모든 레지스터 콘텐츠는 유지된다. 만약, 데이터 전송이 포기되면, DMA 컨트롤러는 포기된 트랜잭션을 반복할 수 있기 위해서, 전송 포기 전의 각 상태로 재설정된다. 중단 모드 동안, DMA 컨트롤러는 데이터를 전송하기 위해 사용되는 버스의 블로킹을 제거한다. 우선권 스킴에서, 중단 우선권(suspend priority)보다 더 높은 우선권을 갖는 DMA 트랜잭션들만이 완료될 것이고, 그리고 나서 DMA 컨트롤러는 중단 모드로 스위치한다. 따라서, CPU(110) 또는 주변장치는 각 버스로 완전 액세스하도록 허용되고 필요한 데이터를 전송할 수 있다. 각 전송을 완료하면, CPU(110)는 컨트롤 레지스터에 각 비트를 재설정하거나, 각 제어신호를 비활성화하거나 또는 최저 우선권을 갖는 중단 명령을 보냄으로써 중단 모드로부터 DMA를 해제할 수 있다. 이 메카니즘은 시스템 내에서 버스들로의 액세스에 더욱 유연한 제어를 허용한다. 따라서, 어떤 프로그램이 CPU 또는 주변장치의 즉각적인 주의를 요한다면, CPU는 제어 가능한 방법으로, CPU를 차단하는 현재의 송신으로부터 DMA 컨트롤러를 중단시킬 수 있고, CPU또는 주변장치는 필요한 액세스를 실행할 수 있다.
도 6A 및 6B는 DMA 컨트롤러(125)의 채널들로 사용되는 일정한 제어 레지스터들을 나타낸다. 예를 들면, 도 6A에 따르면, 레지스터(600)(DMACON)는 DMA 컨트롤러의 일반적인 기능들을 제어하기 위해 사용된다. 비트(15)는 DMA 컨트롤러(125)를 활성화하거나 비활성화하기 위해 사용된다. 이 비트를 통해, DMA 모듈은 인에이 블되거나 디스에이블 될 수 있다. 비트(14)는 설정된 디버그 모드에서 DMA를 "멈추기" 위해, 또는 설정되지 않은 디버그 모드에서 DMA 전송을 허용하기 위해 사용된다. 비트(13)는 설정된 슬립 모드에서 전송을 멈추기 위해 사용되고, 설정되지 않은 슬립 모드에서는 전송을 허용한다. 비트(12)는 상술한 것처럼, DMA 컨트롤러(125)의 중단을 역동적으로 제어하기 위해 사용된다. 이를 위해, DMA 전송을 중단하고 버스로 CPU 언인터럽티드 액세스(CPU uninterrupted access)를 허용하기 위해 비트(12)는 "1"로 설정될 수 있다. 비트(12)가 "0"으로 재설정될 때, DMA 컨트롤러(125)는 정상적으로 작동하고, 이것은 DMA 컨트롤러에 버스에 대한 우선권을 주고 이로써 CPU에 의한 어떤 액세스도 기능정지(stalling)시키고 인터럽팅(interrupting)하도록 한다. 우선권 메커니즘은 중단 명령보다 낮은 우선권을 갖는 DMA 채널들을 자동적으로 중단할 수 있다. 우선권 체계 역시 인터럽트 메커니즘을 통해 구체화될 수 있다.
레지스터(610)(CHXCON)는 개별적인 채널(X)을 제어한다. 각각의 데이터 송신이 복수의 트랜잭션을 구성할 수 있으므로, 비트(0~1)(CHPR[1:0])는 각 채널에 할당된 우선권을 정의하기 위해 사용될 수 있다. 이 실시예로, DMA 컨트롤러(125)는 여러 개의 채널(예를 들면, 4 또는 8 채널)을 가질 수 있다. 2 비트는 4개의 상이한 우선권을 정의할 수 있다. 실시예에 따라 더 우선권이 필요하면, 비트 필드(CHPR)는 각 비트의 양을 제공하기 위해 확장될 수 있다. 우선권 할당은 복수 채널 트랜잭션이 실행될 순서를 정하는데 사용된다. 예를 들면, 채널(0)이 최고 우선권을 가지고 다른 모든 채널들은 더 낮은 우선권을 갖는다면, 채널(0)을 위한 모든 트랜잭션은 신호(EofTrans)가 이 채널을 위해 생성되고 송신이 완료될 때까지, 실행될 것이다. 만약 복수 채널이 동일한 우선권을 갖는다면, 컨트롤러는 그 우선권에서 그 모든 채널들을 통해 순환할 것이다. 따라서, 채널(2 및 3)이 동일한 우선권을 갖고 더 높은 우선권이 존재하지 않는다면, 채널(2)을 위한 하나의 트랜잭션 후에, 이 채널에 대한 하나의 트랜잭션을 실행하기 위해 컨트롤러는 채널(3)로 스위치하고, 그런 후에 채널(2)로 다시 스위치하며, 이것은 이 두 채널에 대한 모든 트랜잭션이 완료될 때까지 계속된다. 더 낮은 우선권을 갖는 다른 채널이 계류중인 트랜잭션을 갖고 있는 동안 더 높은 우선권을 가진 채널이 전송을 요청한다면, 더 높은 우선권을 가진 채널로 움직이기 전에 그 트랜잭션은 완료될 것이다.
도 10은 8개의 채널을 가진 시스템 내의 멀티플 채널 전송의 예를 나타내는 것으로 그 중 채널(0, 1, 2 및 4)이 활성상태이다. 각 제어 라인을 주장함으로써 채널(0)은 제일 먼저 전송을 요청한다. 이 타임(t1)에서 트랜잭션은 계류 중이지 않다. 따라서, 전송 트랜잭션은 현재 활성상태인 채널을 식별하는 "Active CH": 이 라인에 표시된 것처럼 다음 사이클과 함께 시작한다. 채널(0)을 위한 전송 중에, 채널(4)은 전송을 요청한다. 다음 사이클 타임(t2)에서 채널(4)이 채널(0)보다 높은 우선권을 갖기 때문에, 채널(4)을 위한 전송 트랜잭션이 시작된다. 채널(4)을 위한 전송 중에, 채널(2)은 전송을 요청한다. 다음 사이클 타임(t3)에서 채널(2)가 채널(4)보다 높은 우선권을 갖기 때문에, 채널(2)을 위한 전송 트랜잭션이 시작된다. 채널(2)을 위한 순차적인 전송트랜잭션이 실행되는 동안, 채널(0 및 4)을 위한 전 송은 중단된다. 타임(t4)에서, 채널(2)을 위한 모든 전송은 완료되고 컨트롤러는 이때에는 최고의 우선권을 갖는 채널(4)을 위한 전송을 재개한다. 채널(1)이 채널(4)와 동일한 우선권을 갖는 타임(t5)에서, 채널(1)은 전송을 요청한다. 따라서, 컨트롤러는 그때부터 채널(1)을 통해 순환하고, 채널(4)은 그들의 송신이 완료되거나 더 높은 우선권 요청이 수신될 때까지 전송한다. 도 10에 나타난 예에서, 타임(t6)에서, 채널(1 및 4)을 위한 송신은 완료된다. 따라서, 컨트롤러는 남아있는 채널(0)을 위한 다음 전송트랜잭션으로 재개한다. 어느 때라도, 일정한 우선순위를 갖는 중단 명령은 DMA 컨트롤러에 의해 수신될 수 있다. 그러면, 더 높은 우선권을 가진 그런 채널들만 그들의 트랜잭션을 진행하도록 허용된다. 이런 식으로, 매우 유연한 중단 메커니즘은, 특정한 또는 모든 DMA 채널을 선택적으로 중단시키는 것을 허용하는 DMA 컨트롤러 내에서 구체화될 수 있다.
다시 도 6A를 참조하면, 레지스터(CHXCON), 비트(4~5)(ETMD[1:0])는 동작 모드를 정의하기 위해 사용된다. 예를 들면, 4개의 상이한 모드가 할당될 수 있다. 따라서, 이러한 비트는 예를 들면, 도 5와 관련하여 서술된 3개의 모드를 정의하는 것을 허용한다.
다시 도 6A를 참조하면, 레지스터(CHXCON), 비트(8(및 9))(ETWU)는, 예를 들면, 송신이 완료될 때 웨이크업 신호가 생성되는지를 정의하는데 사용된다. 만약 각각의 비트가 설정되면, 파워 관리 유닛(175)은 도 5에 도시된 것처럼 신호를 (예를 들면, OR 게이트(590)로부터) 수신할 수 있고 CPU(110)를 위한 각 웨이크업 신 호를 생성할 수 있다. 다른 방법으로, 도 6에 나타난 것처럼 비트 필드(ETWU[1:0])는 일단 각 채널에 대한 송신이 완료되면 생성될 인터럽트 신호의 인터럽트 레벨을 정의하기 위해 2 이상의 비트와 함께 사용될 수 있다. 이런 경우, 예를 들면, OR 게이트(590)의 출력 신호는 인터럽트 신호를 생성하기 위해 사용되었다. CPU(110)는 일정한 우선순위를 가진 인터럽트가 수신되면 웨이크업만 하도록 프로그램될 수 있었다. 달리 말하면, 슬립 모드에서 일정한 낮은 우선권 인터럽트는 무시될 수 있었다. 이런 방법은 웨이크업 메커니즘의 간결한 설계를 허용했었다. 송신된 데이터를 처리할 CPU를 필요로 하는 DMA 전송에는 CPU(110)를 웨이크업시키기 위해 더 높은 우선권이 할당되었던 반면, CPU(110)를 웨이크업시킬 것으로 예상되지 않는 DMA 송신에는 더 낮은 레벨 우선권이 할당되었다.
설정된 때 채널이 디스에이블되더라도, 비트(14)(CHAED)는 채널 시작/포기 등록을 허용하기 위해 사용된다. 설정된 때, 비트(15)(CHEN)는 각 채널을 개별적으로 인에이블하기 위해 사용된다. 따라서, 채널 전송은 이러한 비트를 사용하여 개별적으로 중단될 수 있다.
다시 도 6A를 참조하면, 비트(16~26)(CHOFFSET[8:0])는 DMA 전송의 완료보다 먼저 웨이크업 신호를 생성하기 위해 오프셋을 표시한다. 예를 들면, DMA 메모리 전송에서, 각 트랜잭션은 알려진 타임(t1)을 필요로 한다. 만약, CPU(110)를 위한 기동 시간 딜레이(activation time dalay)가 25 x t1이라면, 비트 필드(CHOFFSET)는 25로 프로그램될 수 있다. 도 5에 표시되어 있는 것과 같이 오프셋을 뺀 목적지 어드레스를 실제 소스 어드레스와 비교하기 위해 각 비교기(565) 및 레지스터(545) 가 제공될 수 있다. 비교 결과는 송신 신호의 종료와는 독립적으로 파워 관리 유닛(175)으로 입력된다.
도 6B는 각 채널의 인터럽트 상관 관계를 제어하는 각 채널을 위해 구체화될 수 있는 다른 레지스터(620)(DCHXECON)를 설명한다. 이를 위해, 비트(16~23)는 인터럽트 레벨로 프로그램될 수 있는 비트 필드(CHAIRQ)를 정의한다. 프로그램된 레벨보다 높은 인터럽트는 각 채널 전송의 포기를 야기할 것이다. 비트(8~15)는 비트 필드(CHSIRQ)를 정의하고 채널로의 DMA 전송 시작을 야기할 인터럽트 레벨을 정의하는데 사용된다. 비트(7)(CFORCE)는, "1"로 설정될 때 DMA 전송이 시작되도록 강제하기 위해 사용될 수 있다. 비트(6)(CABORT)는, "1"로 설정될 때 특정한 전송을 포기하기 위해 사용될 수 있다. 비트(5)(PATCEN)는 패턴 매치 상관 관계(pattern match functionality)를 설정하기 위해 사용될 수 있다. 따라서, 이 비트가 "1"로 설정되었다면, 상술한 것과 같은 패턴 매칭에 따라 전송은 포기될 것이다.
도 6B는 인터럽트가 제어되는 DMA 시스템에서 일정한 기능을 제어하는데 사용되는 또 다른 레지스터(630)(CHXINT)를 나타낸다. 이 레지스터는 일정한 인터럽트 신호의 생성 및 상관 관계를 프로그램하기 위해 사용될 수 있다. 비트(23)(CHSDIE)는 채널 소스 버퍼가 끝날 때를 표시하는 인터럽트를 인에이블한다. 비트(22)(CHSHIE)는 채널 소스 버퍼가 절반 빈(half empty, 버퍼의 중앙에 도달하는) 때를 표시하는 인터럽트를 인에이블한다. 비트(21)(CHDDIE)는 채널 목적지 버퍼가 끝날 때를 표시하는 인터럽트를 인에이블한다. 비트(20)(CHDHIE)는 채널 목적지 버퍼가 절반 빈(half empty, 버퍼의 중앙에 도달하는) 때를 표시하는 인터럽트 를 인에이블한다. 비트(19)(CHBCIF)는 블록 전송의 완료를 표시하는 인터럽트를 인에이블하기 위해 사용된다. 비트(18)(CHCCIE)는 셀 전송의 완료를 표시하는 인터럽트를 인에이블하기 위해 사용된다. 비트(17)(CHTAIE)는 전송 포기를 위한 인터럽트를 인에블하기 위해 사용된다. 비트(16)(CHERIE)는 채널 어드레스 에러를 위한 인터럽트를 인에이블하기 위해 사용된다. 비트(7)(CHSDIF)는 채널 소스 버퍼 포인터가 소스 버퍼의 끝에 도달했음을 표시하는 인터럽트 플래그 비트이다. 비트(6)(CHSHIF)는 채널 소스 버퍼 포인터가 소스 버퍼의 중앙에 도달했음을 표시하는 인터럽트 플래그 비트이다. 비트(5)(CHDDIF)는 채널 목적지 버퍼 포인터가 목적지 버퍼의 끝에 도달했음을 표시하는 인터럽트 플래그 비트이다. 비트(4)(CHDHIF)는 채널 목적지 버퍼 포인터가 목적지 버퍼의 중앙에 도달했음을 표시하는 인터럽트 플래그 비트이다. 비트(3)(CHBCIF)은 블록 전송이 완료되었음을 표시하는 인터럽트 플래그 비트이다. 비트(2)(CHCCIF)는 셀 전송이 완료되었음을 표시하는 인터럽트 플래그 비트이다. 비트(1)(CHTAIF)는 인터럽트 매칭(CHAIRQ)이 검출되었고 DMA 전송이 포기되었음을 표시하는 인터럽트 플래그 비트이다. 비트(0)(CHERIF)는 채널 어드레스 에러가 검출되었음을 표시하는 인터럽트 플래그 비트이다. 상술한 실시예에서, 셀 전송은 DMA 채널이 다른 이벤트를 기다리기 전에 전송을 개시했을 때, 전송된 바이트의 수를 설명한다. 따라서, 셀 전송은 단일 워드 전송의 프로그램가능한 숫자를 포함하고, 그 안에서 단일 워드 전송은 32비트 시스템에서 최대 4바이트로 구성될 수 있다. 블록 전송은 채널이 인에이블된 때 전송된 바이트의 수로 정의된다. 바이트 수는 독립적으로 프로그램될 수 있는 소스 사이즈 또는 목적 지 사이즈 어느 한쪽보다 클 수 있다. 따라서, 블록 전송은 1 이상의 셀 전송을 포함한다.
도 11은 CPU(110), DMA 컨트롤러(125), 인터럽트 컨트롤러(155) 및 인터럽트 버스(1110), 각각의 인터럽트 라인(1120, 1130, 및 1140)과 같은 전용 제어 신호들을 갖는 시스템의 실시예를 나타낸다. 일 실시예로, 인터럽트 버스(1110)는 상술한 바와 같이 상이한 인터럽트 신호를 생성하기 위해 사용될 수 있다. 인터럽트 컨트롤러(155)는 이러한 인터럽트를 제어하기 위해 사용될 수 있다. 그러나 다른 실시예로, 인터럽트 라인(1140)과 같은 직접 접속은 DMA 컨트롤러(125)와 CPU(110) 사이에서 사용될 수 있다. 또한, 개개의 인터럽트 신호(1120 및 1130) 또한 인터럽트 제어기(155)에 의해 사용되고 생성될 수 있다. 그러나 인터럽트 버스(1110)는 각각의 인터럽트 레벨을 표시하기 위해 모든 유닛들과 복수의 제어 라인들로부터 입력된 단일 인터럽트 신호를 사용하는 것으로 구체화될 수 있다. 예를 들어 상술한 바와 같이 복수의 레지스터를 사용하는 것은 CPU(110)및 DMA 컨트롤러(125)를 포함한 시스템을 매우 유연하게 제어할 수 있도록 한다. 일 실시예로, DMA 채널은 CPU 개입없이 데이터를 소스 레지스터로부터 목적지 레지스터로 전송할 것이다. 채널 소스 버퍼 시작 어드레스 레지스터는 소스 버퍼의 시작 어드레스를 정의한다. 채널 목적지 버퍼 시작 어드레스 레지스터는 목적지 버퍼의 시작을 정의한다. 소스 및 목적지 양쪽 버퍼들은 각 레지스터를 사용하여 독립적으로 설정할 수 있다. 셀 전송은 각 비트(CFORCE)를 설정하는 소프트웨어 또는 프로그램된 인터럽트 레벨(CHSIRQ)을 매치하는 인터럽트 이벤트에 의해 초기화될 수 있다. DMA 전송은 초 기화될 때 셀 전송을 수행할 것이다. 일 실시예로, 채널은 DMA 채널이 더 큰 소스 또는 목적지 버퍼를 전송할 때까지 인에이블된 채로 남아있는다. 각 채널은 버퍼 포인터를 사용하여 소스 및 목적지 버퍼로부터 전송된 워드들의 수에 대한 정보를 끊임없이 얻어낸다. 소스 또는 목적지 포인터가 버퍼 사이즈의 절반이거나 또는 소스 또는 목적지 카운터가 버퍼의 끝에 도달할 때, 버퍼 인터럽트는 생성될 수 있다. 다른 실시예로, 인터럽트는 인터럽트 컨트롤러(155)에 의해 제어될 수 있고, 복수의 우선순위를 허용하는 전용 인터럽트 버스를 통해서 또는 개별적으로 관리될 수 있다.
상기에서 언급한 바와 같이, 사용자는 중단 비트 SUS(도 6A참조)를 기록함으로써 DMA 모듈을 즉시 중단할 수도 있다. 이것은 어떤 추가적인 버스 트랜잭션으로부터 DMA를 즉각 중단할 것이다. 이 기능은 CPU가 완전한 버스 액세스를 갖도록 구체화할 수 있다. 비휘발성 메모리 모듈의 언록 시퀀스(unlock sequence)와 같은 오토믹 명령 시퀀스(automic instruction sequences)를 위해 CPU가 버스에 대한 완전한 제어를 필요로 할 때, DMA는 일반적으로 중단될 것이다. 개별적인 채널은 비트(CHEN)(도 6A, 레지스터(610) 참조)를 사용하여 중단될 수 있다. 만약 DMA 전송이 진행 중이고 비트(CHEN)가 삭제되면, 진행중인 트랜잭션은 완료될 것이고, 이 채널에서의 추가적인 트랜잭션은 중단될 것이다. 인에이블 비트(CHEN)를 삭제하는 것은 채널 포인터 또는 트랜잭션 카운터에 영향을 주지 않을 것이다. 채널이 중단된 동안, 사용자는 비트(CHAED)(도 6A, 레지스터(610) 참조)를 설정함으로써 포기 인터럽트와 같은 이벤트를 계속 수신하는 것을 택할 수 있다. 상기에서 언급한 바 와 같이, 우선권 스킴은 일정한 DMA 채널을 개별적으로 중단하기 위해 사용될 수도 있다.
도 7은 일 실시예에 따른 DMA 컨트롤러를 구비한 시스템의 슬립 모드의 실시예에 대한 흐름도를 나타낸다. 단계(710)에서, CPU(110)를 포함하여 슬립 모드로 들어갈 수 있는 모든 유닛들은 전력 소비를 최소화하기 위해 비활성화된다. 단계(720)에서, DMA 컨트롤러는 DMA 전송 요청이 수신되었는지를 확인한다. 만약 인터럽트가 구동되면, 이러한 요청에 대한 폴링(polling)은 필요하지 않고 루틴은 인터럽트 서비스 루틴으로 실행될 것이다. 대안으로, DMA 컨트롤러는 슬립 모드에 있을 수 있고 DMA 전송 요청 또는 인터럽트는 DMA 컨트롤러를 웨이크업시킬 것이다. 필요하다면, 단계(730)에서 DMA 송신을 위해 필요한 모든 유닛들은 각 웨이크업 신호를 통해 활성화될 것이다. 단계(740)에서, DMA 전송은 시작되고 제1 트랜잭션은 실행된다. 단계(750)에서, DMA 컨트롤러는 송신이 완료되었는지 확인한다. 그렇지 않으면, 루틴은 다른 트랜잭션을 실행하기 위해 단계(740)로 돌아간다. 만약 송신이 완료되면, 단계(750) 후에 루틴은 다른 방식으로 작동할 수 있다.
제1 실시예에 따르면, CPU(110)를 웨이크업시킬 것인지 여부를 확인하는 단계(760a)와 함께 루틴은 계속된다. 예를 들면, 만약 각 채널 제어 레지스터에서 각 비트가 설정되면, CPU(110)는 단계(770)에서 활성화될 것이다. 그렇지 않으면, 루틴은 단계(770)를 건너뛴다. 다른 방법으로, 미리 할당된 인터럽트 레벨은 송신 완료 후에 단계(760과 770)에서 생성될 수 있다.
제2 실시예에 따르면, 레지스터(DMA#)가 증분되는 단계(755)와 함께 루틴은 계속된다. 이로써, 단계(760b)에서 CPU(110)를 웨이크업시킬 것인지 여부를 결정하기 위해 DMA#>=n인지 확인한다. 예를 들면, 완료된 송신의 수가 미리 정의된 수(n)보다 낮으면, CPU(110)는 아직 활성화되지 않고 루틴은 단계(770)를 건너뛸 것이다. 상기 결정 단계들의 여러 조합들이 가능하고 필요한 시스템 디자인에 따라 구현될 수 있다.
제3 실시예에 따르면, 모든 장치들이 트랜잭션이 시작하기 전에 가졌었던 각각의 슬립 모드로 재진입하는 단계(770c)와 함께 루틴은 계속된다.
도 8은 DMA 컨트롤러를 위한 초기화 루틴의 실시예에 관한 흐름도를 나타낸다. 단계(810)에서, 패턴 모드를 사용할 것인지 여부에 대한 결정이 내려진다. 만약 사용하지 않는다면, 루틴은 소스 및 목적지 어드레스가 저장되는 단계(820)로 분기한다. 이어지는 단계(830)에서, 송신의 길이는 종료 어드레스 또는 블록 길이에 의해 결정된다. 이로써, 루틴은 종료한다. 만약 패턴 모드가 사용되면, 루틴은 소스 및 목적지가 설정되는 단계(840)로 진행한다. 단계(850)에서, 임의로 송신의 최장 길이는 설정되고 단계(860)에는 데이터 종료 패턴 값이 저장된다. 단계(870)에서 패턴 모드는 설정되고 초기화 루틴은 종료한다.
도 9는 도 7의 단계(740~750)와 같은 DMA 전송 루틴의 실시예에 대한 더욱 상세한 흐름도를 나타낸다. 시작 어드레스하의 소스 데이터가 판독되는 단계(910)에서 루틴은 시작한다. 단계(920)에서 이 데이터는 목적지 어드레스에 기록된다. 단계(930)에서, 패턴 매칭 모드가 설정되었는지 확인된다. 패턴 모드가 설정되지 않았다면, 소스 어드레스와 목적지 어드레스는 증분되고, 단계(960)에서 데이터 길 이 값은 감분한다. 단계(970)에서, 데이터 길이 값이 0인지 확인한다. 만약, 값이 0이면 전송은 종료되고, 그렇지 않으면 루틴은 단계(910)으로 돌아간다. 만약 패턴 모드가 설정되었다면, 루틴은 단계(930)로부터 데이터가 패턴에 매치하는지 여부를 확인하는 단계(950)으로 분기한다. 만약 매치가 일어나면, 전송은 종료한다. 그렇지 않으면, 루틴은 상기한 바와 같이 단계(940)로 계속된다.
요약하면, DMA 트랜잭션 동안 CPU가 웨이크업하지 않기 때문에, 프로세서는 웨이크업된 이유를 알기 위해 명령을 페치(fetch)하고 불필요하게 에너지를 소비하지 말아야 한다. 상기한 바와 같이, 페치(fetch)는 플래시 메모리에 액세스할 때, 전력을 소비한다. DMA 컨트롤러가 웨이크업된 때 프로그램 메모리 안팎으로 전송이 수행되지 않기 때문에, 프로그램 메모리는 파워 오프 상태를 유지할 수 있다. 따라서, DMA 트랜잭션에 필요한 구성 요소들만이 활성화되고 트랜잭션이 완료된 후에는 슬립 상태로 돌아갈 수 있다. 또한, 필요하다면, DMA 컨트롤러는 중단되도록 프로그램될 수 있다. 일반적인 컨트롤 레지스터 또는 우선권 스킴 내의 각 비트 또는 신호는 완전한 DMA 모듈을 중단하기 위해 사용할 수 있다. 그러나 개별적인 채널들은 역시 지정 채널 제어 레지스터 또는 우선권 스킴을 통해 중단될 수 있다. 따라서, 버스로의 액세스는 필요하다면 CPU를 위해 제거될 수 있다.
본 발명은 내재된 것들뿐만 아니라, 상술한 목표를 달성하고, 장점들을 얻을 수 있다. 본 발명이 특별히 더 나은 실시예를 참조하여 묘사되고, 서술되고 규정되 고 있지만, 이러한 참조가 본 발명의 제한을 의미하지 않고, 그러한 제한이 내포되어있지 않다. 본 발명은 당업자에게 일어날 수 있는 것처럼 형태 및 기능상 상당한 수정, 변경 및 등가물이 가능하다. 본 발명에서 묘사되고 서술된 더 나은 실시예들은 예시일 뿐이고 본 발명의 범위를 한정하지 않는다. 결론적으로, 본 발명은 모든 면에서 균등물에 대한 완전한 인식을 제공하는 첨부한 청구항의 정신과 범위에 의해서만 한정되어야 한다.

Claims (25)

  1. 시스템으로서,
    슬립 모드 또는 저전력 모드 및 활성화 모드에서 작동하도록 조작 가능한 중앙처리장치(CPU);
    슬립 모드 또는 저전력 모드 및 활성화 모드에서 작동하도록 조작 가능한 복수의 시스템 구성 요소들;
    상기 CPU로부터 독립적으로 작동하고, 슬립 모드 또는 저전력 모드 및 활성화 모드에서 작동하도록 조작 가능한 DMA 컨트롤러를 포함하고,
    상기 DMA 컨트롤러는 메모리 또는 주변장치로부터 또한 상기 메모리 또는 상기 주변장치로 데이터를 전송하도록 더 조작 가능하고, 상기 시스템이 슬립 모드 또는 저전력 모드일 때, 상기 DMA 컨트롤러만이 그리고 필요하다면 DMA 트랜잭션을 실행하는데 필요한 시스템 구성 요소들도 활성화 모드로 스위칭되는 것을 특징으로 하는 시스템.
  2. 제1항에 있어서,
    상기 DMA 컨트롤러와 상기 DMA 트랜잭션을 실행하는데 필요한 시스템 구성 요소들은 상기 DMA 트랜잭션이 완료된 후, 슬립 모드 또는 저전력 모드로 다시 스위칭되는 것을 특징으로 하는 시스템.
  3. 제1항에 있어서,
    상기 DMA 컨트롤러는 적어도 하나의 데이터 송신이 적어도 부분적으로 완료된 후, 상기 CPU의 상기 슬립 모드를 비활성화하기 위해 사용되는 신호를 생성하는 것을 특징으로 하는 시스템.
  4. 제1항에 있어서,
    복수의 저전력 동작 모드를 제어하기 위한 파워 관리 유닛을 더 포함하고, 상기 CPU 및 상기 DMA 컨트롤러는 서로 독립하여 저전력 모드로 설정될 수 있고, 제1 저전력 동작 모드 동안에는 상기 CPU는 감소된 클록 속도로 작동하고, 제2 저전력 동작 모드 동안에는 상기 CPU는 멈추는 것을 특징으로 하는 시스템.
  5. 제3항에 있어서,
    상기 CPU는 제1 인터럽트 레벨에 의해 저전력 동작 모드로부터 더 높은 전력 동작 모드로 스위칭되고, 상기 DMA 컨트롤러는 상기 제1 인터럽트 레벨과는 상이한 제2 인터럽트 레벨에 의해 저전력 동작 모드로부터 더 높은 전력 동작 모드로 스위칭되는 것을 특징으로 하는 시스템.
  6. 제1항에 있어서,
    상기 DMA 컨트롤러는 복수의 채널들을 포함하고, 각 채널은 데이터 전송이 완료되면 상기 신호가 생성되는지 여부를 결정하는 프로그램 가능 비트를 포함한 제어 레지스터를 포함하는 것을 특징으로 하는 시스템.
  7. 제6항에 있어서,
    상기 신호는 데이터 전송이 완료되면 인터럽트 신호이고, 상기 제어 레지스터는 상기 인터럽트의 우선 순위를 결정하는 프로그램 가능 비트 필드를 포함하는 것을 특징으로 하는 시스템.
  8. 제1항에 있어서,
    소정의 수를 저장하는 제1 레지스터, 완료된 DMA 송신의 수를 카운트하는 제2 레지스터 및, 상기 제1 레지스터와 상기 제2 레지스터의 콘텐트를 비교하는 비교기를 더 포함하고, 상기 신호는 상기 제2 레지스터의 콘텐트가 상기 제1 레지스터의 콘텐트와 동등하거나 더 높으면 생성되는 것을 특징으로 하는 시스템.
  9. 제1항에 있어서,
    상기 DMA 컨트롤러는 복수의 채널을 포함하고, 각 채널은 오프셋 비트 필드를 포함하는 제어 레지스터를 포함하며, 상기 신호는 소스 또는 목적지 어드레스가 종료 어드레스에서 상기 오프셋을 뺀 것과 동등하면 생성되는 것을 특징으로 하는 시스템.
  10. 제1항에 있어서,
    상기 DMA 컨트롤러는 복수의 채널들을 포함하고, 각 채널은 웨이크업 레지스터를 포함하며, 상기 신호는 소스 또는 목적지 어드레스가 상기 웨이크업 레지스터에 저장된 웨이크업 어드레스와 동등하면 생성되는 것을 특징으로 하는 시스템.
  11. 마이크로컨트롤러로서,
    제1 전력소비를 갖는 제1 동작 모드와 상기 제1 전력소비보다 낮은 제2 전력소비를 갖는 제2 동작 모드로 프로그램가능하게 조작 가능한 중앙처리장치;
    상기 중앙처리장치와 연결된 버스;
    상기 버스와 연결된 메모리;
    상기 버스와 연결된 주변장치; 및
    상기 버스와 연결된 직접 메모리 액세스(DMA) 컨트롤러를 포함하고,
    상기 DMA 컨트롤러는 상기 CPU가 상기 제2 동작 모드에 있는 동안 상기 메모리 또는 상기 주변장치로부터 또한 상기 메모리 또는 상기 주변장치로 데이터를 전송하기 위해 상기 CPU로부터 독립적으로 작동하고, 상기 DMA 컨트롤러는 데이터 전송이 완료되면 상기 제2 동작 모드에서 상기 제1 동작 모드로 상기 CPU를 스위칭하는 신호를 생성하는 것을 특징으로 하는 마이크로컨트롤러.
  12. 제11항에 있어서,
    복수의 저전력 동작 모드를 제어하는 파워 관리 유닛을 더 포함하고, 상기 DMA 컨트롤러 및 상기 CPU는 상기 저전력 동작 모드 중 하나에 독립적으로 놓여지 도록 조작 가능한 것을 특징으로 하는 마이크로컨트롤러.
  13. 중앙 처리 장치(CPU)를 포함하는 시스템 내에서 DMA 컨트롤러에 의해 소스에서 목적지로 복수의 데이터 송신을 독립적으로 실행하는 방법에 있어서,
    a) 적어도 상기 CPU 및 상기 DMA 컨트롤러를 고전력 소비 모드에서 저전력 소비 모드로 스위칭하는 단계;
    b) DMA 요청을 수신하는 단계;
    c) 상기 CPU가 상기 저전력 소비 모드에 남아있는 동안 상기 DMA 컨트롤러를 상기 고전력 소비 모드로 스위칭하는 단계;
    d) 상기 CPU가 상기 저전력 소비 모드를 유지하는 동안 상기 DMA 컨트롤러에 의해 DMA를 실행하는 단계; 및
    e) 적어도 상기 DMA 요청이 완료되면, 상기 DMA 컨트롤러를 상기 저전력 소비 모드로 스위칭하는 단계를 포함하는 것을 특징으로 하는 방법.
  14. 제13항에 있어서,
    상기 CPU는 상기 저전력 모드 중에 멈추는 것을 특징으로 하는 방법.
  15. 제13항에 있어서,
    상기 CPU는 상기 저전력 모드 중에 감소된 클록 속도로 작동하는 것을 특징으로 하는 방법.
  16. 제13항에 있어서,
    상기 DMA 컨트롤러는 복수의 채널을 포함하고 각 채널을 위한 우선 순위를 설정하도록 프로그램 가능할 수 있으며, 우선 순위는 채널을 위한 실행 선호를 정의하는 것을 특징으로 하는 방법.
  17. 제13항에 있어서,
    상기 DMA 컨트롤러는 복수의 채널을 포함하고, 각 채널은 채널에 대한 DMA 요청이 완료되면 상기 CPU를 상기 고전력 소비 모드로 스위칭하는 신호가 생성되는지를 결정하도록 프로그램 가능한 것을 특징으로 하는 방법.
  18. 제17항에 있어서,
    상기 신호는 데이터 전송이 완료되면 인터럽트 신호인 것을 특징으로 하는 방법.
  19. 제18항에 있어서,
    상기 인터럽트 신호의 우선 순위는 각 채널에 대하여 프로그램 가능한 것을 특징으로 하는 방법.
  20. 제13항에 있어서,
    상기 데이터 전송의 완료는 목표 종료 어드레스 또는 전송된 데이터를 매칭하는 미리 설정된 데이터에 의해 결정되는 것을 특징으로 하는 방법.
  21. 제13항에 있어서,
    단계 e)는 DMA 요청이 완료되면, 상기 CPU를 상기 고전력 소비 모드로 스위칭하게 하는 신호를 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  22. 제13항에 있어서,
    단계 e)는 복수의 DMA 요청이 완료되면, 상기 CPU를 상기 고전력 소비 모드로 스위칭하게 하는 신호를 생성하는 것을 포함하는 것을 포함하는 것을 특징으로 하는 방법.
  23. 제13항에 있어서,
    단계 a)에서 시스템은 상기 저전력 소비 모드에 놓여지고, 상기 DMA 요청을 수신한 후에 상기 DMA 컨트롤러 및 상기 DMA 요청을 필요로 하는 시스템 유닛은 동작 모드로 스위칭될 수 있는 것을 특징으로 하는 방법.
  24. CPU를 포함하는 시스템 내의 DMA 컨트롤러에 의해 소스로부터 목적지로 복수의 데이터 송신을 독립적으로 실행하는 방법으로서:
    a) 적어도 상기 CPU와 상기 DMA 컨트롤러를 고전력 소비 모드에서 저전력 소 비 모드로 스위칭하는 단계;
    b) DMA 요청을 수신하는 단계;
    c) 상기 DMA 컨트롤러를 동작 모드로 스위칭하는 단계; 및
    d) 상기 CPU가 저전력 소비 모드를 유지하는 동안 상기 DMA 컨트롤러에 의해 DMA를 실행하는 단계를 포함하는 것을 특징으로 하는 방법.
  25. 제24항에 있어서,
    e) 상기 DMA 요청이 완료되면, 상기 CPU를 상기 고전력 소비 모드로 스위칭하고 상기 DMA 컨트롤러를 상기 저전력 소비 모드로 스위칭하는 단계를 더 포함하는 것을 특징으로 하는 방법.
KR1020097014827A 2006-12-15 2007-12-14 직접 메모리 액세스 컨트롤러 KR101467439B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US87029506P 2006-12-15 2006-12-15
US87026706P 2006-12-15 2006-12-15
US60/870,295 2006-12-15
US60/870,267 2006-12-15
US11/928,415 2007-10-30
US11/928,415 US8117475B2 (en) 2006-12-15 2007-10-30 Direct memory access controller

Publications (2)

Publication Number Publication Date
KR20090091228A true KR20090091228A (ko) 2009-08-26
KR101467439B1 KR101467439B1 (ko) 2014-12-01

Family

ID=39247205

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097014827A KR101467439B1 (ko) 2006-12-15 2007-12-14 직접 메모리 액세스 컨트롤러

Country Status (6)

Country Link
US (1) US8117475B2 (ko)
EP (1) EP2100207B1 (ko)
KR (1) KR101467439B1 (ko)
AT (1) ATE534068T1 (ko)
TW (1) TWI437434B (ko)
WO (1) WO2008076893A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012015273A2 (en) * 2010-07-29 2012-02-02 Samsung Electronics Co., Ltd. Direct memory access device for multi-core system and operating method of the same
KR20150079788A (ko) * 2012-12-29 2015-07-08 인텔 코포레이션 저전력 모드에서의 통신 링크 및 네트워크 연결 관리
US9179287B2 (en) 2013-01-29 2015-11-03 Samsung Electronics Co., Ltd. Apparatus and method for managing memory of mobile terminal

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7571287B2 (en) * 2003-03-13 2009-08-04 Marvell World Trade Ltd. Multiport memory architecture, devices and systems including the same, and methods of using the same
US7934025B2 (en) * 2007-01-24 2011-04-26 Qualcomm Incorporated Content terminated DMA
US20080183959A1 (en) * 2007-01-29 2008-07-31 Pelley Perry H Memory system having global buffered control for memory modules
US7949817B1 (en) 2007-07-31 2011-05-24 Marvell International Ltd. Adaptive bus profiler
US7827352B2 (en) * 2007-09-18 2010-11-02 Intel Corporation Loading data from a memory card
US8001285B1 (en) * 2007-12-11 2011-08-16 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for reducing host processor activity during interaction with peripheral devices
US9766672B2 (en) 2007-12-28 2017-09-19 Intel Corporation System for managing power provided to a processor or memory based on a measured memory consumption characteristic
US7971084B2 (en) * 2007-12-28 2011-06-28 Intel Corporation Power management in electronic systems
TWI358635B (en) * 2008-02-26 2012-02-21 Mstar Semiconductor Inc Power managing method for a multi-microprocessor s
TWI372335B (en) * 2008-03-21 2012-09-11 Mstar Semiconductor Inc An electronic apparatus and an auto wake-up circuit
US8131915B1 (en) 2008-04-11 2012-03-06 Marvell Intentional Ltd. Modifying or overwriting data stored in flash memory
US8683085B1 (en) 2008-05-06 2014-03-25 Marvell International Ltd. USB interface configurable for host or device mode
US7895466B2 (en) * 2008-09-02 2011-02-22 Telefonaktiebolaget L M Ericsson (Publ) DMA assisted data backup and restore
KR101329014B1 (ko) 2008-10-30 2013-11-12 삼성전자주식회사 휴대단말에서 스위칭 회로의 모드 제어 방법 및 장치
WO2010090646A1 (en) 2009-02-09 2010-08-12 Hewlett-Packard Development Company, L.P. Bios controlled peripheral device port power
US8423710B1 (en) 2009-03-23 2013-04-16 Marvell International Ltd. Sequential writes to flash memory
US8213236B1 (en) 2009-04-21 2012-07-03 Marvell International Ltd. Flash memory
US8650425B2 (en) * 2009-05-06 2014-02-11 Via Technologies, Inc. Computer system for processing data in non-operational state and processing method thereof
KR20110013868A (ko) * 2009-08-04 2011-02-10 삼성전자주식회사 멀티 코멘드 셋 동작 및 우선처리 동작 기능을 갖는 멀티 프로세서 시스템
JP2011060066A (ja) * 2009-09-11 2011-03-24 Renesas Electronics Corp データ処理回路
US9229518B1 (en) * 2009-11-03 2016-01-05 Marvell International Ltd. Wake-on-frame for frame processing devices
JP4881425B2 (ja) 2009-11-30 2012-02-22 株式会社東芝 電子機器
US8688922B1 (en) 2010-03-11 2014-04-01 Marvell International Ltd Hardware-supported memory management
US8250253B2 (en) * 2010-06-23 2012-08-21 Intel Corporation Method, apparatus and system for reduced channel starvation in a DMA engine
US8756394B1 (en) 2010-07-07 2014-06-17 Marvell International Ltd. Multi-dimension memory timing tuner
US20120054379A1 (en) * 2010-08-30 2012-03-01 Kafai Leung Low power multi-touch scan control system
CN102402464A (zh) * 2010-09-17 2012-04-04 中国移动通信有限公司 一种智能卡中的存储器的数据擦写方法及智能卡
US20130205105A1 (en) * 2010-09-21 2013-08-08 Mitsubishi Electric Corporation Dma controller and data readout device
US8806232B2 (en) * 2010-09-30 2014-08-12 Apple Inc. Systems and method for hardware dynamic cache power management via bridge and power manager
FR2977690B1 (fr) * 2011-07-04 2013-08-02 St Microelectronics Rousset Procede d'initialisation de registres d'organes peripheriques dans un microcontroleur
US20120185714A1 (en) * 2011-12-15 2012-07-19 Jaewoong Chung Method, apparatus, and system for energy efficiency and energy conservation including code recirculation techniques
JP5805546B2 (ja) * 2012-01-13 2015-11-04 ルネサスエレクトロニクス株式会社 半導体装置
US9648138B1 (en) 2012-03-27 2017-05-09 Open Text Corporation Method and system for virtual server dormancy
US9319274B1 (en) * 2012-03-29 2016-04-19 Emc Corporation Method and system for dynamic provisioning using server dormant mode for virtual server dormancy
US8943238B2 (en) * 2012-05-18 2015-01-27 Atmel Corporation Operations using direct memory access
WO2014034820A1 (en) 2012-09-03 2014-03-06 Semiconductor Energy Laboratory Co., Ltd. Microcontroller
WO2014061761A1 (en) 2012-10-17 2014-04-24 Semiconductor Energy Laboratory Co., Ltd. Microcontroller and method for manufacturing the same
US20140189400A1 (en) * 2012-12-28 2014-07-03 Mediatek Inc. Processing system and associated method
EP2784662A1 (en) * 2013-03-28 2014-10-01 Dialog Semiconductor B.V. Electronic circuit for and method of executing an application program stored in a One-Time-Programmable (OTP) memory in a System on Chip (SoC)
US9417810B1 (en) * 2013-07-29 2016-08-16 Western Digital Technologies, Inc. Power management for a data storage system
US9516006B2 (en) 2013-10-23 2016-12-06 Google Inc. Re-programmable secure cryptographic device
JP6176058B2 (ja) 2013-10-29 2017-08-09 株式会社ソシオネクスト ダイレクトメモリアクセス制御装置、その制御方法、及び情報処理システム
US10079019B2 (en) 2013-11-12 2018-09-18 Apple Inc. Always-on audio control for mobile device
US9653079B2 (en) 2015-02-12 2017-05-16 Apple Inc. Clock switching in always-on component
US10499015B2 (en) * 2015-04-03 2019-12-03 Non Typical, Inc. Low-power radio frequency network for a system of cameras
CN104950775A (zh) * 2015-06-29 2015-09-30 小米科技有限责任公司 唤醒主mcu微控制单元的电路、方法及装置
US10101795B2 (en) 2015-11-10 2018-10-16 Wipro Limited System-on-chip (SoC) and method for dynamically optimizing power consumption in the SoC
CN109074336B (zh) * 2016-02-29 2022-12-09 瑞萨电子美国有限公司 用于对微控制器内的数据传输进行编程的系统和方法
TWI581092B (zh) * 2016-03-30 2017-05-01 威盛電子股份有限公司 記憶體裝置及其節能控制方法
TWI606459B (zh) * 2016-03-30 2017-11-21 威盛電子股份有限公司 記憶體裝置及其節能控制方法
DE102017200759A1 (de) * 2017-01-18 2018-07-19 Imc Messsysteme Gmbh Elektrische Anordnung
US10896070B2 (en) 2017-09-22 2021-01-19 Open Text Corporation Stateless content management system
GB201801572D0 (en) * 2018-01-31 2018-03-14 Nordic Semiconductor Asa Inter-processor communication
US11500440B2 (en) * 2019-03-15 2022-11-15 Intel Corporation Transferring network input/output (I/O) device control ownership between heterogeneous computing entities
US11940855B2 (en) * 2019-10-14 2024-03-26 Intel Corporation Apparatus and method for dynamic reallocation of processor power by throttling processor to allow an external device to operate
US11595560B2 (en) 2019-12-31 2023-02-28 Non Typical, Inc. Transmission and confirmation of camera configuration data and commands through a network
US11307636B2 (en) 2020-05-26 2022-04-19 Winbond Electronics Corp. Semiconductor storing apparatus and flash memory operation method
US11487343B2 (en) * 2020-05-26 2022-11-01 Winbond Electronics Corp. Semiconductor storing apparatus and flash memory operation method
FR3117226B1 (fr) * 2020-12-03 2022-10-21 St Microelectronics Rousset Procédé de gestion du fonctionnement d’un système sur puce, par exemple un microcontrôleur, et système sur puce correspondant

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4989113A (en) * 1987-03-13 1991-01-29 Texas Instruments Incorporated Data processing device having direct memory access with improved transfer control
DE69031807T2 (de) 1989-06-30 1998-04-09 Fujitsu Personal Syst Inc Methode zur Reduzierung der Leistungsaufnahme eines Rechners
US5461266A (en) * 1990-11-27 1995-10-24 Hitachi, Ltd. Power consumption control system
US5379381A (en) 1991-08-12 1995-01-03 Stratus Computer, Inc. System using separate transfer circuits for performing different transfer operations respectively and scanning I/O devices status upon absence of both operations
US5367639A (en) * 1991-12-30 1994-11-22 Sun Microsystems, Inc. Method and apparatus for dynamic chaining of DMA operations without incurring race conditions
JPH05250305A (ja) * 1992-03-06 1993-09-28 Mitsubishi Electric Corp データ転送制御方式
US5574575A (en) * 1992-06-18 1996-11-12 Brother Kogyo Kabushiki Kaisha Facsimile machine
DE69517712T2 (de) * 1994-01-10 2001-03-08 Sun Microsystems Inc Verfahren und Vorrichtung zur Reduzierung der Leistungsaufnahme in einem Rechnersystem
US5828856A (en) * 1994-01-28 1998-10-27 Apple Computer, Inc. Dual bus concurrent multi-channel direct memory access controller and method
US5835733A (en) * 1994-12-22 1998-11-10 Texas Instruments Incorporated Method and apparatus for implementing a single DMA controller to perform DMA operations for devices on multiple buses in docking stations, notebook and desktop computer system
KR0135904B1 (ko) * 1994-12-30 1998-06-15 김광호 중앙처리장치의 버스 미사용시 전력소모 방지장치 및 그 방법
US5826106A (en) * 1995-05-26 1998-10-20 National Semiconductor Corporation High performance multifunction direct memory access (DMA) controller
JPH0954748A (ja) * 1995-08-11 1997-02-25 Toshiba Corp コンピュータシステムおよびこのシステムに設けられるdmaコントローラ
JPH1040211A (ja) * 1996-04-30 1998-02-13 Texas Instr Inc <Ti> パケット化されたデータ通信インタフェース機器内での直接メモリアクセス優先順位を割り当てるための方法ならびにdmaチャンネル回路
JP2996183B2 (ja) 1996-08-16 1999-12-27 日本電気株式会社 Dma機能を備えたデータ処理装置
US5896550A (en) * 1997-04-03 1999-04-20 Vlsi Technology, Inc. Direct memory access controller with full read/write capability
US6154793A (en) * 1997-04-30 2000-11-28 Zilog, Inc. DMA with dynamically assigned channels, flexible block boundary notification and recording, type code checking and updating, commands, and status reporting
JP3524337B2 (ja) * 1997-07-25 2004-05-10 キヤノン株式会社 バス管理装置及びそれを有する複合機器の制御装置
US6167465A (en) * 1998-05-20 2000-12-26 Aureal Semiconductor, Inc. System for managing multiple DMA connections between a peripheral device and a memory and performing real-time operations on data carried by a selected DMA connection
US6467009B1 (en) * 1998-10-14 2002-10-15 Triscend Corporation Configurable processor system unit
US6763448B1 (en) * 1999-02-16 2004-07-13 Renesas Technology Corp. Microcomputer and microcomputer system
JP2000315186A (ja) * 1999-05-06 2000-11-14 Hitachi Ltd 半導体装置
DE69924475T2 (de) * 1999-06-09 2006-02-16 Texas Instruments Inc., Dallas Multikanal-DMA mit Datenverkehrplanung auf die Ausgänge
US6701405B1 (en) * 1999-10-01 2004-03-02 Hitachi, Ltd. DMA handshake protocol
US6560712B1 (en) * 1999-11-16 2003-05-06 Motorola, Inc. Bus arbitration in low power system
JP2001180083A (ja) * 1999-12-24 2001-07-03 Fuji Xerox Co Ltd 印刷装置
US7245945B2 (en) * 2002-11-05 2007-07-17 Intel Corporation Portable computing device adapted to update display information while in a low power mode
US7281103B2 (en) * 2003-10-01 2007-10-09 Kabushiki Kaisha Toshiba Microcomputer with a security function for accessing a program storage memory
US20050149771A1 (en) * 2003-11-07 2005-07-07 Seiko Epson Corporation Processor control circuit, information processing apparatus, and central processing unit
DE102004032237A1 (de) 2004-07-02 2006-01-26 Infineon Technologies Ag Konfiguration von Bauelementen bei einem Übergang von einem Niedrigleistungs-Betriebsmodus in einen Normalleistungs-Betriebsmodus
US7502896B2 (en) * 2005-06-07 2009-03-10 Stmicroelectronics Pvt. Ltd. System and method for maintaining the integrity of data transfers in shared memory configurations
JP4530971B2 (ja) * 2005-11-07 2010-08-25 株式会社ソニー・コンピュータエンタテインメント 起動処理装置、dma転送システム、dma転送方法
EP1785811B1 (en) * 2005-11-14 2018-12-05 Texas Instruments Incorporated Memory information transfer power management
US20070162643A1 (en) * 2005-12-19 2007-07-12 Ivo Tousek Fixed offset scatter/gather dma controller and method thereof

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012015273A2 (en) * 2010-07-29 2012-02-02 Samsung Electronics Co., Ltd. Direct memory access device for multi-core system and operating method of the same
WO2012015273A3 (en) * 2010-07-29 2012-04-19 Samsung Electronics Co., Ltd. Direct memory access device for multi-core system and operating method of the same
US8806082B2 (en) 2010-07-29 2014-08-12 Samsung Electronics Co., Ltd. Direct memory access device for multi-core system and operating method of the same
KR20150079788A (ko) * 2012-12-29 2015-07-08 인텔 코포레이션 저전력 모드에서의 통신 링크 및 네트워크 연결 관리
US9179287B2 (en) 2013-01-29 2015-11-03 Samsung Electronics Co., Ltd. Apparatus and method for managing memory of mobile terminal

Also Published As

Publication number Publication date
EP2100207A1 (en) 2009-09-16
ATE534068T1 (de) 2011-12-15
US20080148083A1 (en) 2008-06-19
EP2100207B1 (en) 2011-11-16
KR101467439B1 (ko) 2014-12-01
TWI437434B (zh) 2014-05-11
US8117475B2 (en) 2012-02-14
TW200844750A (en) 2008-11-16
WO2008076893A1 (en) 2008-06-26

Similar Documents

Publication Publication Date Title
KR101467439B1 (ko) 직접 메모리 액세스 컨트롤러
KR101386128B1 (ko) 직접 메모리 액세스 컨트롤러
US20200159279A1 (en) Low power autonomous peripheral management
CN101558366B (zh) 直接存储器存取控制器
US10949249B2 (en) Task processor
US4737932A (en) Processor
US6895530B2 (en) Method and apparatus for controlling a data processing system during debug
US5625807A (en) System and method for enabling and disabling a clock run function to control a peripheral bus clock signal
US5619729A (en) Power management of DMA slaves with DMA traps
US20160267047A1 (en) Low-Pin Microcontroller Device With Multiple Independent Microcontrollers
US10261927B2 (en) DMA controller with trigger sequence generator
US11392407B2 (en) Semiconductor device
WO2012156995A2 (en) Fetch less instruction processing (flip) computer architecture for central processing units (cpu)
KR101285665B1 (ko) 수면 모드를 지원하는 멀티 코어 시스템 온 칩
JP2005346708A (ja) データ処理装置およびそのポーリング・ループ管理方法
JPH0991246A (ja) バス制御装置及びその方法
JP2000181855A (ja) Dma転送システム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20181112

Year of fee payment: 5