KR20040040458A - 시스템 온 칩에 대한 분산형 직접 메모리 액세스 방법 및장치 - Google Patents

시스템 온 칩에 대한 분산형 직접 메모리 액세스 방법 및장치 Download PDF

Info

Publication number
KR20040040458A
KR20040040458A KR10-2004-7003435A KR20047003435A KR20040040458A KR 20040040458 A KR20040040458 A KR 20040040458A KR 20047003435 A KR20047003435 A KR 20047003435A KR 20040040458 A KR20040040458 A KR 20040040458A
Authority
KR
South Korea
Prior art keywords
data
memory
memory access
direct memory
dma
Prior art date
Application number
KR10-2004-7003435A
Other languages
English (en)
Other versions
KR100801763B1 (ko
Inventor
구마 가나패씨
루반 가나패씨필라이
샤린 샤
조지 모우싸
에프 3세 필호워얼
루치어 샤
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 KR20040040458A publication Critical patent/KR20040040458A/ko
Application granted granted Critical
Publication of KR100801763B1 publication Critical patent/KR100801763B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip

Abstract

분산형 직접 메모리 액세스(DMA; Direct Memory Access) 방법, 장치 및 시스템이 시스템 온 칩(SOC) 내에서 제공된다. DMA 제어기 유닛은 글로벌 버퍼 메모리로 직접 메모리 액세스를 원하는 기능 모듈에 분산된다. DMA 제어기 유닛은 어느 기능 블록이 글로벌 버퍼 메모리에 대한 액세스를 가질지를 중재한다. 기능 모듈은 직접 메모리 액세스가 일어나는 시스템 버스에 대하여 인터페이스(interface)한다. 직접 메모리 액세스의 대상이 되는 글로벌 버퍼 메모리는 시스템 버스에 연결된다. 버스 중재기(bus arbitrator)는 어느 기능 모듈이 직접 메모리 액세스를 수행하기 위한 시스템 버스에 대한 액세스를 가질지를 중재하는 데 이용된다. 일단 버스 중재기에 의해 시스템 버스에 대한 액세스를 가질 기능 모듈이 선택되면, 그 기능 모듈은 글로벌 버퍼 메모리에 대한 DMA 루틴(routine)을 설정할 수 있다.

Description

시스템 온 칩에 대한 분산형 직접 메모리 액세스 방법 및 장치{METHOD AND APPARATUS FOR DISTRIBUTED DIRECT MEMORY ACCESS FOR SYSTEMS ON CHIP}
컴퓨터 시스템 내에서, 시스템 버스(system bus)를 통해 주 메모리 또는 중앙 처리 유닛(CPU; Central Processing Unit)의 레지스터(register)와 입/출력(I/O) 장치들 사이에 데이터를 전송하는 방법에는 일반적으로 세 가지가 있다. 이들 세 가지 방법은 프로그램에 의한 I/O(programmed I/O), 인터럽트 구동 I/O(interrupt driven I/O) 및 직접 메모리 액세스(DMA; Direct Memory Access)이다. 프로그램에 의한 I/O 및 인터럽트 구동 I/O의 경우, CPU는 시스템 버스를 통해 I/O 장치로 데이터를 전송하기 위해 주 메모리로부터 데이터를 획득하고, 주 메모리로 데이터를 전송하기 위해 I/O 장치로부터 데이터를 획득하는 역할을 한다. 따라서 프로그램에 의한 I/O 및 인터럽트 구동 I/O는 CPU가 직접 관련될 것을 필요로 하며, 이는 CPU가 데이터 전송 관리에 구속되어 다른 더욱 중요한 기능들을 수행할 수 없도록 만든다.
이에 직접 메모리 액세스(DMA)가 도입되었으며, 이는 데이터 전송에 있어 CPU의 관여 정도를 경감시키기 위한 집중형 DMA 제어기(centralized DMA controller)를 필요로 한다. 집중형 DMA 제어는 잘 알려져 있다. 집중형 DMA 제어기는 본질적으로 시스템 버스를 통해 주 메모리와 I/O 장치간에 데이터를 전송하는 역할을 담당한다. DMA 액세스에 있어서, CPU의 관여 정도는 DMA 전송을 처음으로 셋업(set up)하고 DMA 전송의 완료시에 이를 정리하는 정도로 줄어들게 된다. 실제 DMA 데이터 전송이 DMA 제어기에 의해 제어되는 동안, CPU는 다른 계산 또는 기능을 수행할 수 있다. 결과적으로, DMA 데이터 전송은 프로그램에 의한 I/O 또는 인터럽트 구동 I/O 방법보다 더욱 효율적이다. 시스템 버스 상에서의 충돌을 방지하기 위해, DMA 제어는 집중형 DMA 제어기로 집중화되었다. 집중형 DMA 제어기는 부착된 I/O 장치들 중 한 번에 하나에 대해서만 그 I/O 장치와 주 메모리 사이에서의 데이터 전송을 허용함으로써, 부착된 I/O 장치들에 대하여 시스템 버스의 중재(arbitration)를 수행한다. 또한 복수의 I/O 장치가 DMA 액세스를 동시에 수행하고자 하는 경우, 집중형 DMA 제어기는 소정의 우선 순위 부여 방법을 수행한다. 결과적으로, 집중형 DMA 제어기의 제어 로직(control logic)은 다소 복잡할 수 있으며, 이로 인해 집중형 DMA 제어기의 회로에 있어서 블록(block) 크기가 다소 커질 수 있다.
개선된 반도체 제조 기술로 인해 집적 회로의 예컨대 트랜지스터 채널 길이와 같은 피처(feature) 크기가 줄어들게 되었다. 작아진 트랜지스터로 인해 더욱 복잡한 집적 회로 칩을 제조할 수 있게 됨에 따라, 기능 시스템(functionalsystem)이 단일 집적 회로 칩 내에 형성될 수 있고, 만족스러운 수율(yield)을 낳는다. 실질적으로 완성된 시스템인 이러한 기능 시스템은 종종 시스템 온 칩(SOC; System On Chip)으로 일컬어진다. SOC에는 메모리로의 또는 메모리로부터의 데이터 전송을 필요로 하는 기능 블록이 다수 존재할 수 있다. 또한 SOC를 제조하는 경우에 이를 유연성 있게 만들어, 더욱 많은 데이터의 취급 및/또는 다른 유형의 기능 블록의 추가를 위해 기능 블록의 수가 확장될 수 있게끔 하는 것이 종종 바람직하다. 기능 블록의 수가 증가함에 따라, SOC에서의 잠재적인 중재 문제가 증가한다. 이러한 경우 집중형 DMA 제어기를 사용하는 것의 단점은, 확장을 위해 제어 로직이 다시 설계될 필요가 있을 수 있다는 점이다.
본 발명은 일반적으로 직접 메모리 액세스(direct memory access) 제어기에 관한 것이다. 더욱 구체적으로, 본 발명은 시스템 온 칩(system on chip)에 대한 직접 메모리 액세스에 관한 것이다.
도 1은 본 발명의 시스템 온 칩의 블록도.
도 2는 본 발명의 온칩 VOP(Voice Over Packet) 시스템의 상세 블록도.
도 3은 도 2에 도시된 코어(core) DMA 제어기를 포함하는 코어 프로세서의 예를 나타낸 블록도.
도 4는 시작 및 끝 DMA 어드레스 위치를 갖는 DMA 데이터를 포함하는 글로벌 버퍼 메모리의 예시 메모리 맵 및 글로벌 버퍼 메모리에 저장된 DMA 데이터를 기술하는 DMA 기술자(descriptor) 테이블.
도 5는 도 2의 직렬 DMA 제어기의 블록도.
도 6a는 도 2의 멀티채널(multichannel) 직렬 포트를 통해 송신 또는 수신되는 데이터 프레임의 직렬 데이터 스트림(stream)의 예를 나타낸 도면.
도 6b는 도 5의 TDM 리매퍼(remapper) 메모리에 의해 수행되는 멀티채널 직렬 포트에 대한 데이터 프레임의 리매핑(remapping)의 예를 나타낸 도면.
도 7은 도 2의 코어 DMA 제어기의 블록도.
도 8은 도 2의 코어 DMA 제어기의 블록도.
도면에서 동일한 참조 번호 및 명칭은 마찬가지의 기능을 제공하는 동일한 요소이다. 참조 지정 번호 뒤의 문자는 그 참조 지정 번호를 갖는 요소의 예를 나타낸다.
본 발명의 이하의 상세한 설명에서는, 본 발명의 완전한 이해를 제공하기 위해 다수의 특정한 세부 사항에 관하여 설명하고 있다. 그러나 본 발명이 이러한 특정한 세부 사항 없이도 실시될 수 있음은 본 기술 분야의 당업자에게 있어 자명하다. 다른 경우에 있어서, 본 발명의 태양을 불필요하게 불명료하게 하지 않도록 하기 위해 잘 알려진 방법, 절차(procedure), 콤포넌트(component) 및 회로에 대해서는 상세히 기술하지 않았다.
분산형 직접 메모리 액세스(DMA; Direct Memory Access) 방법, 장치 및 시스템이 시스템 온 칩(SOC) 내에서 제공된다. DMA 제어기 유닛은 글로벌 버퍼 메모리(global buffer memory)에 대한 직접 메모리 액세스를 원하는 기능 모듈들에게 분산된다. DMA 제어기 유닛은 어느 기능 블록이 글로벌 버퍼 메모리에 대한 액세스를 가질지를 중재한다. 기능 모듈은 직접 메모리 액세스가 일어나는 시스템 버스에 대하여 인터페이스(interface)한다. 직접 메모리 액세스의 대상이 되는 글로벌 버퍼 메모리는 시스템 버스에 연결된다. 버스 중재기(bus arbitrator)는 직접 메모리 액세스를 수행하기 위하여, 시스템 버스에 대한 액세스를 어느 기능 모듈이 가질지를 중재하는 데 이용된다. 일단 버스 중재기에 의해 시스템 버스에 대한 액세스를 가질 기능 모듈이 선택되면, 그 기능 모듈은 글로벌 버퍼 메모리에 대한 DMA 루틴(routine)을 설정할 수 있다.
이제 도 1을 참조하면, 시스템 온 칩(SOC)의 블록도가 도시되어 있다. 일 실시예의 시스템 온 칩(SOC; 100)은 VOP(Voice Over Packet) 시스템으로서, 전화 네트워크(telephone network)에 대한 인터페이스를 위한 멀티채널 전이중 직렬 포트(multichannel full duplex serial port) 및 패킷 네트워크(packet network)에 대한 다른 접속을 통한 인터페이스를 위한 다른 포트를 포함한다. 일 실시예에서 전화 네트워크는 PSTN 전화 네트워크이며, TDM 직렬 데이터 스트림을 갖는다.
이제 도 2를 참조하면, VOP 시스템 온 칩(VOP SOC; 100)의 상세한 블록도가 도시되어 있다. VOP 시스템 온 칩(100)은 글로벌 버퍼 메모리(210)에 연결된 중앙 시스템 버스(200)를 갖는다. 시스템 버스(200)는 표준화된 버스 시스템으로서, 어드레스 신호, 데이터 신호 및 제어 신호를 위한 전도성 트레이스(trace) 또는 와이어(wire)를 포함한다. 버스는 어드레스 라인(address line)들을 이용하여 DMA 전송을 수행한다. 버스는 다수의 DMA 트랜잭션(transaction)을 동시에 멀티플렉싱(multiplexing)하며, 한 번에 하나의 트랜잭션만을 처리한다. 따라서 버스는 이러한 전송(판독 또는 기록)을 위해 일단의 어드레스 라인들을 필요로 한다. 어드레스 라인 및 데이터 라인은 별개이다. 데이터 신호에 대한 시스템 버스(200)의 버스 폭은 일 실시예에서 64 비트의 데이터 시스템 버스 폭(DSBW; Data System Bus Width)을 갖는다. 64 비트의 데이터 시스템 폭은 고대역(high bandwidth) 데이터 전송을 용이하게 한다. 시스템 온 칩(100)의 기능 모듈에 의한 중앙 시스템 버스(200)에 대한 액세스는, 시스템 버스(200)에 연결된 버스 중재기들(201A 내지 201N)에 의해, 일정한 프로그램 가능한 중재 프로토콜(programmable arbitration protocol)을 이용하여 중재된다. 버스 중재기들(201A 내지 201N)에 의해 제공되는 일정한 중재 프로토콜 및 표준화된 시스템 버스(200)는 시스템 버스(200)의 중재를 간단하게 해 준다. 글로벌 버퍼 메모리(210)에 대한 액세스를 취득하기 위해서, 시스템 온 칩(100)의 기능 모듈은 우선 버스 중재기들(201A 내지 201N)을 통하여 시스템 버스(200)에 대한 액세스를 취득해야 한다. 시스템 버스(200)에 대한 순환형(round-robin) 중재 방식은, 각각의 분산형 DMA 마스터 제어기(203A 내지 203N, 207 및 215)가 시스템 버스(200)에 자주 액세스하고, 그 시점에 글로벌 메모리(210)를 액세스할 수 있도록 보장해 준다.
VOP SOC(100)에 대한 모든 코드, 데이터 및 상태 정보는 중앙 저장소(central depository)로서 작용하는 글로벌 버퍼 메모리(210) 내에 저장되고 그로부터 판독된다. 따라서 데이터 대역폭이 중요하며, 본 발명의 분산형 DMA 시스템을 이용하여 시스템 버스(200)를 통해 글로벌 버퍼 메모리(210) 안팎으로 정보를 효율적으로 전송하는 것이 바람직하다. 버스 중재기는 시스템 버스에 대한 액세스를 중재하지만, 분산형 DMA 시스템은 글로벌 버퍼 메모리(210)에 대한 액세스를 중재한다. 글로벌 메모리(210)는 시스템 온 칩(100)의 분산형 DMA 마스터 제어기에 대하여 슬레이브(slave)이며, 슬레이브 DMA 인터페이스를 포함한다. 글로벌 버퍼 메모리(210)는 분산형 DMA 제어기가 개시한, 시스템 버스(200)를 통한 DMA 전송 요청에 대하여 응답한다. 분산형 DMA 시스템은 기능 모듈이 글로벌 버퍼 메모리에 대한 그들 자신의 어드레스를 생성할 수 있도록 해 주며, 큰 데이터 블록들을 액세스하기 위한 명령어가 매 주기마다 지속적으로 전달되는 것을 막는다. DMA에 의해 어드레스가 자동으로 생성되고 복수의 데이터 블록들 또는 바이트들이 차례로 액세스되는 동안에 레지스터가 셋업된다. 글로벌 버퍼 메모리(210)에 대한 직접 메모리 액세스를 원하는 시스템 온 칩(100)의 기능 모듈은, 하나 이상의 신호 프로세서(202A 내지 202N), 전화 네트워크에 대한 인터페이스를 위한 멀티채널 전이중 직렬 포트(206) 및 호스트 및 패킷 네트워크에 대한 인터페이스를 위한 호스트 포트(214)를 포함한다. SOC(100)의 글로벌 버퍼 메모리(210)는 중앙 시스템 버스(200)에 직접 연결된다.
글로벌 버퍼 메모리(210)에 대한 직접 메모리 액세스를 원하는 시스템 온 칩(100)의 모듈은, 마이크로 제어기(microcontroller; 223)가 없는 경우 자신만의 DMA 제어기를 갖는다. 마이크로 제어기(223)는 버스 인터페이스(224) 및 버스 중재기(201C)를 통해 시스템 버스(200)에 연결된다. 마이크로 제어기(223)는 작업(task)의 스케줄링(scheduling)과 직렬 포트(206) 및 호스트 포트(214)로부터의 데이터 흐름(flow)을 조정하는 시스템 또는 실행 관리자(executive manager)로서 작용한다. 이는 DMA 제어기를 필요로 하지 않으나, 글로벌 메모리(210)로 라우팅(routing)되는 명령어 및 데이터에 대한 캐시 라인 미스(cache line miss)들을 생성한다. 마이크로 제어기는 캐시 라인 미스의 생성을 야기하는 데이터 캐시(227) 및 이와 관련된 명령어 캐시(228)를 갖는다. 마이크로 제어기는 DMA 기술자(descriptor)를 셋업하고, SOC(100)의 개개의 기능 유닛에게 DMA 전송을 수행하도록 명령한다. 버스 중재기(201C) 및 버스 인터페이스(224)는 서로 통신함으로써 마이크로 제어기가 시스템 버스에 대한 액세스를 취득하도록 한다. 마이크로 제어기(223)는 작업 제어를 제공하고, 데이터의 교통 경찰과 같이 작용하여 글로벌 버퍼 메모리(210) 안팎으로의 데이터 전송을 조정한다. 마이크로 제어기(223)는 DMA 데이터 전송에 관하여 글로벌 버퍼 메모리 내에 DMA 기술자 리스트를 기록함으로써 DMA를 셋업한다. 이는 그 후 기능 유닛과 통신하여, DMA 기술자 리스트의 시작 어드레스를 가리킴으로써 데이터의 DMA를 수행한다. 이어서 기능 유닛은 DMA 기술자 리스트를 판독하여 데이터의 DMA를 수행한다. DMA 기술자 리스트는 데이터에 대한 시작 어드레스 및 전송될 바이트의 수를 포함한다. DMA 기술자 리스트는 이하 상세히 설명할 다른 정보를 포함한다. 마이크로 제어기(223) 외에도, 하나 이상의 코어 프로세서(202A 내지 202N)는 또한 글로벌 메모리(210)내에 DMA 기술자를 형성할 수 있으며, 특히 코어 DMA 전송의 경우에 그러하다. 예컨대 마이크로 제어기(223)는 DMA를 하나 이상의 프로세서(202A 내지 202N)에 대하여 셋업함으로써, 소정의 통신 채널에 대한 데이터 프레임 또는 블록을 처리한다. 이는 글로벌 버퍼 메모리에 있는 기술자 리스트의 시작 어드레스를 하나의 코어 프로세서에게 통보한다. 상기 하나의 코어 프로세서는 기술자 리스트에 있는 각 라인을 통해 판독하고, 글로벌 버퍼 메모리로부터 코어 프로세서의 로컬 메모리(local memory)로의 데이터의 DMA를 수행한다.
멀티채널 직렬 포트(206)는 복수의 전이중 TDM(Time Division Multiplexed) 원격통신(telecommunication) 채널에 대하여 인터페이스함으로써, VOP SOC(100)가 복수의 통신 채널을 지원하도록 한다. 멀티채널 직렬 포트(206)는 약 512 채널의 복수의 통신 채널 각각에 대하여 수신기 및 송신기로서 작용한다. 전화 네트워크로부터 수신된 데이터는 코어 프로세서들(202A 내지 202N)에 의해 처리되도록 멀티채널 직렬 포트(206)에 의해 글로벌 버퍼 메모리(210)에 저장된다. 코어 프로세서들(202A 내지 202N)에 의해 처리된 후 전화 네트워크 상으로 전송될 데이터는, 멀티채널 직렬 포트(206)에 의해 글로벌 버퍼 메모리(210)로부터 검색(retrieve)된다. 글로벌 버퍼 메모리를 직접 액세스하기 위해, 멀티채널 직렬 포트(206)는 버스 중재기(201A)에 연결된 직렬 DMA 제어기(207)를 포함한다.
호스트 포트(214)는 호스트에 연결되어, 파워업(power up) 시에 외부 데이터를 수신하고, 자신이 처리할 통신 채널에 관한 정보를 셋업한다. 또한 호스트 포트(214)는 패킷 네트워크에 연결되어 복수의 통신 채널에 대하여 데이터의 패킷 페이로드(payload)를 전이중(full duplex) 방식으로 송수신(transceive)한다. 패킷 네트워크로부터 수신된 데이터는 코어 프로세서들(202A 내지 202N)에 의해 처리되도록 호스트 포트(214)에 의해 글로벌 버퍼 메모리(210)에 저장된다. 코어 프로세서들(202A 내지 202N)에 의해 처리된 후 패킷 네트워크 상으로 전송될 데이터는, 호스트 포트(214)에 의해 글로벌 버퍼 메모리(210)로부터 검색된다. 호스트포트(214)에 의해 송수신되는 패킷 페이로드는 패킷 네트워크상에서의 전송에 앞서 패킷화(packetize)되며, 패킷 네트워크로부터 수신된 후에는 호스트 포트를 통해 수신된 패킷 페이로드 데이터로 역패킷화(depacketize)된다. 그 대신, 패킷 네트워크로 직접 인터페이스하기 위해 패킷화기(packetizer) 및 역패킷화기(depacketizer)가 VOP SOC(100) 내에 포함될 수 있다.
일 실시예에서, 호스트 포트(214)는 또한 Intel I960 호환 가능 호스트 포트의 프로토콜을 구현한다. 호스트 포트(214)는 외부 정보를 수신하기 위해 Intel I960 호스트 프로세서와 같은 호스트에 결합하는데, 이는 글로벌 버퍼 메모리(210)가 시스템 온 칩(100)의 내부에 있기 때문이다. 호스트는 SOC(100)의 부트업(boot up) 중에 부트업 시퀀스(boot up sequence)에 관한 정보를 호스트 포트(214)를 통해 제공할 뿐만 아니라, SOC(100)이 지원할 통신 채널에 관한 채널 셋업 정보 및 사용자가 SOC(100)에 적재(load)할 필요가 있는 그 밖의 임의의 외부 정보를 제공한다. 일 실시예의 호스트 포트(214)는 32 비트 폭의 병렬 데이터 포트를 포함한다. 즉, 패킷 페이로드 데이터 및 다른 정보는 32 비트 데이터 워드(word) 폭을 이용하여 외부 소스(source)로부터 호스트 포트 안팎으로 흐를 수 있다. 호스트 포트(214)는 외부 버스상의 32 비트 데이터를 시스템 버스(200)상에서의 전송을 위해 64 비트 데이터로 변환시키고, 시스템 버스(200)로부터의 64 비트 데이터를 호스트 포트 밖으로의 전송을 위해 32 비트 데이터로 변환시킨다.
코어 프로세서(202A 내지 202N)는 전화 네트워크로부터 수신된 TDM 신호를 처리하며, 그에 응답하여 전화 네트워크상에서의 통신을 위한 TDM 신호를 생성하거나, 또는 패킷 네트워크 상에서의 통신을 위한 패킷 페이로드를 생성할 수 있다. 패킷 네트워크로부터 수신된 패킷 페이로드는 코어 프로세서(202A 내지 202N)에 의해 처리되어, 패킷 네트워크 상에서의 전송을 위한 패킷 페이로드로, 또는 전화 네트워크상에서의 통신을 위한 TDM 데이터로 된다. 어느 경우라도, 처리를 필요로 하는 데이터는 우선 글로벌 버퍼 메모리(210)에 저장된다. 그 후 하나 이상의 코어 프로세서(202A 내지 202N)는 처리를 위해 소정의 채널에 대한 데이터를 검색한다. 상기 하나 이상의 코어 프로세서(202A 내지 202N)에 의한 데이터의 처리가 종료되면, 이는 글로벌 버퍼 메모리(210)에 저장된다. 글로벌 버퍼 메모리를 직접 액세스하기 위해, 상기 하나 이상의 코어 프로세서(202A 내지 202N)는 이들의 로컬 메모리 내로 데이터를 DMA하기 위한 하나 이상의 코어 DMA 제어기(203A 내지 203N)를 포함한다. 채널의 기능적 처리와 관련된 코드 및 채널과 그 데이터 샘플들의 사전 처리를 위한 상태 정보가 또한 글로벌 버퍼 메모리(210)에 저장되며, 새로운 데이터 샘플들을 처리할 상기 하나 이상의 코어 프로세서들 중 하나의 로컬 메모리(프로그램 메모리 및 데이터 메모리) 내로 DMA 전송된다.
이제 도 3을 참조하면, 코어 프로세서(202)의 블록도가 도시되어 있다. 도 3에 도시된 코어 프로세서(202)는 도 2의 하나 이상의 코어 프로세서(202A 내지 202N) 중 하나의 예를 나타낸다. 코어 프로세서(202)는 도 3에 도시된 바처럼 함께 연결된 코어 DMA 제어기(203), 디지털 신호 프로세서(DSP; 300), 데이터 메모리(302) 및 프로그램 메모리(304)를 포함한다. 데이터 메모리(302) 및 프로그램 메모리(304) 내의 메모리 위치(memory location)들은 두 개의 통신 채널을 처리하기 위하여 이중 채널(dual channel)로 할당될 수 있다. 메모리 위치를 이러한 방식으로 두 채널로 할당하는 것은 종종 이중 버퍼화 메모리(double buffered memory) 방식이라 일컬어진다. 즉, 데이터 메모리(302)는 채널 1 데이터 메모리(302A) 및 채널 2 데이터 메모리(302B)와 같이 두 채널 상에 분리된 것으로 간주될 수 있다. 마찬가지로 프로그램 메모리(304)는 채널 1 프로그램 메모리(304A) 및 채널 2 프로그램 메모리(304B)와 같이 두 채널로 분리된 것으로 간주될 수 있다. 채널 1 프로그램 메모리(304A)는 채널 1 데이터 메모리(302A)에 대응된다. 채널 2 프로그램 메모리(304B)는 채널 2 데이터 메모리(302B)에 대응된다.
코어 DMA 제어기(203) 및 DSP(300)은 메모리 채널들 중 어느 것이 각각 액세스 중인지에 따라 전환된다. 코어 DMA 제어기(203)는 처리되고 있지 않은 채널에 대응하는 데이터 메모리 및 프로그램 메모리의 메모리 위치에 데이터 또는 코드를 기록한다. 메모리 위치의 한 채널이 DSP(300)에 의해 처리되는 동안, 메모리 위치의 다른 채널은 DMA에 의해 판독되거나 또는 업데이트(update)된다. 예컨대, DSP(300)은 프로그램 메모리(304)의 채널 1(304A)에 저장된 코드를 이용하여 데이터 메모리(302)의 채널 1(302A)에 있는 데이터를 처리한다. DSP(300)이 채널 1을 처리하는 동안, 코어 DMA 제어기(203)는 다음 채널을 처리하기 위해 프로그램 메모리(304)의 채널 2(304B)를 업데이트한다. 또한 코어 DMA 제어기(203)는 처리가 종료된 후 채널 2로부터 데이터를 판독할 수 있고, 그 후 다음 채널을 처리하기 위해 새로운 데이터로 채널 2(302B)를 업데이트할 수 있다. 코어 DMA 제어기(203)는 직접 메모리 액세스를 이용하여 글로벌 버퍼 메모리(210)와 데이터 메모리(302) 및 프로그램 메모리(304) 사이에서 코드 및 데이터를 전송한다.
데이터 메모리(302)와 코어 DMA 제어기(203) 사이에서의 데이터 전송은 기회가 있을 때마다 판독 및 기록을 함으로써 이루어진다. 즉 매번의 기회마다, 데이터는 하나 이상의 코어 프로세서(200A 내지 200N)의 데이터 메모리(302)와 코어 DMA 제어기(203) 사이에서 전송된다. 프로세서가 이중 포트(dual-ported) 데이터 메모리(302)의 어느 한 쪽 포트를 이용하고 있지 않는 경우, 데이터는 한 쪽 포트로 기록되거나 또는 한 쪽 포트로부터 판독될 수 있다. 처리중인 뱅크에 데이터를 기록하기 위한 빈 메모리 위치(들)를 이용할 수 있을 때마다, DMA 프로세스는 빈 메모리 위치(들)에 기록을 할 수 있다. 메모리 위치가 처리를 완료한 데이터를 포함하게 된 후, DMA 프로세스는 가능한 경우 데이터 메모리(302)내의 메모리 위치(들)로부터 판독할 수 있다. 코어 프로세서들(200A 내지 200N)은 메모리 뱅크를 액세스하는 데 있어 더 높은 우선 순위를 가지며, DMA 제어기 사이클(cycle)은 이를 빼앗아 데이터 메모리에 대한 액세스를 취득하여 기회가 있을 때마다 판독 및 기록을 한다. 마찬가지로, 프로그램 메모리(304)와 글로벌 버퍼 메모리(210) 사이에서의 코드 전송은 기회가 있을 때마다 판독 및 기록을 함으로써 이루어진다.
데이터 메모리(302)와 글로벌 버퍼 메모리(210) 사이의 DMA 전송을 위한 명령어는 시작(start), 중단(stop), 계속(continue), 중지(suspend) 및 재개(resume)를 포함한다. DMA 제어기(203)에는 DMA 기술자 레지스터(DMA descriptor register)가 존재한다. 이들 명령어 중 하나 이상은 DMA가 진행중인 동안 DMA 기술자 레지스터에 기록될 수 있으며, 적합한 동작이 수행되도록 할 수 있다. DMA 전송은 또한 중단 명령 또는 중지 명령을 이용하여 사용자에 의해 중단될 수 있다. DMA 전송이 중단되면, 이는 계속 명령을 이용하여 계속될 수 있다. 중지되는 경우, 중지된 DMA 전송은 재개 명령을 이용하여 재개될 수 있다. DMA 프로세스의 완료에 도달하면, 인터럽트 신호가 호스트, 마이크로 제어기, 또는 코어 프로세서(DSP)에 다시 결합되어 DMA 제어기의 상태를 체크한다.
데이터 메모리(302)의 한 쪽 채널에 저장된 데이터의 워드의 비트 폭은 시스템 버스(200)의 데이터 시스템 버스 폭(DSBW)과 일치한다. 프로그램 메모리(304)의 한 쪽 채널에 저장된 코드의 워드의 비트 폭은 DSP(300)의 명령어 폭과 일치하는 것이 바람직하다. 일 실시예에서, 데이터 메모리(302)의 어느 한 쪽에 저장된 데이터의 워드의 폭은 64 비트이고, 프로그램 메모리(304)의 어느 한 쪽 채널에 저장된 프로그램 코드의 워드의 폭은 40 비트이다. 따라서 코어 DMA 제어기(203)는 또한 글로벌 버퍼 메모리(210)로부터 수신한 64 비트의 프로그램 코드를 40 비트 워드 폭으로 변환(즉, 선택적으로 패킹)한다. DMA 제어기는 한 번에 40 비트를 DSP에 제공한다. 코어 DMA 제어기(203) 내에 포함된 FIFO는 64 비트에서 40 비트로의 변환을 수행한다. 글로벌 버퍼 메모리(210)로부터 판독되는 코드의 64 비트의 워드 5개(전체 320 비트)마다 코드의 4 비트의 워드 8개(전체 320 비트)로 변환된다. 즉, 비트들은 데이터 시스템 버스 폭과 프로그램 메모리(304)의 워드 폭의 최소 공배수인 워드로 패킹(packing)된다.
분산형 DMA 제어기 각각은 판독시에 소스 어드레스를 글로벌 버퍼 메모리에제공하며, 기록시에 목적지(destination) 어드레스를 글로벌 버퍼 메모리에 제공한다. 코어 DMA 제어기(203)는 또한 데이터 메모리(302) 및 프로그램 메모리(304)에 대한 목적지 어드레스를 이들 메모리에 대한 기록시에 생성하거나, 또는 소스 어드레스를 이들 메모리로부터의 판독시에 생성한다. 프로그램 메모리(304)는 40 비트의 폭일 수 있는 어드레스 워드를 갖는 40 비트 어드레싱(addressing)이 가능하다. 데이터 메모리(302)는 64 비트 폭일 수 있는 어드레스 워드를 메모리 내에 갖는 64 비트 어드레싱이 가능하다. 따라서 코어 DMA 제어기(203)는 글로벌 버퍼 메모리(210)와 데이터 메모리(302) 또는 프로그램 메모리(304) 사이에서 DMA 전송을 수행하는 경우 소스 및 목적지 어드레스를 제공한다.
이제 도 4를 참조하면, 글로벌 버퍼 메모리(210)에 대한 예시 메모리 맵의 블록도가 도시되어 있다. 데이터의 워드 또는 블록이 데이터 시스템 버스 폭(DSBW)과 일치하는 크기를 갖는 글로벌 버퍼 메모리에 저장되고 그로부터 판독된다. 일 실시예에서, 데이터 시스템 버스 폭 및 글로벌 버퍼 메모리 내의 어드레싱 가능한 메모리 위치로의 데이터 워드의 폭은 64 비트이다. 즉, 어드레스가 글로벌 버퍼 메모리에 제공되는 경우, 64 비트가 한꺼번에 판독되거나 한꺼번에 기록될 수 있다. 글로벌 버퍼 메모리는 23 비트 폭의 어드레스 워드로 64 비트 경계(boundary) 상에서 어드레싱될 수 있다.
도 4의 예시 메모리 맵에서, 글로벌 버퍼 메모리(210)는 제1 시작 어드레스(B1) 및 제1 끝 어드레스(E1) 사이의 데이터를 한 세트의 직접 메모리 액세스 가능한 데이터(DMAD 1로 칭함)로서 포함한다. 예컨대 DMAD 1은 호스트 포트또는 멀티채널 직렬 포트로부터 수신된 데이터, 또는 코어 프로세서들(200A 내지 200N) 중 하나에 의해 기록된 데이터를 나타낸다. 도 4의 예시 메모리 맵은 또한 제2 시작 어드레스(B2) 및 제2 끝 어드레스(E2) 사이의 데이터를 제2 세트의 직접 메모리 액세스 가능한 데이터(DMAD 2로 칭함)로서 포함한다. 도 4의 예시 메모리 맵은 또한 글로벌 버퍼 메모리(210)가 제3 시작 어드레스(E3) 및 제3 끝 어드레스(E3) 사이의 데이터를 제3 세트의 직접 메모리 액세스 가능한 데이터(DMAD 3으로 칭함)로서 포함하는 것으로 도시하고 있다.
글로벌 버퍼 메모리는 또한 DMA 기술자 테이블(401)을 포함한다. DMA 기술자 테이블(401)은 정보에 관한 하나 이상의 DMA 기술 리스트(DMA descriptive list; 402A 내지 402N)들을 포함하며, 이는 글로벌 버퍼 메모리(210)에 저장된 직접 메모리 액세스 가능한 데이터를 지칭한다. 하나 이상의 DMA 기술 리스트는 글로벌 버퍼 메모리(210)에 대해 정보를 DMA 전송하는 경우에 분산형 DMA 제어기 각각에 의해 사용된다. DMA 기술 리스트들(402A 내지 402N) 각각은 글로벌 버퍼 메모리 내의 데이터, 코드, 상태, 또는 그 밖의 정보에 대한 시작 포인터(starting pointer)들을 포함한다. DMA 기술 테이블(401) 내의 하나 이상의 DMA 기술 리스트들(402A 내지 402N)은 DMAD 1, DMAD 2 및 DMAD 3의 직접 메모리 액세스 가능한 데이터를 가리킨다. 직접 메모리 액세스 가능한 데이터가 더 이상 유효하지 않거나 사용 가능하지 않게 되면, DMA 기술 리스트는 무효화(invalidate) 또는 소거(clear)된다.
도 4에서, DMA 기술자 테이블(401)은 주어진 채널을 처리하기 위하여 글로벌버퍼 메모리(210) 내에 저장된 예시적인 DMA 기술 리스트(402A)를 포함한다. DMA 기술 리스트(402N)는 이미 직렬 DMA 제어기 또는 호스트 DMA 제어기에 의하여 이들 각각의 포트로부터 글로벌 버퍼 메모리로 정보를 DMA하는 데 사용되었을 수 있다. 동일한 DMA 기술 리스트는 글로벌 버퍼 메모리로부터 하나 이상의 코어 프로세서(200A 내지 200N)의 로컬 메모리, 데이터 메모리 및 프로그램 메모리로 정보를 DMA하는 데 사용될 수 있다. 이러한 경우에, DMA 기술 리스트는 DMA 기술 리스트(402N)에 대한 링크를 포함할 수 있다.
도 4는 채널을 처리하기 위한 예시적인 DMA 기술 리스트(402A)를 도시한다. 예시적인 DMA 기술 리스트(402A)는 송신 프로그램 포인터(transmit program pointer; 410), 샘플 유형 기술(sample type description; 412), 상태 정보 포인터(state information pointer; 414), 기타 제어 포인터(miscellaneous control pointer; 416), 시작 데이터 메모리 포인터(beginning data memory pointer; 418) 및 연결 리스트 포인터(linked list pointer; 420)를 포함한다. 송신 프로그램 포인터(410)는 주어진 채널을 처리하기 위하여 사용될 코드에 대한 시작 어드레스를 가리킨다. 샘플 유형 기술(412)은 직렬 포트상의 데이터 샘플 유형이 4 비트, 8 비트, 16 비트인지의 여부 및 압축되었는지의 여부, 그리고 압축되었다면 어떠한 압축 유형이 사용되었는지에 관하여 기술한다. 상태 정보 포인터는, 현재 계산에서 사용될 수 있는 채널에 대한 데이터 샘플의 최종 계산 상태의 데이터를, 그것이 메모리 내에 존재하는 경우에 가리킨다. 기타 제어 포인터(416)는 데이터 샘플에 관한 기타 제어 정보, 코드, 상태 정보 또는 글로벌 버퍼메모리(210)의 안팎으로 직접 메모리 액세스되는 그 밖의 정보를 가리킨다. 시작 메모리 위치(418)는 예시적인 메모리 맵의 B1, B2 또는 B3과 같은 데이터의 첫 워드 또는 블록을 가리키는, 직접 메모리 액세스될 데이터의 시작 어드레스를 제공한다. 그 대신, 연결 리스트 포인터(420)는 글로벌 버퍼 메모리 안팎으로 직접 메모리 액세스될 필요가 있는 데이터 또는 그 밖의 정보를 위한 다른 DMA 기술 리스트(420N)를 가리킨다(422). 이러한 방식으로 DMA 기술 리스트들은 함께 연결될 수 있다.
도 5를 참조하면, 직렬 DMA 제어기(207)의 블록도가 도시되어 있다. 직렬 DMA 제어기(207)는 수신 FIFO 버퍼(502), 송신 FIFO 버퍼(504), 채널 레지스터(505), 데이터 카운터(506), 상태/제어 레지스터(507), 제어 로직(508) 및 TDM 리매퍼 메모리(510)를 포함한다. 직렬 포트를 통해 송신 및 수신된 데이터는 압축 알고리즘에 의하여 압축될 수 있다. 데이터가 음성 데이터인 경우에는, 압축 알고리즘은 A-law 압축 또는 Mu-law 압축일 수 있다. 압축되지 않은 형태의 음성 데이터는 PCM 또는 펄스 코드 변조된(pulse-code modulated) 데이터이다. 또한, 데이터는 각각의 통신 채널에 대하여 직렬 데이터 스트림 상에서 타임 슬롯(time slot)으로 시분할 멀티플렉싱된다. 본 발명의 분산형 DMA는 특히 주어진 채널에 대한 데이터 블록을 지원하기에 적합하므로, 직렬 포트는 각각의 채널에 대하여 직렬 데이터 스트림으로부터 데이터를 인터리빙(interleaving) 및 역인터리빙(deinterleaving)하는 것을 제공한다.
직렬 DMA 제어기(207)는 데이터의 병렬 비트를 수신 및 송신하기 위하여 버스 중재기(201A)를 통해 시스템 버스(200)에 연결된다. 직렬 DMA 제어기(207)는 직렬 데이터 스트림을 수신 및 송신하기 위하여 전화 네트워크에 연결된다. 직렬 DMA 제어기(207)는 또한 시스템 버스(200)를 통해 직접 메모리 액세스를 요청 및 제어하기 위한 DMA 제어 신호를 포함한다. 이러한 DMA 제어 신호는 DMA 요청(DMA REQ), DMA 승인(DMA ACK), 인터럽트 요청(INT) 및 판독/기록 스트로브(strobe) 신호(R/W)를 포함하며, 이들은 버스 중재기(201A)를 통해 시스템 버스(200)의 제어 라인에 연결된다. DMA 제어 신호는 제어 로직 블록(508)에 연결된다. 제어 로직 블록(508)은 DMA REQ, INT 및 R/W 스트로브 신호를 생성하고, DMA ACK 신호를 수신한다. 직렬 데이터 제어기(207)의 병렬 데이터 포트는 버스 중재기(201A)에 연결된다. 수신 FIFO 버퍼(502), 송신 FIFO 버퍼(504), 채널 레지스터, 데이터 카운터(506) 및 상태/제어 레지스터(507)는 직렬 DMA 제어기(207)의 병렬 데이터 포트를 통해서 버스 중재기(201A)에 연결된다. 일 실시예에서 수신 FIFO 버퍼(502) 및 송신 FIFO 버퍼(504)는 1 내지 2 엔트리(64비트)의 깊이를 가지며, TDM 리매퍼 메모리(510) 및 글로벌 버퍼 메모리(210)에 대하여 버스트(burst) 기록 및 판독을 제공한다. 직렬 DMA 제어기(207)의 TDM 리매퍼 메모리(510)는 멀티채널 직렬 데이터 포트를 통해 전화 네트워크에 연결되어 전화 네트워크상의 직렬 데이터 스트림을 송신 및 수신한다.
TDM 리매퍼 메모리(510)는 전화 네트워크로부터 직렬 데이터 스트림을 수신하는 경우 직/병렬(serial to parallel) 변환을 제공한다. TDM 리매퍼 메모리(510)는 전화 네트워크 상으로 직렬 데이터를 송신하는 경우병/직렬(parallel to serial) 변환을 제공한다. TDM 리매퍼 메모리는 송신을 위하여 직렬 데이터 스트림의 타임 슬롯에 데이터를 적절하게 인터리빙한다. TDM 리매퍼 메모리는 데이터를 직렬 데이터 스트림의 타임 슬롯으로부터, 수신된 데이터에 적절하게 역인터리빙한다. TDM 리매퍼 메모리(510)는 또한 적절한 데이터를 메모리 위치에 재매핑하여 복수의 직렬 통신 채널이 지원되도록 한다. 직렬 데이터를 수신한 경우에, 주어진 채널에 대한 데이터의 전체 프레임이 글로벌 버퍼 메모리로 DMA될 수 있도록, 데이터를 타임 슬롯으로부터 적절한 메모리 위치에 역인터리빙함으로써 직렬 데이터 스트림이 TDM 리매퍼 메모리 내로 판독된다. 직렬 데이터를 송신하기 위하여, 데이터의 전체 프레임은 TDM 리매퍼 메모리에 저장되고, 따라서 이는 한번에 여러 블록으로 판독될 수 있고, 주어진 채널에 대하여 적절한 타임 슬롯에 인터리빙될 수 있다.
직렬 DMA 제어기의 상태/제어 레지스터(507)는 판독되는 시점에 직렬 포트(206) 및 직렬 DMA 제어기에 관한 상태 정보를 제공한다. 상태/제어 레지스터(507)는 수신 FIFO 버퍼 전체 플래그(full flag) 및 송신 FIFO 버퍼 전체 플래그를 포함하는 다수의 플래그를 유지한다. 버퍼 전체 플래그가 세팅되면, 상기 플래그가 소거될 때까지 각각의 버퍼에 더 이상의 데이터가 저장되지 못한다. 채널에 관한 특정한 상태를 원하는 경우, 채널 레지스터(505)는 특정 채널 번호로 세팅된다. 채널 번호가 채널 레지스터에 의하여 선택되지 않은 경우, 일반적인 상태가 상태/제어 레지스터(507)가 판독될 때에 제공된다. 상태/제어 레지스터(507)에 기록하는 경우, 직렬 DMA 제어기(207) 및 직렬 포트(206)는 설정되거나 업데이트될 수 있다. 데이터 카운터(506)는 전송이 완료되었는지를 판정하기 위하여 DMA 전송에서의 바이트 카운트(byte count)를 센다. 데이터 카운트(506)의 카운트 값은 또한 글로벌 버퍼 메모리(210)에 대한 어드레스의 생성을 용이하게 한다.
이제 도 6a 및 도 6b를 참조하면, TDM 리매핑 메모리(510)의 기능이 도시되어 있다. 도 6a는 멀티채널 직렬 포트(207)의 직렬 포트상의 예시적인 직렬 데이터 스트림을 도시하고 있다. 직렬 포트 상의 직렬 데이터 스트림은 시분할 멀티플렉싱(TDM)된다. 통신 채널(CH1 내지 CHN)은 프레임 1 내지 프레임 M상의 프레임 동기화 펄스(FS) 간에 지정된 타임 슬롯을 할당받는다. 일 실시예에서 각각의 채널 타임 슬롯은 8 데이터 비트를 갖는 하나의 DS0 데이터 바이트이다. 대체 실시예에서, 각각의 채널 타임 슬롯은 16 데이터 비트이다. 본 발명은 채널당 타임 슬롯당 다른 데이터 비트 수로 구성될 수도 있다.
도 6b는 데이터 프레임을 채널 1 내지 채널 N 각각의 데이터에 리매핑하는 것, 또는 그 역의 예를 도시하고 있다. 프레임 1 내지 프레임 M 상의 채널 1 데이터는 함께 조직된다. 프레임 1 내지 프레임 M 상의 채널 2 데이터는 함께 조직되고 이러한 과정이 채널 N까지 계속된다. N개의 통신 채널에 대하여 M개의 프레임이 TDM 리매퍼 메모리에 저장된다. 수신 도중에, 채널 1의 N개의 DS0 워드가 TDM 리매퍼에 저장되자마자 채널 1 데이터의 하나의 프레임이 DMA를 통하여 글로벌 버퍼 메모리(210)에 기록될 수 있다. TDM 리매퍼 메모리는 수신된 DS0 워드를 각각의 채널에 대한 데이터 프레임에 매핑한다. 송신 도중에, 하나의 데이터 프레임이 N개의 채널 각각에 대한 TDM 리매퍼 메모리에 저장되자마자 직렬 TDM 데이터의 하나의 프레임이 전화 네트워크에 전송될 수 있다. TDM 리매퍼 메모리는 N개의 채널에 대한 데이터 프레임을 각 채널에 대한 DS0 워드에 매핑한다.
이제 도 7을 참조하면, 코어 DMA 제어기(203)의 블록도가 도시되어 있다. 코어 DMA 제어기(203)는 하나 이상의 코어 DMA 제어기(203A 내지 203N)의 하나의 예이다. 코어 DMA 제어기(203)는 수신 FIFO 버퍼(702), 송신 FIFO 버퍼(704), 상태/제어 레지스터(705), 데이터 카운터(706), 큐(queue) 레지스터/카운터(707), 제어 로직(708), 디코더(711), 한 쌍의 멀티플렉서(712 내지 713) 및 인코더(714)를 포함한다. 제어 로직(708)은, 하나의 접속으로서 프로세서 측에서 데이터 메모리(302) 및 프로그램 메모리(304)에 연결되는 DMA 제어 신호들(DMA REQ PROC., DMA ACK PROC., INT PROC. 및 R/W PROC.)과, 제2의 접속으로서 시스템 버스를 통하여 글로벌 버퍼 메모리(210)에 연결되는, 버스 측에서의 DMA 제어 신호(DMA REQ BUS, DMA ACK BUS, INT BUS 및 R/W BUS)를 갖는다. 코어 DMA 제어기(203)의 수신 FIFO 버퍼(702), 송신 FIFO 버퍼(704), 상태/제어 레지스터(705), 데이터 카운터(706), 큐 레지스터/카운터(707), 디코더(711) 및 인코더(714)는 한 쪽에서 코어 프로세서(200)의 데이터 메모리(302) 및 프로그램 메모리(304)에 연결된다. 코어 DMA 제어기(203)의 수신 FIFO 버퍼(702), 송신 FIFO 버퍼(704), 제어/컨트롤 레지스터(705), 데이터 카운터(706) 및 큐 레지스터/카운터(707)는 버스 측의 하나 이상의 버스 중재기(201A 내지 201N) 및 시스템 버스(200)를 통하여 글로벌 메모리(210)에 연결된다. 일 실시예의 수신 FIFO 버퍼(702) 및 송신 FIFO 버퍼(704)는 64 바이트의 깊이를 가지며, 글로벌 버퍼 메모리 및 코어 프로세서에대하여 버스트 기록 및 판독을 제공한다.
본 발명의 일 실시예를 상기하자면, 프로그램 메모리(304)의 어느 한 쪽 채널에 저장된 프로그램 코드의 워드의 폭은 40 비트인 반면, 데이터 메모리(302)의 어느 한 쪽 채널에 저장된 데이터의 워드의 폭은 64 비트이다. 어느 경우에나, 코어 DMA 제어기(203)는 글로벌 버퍼 메모리(210)로부터 수신한 64 비트의 프로그램 코드를 40 비트 워드 폭으로 변환시킨다. 64 비트 폭을 갖는 프로그램 코드는 8개의 8 비트 바이트로 수신 FIFO에 저장된다. 프로그램 코드는, 코드의 5개의 8 비트 바이트(즉 40 비트)가 한번에 판독되어 프로그램 메모리(304)에 저장될 수 있도록, 프로세서에 의해 수신 FIFO로부터 판독된다. 그 대신에, 이는 수신 FIFO에 저장되는 5개의 64 비트 워드(320 비트) 및 수신 FIFO로부터 판독되는 8개의 40 비트 워드(320 비트)로 간주될 수도 있다.
또한, 코어 DMA 제어기는 글로벌 버퍼 메모리로부터 수신한 데이터를 데이터 메모리(304)에 기록하기 전에 이를 압축 해제(decompress)할 수 있고, 상기 데이터 메모리(304)로부터 판독한 데이터를 글로벌 버퍼 메모리(210)에 기록하기 전에 이를 압축(compress)할 수 있다. 멀티플렉서(712)는 수신 FIFO 버퍼(702)로부터의 정보를 데이터 메모리 및 프로그램 메모리에 직접 연결할 것인지, 아니면 상기 정보를 디코딩하는 디코더(711)의 디코딩된 두 개의 출력 중 어느 하나를 연결할 것인지를 선택한다. 멀티플렉서(712)는 데이터 카운터(706), 상태/제어 레지스터(705) 및 큐 레지스터/카운터(707)로부터의 정보가 프로세서 또는 데이터 메모리 및 프로그램 메모리에 연결되도록 할 수도 있다. 멀티플렉서(713)는 데이터 메모리, 프로그램 메모리 또는 DSP로부터의 정보가 송신 FIFO 버퍼(702)에 직접 연결될지, 아니면 상기 정보를 인코딩하는 인코더(714)의 두 개의 인코딩된 출력 중 어느 하나를 연결할지를 선택한다. 일 실시예에서, 압축 해체된 포맷이 선형 데이터 또는 펄스 코드 변조된 데이터인 반면, 압축 포맷은 A-law 또는 Mu-law 중 하나의 비선형 압축 포맷일 수 있다. DMA 기술자 리스트에 응답하여 상태/제어 레지스터(705) 내의 비트를 세팅함으로써 압축 및 압축 해제를 선택할 수 있다.
코어 DMA 제어기 내에서 데이터를 인코딩(압축) 및 디코딩(압축 해제)함으로써, 시리얼 포트로부터의 데이터는 시리얼 포트로부터 시스템 버스를 통해 글로벌 버퍼 메모리까지, 그리고 그 후 시스템 버스를 통해 코어 DMA 제어기에 이르기까지 압축된 상태를 유지할 수 있다. 데이터를 SOC(100)내에서 가능한 한 오랫동안 압축된 상태로 유지함으로써, 데이터 전송에 있어 대역폭을 증가시킬 수 있다.
코어 DMA 제어기의 상태/제어 레지스터(705)는 판독시에 코어 프로세서(200) 및 코어 DMA 제어기 각각에 관한 상태 정보를 제공한다. 상태/제어 레지스터(705)는 수신 FIFO 버퍼 전체 플래그 및 송신 FIFO 버퍼 전체 플래그를 포함하는 다수의 플래그를 유지한다. 버퍼 전체 플래그가 세팅되면, 상기 플래그가 소거될 때까지 각각의 버퍼에 더 이상의 데이터가 저장되지 못한다. 상태/제어 레지스터(705)에 기록하는 경우, 코어 DMA 제어기(203)의 제어가 설정 및 업데이트 될 수 있다. 데이터 카운터(706)는 DMA 전송시에 바이트 카운트를 세어 언제 전송이 완료될지를 판정한다. 또한 데이터 카운트(706)의 카운트 값은 글로벌 버퍼 메모리(210)에 대한 어드레스의 생성을 용이하게 한다.
글로벌 버퍼 메모리와 코어 프로세서의 데이터 메모리 또는 프로그램 메모리 사이에서 데이터를 직접 메모리 액세스하는 경우, 각각의 코어 DMA 제어기는 호스트 포트 또는 시리얼 포트로부터의 데이터를 글로벌 버퍼 메모리에 직접 메모리 액세스하는 데 사용되었던 것과 동일한 DMA 기술자 리스트를 사용한다. 부가적인 DMA 기술자 리스트는 불필요하다.
이제 도 8을 참조하면, 호스트 DMA 제어기(215)를 포함하는 호스트 포트(214)가 도시되어 있다. 호스트 DMA 제어기(215)는 수신 FIFO 버퍼(802), 송신 FIFO 버퍼(804), 상태/제어 레지스터(805), 데이터 카운터(806), 큐 레지스터/카운터(807), 흐름 제어를 제공하는 제어 로직(808) 및 I/O 포트 레지스터를 포함한다. 제어 로직(808)은 데이터 흐름 제어를 제공하고 DMA 제어 구조를 제공하기 위한 로직을 포함한다. DMA 제어 구조는 큐(queue)를 처리하는 데 사용된다. 상태/제어 레지스터(807)는 제어를 위한 액세스 및 상태 정보를 외부 호스트에 제공하고, 상태 통지(status notification) 및 큐 카운터 정보를 내부 마이크로 제어기(223)에 제공한다. 일 실시예의 수신 FIFO 버퍼(802) 및 송신 FIFO 버퍼(804)는 64 바이트의 깊이를 갖는다. 수신 FIFO 버퍼(802) 및 송신 FIFO 버퍼(804)는 호스트 프로세서와 SCO(100) 사이에서의 버스트 기록 및 판독을 제공한다. 도 8에 도시된 호스트 포트(214)는 호스트 프로세서에 대하여 선택적으로 인터페이스하기 위한 I/O 포트 레지스터(810)를 더 포함한다. DMA 제어기(215)의 제어 로직(808)은 중재기(201) 및 시스템 버스(200)를 통하여 글로벌 버퍼 메모리(210)에 연결되는 버스 측에 DMA 제어 신호들(DMA REQ BUS, DMA ACK BUS,INT BUS 및 R/W BUS)을 갖는다. 제어 로직(808)은 호스트에 연결되는 호스트 측에 DMA 제어 신호들(DMA REQ HOST, DMA ACK HOST, INT HOST 및 R/W HOST)을 갖는다. 수신 FIFO(802), 송신 FIFO(804), 데이터 카운터(806), 상태/제어 레지스터(805) 및 큐 레지스터/카운터(807)는 한 쪽에서 버스 중재기(201)에 연결된다. 수신 FIFO(802), 송신 FIFO(804) 및 데이터 카운터(806)는 반대쪽에서 I/O 버퍼(810)에 연결된다. 이러한 방식으로, 패킷 페이로드의 병렬 데이터는 호스트와 시스템 버스(200) 사이에서 글로벌 버퍼 메모리(210) 안팎으로 흐를 수 있다.
호스트 포트(214)의 I/O 포트 레지스터(810)는 호스트 프로세서가 데이터를 기록하고 판독하는 지점을 제공한다.
호스트 DMA 제어기(215)의 상태/제어 레지스터(805)는 판독시에 호스트 포트(214) 및 호스트 DMA 제어기(215)에 관한 상태 정보를 제공한다. 상태/제어 레지스터(805)는 수신 FIFO 버퍼 전체 플래그 및 송신 FIFO 버퍼 전체 플래그를 포함하는 다수의 플래그를 유지한다. 버퍼 전체 플래그가 세팅되면, 상기 플래그가 소거될 때까지 각각의 버퍼에 더 이상의 데이터가 저장되지 못한다. 상태/제어 레지스터(805)에 기록하는 경우, 호스트 DMA 제어기(215) 및 호스트 포트(214)의 제어가 설정 및 업데이트될 수 있다. 데이터 카운터(806)는 DMA 전송시에 바이트 카운트를 세어 전송이 언제 완료될지를 판정한다. 데이터 카운트(806)의 카운트 값은 또한 글로벌 버퍼 메모리(210)에 대한 어드레스의 생성을 용이하게 한다.
이와 같이 본 발명의 바람직한 실시예가 설명된다. 당업자가 인식할 수 있는 바처럼, 본 발명은 다수의 장점을 갖는다. 본 발명의 한 가지 장점은 넓은 시스템 버스, 시리얼 데이터의 재매핑 및 처리중(on the fly)인 데이터의 압축/압축 해제로 인해 글로벌 버퍼 메모리로의 대역폭이 증가된다는 점이다. 본 발명의 다른 장점은 버스 중재에 대해 공통의 표준을 사용함으로써 중재가 단순화되고, 직접 메모리 액세스 제어기의 분산으로 인해 중재가 개선된다는 점이다.
본 발명을 VOP 시스템 온 칩의 특정한 실시예에 따라 설명하였지만, 이는 다른 시스템 온 칩에도 마찬가지로 적용될 수 있다. 또한, 본 발명은 하드웨어, 소프트웨어, 펌웨어(firmware) 또는 이들의 조합으로 구현될 수 있고, 시스템, 서브 시스템, 콤포넌트 또는 이들의 서브 콤포넌트에서 이용될 수 있다. 소프트웨어로 구현되는 경우, 본 발명의 요소들은 본질적으로 필요한 작업을 수행하기 위한 코드 세그먼트들이다. 프로그램 또는 코드 세그먼트는 프로세서 판독 가능 매체(processor readable medium)에 저장되거나, 반송파에 수록된 컴퓨터 데이터 신호에 의해 전송 매체 또는 통신 링크를 통해 전송될 수 있다. "프로세서 판독 가능 매체"는 정보를 저장하거나 전송할 수 있는 모든 매체를 포함할 수 있다. 프로세서 판독 가능 매체의 예에는 전자 회로, 반도체 메모리 소자, ROM, 플래시 메모리, EROM(Erasable ROM), 플로피 디스켓, CD-ROM, 광 디스크, 하드 디스크, 광섬유 매체, RF(radio frequency) 링크 등이 포함된다. 컴퓨터 데이터 신호는, 전자 네트워크 채널, 광섬유, 대기, 전자기, 라디오 링크 등과 같은 전송 매체를 통해 전달되는 모든 신호를 포함할 수 있다. 코드 세그먼트는 인터넷, 인트라넷 등과 같은 컴퓨터 네트워크를 통해 다운로드될 수 있다. 어느 경우나, 본 발명은 이러한 실시예에 의해 제한되도록 해석되어서는 아니되며, 오히려 이하의 청구범위에따라 해석되어야 한다.

Claims (20)

  1. 시스템 온 칩(system on chip)에 있어서,
    버퍼 메모리와,
    상기 버퍼 메모리에 연결된 시스템 버스와,
    상기 시스템 버스와 연결된 복수의 버스 중재기들과,
    상기 복수의 버스 중재기들에 연결된 복수의 기능 모듈들
    을 포함하고,
    상기 복수의 기능 모듈들 각각은 상기 복수의 버스 중재기들 중 하나의 버스 중재기에 연결하기 위한 DMA(Direct Memory Access) 제어기를 포함하며, 상기 DMA 제어기는 상기 버퍼 메모리에 대한 직접 메모리 액세스를 제공하는 시스템 온 칩.
  2. 제1항에 있어서,
    상기 복수의 버스 중재기들은 상기 복수의 기능 모듈들에 의해 상기 시스템 버스에 대한 액세스를 교섭하는 시스템 온 칩.
  3. 제1항에 있어서,
    상기 시스템 버스에 연결된 마이크로 제어기를 더 포함하는 시스템 온 칩.
  4. 제1항에 있어서,
    상기 시스템 온 칩은 VOP(Voice Over Packet) 시스템 온 칩이고,
    상기 복수의 기능 모듈들은,
    복수의 통신 채널들의 데이터를 처리하고, 처리하기 위한 데이터를 판독하고 처리 후에는 데이터를 기록하도록 상기 버퍼 메모리를 직접 메모리 액세스하기 위한 하나 이상의 신호 프로세서들과,
    패킷 네트워크(packet network)에 연결되어 상기 패킷 네트워크와 패킷 페이로드(payload)를 송수신하고, 상기 버퍼 메모리로부터 데이터를 판독하고 상기 버퍼 메모리에 데이터를 기록하도록 상기 버퍼 메모리를 직접 메모리 액세스하기 위한 호스트 포트(host port)와,
    전화 네트워크에 연결되어 상기 전화 네트워크와 데이터를 송수신하고, 상기 버퍼 메모리로부터 데이터를 판독하고 상기 버퍼 메모리에 데이터를 기록하도록 상기 버퍼 메모리를 직접 메모리 액세스하기 위한 멀티채널(multichannel) 직렬 포트
    를 포함하는 시스템 온 칩.
  5. 글로벌 버퍼 메모리에 대한 분산형 직접 메모리 액세스 방법에 있어서,
    각각 직접 메모리 액세스 제어기를 갖는 하나 이상의 기능 유닛들을 제공하는 단계와,
    상기 글로벌 버퍼 메모리를 직접 메모리 액세스하기 위하여 상기 하나 이상의 기능 유닛들에 의한 시스템 버스에 대한 액세스를 요청하는 단계와,
    상기 하나 이상의 기능 유닛들에 의한 상기 시스템 버스에 대한 액세스를 중재하는 단계와,
    상기 하나 이상의 기능 유닛들 중 하나에 의한 상기 시스템 버스에 대한 액세스를 취득하는 단계와,
    상기 하나 이상의 기능 유닛들 중 상기 하나에 의해 상기 글로벌 버퍼 메모리에 대한 직접 메모리 액세스 접속을 설정하고, 상기 글로벌 버퍼 메모리 내의 메모리 위치로부터 데이터를 판독하거나 또는 상기 메모리 위치에 데이터를 기록하는 단계
    를 포함하는 방법.
  6. 제5항에 있어서,
    상기 하나 이상의 기능 유닛들 중 하나에 의해 상기 글로벌 버퍼 메모리를 직접 메모리 액세스하기 전에 병렬 데이터 스트림(parallel data stream)으로 직렬 데이터 스트림을 재매핑(remapping)하는 단계
    를 더 포함하는 방법.
  7. 제5항에 있어서,
    상기 하나 이상의 기능 유닛들 중 하나에 의해 상기 글로벌 버퍼 메모리를 직접 메모리 액세스한 후에, 직렬 데이터 스트림으로 병렬 데이터 스트림을 재매핑하는 단계
    를 더 포함하는 방법.
  8. 제5항에 있어서,
    상기 단계들은 시스템 온 칩에서 수행되는 방법.
  9. 제8항에 있어서,
    상기 시스템 온 칩은 한 쪽 종단에서는 패킷 네트워크에 대하여, 반대 쪽 종단에서는 전화 네트워크에 대하여 인터페이스하는 VOP 시스템인 방법.
  10. 분산형 직접 메모리 액세스 제어 시스템에 있어서,
    메모리와,
    시스템의 기능 블록들 사이에 분산된 복수의 직접 메모리 액세스 제어기들
    을 포함하고,
    상기 복수의 직접 메모리 액세스 제어기들은 상기 시스템의 상기 기능 블록들의 상기 메모리에 대한 직접 메모리 액세스를 제어하는 분산형 직접 메모리 액세스 제어 시스템.
  11. 제10항에 있어서,
    상기 메모리와 상기 복수의 직접 메모리 액세스 제어기들 사이에 결합된 시스템 버스
    를 더 포함하고,
    상기 시스템 버스는 데이터가 상기 메모리와 상기 시스템의 상기 기능 블록들 사이에서 흐를 수 있도록 하는 데이터 버스를 포함하는 분산형 직접 메모리 액세스 제어 시스템.
  12. 제11항에 있어서,
    상기 시스템 버스는 상기 메모리에 대한 직접 메모리 액세스를 요청하고 상기 메모리에 대한 직접 메모리 데이터 흐름을 제어하기 위한 DMA 제어 라인을 더 포함하는 분산형 직접 메모리 액세스 제어 시스템.
  13. 제10항에 있어서,
    상기 메모리는 직접 액세스 가능한 메모리이고, 직접 메모리 액세스 제어기를 포함하는 분산형 직접 메모리 액세스 제어 시스템.
  14. 제13항에 있어서,
    상기 메모리의 상기 직접 메모리 액세스 제어기는,
    수신 데이터를 저장하기 위한 수신 FIFO(First In First Out) 버퍼와,
    송신 데이터를 저장하기 위한 송신 FIFO 버퍼와,
    직접 메모리 액세스에 의해 상기 메모리로 송신되고 상기 메모리로부터 수신된 데이터 유닛들의 수를 세기 위한 데이터 카운터와,
    직접 메모리 액세스에 의한 데이터 송신 및 수신을 제어하기 위하여 상기 수신 FIFO 버퍼, 상기 송신 FIFO 버퍼 및 상기 데이터 카운터에 연결된 제어 로직(control logic)
    을 포함하는 분산형 직접 메모리 액세스 제어 시스템.
  15. 제10항에 있어서,
    상기 복수의 직접 메모리 액세스 제어기들은,
    수신 데이터를 저장하기 위한 수신 FIFO(First In First Out)와,
    송신 데이터를 저장하기 위한 송신 FIFO와,
    직접 메모리 액세스에 의해 상기 메모리로 송신되고 상기 메모리로부터 수신된 데이터 유닛들의 수를 세기 위한 데이터 카운터와,
    직접 메모리 액세스에 의한 데이터 송신 및 수신을 제어하기 위하여 상기 수신 FIFO 버퍼, 상기 송신 FIFO 버퍼 및 상기 데이터 카운터에 연결된 제어 로직
    을 포함하는 분산형 직접 메모리 액세스 제어 시스템.
  16. 제15항에 있어서,
    상기 복수의 직접 메모리 액세스 제어기들 중 하나는 병렬 데이터를 직렬 데이터로, 직렬 데이터를 병렬 데이터로 재매핑하기 위한 리매퍼 메모리(remapper memory)를 더 포함하는 분산형 직접 메모리 액세스 제어 시스템.
  17. 메모리 내의 정보에 대한 직접 메모리 액세스를 제어하기 위한 직접 메모리 액세스 기술자(descriptor) 테이블에 있어서,
    상기 메모리 내에 저장된 하나 이상의 직접 메모리 액세스 기술자 리스트들
    을 포함하고,
    상기 하나 이상의 직접 메모리 액세스 기술자 리스트들 각각은,
    상기 메모리로부터 또는 상기 메모리로 데이터를 직접 메모리 액세스하기 위한, 상기 메모리 내의 시작 어드레스를 가리키는 포인터(pointer)
    를 포함하는 직접 메모리 액세스 기술자 테이블.
  18. 제17항에 있어서,
    상기 직접 메모리 액세스 기술자 리스트들 중 하나는, 직접 메모리 액세스될 데이터의 유형에 관한 정보를 더 포함하는 직접 메모리 액세스 기술자 테이블.
  19. 제17항에 있어서,
    상기 직접 메모리 액세스 기술자 리스트들 중 하나는, 상기 메모리로부터 또는 상기 메모리로 이전 상태 정보(prior state information)를 직접 메모리 액세스하기 위한, 상기 메모리 내의 시작 어드레스를 가리키는 포인터를 더 포함하는 직접 메모리 액세스 기술자 테이블.
  20. 제17항에 있어서,
    상기 직접 메모리 액세스 기술자 리스트들 중 하나는, 상기 메모리로부터 또는 상기 메모리로 프로그램 코드를 직접 메모리 액세스하기 위한, 상기 메모리 내의 시작 어드레스를 가리키는 포인터를 더 포함하는 직접 메모리 액세스 기술자 테이블.
KR10-2004-7003435A 2001-09-07 2002-08-30 시스템 온 칩에 대한 분산형 직접 메모리 액세스 방법 및장치 KR100801763B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/949,461 US6874039B2 (en) 2000-09-08 2001-09-07 Method and apparatus for distributed direct memory access for systems on chip
US09/949,461 2001-09-07
PCT/US2002/027642 WO2003023625A1 (en) 2001-09-07 2002-08-30 Method and apparatus for distributed direct memory access for systems on chip

Publications (2)

Publication Number Publication Date
KR20040040458A true KR20040040458A (ko) 2004-05-12
KR100801763B1 KR100801763B1 (ko) 2008-02-05

Family

ID=25489127

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7003435A KR100801763B1 (ko) 2001-09-07 2002-08-30 시스템 온 칩에 대한 분산형 직접 메모리 액세스 방법 및장치

Country Status (8)

Country Link
US (6) US6874039B2 (ko)
EP (1) EP1430405B1 (ko)
KR (1) KR100801763B1 (ko)
CN (1) CN1552028B (ko)
AT (1) ATE352814T1 (ko)
DE (1) DE60217884T2 (ko)
TW (1) TWI268426B (ko)
WO (1) WO2003023625A1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100714096B1 (ko) * 2004-12-21 2007-05-02 한국전자통신연구원 온-칩 네트워크를 구비한 동영상 인코딩 장치 및 그 설계방법
US8335214B2 (en) 2008-03-18 2012-12-18 Samsung Electronics Co., Ltd. Interface system and method of controlling thereof
KR20170083366A (ko) * 2016-01-08 2017-07-18 삼성전자주식회사 데이터의 루프백을 수행하는 시스템 온 칩과 집적 회로, 및 이들을 포함하는 모바일 장치
US9798492B2 (en) 2014-04-15 2017-10-24 SK Hynix Inc. Semiconductor device including a plurality of function blocks
WO2023008654A1 (ko) * 2021-07-27 2023-02-02 주식회사 세미파이브 시스템 온 칩에서 기능 블록 간의 데이터 송수신을 위한 인터페이스 방법 및 이를 이용하는 시스템 온 칩

Families Citing this family (169)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7003593B2 (en) * 1997-12-17 2006-02-21 Src Computers, Inc. Computer system architecture and memory controller for close-coupling within a hybrid processing system utilizing an adaptive processor interface port
US6874039B2 (en) 2000-09-08 2005-03-29 Intel Corporation Method and apparatus for distributed direct memory access for systems on chip
US20020104011A1 (en) * 2001-02-01 2002-08-01 Bechtel Bwtx Idaho, Llc Systems and methods for employing opportunistic data transfer to create a dynamically mobile data communication system
JP2003150395A (ja) * 2001-11-15 2003-05-23 Nec Corp プロセッサとそのプログラム転送方法
WO2004006105A2 (en) * 2002-07-08 2004-01-15 Globespanvirata Incorporated Dma scheduling mechanism
US7958289B2 (en) 2002-08-08 2011-06-07 International Business Machines Corporation Method and system for storing memory compressed data onto memory compressed disks
US20040039835A1 (en) * 2002-08-21 2004-02-26 Intel Corporation Method and apparatus for transferring general purpose control information between processors
US7551909B1 (en) * 2002-08-29 2009-06-23 Silicon Image, Inc. CMOS transceiver with dual current path VCO
ATE498161T1 (de) * 2002-12-06 2011-02-15 Telecom Italia Spa Dma-verfahren, entsprechende system und rechnerprogrammprodukt
ATE309577T1 (de) * 2002-12-26 2005-11-15 Cit Alcatel Datenverarbeitungsgerät
JP2004326180A (ja) * 2003-04-21 2004-11-18 Matsushita Electric Ind Co Ltd 集積回路、それを用いた画像入出力装置及び画像入出力方法
US7243178B2 (en) * 2003-05-16 2007-07-10 Intel Corporation Enable/disable claiming of a DMA request interrupt
US7200689B2 (en) * 2003-07-31 2007-04-03 International Business Machines Corporation Cacheable DMA
TWI220614B (en) * 2003-10-21 2004-08-21 Benq Corp Method and device for updating frame number and automatically generating frame boundary
US20050091432A1 (en) * 2003-10-28 2005-04-28 Palmchip Corporation Flexible matrix fabric design framework for multiple requestors and targets in system-on-chip designs
US9087036B1 (en) 2004-08-12 2015-07-21 Sonics, Inc. Methods and apparatuses for time annotated transaction level modeling
US8504992B2 (en) * 2003-10-31 2013-08-06 Sonics, Inc. Method and apparatus for establishing a quality of service model
US8407433B2 (en) * 2007-06-25 2013-03-26 Sonics, Inc. Interconnect implementing internal controls
KR100524076B1 (ko) * 2003-11-13 2005-10-26 삼성전자주식회사 데이터 압축 및 복원 장치
JP2005165508A (ja) * 2003-12-01 2005-06-23 Renesas Technology Corp ダイレクトメモリアクセスコントローラ
KR101034493B1 (ko) * 2004-01-09 2011-05-17 삼성전자주식회사 화상 변환 장치, 화상 변환을 위한 직접 메모리 액세스장치 및 화상 변환을 지원하는 카메라 인터페이스
JP4405277B2 (ja) * 2004-02-16 2010-01-27 株式会社日立製作所 ディスク制御装置
US7467238B2 (en) * 2004-02-10 2008-12-16 Hitachi, Ltd. Disk controller and storage system
CN100369023C (zh) * 2004-02-25 2008-02-13 中国科学院计算技术研究所 直接存储器访问传输装置及其方法
US7543088B2 (en) * 2004-03-11 2009-06-02 Sonics, Inc. Various methods and apparatuses for width and burst conversion
US7475168B2 (en) * 2004-03-11 2009-01-06 Sonics, Inc. Various methods and apparatus for width and burst conversion
US7657667B2 (en) * 2004-03-25 2010-02-02 International Business Machines Corporation Method to provide cache management commands for a DMA controller
US7320090B2 (en) * 2004-06-09 2008-01-15 International Business Machines Corporation Methods, systems, and media for generating a regression suite database
US7392330B2 (en) * 2004-07-02 2008-06-24 Mediatek Usa Inc. Memory access bandwidth allocation and latency control in a digital camera
US20060026308A1 (en) * 2004-07-29 2006-02-02 International Business Machines Corporation DMAC issue mechanism via streaming ID method
US9274586B2 (en) * 2004-09-08 2016-03-01 Cisco Technology, Inc. Intelligent memory interface
US8032676B2 (en) * 2004-11-02 2011-10-04 Sonics, Inc. Methods and apparatuses to manage bandwidth mismatches between a sending device and a receiving device
US7155554B2 (en) * 2004-11-02 2006-12-26 Sonics, Inc. Methods and apparatuses for generating a single request for block transactions over a communication fabric
US7277975B2 (en) * 2004-11-02 2007-10-02 Sonics, Inc. Methods and apparatuses for decoupling a request from one or more solicited responses
US20060125835A1 (en) * 2004-12-10 2006-06-15 Li Sha DMA latency compensation with scaling line buffer
US7499452B2 (en) * 2004-12-28 2009-03-03 International Business Machines Corporation Self-healing link sequence counts within a circular buffer
KR100621631B1 (ko) * 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US7774512B2 (en) * 2005-02-08 2010-08-10 Sony Computer Entertainment Inc. Methods and apparatus for hybrid DMA queue and DMA table
KR100694095B1 (ko) * 2005-03-05 2007-03-12 삼성전자주식회사 버스 연결 방법 및 장치
JP2006268753A (ja) * 2005-03-25 2006-10-05 Fujitsu Ltd Dma回路及びコンピュータシステム
DE102005026436B4 (de) * 2005-06-08 2022-08-18 Austriamicrosystems Ag Schnittstellenanordnung, insbesondere für ein System-on-Chip, und deren Verwendung
WO2007003986A1 (en) * 2005-06-30 2007-01-11 Freescale Semiconductor, Inc. Device and method for controlling an execution of a dma task
EP1899828B1 (en) * 2005-06-30 2009-11-25 Freescale Semiconductor, Inc. Device and method for arbitrating between direct memory access task requests
US20090125647A1 (en) * 2005-06-30 2009-05-14 Citibank, N.A. Device And Method For Executing A DMA Task
US7370135B2 (en) * 2005-11-21 2008-05-06 Intel Corporation Band configuration agent for link based computing system
US7768936B2 (en) * 2006-06-23 2010-08-03 At&T Intellectual Property I, L.P. Method and apparatus for transporting deterministic traffic in a gigabit passive optical network
US20080082715A1 (en) * 2006-09-29 2008-04-03 Honeywell International Inc. Data transfers over multiple data buses
US7617377B2 (en) * 2006-10-17 2009-11-10 International Business Machines Corporation Splitting endpoint address translation cache management responsibilities between a device driver and device driver services
US7587575B2 (en) * 2006-10-17 2009-09-08 International Business Machines Corporation Communicating with a memory registration enabled adapter using cached address translations
US7506084B2 (en) * 2006-10-17 2009-03-17 International Business Machines Corporation Method for communicating with an I/O adapter using cached address translations
US8769168B2 (en) * 2006-10-17 2014-07-01 International Business Machines Corporation Method for communicating with a network adapter using a queue data structure and cached address translations
US7590817B2 (en) * 2006-10-17 2009-09-15 International Business Machines Corporation Communicating with an I/O device using a queue data structure and pre-translated addresses
US7788437B2 (en) * 2006-10-27 2010-08-31 Hewlett-Packard Development Company, L.P. Computer system with network interface retransmit
US8868397B2 (en) * 2006-11-20 2014-10-21 Sonics, Inc. Transaction co-validation across abstraction layers
US9178713B1 (en) * 2006-11-28 2015-11-03 Marvell International Ltd. Optical line termination in a passive optical network
JP4881140B2 (ja) * 2006-12-07 2012-02-22 キヤノン株式会社 データ転送装置、データ転送制御方法、およびデータ転送制御プログラム
KR100827287B1 (ko) 2006-12-29 2008-05-07 주식회사 태진인포텍 반도체 보조 기억 장치 및 이를 이용한 데이터 저장 방법
US20080162836A1 (en) * 2006-12-29 2008-07-03 Wojciechowski Roy D Staggered interleaved memory access
KR101029074B1 (ko) * 2007-01-10 2011-04-18 삼성전자주식회사 호스트 컨트롤러에서의 디스크립터 추적 장치 및 그 추적방법
US7836143B2 (en) * 2007-04-25 2010-11-16 International Business Machines Corporation Message communications of particular message types between compute nodes using DMA shadow buffers
US8325633B2 (en) * 2007-04-26 2012-12-04 International Business Machines Corporation Remote direct memory access
US20080281999A1 (en) * 2007-05-07 2008-11-13 Mediatek Inc. Electronic system with direct memory access and method thereof
US7827024B2 (en) * 2007-05-09 2010-11-02 International Business Machines Corporation Low latency, high bandwidth data communications between compute nodes in a parallel computer
US7966618B2 (en) * 2007-05-29 2011-06-21 International Business Machines Corporation Controlling data transfers from an origin compute node to a target compute node
US8037213B2 (en) * 2007-05-30 2011-10-11 International Business Machines Corporation Replenishing data descriptors in a DMA injection FIFO buffer
US7921428B2 (en) * 2007-06-18 2011-04-05 International Business Machines Corporation Multi-registration of software library resources
US8108648B2 (en) * 2007-06-25 2012-01-31 Sonics, Inc. Various methods and apparatus for address tiling
US8438320B2 (en) * 2007-06-25 2013-05-07 Sonics, Inc. Various methods and apparatus for address tiling and channel interleaving throughout the integrated system
US8468416B2 (en) 2007-06-26 2013-06-18 International Business Machines Corporation Combined group ECC protection and subgroup parity protection
US8032892B2 (en) * 2007-06-26 2011-10-04 International Business Machines Corporation Message passing with a limited number of DMA byte counters
US7886084B2 (en) * 2007-06-26 2011-02-08 International Business Machines Corporation Optimized collectives using a DMA on a parallel computer
US7793038B2 (en) 2007-06-26 2010-09-07 International Business Machines Corporation System and method for programmable bank selection for banked memory subsystems
US7802025B2 (en) 2007-06-26 2010-09-21 International Business Machines Corporation DMA engine for repeating communication patterns
US8010875B2 (en) 2007-06-26 2011-08-30 International Business Machines Corporation Error correcting code with chip kill capability and power saving enhancement
US8230433B2 (en) 2007-06-26 2012-07-24 International Business Machines Corporation Shared performance monitor in a multiprocessor system
US8140925B2 (en) 2007-06-26 2012-03-20 International Business Machines Corporation Method and apparatus to debug an integrated circuit chip via synchronous clock stop and scan
US7694035B2 (en) * 2007-06-26 2010-04-06 International Business Machines Corporation DMA shared byte counters in a parallel computer
US8103832B2 (en) * 2007-06-26 2012-01-24 International Business Machines Corporation Method and apparatus of prefetching streams of varying prefetch depth
US8756350B2 (en) 2007-06-26 2014-06-17 International Business Machines Corporation Method and apparatus for efficiently tracking queue entries relative to a timestamp
US7984448B2 (en) * 2007-06-26 2011-07-19 International Business Machines Corporation Mechanism to support generic collective communication across a variety of programming models
US8108738B2 (en) 2007-06-26 2012-01-31 International Business Machines Corporation Data eye monitor method and apparatus
US8509255B2 (en) 2007-06-26 2013-08-13 International Business Machines Corporation Hardware packet pacing using a DMA in a parallel computer
US8458282B2 (en) 2007-06-26 2013-06-04 International Business Machines Corporation Extended write combining using a write continuation hint flag
US7827391B2 (en) 2007-06-26 2010-11-02 International Business Machines Corporation Method and apparatus for single-stepping coherence events in a multiprocessor system under software control
US7877551B2 (en) * 2007-06-26 2011-01-25 International Business Machines Corporation Programmable partitioning for high-performance coherence domains in a multiprocessor system
US7624310B2 (en) 2007-07-11 2009-11-24 Micron Technology, Inc. System and method for initializing a memory system, and memory device and processor-based system using same
US8478834B2 (en) * 2007-07-12 2013-07-02 International Business Machines Corporation Low latency, high bandwidth data communications between compute nodes in a parallel computer
US8018951B2 (en) * 2007-07-12 2011-09-13 International Business Machines Corporation Pacing a data transfer operation between compute nodes on a parallel computer
US8959172B2 (en) * 2007-07-27 2015-02-17 International Business Machines Corporation Self-pacing direct memory access data transfer operations for compute nodes in a parallel computer
US7805546B2 (en) * 2007-07-27 2010-09-28 International Business Machines Corporation Chaining direct memory access data transfer operations for compute nodes in a parallel computer
US20090031001A1 (en) * 2007-07-27 2009-01-29 Archer Charles J Repeating Direct Memory Access Data Transfer Operations for Compute Nodes in a Parallel Computer
CN100547572C (zh) * 2007-10-22 2009-10-07 威盛电子股份有限公司 动态建立直接内存访问通路的方法及系统
US8261025B2 (en) 2007-11-12 2012-09-04 International Business Machines Corporation Software pipelining on a network on chip
US8526422B2 (en) 2007-11-27 2013-09-03 International Business Machines Corporation Network on chip with partitions
US7917703B2 (en) * 2007-12-13 2011-03-29 International Business Machines Corporation Network on chip that maintains cache coherency with invalidate commands
CN101482853B (zh) * 2008-01-10 2010-10-27 松翰科技股份有限公司 直接存储器访问系统及方法
US8473667B2 (en) 2008-01-11 2013-06-25 International Business Machines Corporation Network on chip that maintains cache coherency with invalidation messages
US8010750B2 (en) * 2008-01-17 2011-08-30 International Business Machines Corporation Network on chip that maintains cache coherency with invalidate commands
US8018466B2 (en) * 2008-02-12 2011-09-13 International Business Machines Corporation Graphics rendering on a network on chip
US7913010B2 (en) * 2008-02-15 2011-03-22 International Business Machines Corporation Network on chip with a low latency, high bandwidth application messaging interconnect
US8490110B2 (en) 2008-02-15 2013-07-16 International Business Machines Corporation Network on chip with a low latency, high bandwidth application messaging interconnect
KR101471114B1 (ko) * 2008-03-06 2014-12-10 삼성전자주식회사 프로세서 및 컴퓨팅 시스템
US20090245257A1 (en) * 2008-04-01 2009-10-01 International Business Machines Corporation Network On Chip
US9225545B2 (en) * 2008-04-01 2015-12-29 International Business Machines Corporation Determining a path for network traffic between nodes in a parallel computer
US9009350B2 (en) * 2008-04-01 2015-04-14 International Business Machines Corporation Determining a path for network traffic between nodes in a parallel computer
US8078850B2 (en) * 2008-04-24 2011-12-13 International Business Machines Corporation Branch prediction technique using instruction for resetting result table pointer
US20090271172A1 (en) * 2008-04-24 2009-10-29 International Business Machines Corporation Emulating A Computer Run Time Environment
US8423715B2 (en) 2008-05-01 2013-04-16 International Business Machines Corporation Memory management among levels of cache in a memory hierarchy
US8494833B2 (en) 2008-05-09 2013-07-23 International Business Machines Corporation Emulating a computer run time environment
US8214845B2 (en) 2008-05-09 2012-07-03 International Business Machines Corporation Context switching in a network on chip by thread saving and restoring pointers to memory arrays containing valid message data
US7861065B2 (en) * 2008-05-09 2010-12-28 International Business Machines Corporation Preferential dispatching of computer program instructions
US8020168B2 (en) 2008-05-09 2011-09-13 International Business Machines Corporation Dynamic virtual software pipelining on a network on chip
US7958340B2 (en) 2008-05-09 2011-06-07 International Business Machines Corporation Monitoring software pipeline performance on a network on chip
US7991978B2 (en) * 2008-05-09 2011-08-02 International Business Machines Corporation Network on chip with low latency, high bandwidth application messaging interconnects that abstract hardware inter-thread data communications into an architected state of a processor
US8392664B2 (en) 2008-05-09 2013-03-05 International Business Machines Corporation Network on chip
US8040799B2 (en) * 2008-05-15 2011-10-18 International Business Machines Corporation Network on chip with minimum guaranteed bandwidth for virtual communications channels
US8230179B2 (en) 2008-05-15 2012-07-24 International Business Machines Corporation Administering non-cacheable memory load instructions
US20090307408A1 (en) * 2008-06-09 2009-12-10 Rowan Nigel Naylor Peer-to-Peer Embedded System Communication Method and Apparatus
US8438578B2 (en) 2008-06-09 2013-05-07 International Business Machines Corporation Network on chip with an I/O accelerator
US8195884B2 (en) 2008-09-18 2012-06-05 International Business Machines Corporation Network on chip with caching restrictions for pages of computer memory
TWI385672B (zh) * 2008-11-05 2013-02-11 Lite On It Corp 儲存裝置之適應性多通道控制器及其方法
US8547971B1 (en) 2009-01-07 2013-10-01 Marvell Israel (M.I.S.L) Ltd. Multi-stage switching system
JP5287301B2 (ja) * 2009-01-30 2013-09-11 富士通株式会社 ディスクリプタ転送装置、i/oコントローラ、及びディスクリプタ転送方法
JP2010211322A (ja) * 2009-03-06 2010-09-24 Renesas Electronics Corp ネットワークプロセッサ、受信コントローラ、及びデータ受信処理方法
US8358651B1 (en) * 2009-09-21 2013-01-22 Marvell International Ltd. Switch device having a plurality of processing cores
US8544026B2 (en) 2010-02-09 2013-09-24 International Business Machines Corporation Processing data communications messages with input/output control blocks
US8972995B2 (en) 2010-08-06 2015-03-03 Sonics, Inc. Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads
US8949453B2 (en) 2010-11-30 2015-02-03 International Business Machines Corporation Data communications in a parallel active messaging interface of a parallel computer
US8949328B2 (en) 2011-07-13 2015-02-03 International Business Machines Corporation Performing collective operations in a distributed processing system
CN103034598B (zh) * 2011-09-28 2015-09-09 安凯(广州)微电子技术有限公司 保存dma下行数据时写使能信号的处理方法及系统
CN102541780B (zh) * 2011-12-15 2014-10-22 苏州国芯科技有限公司 一种多数据流通道dma系统
US20130166795A1 (en) * 2011-12-23 2013-06-27 Stec, Inc. System and method for streaming data in flash memory applications
CN103176931B (zh) * 2011-12-26 2016-03-09 安凯(广州)微电子技术有限公司 一种改进的dma通信方法及装置
US8930962B2 (en) 2012-02-22 2015-01-06 International Business Machines Corporation Processing unexpected messages at a compute node of a parallel computer
US9026568B2 (en) * 2012-03-30 2015-05-05 Altera Corporation Data compression for direct memory access transfers
US9514069B1 (en) 2012-05-24 2016-12-06 Schwegman, Lundberg & Woessner, P.A. Enhanced computer processor and memory management architecture
CN104813306B (zh) * 2012-11-21 2017-07-04 相干逻辑公司 具有散布处理器dma‑fifo的处理系统
KR101814412B1 (ko) 2013-03-15 2018-01-03 인텔 코포레이션 데이터 버퍼와 연관된 스누프 필터링의 제공
US9471521B2 (en) 2013-05-15 2016-10-18 Stmicroelectronics S.R.L. Communication system for interfacing a plurality of transmission circuits with an interconnection network, and corresponding integrated circuit
US10203958B2 (en) 2013-07-15 2019-02-12 Texas Instruments Incorporated Streaming engine with stream metadata saving for context switching
US9606803B2 (en) 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
US9053093B1 (en) * 2013-08-23 2015-06-09 Altera Corporation Modular direct memory access system
CN103593437A (zh) * 2013-11-14 2014-02-19 浪潮电子信息产业股份有限公司 一种基于dma的数据压缩芯片结构及其实现方法
US9886736B2 (en) 2014-01-20 2018-02-06 Nvidia Corporation Selectively killing trapped multi-process service clients sharing the same hardware context
KR101510862B1 (ko) 2014-04-17 2015-04-09 주식회사 텔레칩스 시스템온칩에서 상이한 도메인의 블록연결을 위한 단일채널 비동기 브리지 시스템
US10210114B2 (en) * 2014-08-01 2019-02-19 Universiti Teknologi Malaysia Interrupt-driven I/O arbiter for a microcomputer system
US10114770B2 (en) * 2014-08-01 2018-10-30 Universiti Teknologi Malaysia Homogenous device access method which removes physical device drivers in a computer operating system
US20160092118A1 (en) * 2014-09-26 2016-03-31 Intel Corporation Memory write management in a computer system
US9684615B1 (en) 2015-01-08 2017-06-20 Altera Corporation Apparatus and methods for multiple-channel direct memory access
CN105991475B (zh) * 2015-02-27 2020-01-07 中兴通讯股份有限公司 报文接收方法、装置及中央处理器
DE102015104776B4 (de) * 2015-03-27 2023-08-31 Infineon Technologies Ag Verfahren und Vorrichtung zum Verarbeiten von Radarsignalen
US10642771B2 (en) 2015-05-22 2020-05-05 Hewlett-Packard Development Company, L.P. Data channel allocation
CN105116797A (zh) * 2015-07-31 2015-12-02 上海卫星工程研究所 多通道高速数据采编soc芯片
US9697320B2 (en) * 2015-09-24 2017-07-04 Qualcomm Incorporated Rectilinear macros having non-uniform channel spacing
US10078606B2 (en) * 2015-11-30 2018-09-18 Knuedge, Inc. DMA engine for transferring data in a network-on-a-chip processor
US10904150B1 (en) 2016-02-02 2021-01-26 Marvell Israel (M.I.S.L) Ltd. Distributed dynamic load balancing in network systems
DE102016205536A1 (de) * 2016-04-04 2017-10-05 Robert Bosch Gmbh Speicherdirektzugriffssteuereinrichtung für eine einen Arbeitsspeicher aufweisende Recheneinheit
DE102016211768A1 (de) * 2016-06-29 2018-01-04 Robert Bosch Gmbh Speicherdirektzugriffssteuereinrichtung und Betriebsverfahren hierfür
US10678545B2 (en) 2016-07-07 2020-06-09 Texas Instruments Incorporated Data processing apparatus having streaming engine with read and read/advance operand coding
US20180011709A1 (en) 2016-07-08 2018-01-11 Texas Instruments Incorporated Stream reference register with double vector and dual single vector operating modes
US9965278B1 (en) 2016-12-20 2018-05-08 Texas Instruments Incorporated Streaming engine with compressed encoding for loop circular buffer sizes
CN109240954A (zh) * 2017-07-10 2019-01-18 恩智浦美国有限公司 具有触发序列发生器的dma控制器
US10642535B2 (en) 2018-01-23 2020-05-05 International Business Machines Corporation Register access in a distributed memory buffer system
KR20190123984A (ko) 2018-04-25 2019-11-04 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
CN110083571B (zh) * 2019-03-27 2023-02-03 中国计量大学上虞高等研究院有限公司 一种分布式实时存储装置及其数据传输方法
FR3094507A1 (fr) * 2019-03-29 2020-10-02 Stmicroelectronics (Grenoble 2) Sas Accès direct en mémoire
CN111400214B (zh) * 2020-02-27 2021-06-18 深圳震有科技股份有限公司 一种双核共用网口的实现方法、智能终端及存储介质
CN114661651A (zh) 2020-12-23 2022-06-24 富泰华工业(深圳)有限公司 数据存取方法以及系统
TWI766497B (zh) * 2020-12-23 2022-06-01 鴻海精密工業股份有限公司 資料存取方法及系統

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4099236A (en) * 1977-05-20 1978-07-04 Intel Corporation Slave microprocessor for operation with a master microprocessor and a direct memory access controller
JPS57154681A (en) * 1981-03-19 1982-09-24 Canon Electronics Inc Magnetic disk device
US4507732A (en) * 1981-10-05 1985-03-26 Burroughs Corporation I/O subsystem using slow devices
US4490785A (en) * 1982-05-07 1984-12-25 Digital Equipment Corporation Dual path bus structure for computer interconnection
US4701841A (en) * 1984-07-25 1987-10-20 Digital Equipment Corporation System for altering data transmission modes
CA1221068A (en) * 1986-01-14 1987-04-28 Richard Leduc Fire extinguishing system
GB2195038A (en) 1986-07-05 1988-03-23 Narayanaswamy D Jayaram A multi-microprocessor system with confederate processors
US4853846A (en) * 1986-07-29 1989-08-01 Intel Corporation Bus expander with logic for virtualizing single cache control into dual channels with separate directories and prefetch for different processors
US4779190A (en) * 1986-12-03 1988-10-18 Ncr Corporation Communication bus interface
US4782439A (en) * 1987-02-17 1988-11-01 Intel Corporation Direct memory access system for microcontroller
US4982321A (en) * 1987-10-23 1991-01-01 Honeywell Inc. Dual bus system
US5175826A (en) * 1988-05-26 1992-12-29 Ibm Corporation Delayed cache write enable circuit for a dual bus microcomputer system with an 80386 and 82385
JP2910303B2 (ja) * 1990-06-04 1999-06-23 株式会社日立製作所 情報処理装置
US5109517A (en) * 1990-10-09 1992-04-28 Ast Research, Inc. System for selectively controlling slots in an IBM-AT/NEC 9801 dual-compatible computer
EP0518488A1 (en) * 1991-06-12 1992-12-16 Advanced Micro Devices, Inc. Bus interface and processing system
US5369748A (en) * 1991-08-23 1994-11-29 Nexgen Microsystems Bus arbitration in a dual-bus architecture where one bus has relatively high latency
US5333274A (en) * 1991-10-15 1994-07-26 International Business Machines Corp. Error detection and recovery in a DMA controller
US5749092A (en) * 1993-03-18 1998-05-05 Intel Corporation Method and apparatus for using a direct memory access unit and a data cache unit in a microprocessor
US5794070A (en) * 1993-06-30 1998-08-11 Intel Corporation Method and apparatus for fast DMA transfer on an industry standard architecture (ISA) bus
US5751270A (en) * 1993-08-06 1998-05-12 Intel Corporation Method and apparatus for displaying an image using direct memory access
US5619729A (en) * 1993-12-02 1997-04-08 Intel Corporation Power management of DMA slaves with DMA traps
US5708849A (en) * 1994-01-26 1998-01-13 Intel Corporation Implementing scatter/gather operations in a direct memory access device on a personal computer
JP3308386B2 (ja) * 1994-04-25 2002-07-29 ファナック株式会社 制御システム
US5828903A (en) * 1994-09-30 1998-10-27 Intel Corporation System for performing DMA transfer with a pipeline control switching such that the first storage area contains location of a buffer for subsequent transfer
US5644784A (en) * 1995-03-03 1997-07-01 Intel Corporation Linear list based DMA control structure
EP0732659B1 (en) * 1995-03-17 2001-08-08 LSI Logic Corporation Controlling (n+i) I/O channels with (n) data managers in a homogeneous software programming environment
US5664197A (en) * 1995-04-21 1997-09-02 Intel Corporation Method and apparatus for handling bus master channel and direct memory access (DMA) channel access requests at an I/O controller
US5729762A (en) * 1995-04-21 1998-03-17 Intel Corporation Input output controller having interface logic coupled to DMA controller and plurality of address lines for carrying control information to DMA agent
US5890012A (en) * 1995-04-25 1999-03-30 Intel Corporation System for programming peripheral with address and direction information and sending the information through data bus or control line when DMA controller asserts data knowledge line
US5805842A (en) * 1995-09-26 1998-09-08 Intel Corporation Apparatus, system and method for supporting DMA transfers on a multiplexed bus
US5774680A (en) * 1995-12-11 1998-06-30 Compaq Computer Corporation Interfacing direct memory access devices to a non-ISA bus
US5859990A (en) * 1995-12-29 1999-01-12 Intel Corporation System for transferring data segments from a first storage device to a second storage device using an alignment stage including even and odd temporary devices
US5761532A (en) * 1995-12-29 1998-06-02 Intel Corporation Direct memory access controller with interface configured to generate wait states
US5870628A (en) * 1996-06-11 1999-02-09 International Business Machines Corporation Adaptor for receiving and processing asynchronous transfer mode cells within a computer network
US5802269A (en) * 1996-06-28 1998-09-01 Intel Corporation Method and apparatus for power management of distributed direct memory access (DDMA) devices
US5954809A (en) * 1996-07-19 1999-09-21 Compaq Computer Corporation Circuit for handling distributed arbitration in a computer system having multiple arbiters
US5898694A (en) * 1996-12-30 1999-04-27 Cabletron Systems, Inc. Method of round robin bus arbitration
US6449259B1 (en) * 1997-03-31 2002-09-10 Lucent Technologies Inc. Communication controller
US5944800A (en) * 1997-09-12 1999-08-31 Infineon Technologies Corporation Direct memory access unit having a definable plurality of transfer channels
US6157970A (en) * 1997-09-24 2000-12-05 Intel Corporation Direct memory access system using time-multiplexing for transferring address, data, and control and a separate control line for serially transmitting encoded DMA channel number
US6138503A (en) * 1997-10-16 2000-10-31 Raymax Technology, Inc. Scanning probe microscope system including removable probe sensor assembly
US6081851A (en) * 1997-12-15 2000-06-27 Intel Corporation Method and apparatus for programming a remote DMA engine residing on a first bus from a destination residing on a second bus
US6151654A (en) * 1997-12-24 2000-11-21 Intel Corporation Method and apparatus for encoded DMA acknowledges
US6108743A (en) * 1998-02-10 2000-08-22 Intel Corporation Technique for performing DMA including arbitration between a chained low priority DMA and high priority DMA occurring between two links in the chained low priority
US6192428B1 (en) * 1998-02-13 2001-02-20 Intel Corporation Method/apparatus for dynamically changing FIFO draining priority through asynchronous or isochronous DMA engines in response to packet type and predetermined high watermark being reached
US6122679A (en) * 1998-03-13 2000-09-19 Compaq Computer Corporation Master DMA controller with re-map engine for only spawning programming cycles to slave DMA controllers which do not match current programming cycle
US6182165B1 (en) * 1998-06-01 2001-01-30 Advanced Micro Devices, Inc. Staggered polling of buffer descriptors in a buffer descriptor ring direct memory access system
US6041400A (en) * 1998-10-26 2000-03-21 Sony Corporation Distributed extensible processing architecture for digital signal processing applications
US6260081B1 (en) * 1998-11-24 2001-07-10 Advanced Micro Devices, Inc. Direct memory access engine for supporting multiple virtual direct memory access channels
US6317804B1 (en) * 1998-11-30 2001-11-13 Philips Semiconductors Inc. Concurrent serial interconnect for integrating functional blocks in an integrated circuit device
US6430628B1 (en) * 1998-12-08 2002-08-06 Intel Corporation Method and apparatus for reducing direct memory access transfers using smart coalescing
US6275242B1 (en) * 1998-12-31 2001-08-14 Intel Corporation Method and apparatus for terminating direct memory access transfers from system memory to a video device
US6385671B1 (en) * 1999-03-29 2002-05-07 Intel Corporation Method/apparatus for flushing DMA transmit packet in FIFO when self-ID code generated by counter after bus reset is different than FIFO message self-ID field
US6782465B1 (en) 1999-10-20 2004-08-24 Infineon Technologies North America Corporation Linked list DMA descriptor architecture
US6418489B1 (en) * 1999-10-25 2002-07-09 Motorola, Inc. Direct memory access controller and method therefor
US6829254B1 (en) 1999-12-28 2004-12-07 Nokia Internet Communications, Inc. Method and apparatus for providing efficient application-level switching for multiplexed internet protocol media streams
US6622183B1 (en) * 2000-03-21 2003-09-16 Lsi Logic Corporation Data transmission buffer having frame counter feedback for re-transmitting aborted data frames
US6874039B2 (en) 2000-09-08 2005-03-29 Intel Corporation Method and apparatus for distributed direct memory access for systems on chip
US6622193B1 (en) 2000-11-16 2003-09-16 Sun Microsystems, Inc. Method and apparatus for synchronizing interrupts in a message passing queue oriented bus system
ATE498161T1 (de) * 2002-12-06 2011-02-15 Telecom Italia Spa Dma-verfahren, entsprechende system und rechnerprogrammprodukt

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100714096B1 (ko) * 2004-12-21 2007-05-02 한국전자통신연구원 온-칩 네트워크를 구비한 동영상 인코딩 장치 및 그 설계방법
US8335214B2 (en) 2008-03-18 2012-12-18 Samsung Electronics Co., Ltd. Interface system and method of controlling thereof
US9798492B2 (en) 2014-04-15 2017-10-24 SK Hynix Inc. Semiconductor device including a plurality of function blocks
KR20170083366A (ko) * 2016-01-08 2017-07-18 삼성전자주식회사 데이터의 루프백을 수행하는 시스템 온 칩과 집적 회로, 및 이들을 포함하는 모바일 장치
WO2023008654A1 (ko) * 2021-07-27 2023-02-02 주식회사 세미파이브 시스템 온 칩에서 기능 블록 간의 데이터 송수신을 위한 인터페이스 방법 및 이를 이용하는 시스템 온 칩

Also Published As

Publication number Publication date
US8719465B2 (en) 2014-05-06
ATE352814T1 (de) 2007-02-15
WO2003023625A1 (en) 2003-03-20
US20090070513A1 (en) 2009-03-12
DE60217884T2 (de) 2007-11-08
US20020038393A1 (en) 2002-03-28
US8386665B2 (en) 2013-02-26
US20110320672A1 (en) 2011-12-29
EP1430405A1 (en) 2004-06-23
KR100801763B1 (ko) 2008-02-05
US7464197B2 (en) 2008-12-09
US20130138877A1 (en) 2013-05-30
CN1552028A (zh) 2004-12-01
US6874039B2 (en) 2005-03-29
EP1430405B1 (en) 2007-01-24
US7155541B2 (en) 2006-12-26
TWI268426B (en) 2006-12-11
US20050216613A1 (en) 2005-09-29
CN1552028B (zh) 2011-11-30
DE60217884D1 (de) 2007-03-15
US7970961B2 (en) 2011-06-28
US20050125572A1 (en) 2005-06-09

Similar Documents

Publication Publication Date Title
KR100801763B1 (ko) 시스템 온 칩에 대한 분산형 직접 메모리 액세스 방법 및장치
US7072996B2 (en) System and method of transferring data between a processing engine and a plurality of bus types using an arbiter
JP3336816B2 (ja) マルチメディア通信装置及び方法
EP0993680B1 (en) Method and apparatus in a packet routing switch for controlling access at different data rates to a shared memory
US6611883B1 (en) Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system
US6119196A (en) System having multiple arbitrating levels for arbitrating access to a shared memory by network ports operating at different data rates
US7054986B2 (en) Programmable CPU/interface buffer structure using dual port RAM
US20040151170A1 (en) Management of received data within host device using linked lists
US8270399B2 (en) Crossbar apparatus for a forwarding table memory in a router
EP0752780A2 (en) Method and apparatus for separating data packets into multiple busses
US7596148B2 (en) Receiving data from virtual channels
US20040151175A1 (en) Transparent data format within host device supporting differing transaction types
AU624745B2 (en) Packet/fast packet switch for voice and data
GB2367728A (en) Linked-list memory access control for and concentrator

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