KR20150083894A - 인텔리전트 듀얼 데이터 레이트 (ddr) 메모리 제어기 - Google Patents

인텔리전트 듀얼 데이터 레이트 (ddr) 메모리 제어기 Download PDF

Info

Publication number
KR20150083894A
KR20150083894A KR1020157014940A KR20157014940A KR20150083894A KR 20150083894 A KR20150083894 A KR 20150083894A KR 1020157014940 A KR1020157014940 A KR 1020157014940A KR 20157014940 A KR20157014940 A KR 20157014940A KR 20150083894 A KR20150083894 A KR 20150083894A
Authority
KR
South Korea
Prior art keywords
memory
controller
source address
memory controller
determining
Prior art date
Application number
KR1020157014940A
Other languages
English (en)
Other versions
KR101577936B1 (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 KR20150083894A publication Critical patent/KR20150083894A/ko
Application granted granted Critical
Publication of KR101577936B1 publication Critical patent/KR101577936B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Dram (AREA)
  • Memory System (AREA)

Abstract

다양한 실시형태들은, 하나 이상의 메모리들로 그리고 그로부터 데이터를 전송할 경우 시스템 버스들/패브릭들을 통해 통신된 정보의 양을 감소시키도록 구성된 시스템들, 방법들, 및 디바이스들을 포함한다. 시스템 마스터 컴포넌트는 소스 어드레스 및 목적지 어드레스를, 메모리 제어기의 내부의 또는 그에 인접한 다이렉트 메모리 액세스 제어기로 전송할 수도 있다. 다이렉트 메모리 액세스 제어기 및/또는 메모리 제어기는 소스 및 목적지 어드레스들이 메모리의 관련 부분들의 내부에 있는지 여부를 결정할 수도 있다. 소스 및 목적지 양자가 메모리의 관련 부분의 내부에 있는 경우, 메모리 제어기는 시스템 버스에 액세스하지 않고도 메모리 대 메모리 데이터 전송을 수행할 수도 있다.

Description

인텔리전트 듀얼 데이터 레이트 (DDR) 메모리 제어기{INTELLIGENT DUAL DATA RATE (DDR) MEMORY CONTROLLER}
셀룰러 및 무선 통신 기술들은 과거 수년에 걸쳐 폭발적인 성장을 보였다. 이제, 무선 서비스 제공자들은 다수의 특징들 및 서비스들을 제공하며, 그 사용자들에게 정보, 리소스들 및 통신에의 전례없는 레벨들의 액세스를 제공한다. 이들 서비스 개선들과 보조를 맞추기 위해, 모바일 전자 디바이스들 (예를 들어, 셀룰러 전화기들, 태블릿들, 랩탑들 등) 은 이전보다 더 특징이 풍부해지고 더 복잡하게 되었다. 이제, 모바일 전자 디바이스들은, 모바일 디바이스 사용자들로 하여금 그 모바일 디바이스들 상에서 복잡하고 전력 집중적인 소프트웨어 어플리케이션들 (예를 들어, 비디오 스트리밍, 멀티미디어 프로세싱 등) 을 실행하게 하는 다중의 프로세서들, 시스템 온 칩들 (SoC들), 다중의 메모리들, 및 다른 리소스들 (예를 들어, 전력 레일들 등) 을 일반적으로 포함한다. 모바일 디바이스들 및 관련 기술들이 대중성 및 사용에 있어서 계속 성장함에 따라, 모바일 디바이스들의 수행 능력들 및 전력 소비 특성들을 개선시키는 것은 모바일 디바이스 설계자들에 대해 중요하고 도전적인 설계 기준들이 될 것으로 예상된다.
다양한 양태들은 메모리, 메모리에 커플링된 메모리 제어기, 및 메모리 제어기에 직접 커플링된 다이렉트 메모리 액세스 (DMA) 제어기를 포함하는 메모리 시스템을 포함한다. 일 양태에 있어서, 다이렉트 메모리 액세스 (DMA) 제어기는 메모리 제어기에 직접 커플링될 수도 있어서 다이렉트 메모리 액세스 (DMA) 제어기 및 메모리 제어기가 시스템 데이터 버스의 동일한 측면 상에 배치되게 한다. 추가의 양태에 있어서, 메모리 제어기는 동적 랜덤 액세스 메모리 (DRAM) 메모리 제어기일 수도 있다. 추가의 양태에 있어서, 메모리 제어기는 더블 데이터 레이트 (DDR) 메모리 제어기일 수도 있으며, 메모리는 DDR 동기식 동적 랜덤 액세스 메모리일 수도 있다.
추가의 양태에 있어서, 다이렉트 메모리 액세스 제어기는 소스 어드레스 및 목적지 어드레스를 수신하는 것, 소스 어드레스가 메모리에 있는지 여부를 결정하는 것, 소스 어드레스가 메모리에 있다고 결정한 것에 응답하여 목적지 어드레스가 메모리에 있는지 여부를 결정하는 것, 및 목적지 어드레스가 메모리에 있다고 결정한 것에 응답하여 어떠한 데이터도 버스 상으로 푸쉬하지 않고도 소스 어드레스에 저장된 데이터를 목적지 어드레스에 카피하는 것을 포함하는 동작들을 수행하도록 구성될 수도 있다. 추가의 양태에 있어서, 다이렉트 메모리 액세스 제어기는 목적지 어드레스가 메모리에 있지 않다고 결정한 것에 응답하여 소스 어드레스에 저장된 데이터를 버스 상으로 푸쉬하는 것을 포함하는 동작들을 수행하도록 구성될 수도 있다. 추가의 양태에 있어서, 다이렉트 메모리 액세스 제어기는 소스 어드레스가 메모리에 있지 않다고 결정한 것에 응답하여 판독 요청, 소스 어드레스, 및 목적지 어드레스를 버스 상으로 푸쉬하는 것을 포함하는 동작들을 수행하도록 구성될 수도 있다.
추가의 양태들은 시스템 데이터 버스, 시스템 데이터 버스에 커플링된 프로세서, 및 시스템 데이터 버스에 커플링된 메모리 시스템을 포함하는 컴퓨팅 디바이스를 포함한다. 메모리 시스템은 메모리, 메모리에 커플링된 메모리 제어기, 및 메모리 제어기에 직접 커플링된 다이렉트 메모리 액세스 제어기를 포함할 수도 있다. 일 양태에 있어서, 다이렉트 메모리 액세스 제어기는 메모리 제어기에 직접 커플링될 수도 있어서 다이렉트 메모리 액세스 제어기 및 메모리 제어기가 시스템 데이터 버스의 동일한 측면 상에 배치되게 한다. 추가의 양태에 있어서, 메모리 제어기는 동적 랜덤 액세스 메모리 (DRAM) 메모리 제어기일 수도 있다. 추가의 양태에 있어서, 메모리 제어기는 더블 데이터 레이트 (DDR) 메모리 제어기일 수도 있으며, 메모리는 DDR 동기식 동적 랜덤 액세스 메모리일 수도 있다.
추가의 양태에 있어서, 다이렉트 메모리 액세스 제어기는 소스 어드레스 및 목적지 어드레스를 수신하는 것, 소스 어드레스가 메모리에 있을 수도 있는지 여부를 결정하는 것, 소스 어드레스가 메모리에 있을 수도 있다고 결정한 것에 응답하여 목적지 어드레스가 메모리에 있을 수도 있는지 여부를 결정하는 것, 및 목적지 어드레스가 메모리에 있을 수도 있다고 결정한 것에 응답하여 어떠한 데이터도 버스 상으로 푸쉬하지 않고도 소스 어드레스에 저장된 데이터를 목적지 어드레스에 카피하는 것을 포함하는 동작들을 수행하도록 구성될 수도 있다. 추가의 양태에 있어서, 다이렉트 메모리 액세스 제어기는 목적지 어드레스가 메모리에 있지 않을 수도 있다고 결정한 것에 응답하여 소스 어드레스에 저장된 데이터를 버스 상으로 푸쉬하는 것을 더 포함하는 동작들을 수행하도록 구성될 수도 있다. 추가의 양태에 있어서, 다이렉트 메모리 액세스 제어기는 소스 어드레스가 메모리에 있지 않을 수도 있다고 결정한 것에 응답하여 판독 요청, 소스 어드레스, 및 목적지 어드레스를 버스 상으로 푸쉬하는 것을 더 포함하는 동작들을 수행하도록 구성될 수도 있다.
추가의 양태들은 하나 이상의 메모리들로 및 그로부터 데이터를 전송하는 방법들을 포함하고, 그 방법들은 메모리 제어기에 직접 커플링된 다이렉트 메모리 액세스 제어기에서 소스 어드레스 및 목적지 어드레스를 수신하는 단계, 소스 어드레스가 메모리 제어기에 커플링된 메모리에 있을 수도 있는지 여부를 메모리 제어기에서 결정하는 단계, 목적지 어드레스가 메모리에 있을 수도 있는지 여부를 메모리 제어기에서 결정하는 단계, 및 소스 어드레스 및 목적지 어드레스 양자가 메모리에 있다고 메모리 제어기가 결정할 경우 어떠한 데이터도 버스 상으로 푸쉬하지 않고도 소스 어드레스에 저장된 데이터를 목적지 어드레스에 카피하는 단계를 포함한다.
일 양태에 있어서, 그 방법은 목적지 어드레스가 메모리에 있지 않을 수도 있다고 결정한 것에 응답하여 소스 어드레스에 저장된 데이터를 버스 상으로 푸쉬하는 단계를 포함할 수도 있다. 추가의 양태에 있어서, 그 방법은 소스 어드레스가 메모리에 있지 않을 수도 있다고 결정한 것에 응답하여 판독 요청, 소스 어드레스, 및 목적지 어드레스를 버스 상으로 푸쉬하는 단계를 포함할 수도 있다. 추가의 양태에 있어서, 메모리 제어기에 직접 커플링된 다이렉트 메모리 액세스 제어기에서 소스 어드레스 및 목적지 어드레스를 수신하는 단계는 메모리 제어기와의 시스템 데이터 버스의 동일한 측면 상에 배치된 다이렉트 메모리 액세스 제어기에서 소스 어드레스 및 목적지 어드레스를 수신하는 단계를 포함할 수도 있다.
추가의 양태에 있어서, 소스 어드레스가 메모리 제어기에 커플링된 메모리에 있을 수도 있는지 여부를 메모리 제어기에서 결정하는 단계는 소스 어드레스가 메모리에 있을 수도 있는지 여부를 동적 랜덤 액세스 메모리 (DRAM) 메모리 제어기에서 결정하는 단계를 포함할 수도 있다. 추가의 양태에 있어서, 소스 어드레스가 메모리 제어기에 커플링된 메모리에 있을 수도 있는지 여부를 메모리 제어기에서 결정하는 단계는 소스 어드레스가 DDR 동기식 동적 랜덤 액세스 메모리에 있을 수도 있는지 여부를 더블 데이터 레이트 (DDR) 메모리 제어기에서 결정하는 단계를 포함할 수도 있다.
추가의 양태들은, 메모리 제어기에 직접 커플링된 다이렉트 메모리 액세스 제어기에서 소스 어드레스 및 목적지 어드레스를 수신하는 수단, 소스 어드레스가 메모리 제어기에 커플링된 메모리에 있을 수도 있는지 여부를 메모리 제어기에서 결정하는 수단, 목적지 어드레스가 메모리에 있을 수도 있는지 여부를 메모리 제어기에서 결정하는 수단, 및 소스 어드레스 및 목적지 어드레스 양자가 메모리에 있다고 메모리 제어기가 결정할 경우 어떠한 데이터도 버스 상으로 푸쉬하지 않고도 소스 어드레스에 저장된 데이터를 목적지 어드레스에 카피하는 수단을 갖는 컴퓨팅 디바이스를 포함한다.
일 양태에 있어서, 컴퓨팅 디바이스는 목적지 어드레스가 메모리에 있지 않을 수도 있다고 결정한 것에 응답하여 소스 어드레스에 저장된 데이터를 버스 상으로 푸쉬하는 수단을 포함할 수도 있다. 추가의 양태에 있어서, 컴퓨팅 디바이스는 소스 어드레스가 메모리에 있지 않을 수도 있다고 결정한 것에 응답하여 판독 요청, 소스 어드레스, 및 목적지 어드레스를 버스 상으로 푸쉬하는 수단을 포함할 수도 있다. 추가의 양태에 있어서, 메모리 제어기에 직접 커플링된 다이렉트 메모리 액세스 제어기에서 소스 어드레스 및 목적지 어드레스를 수신하는 수단은 메모리 제어기와의 시스템 데이터 버스의 동일한 측면 상에 배치된 다이렉트 메모리 액세스 제어기에서 소스 어드레스 및 목적지 어드레스를 수신하는 수단을 포함할 수도 있다.
추가의 양태에 있어서, 소스 어드레스가 메모리 제어기에 커플링된 메모리에 있을 수도 있는지 여부를 메모리 제어기에서 결정하는 수단은 소스 어드레스가 메모리에 있을 수도 있는지 여부를 동적 랜덤 액세스 메모리 (DRAM) 메모리 제어기에서 결정하는 수단을 포함할 수도 있다. 추가의 양태에 있어서, 소스 어드레스가 메모리 제어기에 커플링된 메모리에 있을 수도 있는지 여부를 메모리 제어기에서 결정하는 수단은 소스 어드레스가 DDR 동기식 동적 랜덤 액세스 메모리에 있을 수도 있는지 여부를 더블 데이터 레이트 (DDR) 메모리 제어기에서 결정하는 수단을 포함할 수도 있다.
본 명세서에 통합되고 본 명세서의 부분을 구성하는 첨부 도면들은 본 발명의 예시적인 실시형태들을 도시하고, 상기 제공된 일반적인 설명 및 하기에 제공되는 상세한 설명과 함께, 본 발명의 특징들을 설명하도록 제공한다.
도 1 은 다양한 양태들을 구현하는 예시적인 시스템 온 칩 (SOC) 아키텍처를 도시한 컴포넌트 블록 다이어그램이다.
도 2 및 도 3 은 다양한 양태들을 구현하는 예시적인 컴퓨터 시스템들에서의 다양한 컴포넌트들을 도시한 기능 블록 다이어그램들이다.
도 4 및 도 5 는 메모리 대 메모리 전송들을 수행하는 양태의 메모리 제어기 방법들의 프로세스 플로우 다이어그램들이다.
도 6 은 다양한 실시형태들로의 사용에 적합한 예시적인 모바일 디바이스의 예시이다.
도 7 은 다양한 실시형태들로의 사용에 적합한 예시적인 랩탑 컴퓨터의 예시이다.
다양한 실시형태들이 첨부 도면들을 참조하여 상세하게 설명될 것이다. 가능한 어느 곳에서든, 동일한 참조부호들이 동일하거나 유사한 부분들을 지칭하기 위해 도면들 전반에 걸쳐 사용될 것이다. 특정 예들 및 구현들에 대해 행해진 참조들은 예시적인 목적들이고, 본 발명 또는 청구항들의 범위를 한정하도록 의도되지 않는다.
용어들 "컴퓨팅 디바이스" 및 "모바일 디바이스" 는 서버들, 개인용 컴퓨터들, 스마트폰들, 셀룰러 전화기들, 태블릿 컴퓨터들, 랩탑 컴퓨터들, 넷북들, 울트라북들, 팜탑 컴퓨터들, 개인용 데이터 보조기들 (PDA들), 무선 전자 메일 수신기들, 멀티미디어 인터넷 가능식 셀룰러 전화기들, 글로벌 포지셔닝 시스템 (GPS) 수신기들, 무선 게이밍 제어기들, 및 프로그래밍가능 프로세서를 포함하는 유사한 개인용 전자 디바이스들 중 임의의 하나 또는 그 모두를 지칭하도록 본 명세서에서 상호 대체가능하게 사용된다. 다양한 양태들은 한정된 리소스들 (예를 들어, 프로세싱 전력, 배터리 등) 을 갖는 모바일 디바이스들 (예를 들어, 스마트폰들, 랩탑 컴퓨터들 등) 에서 특히 유용하지만, 그 양태들은, 개선된 프로세서 성능 및 감소된 에너지 소비로부터 이익을 얻을 수도 있는 임의의 컴퓨팅 디바이스에서 일반적으로 유용하다.
용어 "멀티코어 프로세서" 는, 프로그램 명령들을 판독 및 실행하도록 구성된 2 이상의 독립적인 프로세싱 유닛들 또는 코어들 (예를 들어, CPU 코어들 등) 을 포함하는 단일의 집적회로 (IC) 칩 또는 칩 패키지를 지칭하도록 본 명세서에서 사용된다. 용어 "멀티프로세서" 는, 프로그램 명령들을 판독 및 실행하도록 구성된 2 이상의 프로세싱 유닛들을 포함하는 시스템 또는 디바이스를 지칭하도록 본 명세서에서 사용된다.
용어 "시스템 온 칩" (SOC) 은, 단일의 기판 상에 집적된 다중의 리소스들 및/또는 프로세서들을 포함하는 단일의 집적회로 (IC) 칩을 지칭하도록 본 명세서에서 사용된다. 단일의 SOC 는 디지털, 아날로그, 혼합된 신호, 및 무선 주파수 기능들을 위한 회로를 포함할 수도 있다. 단일의 SOC 는 또한 임의의 수의 범용 및/또는 특수화 프로세서들 (디지털 신호 프로세서들, 모뎀 프로세서들, 비디오 프로세서들 등), 메모리 블록들 (예를 들어, ROM, RAM, 플래시 등) 및 리소스들 (예를 들어, 타이머들, 전압 조절기들, 오실레이터들 등) 을 포함할 수도 있으며, 이들 중 임의의 것 또는 그 모두는 하나 이상의 코어들에 포함될 수도 있다.
다수의 상이한 타입들의 메모리들 및 메모리 기술들이 장래에 이용가능하거나 고려되며, 이들 모두는 다양한 양태들로의 사용에 적합하다. 그러한 메모리 기술들/타입들은 상변화 메모리 (PRAM), 동적 랜덤 액세스 메모리 (DRAM), 정적 랜덤 액세스 메모리 (SRAM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 의사정적 랜덤 액세스 메모리 (PSRAM), 더블 데이터 레이트 동기식 동적 랜덤 액세스 메모리 (DDR SDRAM), 및 당업계에 공지된 다른 랜덤 액세스 메모리 (RAM) 및 판독 전용 메모리 (ROM) 기술들을 포함한다. DDR SDRAM 메모리는 DDR 타입 1 SDRAM 메모리, DDR 타입 2 SDRAM 메모리, DDR 타입 3 SDRAM 메모리, 또는 DDR 타입 4 SDRAM 메모리일 수도 있다. 상기 서술된 메모리 기술들 각각은, 예를 들어, 컴퓨터 또는 다른 디지털 전자 디바이스에서 또는 그에 의한 사용을 위해 명령들, 프로그램들, 제어 신호들, 및/또는 데이터를 저장하기에 적합한 엘리먼트들을 포함한다. 개별 타입의 메모리, 인터페이스, 표준 또는 메모리 기술에 관련된 용어 및/또는 기술적 상세들에 대한 임의의 참조들은 오직 예시적인 목적일 뿐, 청구항 언어로 명확하게 기재되지 않으면, 청구항들의 범위를 특정 메모리 시스템 또는 기술로 한정하도록 의도되지 않는다.
최근, 모바일 컴퓨팅 디바이스 아키텍처들은 복잡도가 증가하였고, 이제, 일반적으로, 다중의 프로세서 코어들, 시스템 온 칩들 (SOC들), 코-프로세서들 (co-processors), 전용 프로세서들을 포함하는 기능 모듈들 (예를 들어, 통신 모뎀 칩들, GPS 수신기들 등), 복잡한 메모리 시스템들, 복잡한 전기 상호접속부들 (예를 들어, 버스들 및/또는 패브릭들), 및 복잡한 그리고 전력 집중적인 소프트웨어 어플리케이션들 (예를 들어, 비디오 스트리밍 어플리케이션들 등) 을 실행하는 다수의 다른 리소스들을 포함한다. 복잡도에 있어서의 이러한 증가로, 새로운 메모리 관리 솔루션들이, 모바일 디바이스들의 계산상의 및 전력 관리 성능을 개선하기 위해 요구된다.
현대 컴퓨팅 디바이스 아키텍처들의 복잡도로 인해, 디바이스 성능은 디바이스의 통신 버스들의 속도, 폭, 및 대역폭에 의존할 수도 있다. 게다가, 기존의 메모리 관리 시스템들은 메모리로 및 메모리로부터 데이터를 판독 및 기입하기 위해 시스템 버스들의 광범위한 이용을 요구하고, 이는 다량의 버스 대역폭을 소비하고 전력을 소모하며 전체 디바이스 성능 (예를 들어, 응답도 등) 을 열화시킬 수도 있다.
다양한 양태들은, 하나 이상의 메모리들로 그리고 그로부터 데이터를 전송할 경우 시스템 버스들/패브릭들을 통해 통신된 정보의 양을 감소시켜, 디바이스 성능을 개선시키고 전력 소비를 감소시킨다.
일반적으로, 메모리 동작들 (예를 들어, 판독, 기입 등) 은 다수의 단순하지만 시간 소비적인 동작들의 수행을 요구한다. 프로세싱 속도들이 메모리 액세스 속도들보다 훨씬 더 빠르기 때문에, 프로세서 (또는 주변기기 컴포넌트) 는 다이렉트 메모리 액세스 (DMA) 제어기에 대한 메모리 동작들을 오프로딩할 수도 있고, DMA 제어기가 메모리 동작들의 성능을 관리하는 동안 프로세싱 태스크들을 수행하는 것을 계속할 수도 있다.
DMA 제어기는, 판독 및 기입 동작들을 수행하기 위해 물리 메모리 (예를 들어, SDRAM 등) 과 인터페이싱하는 슬레이브 메모리 제어기를 구동하는 외부 마스터 컴포넌트 (예를 들어, 버스 마스터) 이다. 종래의 컴퓨터 아키텍처에 있어서, 외부 마스터 (예를 들어, DMA 제어기 등) 는 시스템 버스를 통해 메모리 제어기를 구동한다. 다수의 동작들에 있어서, 시스템 버스를 통해 메모리 제어기를 구동하는 것은, 시스템 버스가 2개의 컴포넌트들 간의 데이터 경로이기 때문에, 예컨데 사용을 위해 데이터를 메모리로부터 프로세서로 이동시킬 경우에 필요하다.
하지만, 시스템 버스는 한정된 대역폭을 가져서, 명령들 및 데이터를 일 메모리 위치로부터 다른 메모리 위치로 단지 이동시키는 메모리 동작들을 수행하는 것은 중요 디바이스 리소스를 불필요하게 소비할 수 있다. 예를 들어, 종래의 아키텍처에 있어서 메모리 대 메모리 데이터 전송을 수행할 경우, 외부 마스터로서 동작하는 DMA 제어기는 판독 커맨드 및 메모리 어드레스를 시스템 버스를 통해 메모리 제어기로 전송한다. 응답하여, 메모리 제어기는 판독 커맨드 및 메모리 어드레스를 시스템 버스로부터 획득(pull)하고, 메모리 어드레스와 연관된 물리 메모리에 있어서 로우 및 컬럼을 로케이팅하고, 물리 메모리로부터 데이터를 취출하며, 취출된 데이터를 시스템 버스 상으로 푸쉬한다. 그 후, DMA 제어기는 그 버스로부터 데이터를 획득하고, 데이터를 버퍼에 저장하고, 기입 커맨드, 새로운 어드레스, 및 데이터를 시스템 버스 상으로 역으로 푸쉬한다. 그 후, 메모리 제어기는 그 버스로부터 기입 커맨드, 새로운 어드레스, 및 데이터를 획득하고, 데이터를 물리 메모리 내 새로운 어드레스에 기입한다. 따라서, 물리 메모리의 일부분으로부터 동일 물리 메모리의 다른 부분으로 데이터를 이동시키기 위해, 데이터는 버스 상으로 2회 송신되어야 한다. 시스템 버스 상으로의 이들 데이터 전송들 각각은 중요 프로세서간 데이터 경로를 점유하고, 그 동안, 명령들 및 데이터는 다른 프로세서들 또는 모듈들로 또는 그들 사이로 전달될 수 없다. 따라서, 비록 데이터가 동일 메모리 칩 내 일 어드레스 위치로부터 다른 어드레스 위치로 이동되고 있더라도, 동작들은 다른 디바이스 모듈들 중에서의 데이터 통신을 중단해야 한다. 현저한 수의 메모리 대 메모리 데이터 전송들을 수행하는 시스템들 상에서, 그러한 정보 (판독/기입 커맨드들, 어드레스들, 데이터 등) 를 버스 상으로 전후로 전송하는 것은 버스 대역폭을 불필요하게 제한하고, 전력을 낭비하며, 컴퓨팅 디바이스의 성능/응답도를 열화시킨다.
다양한 양태들은, 시스템 버스로/로부터 정보를 푸쉬 및/또는 획득하지 않고도 메모리 대 메모리 데이터 전송들을 수행하도록 구성된 마스터 컴포넌트를 포함하는 메모리 제어기를 포함한다. 일 양태에 있어서, 마스터 컴포넌트는 다이렉트 메모리 액세스 (DMA) 동작들을 수행하도록 구성될 수도 있다. 일 양태에 있어서, 마스터 컴포넌트는 DMA 제어기일 수도 있다. 다른 양태에 있어서, 마스터 컴포넌트는 외부 DMA 제어기와 통신할 수도 있다.
다양한 양태들은, 단일 프로세서 시스템들, 멀티-프로세서 시스템들, 멀티코어 프로세서 시스템들, 시스템 온 칩 (SOC), 또는 이들의 임의의 조합을 포함하여 매우 다양한 컴퓨팅 시스템들에서 구현될 수도 있다.
도 1 은 다양한 양태들을 구현하기에 적합한 시스템 온 칩 (SOC) (100) 에서의 예시적인 컴포넌트들 및 상호접속부들을 도시한다. SOC (100) 는 디지털 신호 프로세서 (DSP) (102), 모뎀 프로세서 (104), 그래픽스 프로세서 (106), 및 어플리케이션 프로세서 (108) 와 같은 다수의 이종 프로세서들을 포함할 수도 있다. 각각의 프로세서 (102, 104, 106, 108) 는 하나 이상의 코어들을 포함할 수도 있으며, 각각의 프로세서/코어는 다른 프로세서들/코어들에 독립적인 동작들을 수행할 수도 있다. 프로세서들 (102, 104, 106, 108) 은 (예를 들어, 단일의 기판, 다이, 집적된 칩 등 상에서) 서로 매우 근접하게 구성되어, 신호들이 오프-칩으로 이동하려면 가능한 것보다 훨씬 더 높은 주파수/클록 레이트에서 동작할 수도 있다. 코어들의 근접성은 또한 온-칩 메모리 및 리소스들 (예를 들어, 전압 레일) 의 공유뿐 아니라 코어들 간의 더 조정된 협력을 허용할 수도 있다.
SOC (100) 는 센서 데이터, 아날로그-디지털 변환물들, 무선 데이터 송신물들을 관리하기 위한 그리고 다른 특수화된 동작들 (예를 들어, 고화질 비디오를 디코딩하는 것, 비디오 프로세싱 등) 을 수행하기 위한 아날로그 회로 및 커스텀 회로 (114) 를 포함할 수도 있다. SOC (100) 는 전압 조절기들, 오실레이터들, 위상 록킹 루프들, 주변기기 브리지들, 데이터 제어기들, 시스템 제어기들, 액세스 포트들, 타이머들, 및 컴퓨팅 디바이스 상에서 구동하는 프로세서들 및 소프트웨어 클라이언트들을 지원하는데 사용되는 다른 유사한 컴포넌트들과 같은 다양한 시스템 컴포넌트들 및 리소스들 (116) 을 더 포함할 수도 있다. 시스템 컴포넌트들 (116) 및 커스텀 회로 (114) 는 또한, 카메라들, 전자 디스플레이들, 무선 통신 디바이스들, 외부 메모리 칩들 등과 같이 주변기기 디바이스들과 인터페이싱하기 위한 회로를 포함할 수도 있다.
SOC (100) 는 다이렉트 메모리 액세스 (DMA) 제어기 (122), 유니버셜 직렬 버스 제어기 (124), 및 하나 이상의 메모리 제어기들 (126) 을 더 포함할 수도 있다. SOC (100) 는 또한, 클록 (118) 및 전압 조절기 (120) 와 같이 SOC 외부에서 리소스들과 통신하기 위한 입력/출력 모듈 (도시 안됨) 을 포함할 수도 있으며, 이들 각각은 내부 SOC 컴포넌트들 중 2 이상의 컴포넌트들에 의해 공유될 수도 있다.
프로세서들 (102, 104, 106, 108) 은 DMA 제어기 (124), USB 제어기 (124), 메모리 제어기 (126), 리소스들 (116), 커스텀 회로 (114), 및 다른 시스템 컴포넌트들에 상호접속부/버스 모듈 (130) 를 통해 상호접속될 수도 있으며, 이 상호접속부/버스 모듈 (130) 은 구성가능 로직 게이트들의 어레이를 포함하고/하거나 버스 아키텍처 (예를 들어, CoreConnect, AMBA 등) 를 구현할 수도 있다. 통신은 또한, 고성능 네트워크 온 칩 (NoC들) 과 같은 진보한 상호접속부들에 의해 제공될 수도 있다.
DMA 제어기 (122) 는 메모리 동작들의 성능을 관리하도록 구성된 특수화된 하드웨어 모듈일 수도 있다. 프로세서들 (102, 104, 106, 108) 및 다른 SOC 컴포넌트들은 DMA 제어기 (122) 에 대한 메모리 동작들을 오프로딩하고, DMA 제어기 (122) 가 메모리 동작들의 성능을 관리하는 동안 더 높은 레벨의 또는 더 복잡한 태스크들을 수행할 수도 있다.
DDR 메모리 제어기 (126) 는 DDR 메모리 어레이 (128) 로의 및 그로부터의 데이터의 플로우를 관리하도록 구성된 특수화된 하드웨어 모듈일 수도 있다. DDR 메모리 제어기 (126) 는, 메모리 위치에 대응하는 로우 및 컬럼을 선택하는 것, 데이터를 판독하거나 메모리 위치에 데이터를 기입하는 것 등과 같이 DDR 메모리 어레이들 (128) 과 인터페이싱하기 위한 로직을 포함할 수도 있다.
상호접속부/버스 모듈 (130) 은 설정된 지속기간, 동작들의 수, 바이트들의 수 등을 위한 (예를 들어, 데이터를 버스트 모드로 전송하는 것, 전송 모드를 차단하는 것 등을 위해) 버스의 배타적인 제어를 SOC 컴포넌트들 (예를 들어, 프로세서들, 주변기기들 등) 에게 허여하도록 구성된 버스 마스터링 시스템을 포함 또는 제공할 수도 있다. 일 양태에 있어서, 버스 모듈 (130) 은, 버스 모듈 (130) 에 접속된 컴포넌트들로 하여금 마스터 컴포넌트로서 동작할 수 있게 하고 메모리 트랜잭션들을 개시할 수 있게 하는 DMA 제어기를 포함할 수도 있다. 버스 모듈 (130) 은 또한, 다중의 마스터 컴포넌트들이 버스를 동시에 구동하려고 시도하는 것을 방지하기 위한 중재 방식을 구현할 수도 있다.
기존의 메모리 제어기들은 "슬레이브 전용 (slave-only)" 컴포넌트들이다. 따라서, 메모리 동작들을 달성하기 위해, 외부 마스터 (예를 들어, DMA 제어기 (122), USB 제어기 (124), 어플리케이션 프로세서 (108) 등) 는 버스 (예를 들어, 버스 모듈 (130)) 를 통해 메모리 제어기 (예를 들어, DDR 제어기 (126)) 를 구동해야 한다. 예를 들어, 메모리 대 메모리 데이터 전송을 수행할 경우, DMA 제어기는 판독 커맨드 및 소스 메모리 어드레스를 버스를 통해 메모리 제어기로 전송하도록 요구될 수도 있다. 메모리 제어기는 판독 커맨드 및 소스 메모리 어드레스를 수신하고, 메모리에 있어서 소스 메모리 어드레스와 연관된 로우 및 컬럼을 로케이팅하고, 데이터를 취출하며, 취출된 데이터를 버스 상으로 푸쉬할 수도 있다. DMA 제어기는 데이터를 수신하고 데이터를 버퍼 (도시 안됨) 에 저장하고, 기입 커맨드, 목적지 어드레스, 및 데이터를 버스 상으로 푸쉬할 수도 있다. 메모리 제어기는 기입 커맨드, 목적지 어드레스, 및 데이터를 수신하고, 데이터를 목적지 어드레스에 기입할 수도 있다. 따라서, 기존의 솔루션들을 이용하여, 이동되고 있는 데이터는 버스 상으로 2회 송신되어야 한다. 상기 논의된 바와 같이, 현저한 수의 메모리 대 메모리 데이터 전송들을 수행하는 시스템들 상에서, 그러한 정보 (판독/기입 커맨드들, 어드레스들, 데이터 등) 를 버스 상으로 전후로 전송하는 것은 버스 대역폭을 불필요하게 제한하고, 전력을 낭비하며, SOC 및 컴퓨팅 디바이스의 성능/응답도를 열화시킨다.
DDR 메모리 제어기 (126) 는, 시스템 버스의 이용없이 메모리 대 메모리 전송 동작들을 수행하도록 구성된 마스터 컴포넌트 (132) 를 포함할 수도 있다. 일 양태에 있어서, 마스터 컴포넌트 (132) 는 DMA 동작들을 수행하도록 구성될 수도 있다. 일 양태에 있어서, 마스터 컴포넌트 (132) 는 DMA 제어기일 수도 있다.
도 2 는 다양한 양태들에 따라 구성된 DDR 메모리 제어기를 갖는 예시적인 컴퓨팅 시스템 (200) 에서의 논리 컴포넌트들 및 정보 플로우들을 도시한다. 도 2 에 도시된 예에 있어서, 컴퓨팅 시스템 (200) 은 주변기기 컴포넌트 (202), 프로세싱 유닛 (204), DDR 메모리 제어기 (206), DDR SDRAM 메모리 (208), 제 2 메모리 제어기 (214) 및 제 2 메모리 (214) 를 포함한다. DDR 메모리 제어기 (208) 는 다양한 DMA 및 메모리 동작들을 수행하도록 구성된 마스터 제어기 모듈 (212) 을 포함할 수도 있다. 다양한 양태들에 있어서, 주변기기 컴포넌트 (202) 는 USB 제어기, USB 모듈, 또는 USB 디바이스일 수도 있다. 일 양태에 있어서, 제 2 메모리 제어기 (214) 는 DDR 메모리 제어기일 수도 있다.
주변기기 컴포넌트 (202), 프로세싱 유닛 (204) 및 DDR 메모리 제어기 (206) 는 시스템 버스 (210) 에 커플링될 수도 있다. DDR 메모리 제어기 (206) 는 DDR-PHY 인터페이스 및/또는 메모리 버스를 통해 DDR SDRAM (208) 에 커플링될 수도 있다.
주변기기 컴포넌트 (202) 및/또는 프로세싱 유닛 (204) 은 전송될 데이터의 메모리 위치를 식별하는 소스 어드레스, 카피되는 바이트들의 수, 및 데이터가 전송되는 메모리 위치를 식별하는 목적지 어드레스를 버스 (210) 상으로 푸쉬함으로써 데이터 전송 동작을 개시하도록 구성될 수도 있다. DDR 메모리 제어기 (206) 의 마스터 제어기 모듈 (212) 은 버스 (210) 로부터 소스 어드레스, 바이트들의 수, 및 목적지 어드레스를 획득하고, 소스 및 목적지 어드레스들이 DDR SDRAM (208) 내부의 메모리 위치들을 식별하는지 여부를 결정할 수도 있다.
소스 어드레스 및 목적지 어드레스 양자가 DDR SDRAM (208) 의 내부의 위치들을 식별한다고 마스터 제어기 모듈 (212) 이 결정할 경우, 마스터 제어기 모듈 (212) 은 소스 어드레스로부터의 데이터의 목적지 어드레스로의 전송을 관리하기 위해 종래의 DMA 동작들을 수행할 수도 있다. 예를 들어, 마스터 제어기 모듈 (212) 은 판독 커맨드 및 소스 어드레스를 버스 (210) 를 통해 제 2 메모리 제어기 (214) 로 전송하고, 버스 (210) 를 통해 제 2 메모리 제어기 (214) 로부터 데이터를 수신하고, 데이터를 버퍼 (도시 안됨) 에 저장하며, 기입 커맨드, 목적지 어드레스, 및 데이터를 버스 (210) 를 통해 제 2 메모리 제어기 (214) 로 전송할 수도 있다.
소스 어드레스 및 목적지 어드레스들 양자가 DDR SDRAM (208) 의 내부의 위치들을 식별한다고 마스터 제어기 모듈 (212) 이 결정할 경우, 마스터 제어기 모듈 (212) 은 전송된 데이터 중 어떠한 데이터도 버스 상으로 푸쉬하지 않고도 데이터를 소스 어드레스로부터 목적지 어드레스로 자동으로 전송할 수도 있다. 이러한 방식으로, 다양한 양태들은 정보 (판독/기입 커맨드들, 어드레스들, 데이터 등) 를 버스 (210) 상으로 전후로 전송하지 않고도 메모리 대 메모리 데이터 전송들을 달성할 수도 있으며, 이는 버스 (210) 상에서 이용가능한 대역폭을 증가시키고, 전력 소비를 감소시키며, 컴퓨팅 디바이스의 성능/응답도를 개선시킨다.
소스 어드레스는 DDR SDRAM (208) 내부의 위치를 식별하지만 목적지 어드레스는 DDR SDRAM (208) 의 외부의 위치를 참조한다고 마스터 제어기 모듈 (212) 이 결정할 경우, 마스터 제어기 모듈 (212) 은 데이터를 (DDR SDRAM (208) 에서의) 소스 어드레스로부터 취출하고, 취출된 데이터 및 목적지 어드레스를 버스 (210) 를 통해 제 2 메모리 제어기 (214) 로 전송할 수도 있다.
따라서, 데이터를 버스 (210) 상으로 2회 푸쉬하는 것 (즉, 데이터를 취출한 이후에 한번 및 데이터를 기입하기 위해 한번) 을 요구하는 종래의 솔루션들과는 대조적으로, 다양한 양태들은 데이터를 버스 (210) 상으로 오직 1회 푸쉬함으로써 메모리 대 메모리 전송 동작들을 달성할 수도 있다. 이러한 방식으로, 다양한 양태들은 메모리 대 메모리 동안 버스 (210) 를 통해 통신된 데이터의 양을 감소시켜, 버스 대역폭을 증가시키고, 전력 소비를 감소시키며, 컴퓨팅 디바이스의 성능/응답도를 개선시킨다.
도 3 는 일 양태의 DDR 메모리 제어기 및 외부 DMA 제어기를 포함하는 다른 예시적인 컴퓨팅 시스템 (300) 에서의 논리 컴포넌트들 및 정보 플로우들을 도시한다. 도 3 에 도시된 예에 있어서, 컴퓨팅 시스템 (300) 은 주변기기 컴포넌트 (202), DMA 제어기 (304), 프로세싱 유닛 (204), DDR 메모리 제어기 (206), 및 DDR SDRAM 메모리 (208) 를 포함한다. 일 양태에 있어서, 컴퓨팅 시스템 (300) 은 복수의 DDR SDRAM 메모리들 (208), 및 복수의 DDR SDRAM 메모리들 (208) 각각에 대한 하나의 DDR 메모리 제어기 (206) 를 포함할 수도 있다.
주변기기 컴포넌트 (202), DMA 제어기 (304), 및 프로세싱 유닛 (204) 은 시스템 네트워크 온 칩 (NOC) (312) 에 커플링될 수도 있다. DMA 제어기 (304), 프로세싱 유닛 (204) 및 DDR 메모리 제어기 (206) 는 시스템 버스 (314) 에 커플링될 수도 있다. DDR 메모리 제어기 (206) 는 DDR-PHY 인터페이스 및/또는 메모리 버스를 통해 DDR SDRAM (208) 에 커플링될 수도 있다.
DMA 제어기 (304) 는 메모리 어드레스 레지스터 (316), 바이트 카운트 레지스터 (318), 및 제어 레지스터들 (320) 을 포함할 수도 있다. 제어 레지스터들 (320) 은 동작 타입, 소스 또는 타깃 컴포넌트, 전송의 방향, 전송 단위들 (예를 들어, 한번에 일 바이트, 한번에 일 워드 등), 전송 또는 버스트 모드들, 각각의 버스트에서 전송하기 위한 바이트들의 수 등을 식별하기 위한 정보와 같이 메모리 동작들을 달성하기 위한 다양한 서로다른 타입들의 정보를 저장할 수도 있다.
DDR 메모리 제어기 (206) 는 다양한 DMA 메모리 동작들을 수행하도록 구성된 마스터 제어기 모듈 (212) 을 포함할 수도 있다. 일 양태에 있어서, 마스터 제어기 모듈 (212) 은, DDR 메모리 제어기 (206) 의 회로와 집적화된 회로를 포함할 수도 있다. 일 양태에 있어서, 마스터 제어기 모듈 (212) 은, DDR 메모리 제어기 (206) 의 회로에 커플링된 회로를 포함할 수도 있다.
DDR 메모리 제어기 (206) 는 또한, 제어기 모듈 (322), 신호 모듈 (324), 데이터 모듈 (336), 및 로컬 메모리/버퍼 (338) 를 포함할 수도 있다. 제어기 모듈 (322) 은 다양한 제어 신호들 (예를 들어, istate, cstate 등) 을 생성하도록 구성된 리프레시 카운터 및 상태 머신 로직을 포함할 수도 있다. 신호 모듈 (334) 은 제어 신호들에 기초하여 DDR SDRAM 메모리 (208) 에 대한 어드레스 및 커맨드 신호들을 생성하도록 구성될 수도 있다. 데이터 모듈 (336) 은 (예를 들어, DDR-PHY 인터페이스 및/또는 메모리 버스를 통해) DDR SDRAM 메모리 (208) 로부터 데이터를 판독하고 그에게 데이터를 기입하기 위해 데이터 래치 및 디스패치 동작들을 수행하도록 구성될 수도 있다.
주변기기 컴포넌트 (202) 는 수행될 메모리 동작 (판독, 기입, 전송 등), 관련 메모리 어드레스들, 및 시스템 NOC (312) 를 통해 동작을 수행하기 위해 요구된 바이트들 (또는 워드들, 비트들 등) 의 수를 DMA 제어기 (304) 또는 프로세싱 유닛 (204) 으로 전송함으로써 메모리 동작을 개시하도록 구성될 수도 있다. DMA 제어기 (204) 및/또는 프로세싱 유닛 (306) 은 DDR 메모리 제어기 (206) 의 정확한 인스턴스를 식별하고/하거나 관련 메모리 어드레스들 (예를 들어, 소스 및 목적지 어드레스들) 을, 메모리 동작을 개시하는 주변기기 컴포넌트 (202) 에 응답하여 DDR 메모리 제어기 (206) 로 전송하도록 구성될 수도 있다.
DDR 메모리 제어기 (206) 의 마스터 제어기 모듈 (212) 은 버스 (314) 로부터 소스 어드레스 및 목적지 어드레스를 획득하고, 소스 및 목적지 어드레스들이 DDR SDRAM (208) 내부의 메모리 위치들을 식별하는지 여부를 결정하도록 구성될 수도 있다. 소스 어드레스 및 목적지 어드레스들 양자가 DDR SDRAM (208) 내부의 위치들을 식별할 경우, 마스터 제어기 모듈 (212) 은 전송된 데이터 중 어떠한 데이터도 버스 (314) 상으로 푸쉬하지 않고도 데이터를 소스 어드레스로부터 목적지 어드레스로 자동으로 전송할 수도 있다. 일 양태에 있어서, 데이터를 소스 어드레스로부터 목적지 어드레스로 전송하는 것은 DDR SDRAM (208) 에서의 제 1 위치로부터 데이터를 판독하는 것, 데이터를 로컬 메모리 (338) 에 저장하는 것, 및 로컬 메모리 (338) 에 저장된 데이터를 DDR SDRAM (208) 에서의 제 2 위치에 기입하는 것을 포함할 수도 있다.
일 양태에 있어서, 마스터 제어기 모듈 (212) 은, 소스 어드레스 및 목적지 어드레스 양자가 DDR SDRAM (208) 의 경계의 외부의 위치들을 참조한다고 결정하는 것에 응답하여 DMA 동작들을 수행하도록 구성될 수도 있다. 다른 양태에 있어서, 마스터 제어기 모듈 (212) 은, 소스 어드레스 및/또는 목적지 어드레스가 DDR SDRAM (208) 의 경계의 외부의 위치들을 참조할 경우 DMA 제어기 (304) 로 하여금 메모리 전송 동작들을 수행하게 하도록 구성될 수도 있다. 예를 들어, 마스터 제어기 모듈 (212) 은, 소스 및/또는 목적지 어드레스들 양자가 DDR SDRAM (208) 의 경계들의 외부의 위치들을 참조함을 DMA 제어기 (304) 에게 통지하고 그리고 다음 메모리 요청을 대기하도록 구성될 수도 있다. 이러한 방식으로, DDR 메모리 제어기 (206) 는, 제어를 갖는 DDR SDRAM (208) 의 경계의 외부에 소스 어드레스 및/또는 목적지 어드레스가 존재할 경우 종래의 메모리 제어기로서 동작할 수도 있다.
도 4 는 일 양태의 메모리 제어기에 의해 메모리 대 메모리 전송 동작들을 수행하는 일 양태의 방법 (400) 을 도시한다. 블록 402 에서, 메모리 제어기 (예를 들어, DDR 메모리 제어기 (206)) 는 시스템 버스를 통해 소스 어드레스 및 목적지 어드레스를 수신할 수도 있다. 결정 블록 404 에서, 메모리 제어기는 소스 어드레스가 (예를 들어, 메모리 버스, PHY 인터페이스 등을 통해) 메모리 제어기에 직접 액세스가능한 메모리 위치인지 여부를 결정할 수도 있다. 예를 들어, 메모리 제어기는, 메모리 제어기가 직접 제어 및/또는 책임을 갖는 메모리 (DRAM, DDR SDRAM 등) 의 경계들 내인 로우 및 컬럼 데이터 어드레스로 어드레스가 전환될 수도 있는지 여부를 결정할 수도 있다.
소스 어드레스가 메모리 제어기에 직접 액세스가능한 메모리 위치가 아니라고 메모리 제어기가 결정할 경우 (즉, 결정 블록 404 = "아니오"), 결정 블록 406 에서, 메모리 제어기는 목적지 어드레스가 (예를 들어, 메모리 제어기가 직접 제어/책임 등을 갖는 메모리의 경계들 내에서) 메모리 제어기에 직접 액세스가능한 메모리 위치인지 여부를 결정할 수도 있다. 목적지 어드레스가 메모리 제어기에 직접 액세스가능한 메모리 위치라고 메모리 제어기가 결정할 경우 (즉, 결정 블록 406 = "예"), 블록 416 에서, 메모리 제어기는 DMA 동작들을 수행할 수도 있다. 상기 논의된 바와 같이, DMA 동작들은 판독 명령 및 소스 어드레스를 버스 상으로 푸쉬하는 것, 데이터를 수신하고 로컬 메모리에 저장하는 것, 및 기입 커맨드, 저장된 데이터, 및 목적지 어드레스를 버스 상으로 푸쉬하는 것을 포함할 수도 있다. 목적지 어드레스가 메모리 제어기에 직접 액세스가능한 메모리 위치가 아니라고 메모리 제어기가 결정할 경우 (즉, 결정 블록 406 = "아니오"), 블록 418 에서, 메모리 제어기는 에러를 생성 및 보고할 수도 있다.
소스 어드레스가 메모리 제어기에 직접 액세스가능한 메모리 위치라고 메모리 제어기가 결정할 경우 (즉, 결정 블록 404 = "예"), 결정 블록 408 에서, 메모리 제어기는 목적지 어드레스가 (예를 들어, 메모리 제어기가 직접 제어/책임 등을 갖는 메모리의 경계들 내에서) 메모리 제어기에 직접 액세스가능한 메모리 위치인지 여부를 결정할 수도 있다. 목적지 어드레스가 메모리 제어기에 직접 액세스가능한 메모리 위치라고 메모리 제어기가 결정할 경우 (즉, 결정 블록 408 = "예"), 블록 410 에서, 메모리 제어기는 소스 어드레스에 저장된 데이터를 목적지 어드레스에 카피할 수도 있다.
목적지 어드레스가 메모리 제어기에 직접 액세스가능한 메모리 위치가 아니라고 메모리 제어기가 결정할 경우 (즉, 결정 블록 408 = "아니오"), 블록 412 에서, 메모리 제어기는 소스 어드레스에 저장된 데이터를 취출할 수도 있다. 블록 414 에서, 메모리 제어기는 기입 커맨드, 목적지 어드레스, 및 취출된 데이터를 (예를 들어, 정보를 버스 상으로 푸쉬하는 것 등에 의해) 제 2 메모리 제어기로 전송할 수도 있다.
도 5 는 일 양태의 메모리 제어기에 의해 메모리 대 메모리 전송 동작들을 수행하는 다른 양태의 방법 (500) 을 도시한다. 블록 502 에서, 메모리 제어기 (예를 들어, DDR 메모리 제어기 (206)) 는 시스템 버스를 통해 소스 어드레스 및 목적지 어드레스를 수신할 수도 있다. 결정 블록 504 에서, 메모리 제어기는 소스 어드레스가 (예를 들어, 메모리 버스, PHY 인터페이스 등을 통해) 메모리 제어기에 직접 액세스가능한 메모리 위치인지 여부를 결정할 수도 있다. 예를 들어, 메모리 제어기는, 메모리 제어기가 직접 제어/책임을 갖는 메모리 (DRAM, DDR SDRAM 등) 의 경계들 내인 로우 및 컬럼 데이터 어드레스로 어드레스가 전환될 수도 있는지 여부를 결정할 수도 있다.
소스 어드레스가 메모리 제어기에 직접 액세스가능한 메모리 위치가 아니라고 메모리 제어기가 결정할 경우 (즉, 결정 블록 504 = "아니오"), 블록 506 에서, 메모리 제어기는 통지 (예를 들어, 제어 신호, 메시지 등) 를 생성하여 외부 DMA 제어기로 전송할 수도 있으며, 이는 외부 DMA 제어기로 하여금 메모리 대 메모리 전송 동작들을 수행하게 할 수도 있다.
소스 어드레스가 메모리 제어기에 직접 액세스가능한 메모리 위치라고 메모리 제어기가 결정할 경우 (즉, 결정 블록 504 = "예"), 블록 508 에서, 메모리 제어기는 소스 어드레스에 저장된 데이터를 취출할 수도 있다. 블록 510 에서, 메모리 제어기는 데이터를 로컬 메모리에 저장할 수도 있다.
결정 블록 512 에서, 메모리 제어기는 목적지 어드레스가 (예를 들어, 메모리 제어기가 직접 제어/책임 등을 갖는 메모리의 경계들 내에서) 메모리 제어기에 직접 액세스가능한 메모리 위치인지 여부를 결정할 수도 있다. 목적지 어드레스가 메모리 제어기에 직접 액세스가능한 메모리 위치라고 메모리 제어기가 결정할 경우 (즉, 결정 블록 512 = "예"), 블록 512 에서, 메모리 제어기는 로컬 메모리에 저장된 데이터를 목적지 어드레스에 카피할 수도 있다. 목적지 어드레스가 메모리 제어기에 직접 액세스가능한 메모리 위치가 아니라고 메모리 제어기가 결정할 경우 (즉, 결정 블록 512 = "아니오"), 블록 516 에서, 메모리 제어기는 기입 커맨드, 목적지 어드레스, 및 로컬 메모리에 저장된 데이터를 (예를 들어, 정보를 버스 상으로 푸쉬하는 것 등에 의해) 제 2 메모리 제어기로 전송할 수도 있다.
다양한 실시형태들이 또한 임의의 상업적 컴퓨팅 디바이스를 사용하여 구현될 수도 있으며, 그 일부 예들이 도 6 및 도 7 에 도시되어 있다. 통상적인 모바일 컴퓨팅 디바이스들 (600) 은 도 6 에 도시된 컴포넌트들을 공통적으로 가질 것이다. 예를 들어, 모바일 컴퓨팅 디바이스들 (600) 은 내부 메모리 (604) 에 커플링된 프로세서 (602), 및 저항 감지 터치스크린, 용량 감지 터치스크린, 적외선 감지 터치스크린, 음향/압전 감지 터치스크린 등과 같은 터치 표면 입력 디바이스/디스플레이 (606) 를 포함할 수도 있다. 컴퓨팅 디바이스 (600) 는 프로세서 (602) 에 커플링된 셀룰러 전화 트랜시버 (608) 및/또는 무선 데이터 링크에 접속된 전자기 방사를 전송 및 수신하기 위한 라디오/안테나 (610) 를 가질 수도 있다. 컴퓨팅 디바이스 (600) 는 또한, 사용자 입력들을 수신하기 위한 물리적 버튼들 (612) 을 포함할 수도 있다.
개인용 컴퓨터들 및 랩탑 컴퓨터들을 포함한 다른 형태들의 컴퓨팅 디바이스들이 다양한 실시형태들을 구현하기 위해 사용될 수도 있다. 그러한 컴퓨팅 디바이스들은 통상적으로, 예시적인 개인용 랩탑 컴퓨터 (700) 를 도시한 도 7 에 도시된 컴포넌트들을 포함한다. 그러한 개인용 컴퓨터 (700) 는 일반적으로, 휘발성 메모리 (704) 및 디스크 드라이브 (706) 와 같은 대용량 비휘발성 메모리에 커플링된 프로세서 (702) 를 포함한다. 컴퓨터 (700) 는 또한, 프로세서 (702) 에 커플링된 컴팩트 디스크 (CD) 및/또는 DVD 드라이브 (708) 를 포함할 수도 있다. 컴퓨터 디바이스 (700) 는 또한, 프로세서 (702) 를 네트워크에 커플링하기 위한 네트워크 접속 회로와 같이, 데이터 접속들을 확립하거나 외부 메모리 디바이스들을 수용하기 위해 프로세서 (702) 에 커플링된 다수의 커넥터 포트들을 포함할 수도 있다. 컴퓨팅 디바이스 (700) 는 프로세서 (702) 에 커플링된 무선 데이터 링크에 접속된 전자기 방사를 전송 및 수신하기 위한 라디오/안테나 (710) 를 가질 수도 있다. 컴퓨터 (700) 는 추가로, 컴퓨터 기술들에서 널리 공지된 바와 같이, 키보드 (716), 마우스 (714) 와 같은 포인팅 디바이스, 및 디스플레이 (712) 에 커플링될 수도 있다.
프로세서들 (602, 702) 은, 본 명세서에서 설명된 다양한 실시형태들의 기능들을 포함하여 다양한 기능들을 수행하기 위해 소프트웨어 명령들 (어플리케이션들) 에 의해 구성될 수도 있는 임의의 프로그래밍가능 마이크로프로세서, 마이크로컴퓨터 또는 다중의 프로세서 칩 또는 칩들일 수도 있다. 무선 통신 기능들에 전용된 하나의 프로세서 및 다른 어플리케이션들을 구동하는 것에 전용된 하나의 프로세서와 같은 다중의 프로세서들이 제공될 수도 있다. 통상적으로, 소프트웨어 어플리케이션들은, 프로세서 (602, 702) 에 액세스 및 로딩되기 전에 내부 메모리에 저장될 수도 있다. 일부 디바이스들에 있어서, 프로세서 (602, 702) 는 어플리케이션 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 포함할 수도 있다. 일부 모바일 디바이스들에 있어서, 보안 메모리가, 프로세서 (602, 702) 에 커플링된 별도의 메모리 칩에 있을 수도 있다. 내부 메모리는 휘발성 메모리 또는 플래시 메모리와 같은 비휘발성 메모리, 또는 이들 양자의 혼합일 수도 있다. 이 설명의 목적들을 위해, 메모리에 대한 일반적인 참조는, 내부 메모리, 디바이스에 플러깅된 착탈가능 메모리, 및 프로세서 (602, 702) 자체 내의 메모리를 포함하여 프로세서에 의해 액세스가능한 모든 메모리를 지칭한다.
전술한 방법 설명들 및 프로세스 플로우 다이어그램들은 단지 예시적인 예들로서 제공될 뿐이고, 다양한 실시형태들의 블록들이 제시된 순서로 수행되어야만 함을 요구 또는 의미하도록 의도되지 않는다. 당업자에 의해 이해될 바와 같이, 전술한 실시형태들에 있어서의 블록들의 순서는 임의의 순서로 수행될 수도 있다. "그 이후", "그 후", "다음" 등과 같은 단어들은 블록들의 순서를 한정하도록 의도되지 않으며; 이들 단어들은 방법들의 설명을 통해 독자들을 안내하도록 단순히 사용된다. 추가로, 예를 들어, 관사들 ("a," "an" 또는 "the") 을 사용하여 단수로의 청구항 엘리먼트들에 대한 임의의 참조는 그 엘리먼트를 단수로 한정하는 것으로서 해석되지는 않는다.
본 명세서에 개시된 실시형태들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 블록들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들 양자의 조합으로서 구현될 수도 있다. 하드웨어와 소프트웨어의 이러한 대체 가능성을 분명히 예시하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들이 일반적으로 그들의 기능의 관점에서 상기 기술되었다. 그러한 기능이 하드웨어로서 구현될지 또는 소프트웨어로서 구현될지는 전체 시스템에 부과된 특정 어플리케이션 및 설계 제약들에 의존한다. 당업자는 설명된 기능을 각각의 특정 어플리케이션에 대하여 다양한 방식들로 구현할 수도 있지만, 그러한 구현의 결정들이 본 발명의 범위로부터의 일탈을 야기하는 것으로서 해석되지는 않아야 한다.
본 명세서에 개시된 실시형태들과 관련하여 설명된 다양한 예시적인 로직들, 논리 블록들, 모듈들, 및 회로들을 구현하는데 사용되는 하드웨어는 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적회로 (ASIC), 필드 프로그래밍가능 게이트 어레이 (FPGA) 또는 다른 프로그래밍가능 로직 디바이스, 별개의 게이트 또는 트랜지스터 로직, 별개의 하드웨어 컴포넌트들, 또는 본 명세서에서 설명된 기능들을 수행하도록 설계되는 이들의 임의의 조합으로 구현 또는 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안적으로, 그 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로 제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 기타 다른 구성물로서 구현될 수도 있다. 대안적으로, 일부 단계들 또는 방법들은, 소정의 기능에 특정한 회로에 의해 수행될 수도 있다.
하나 이상의 예시적인 양태들에 있어서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어에서 구현된다면, 그 기능들은 하나 이상의 명령들 또는 코드로서 비-일시적인 컴퓨터 판독가능 매체 또는 비-일시적인 프로세서 판독가능 매체 상에 저장될 수도 있다. 본 명세서에 개시된 방법 또는 알고리즘의 단계들은, 비-일시적인 컴퓨터 판독가능 또는 프로세서 판독가능 저장 매체 상에 상주할 수도 있는 프로세서 실행가능 소프트웨어 모듈에서 구현될 수도 있다. 비-일시적인 컴퓨터 판독가능 또는 프로세서 판독가능 저장 매체는 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 임의의 저장 매체일 수도 있다. 한정이 아닌 예로서, 그러한 비-일시적인 컴퓨터 판독가능 또는 프로세서 판독가능 매체는 RAM, ROM, EEPROM, 플래시 메모리, CD-ROM 또는 다른 광학 디스크 저장부, 자기 디스크 저장부 또는 다른 자기 저장 디바이스들, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 이용될 수도 있고 컴퓨터에 의해 액세스될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 본 명세서에서 사용된 바와 같은 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서, 디스크 (disk) 는 통상적으로 데이터를 자기적으로 재생하지만 디스크 (disc) 는 레이저를 이용하여 데이터를 광학적으로 재생한다. 상기의 조합들이 또한, 비-일시적인 컴퓨터 판독가능 및 프로세서 판독가능 매체의 범위 내에 포함된다. 부가적으로, 방법 또는 알고리즘의 동작들은, 코드들 및/또는 명령들 중 하나 또는 그 임의의 조합 또는 그 세트로서 비-일시적인 프로세서 판독가능 매체 및/또는 컴퓨터 판독가능 매체 상에 상주할 수도 있으며, 이들은 컴퓨터 프로그램 제품에 통합될 수도 있다.
개시된 실시형태들의 상기 설명은 당업자로 하여금 본 발명을 제조 또는 이용하게 할 수 있도록 제공된다. 이들 실시형태들에 대한 다양한 변형들은 당업자에게 용이하게 자명할 것이며, 본 명세서에서 정의된 일반적인 원리들은 본 발명의 사상 또는 범위로부터 일탈함없이 다른 실시형태들에 적용될 수도 있다. 따라서, 본 발명은 본 명세서에 나타낸 실시형태들로 한정되도록 의도되지 않으며, 다음의 청구항들 그리고 본 명세서에 개시된 원리들 및 신규한 특징들과 부합하는 최광의 범위를 부여받아야 한다.

Claims (26)

  1. 메모리 시스템으로서,
    메모리;
    상기 메모리에 커플링된 메모리 제어기; 및
    상기 메모리 제어기에 직접 커플링된 다이렉트 메모리 액세스 제어기를 포함하는, 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 다이렉트 메모리 액세스 제어기는 상기 메모리 제어기에 직접 커플링되어 상기 다이렉트 메모리 액세스 제어기 및 상기 메모리 제어기가 시스템 데이터 버스의 동일한 측면 상에 배치되게 하는, 메모리 시스템.
  3. 제 1 항에 있어서,
    상기 메모리 제어기는 동적 랜덤 액세스 메모리 (DRAM) 메모리 제어기인, 메모리 시스템.
  4. 제 1 항에 있어서,
    상기 메모리 제어기는 더블 데이터 레이트 (DDR) 메모리 제어기이고, 상기 메모리는 DDR 동기식 동적 랜덤 액세스 메모리인, 메모리 시스템.
  5. 제 4 항에 있어서,
    상기 다이렉트 메모리 액세스 제어기는,
    소스 어드레스 및 목적지 어드레스를 수신하는 것;
    상기 소스 어드레스가 상기 메모리에 있는지 여부를 결정하는 것;
    상기 소스 어드레스가 상기 메모리에 있다고 결정한 것에 응답하여 상기 목적지 어드레스가 상기 메모리에 있는지 여부를 결정하는 것; 및
    상기 목적지 어드레스가 상기 메모리에 있다고 결정한 것에 응답하여 어떠한 데이터도 버스 상으로 푸쉬하지 않고도 상기 소스 어드레스에 저장된 데이터를 상기 목적지 어드레스에 카피하는 것
    을 포함하는 동작들을 수행하도록 구성되는, 메모리 시스템.
  6. 제 5 항에 있어서,
    상기 다이렉트 메모리 액세스 제어기는,
    상기 목적지 어드레스가 상기 메모리에 있지 않다고 결정한 것에 응답하여 상기 소스 어드레스에 저장된 데이터를 상기 버스 상으로 푸쉬하는 것
    을 더 포함하는 동작들을 수행하도록 구성되는, 메모리 시스템.
  7. 제 5 항에 있어서,
    상기 다이렉트 메모리 액세스 제어기는,
    상기 소스 어드레스가 상기 메모리에 있지 않다고 결정한 것에 응답하여 판독 요청, 상기 소스 어드레스, 및 상기 목적지 어드레스를 상기 버스 상으로 푸쉬하는 것
    을 더 포함하는 동작들을 수행하도록 구성되는, 메모리 시스템.
  8. 컴퓨팅 디바이스로서,
    시스템 데이터 버스;
    상기 시스템 데이터 버스에 커플링된 프로세서; 및
    상기 시스템 데이터 버스에 커플링된 메모리 시스템을 포함하고,
    상기 메모리 시스템은
    메모리;
    상기 메모리에 커플링된 메모리 제어기; 및
    상기 메모리 제어기에 직접 커플링된 다이렉트 메모리 액세스 제어기를 포함하는, 컴퓨팅 디바이스.
  9. 제 8 항에 있어서,
    상기 다이렉트 메모리 액세스 제어기는 상기 메모리 제어기에 직접 커플링되어 상기 다이렉트 메모리 액세스 제어기 및 상기 메모리 제어기가 상기 시스템 데이터 버스의 동일한 측면 상에 배치되게 하는, 컴퓨팅 디바이스.
  10. 제 8 항에 있어서,
    상기 메모리 제어기는 동적 랜덤 액세스 메모리 (DRAM) 메모리 제어기인, 컴퓨팅 디바이스.
  11. 제 8 항에 있어서,
    상기 메모리 제어기는 더블 데이터 레이트 (DDR) 메모리 제어기이고, 상기 메모리는 DDR 동기식 동적 랜덤 액세스 메모리인, 컴퓨팅 디바이스.
  12. 제 11 항에 있어서,
    상기 다이렉트 메모리 액세스 제어기는,
    소스 어드레스 및 목적지 어드레스를 수신하는 것;
    상기 소스 어드레스가 상기 메모리에 있는지 여부를 결정하는 것;
    상기 소스 어드레스가 상기 메모리에 있다고 결정한 것에 응답하여 상기 목적지 어드레스가 상기 메모리에 있는지 여부를 결정하는 것; 및
    상기 목적지 어드레스가 상기 메모리에 있다고 결정한 것에 응답하여 어떠한 데이터도 버스 상으로 푸쉬하지 않고도 상기 소스 어드레스에 저장된 데이터를 상기 목적지 어드레스에 카피하는 것
    을 포함하는 동작들을 수행하도록 구성되는, 컴퓨팅 디바이스.
  13. 제 12 항에 있어서,
    상기 다이렉트 메모리 액세스 제어기는,
    상기 목적지 어드레스가 상기 메모리에 있지 않다고 결정한 것에 응답하여 상기 소스 어드레스에 저장된 데이터를 상기 버스 상으로 푸쉬하는 것
    을 더 포함하는 동작들을 수행하도록 구성되는, 컴퓨팅 디바이스.
  14. 제 12 항에 있어서,
    상기 다이렉트 메모리 액세스 제어기는,
    상기 소스 어드레스가 상기 메모리에 있지 않다고 결정한 것에 응답하여 판독 요청, 상기 소스 어드레스, 및 상기 목적지 어드레스를 상기 버스 상으로 푸쉬하는 것
    을 더 포함하는 동작들을 수행하도록 구성되는, 컴퓨팅 디바이스.
  15. 하나 이상의 메모리들로 및 상기 메모리들로부터 데이터를 전송하는 방법으로서,
    메모리 제어기에 직접 커플링된 다이렉트 메모리 액세스 제어기에서 소스 어드레스 및 목적지 어드레스를 수신하는 단계;
    상기 소스 어드레스가 상기 메모리 제어기에 커플링된 메모리에 있는지 여부를 상기 메모리 제어기에서 결정하는 단계;
    상기 목적지 어드레스가 상기 메모리에 있는지 여부를 상기 메모리 제어기에서 결정하는 단계; 및
    상기 소스 어드레스 및 상기 목적지 어드레스 양자가 상기 메모리에 있다고 상기 메모리 제어기가 결정할 경우 어떠한 데이터도 버스 상으로 푸쉬하지 않고도 상기 소스 어드레스에 저장된 데이터를 상기 목적지 어드레스에 카피하는 단계를 포함하는, 데이터를 전송하는 방법.
  16. 제 15 항에 있어서,
    상기 목적지 어드레스가 상기 메모리에 있지 않다고 결정한 것에 응답하여 상기 소스 어드레스에 저장된 데이터를 상기 버스 상으로 푸쉬하는 단계를 더 포함하는, 데이터를 전송하는 방법.
  17. 제 15 항에 있어서,
    상기 소스 어드레스가 상기 메모리에 있지 않다고 결정한 것에 응답하여 판독 요청, 상기 소스 어드레스, 및 상기 목적지 어드레스를 상기 버스 상으로 푸쉬하는 단계를 더 포함하는, 데이터를 전송하는 방법.
  18. 제 15 항에 있어서,
    상기 메모리 제어기에 직접 커플링된 다이렉트 메모리 액세스 제어기에서 소스 어드레스 및 목적지 어드레스를 수신하는 단계는 메모리 제어기와의 시스템 데이터 버스의 동일한 측면 상에 배치된 다이렉트 메모리 액세스 제어기에서 상기 소스 어드레스 및 상기 목적지 어드레스를 수신하는 단계를 포함하는, 데이터를 전송하는 방법.
  19. 제 15 항에 있어서,
    상기 소스 어드레스가 상기 메모리 제어기에 커플링된 메모리에 있는지 여부를 상기 메모리 제어기에서 결정하는 단계는 상기 소스 어드레스가 상기 메모리에 있는지 여부를 동적 랜덤 액세스 메모리 (DRAM) 메모리 제어기에서 결정하는 단계를 포함하는, 데이터를 전송하는 방법.
  20. 제 15 항에 있어서,
    상기 소스 어드레스가 상기 메모리 제어기에 커플링된 메모리에 있는지 여부를 상기 메모리 제어기에서 결정하는 단계는 상기 소스 어드레스가 더블 데이터 레이트 (DDR) 동기식 동적 랜덤 액세스 메모리에 있는지 여부를 DDR 메모리 제어기에서 결정하는 단계를 포함하는, 데이터를 전송하는 방법.
  21. 컴퓨팅 디바이스로서,
    메모리 제어기에 직접 커플링된 다이렉트 메모리 액세스 제어기에서 소스 어드레스 및 목적지 어드레스를 수신하는 수단;
    상기 소스 어드레스가 상기 메모리 제어기에 커플링된 메모리에 있는지 여부를 상기 메모리 제어기에서 결정하는 수단;
    상기 목적지 어드레스가 상기 메모리에 있는지 여부를 상기 메모리 제어기에서 결정하는 수단; 및
    상기 소스 어드레스 및 상기 목적지 어드레스 양자가 상기 메모리에 있다고 상기 메모리 제어기가 결정할 경우 어떠한 데이터도 버스 상으로 푸쉬하지 않고도 상기 소스 어드레스에 저장된 데이터를 상기 목적지 어드레스에 카피하는 수단을 포함하는, 컴퓨팅 디바이스.
  22. 제 21 항에 있어서,
    상기 목적지 어드레스가 상기 메모리에 있지 않다고 결정한 것에 응답하여 상기 소스 어드레스에 저장된 데이터를 상기 버스 상으로 푸쉬하는 수단을 더 포함하는, 컴퓨팅 디바이스.
  23. 제 21 항에 있어서,
    상기 소스 어드레스가 상기 메모리에 있지 않다고 결정한 것에 응답하여 판독 요청, 상기 소스 어드레스, 및 상기 목적지 어드레스를 상기 버스 상으로 푸쉬하는 수단을 더 포함하는, 컴퓨팅 디바이스.
  24. 제 21 항에 있어서,
    상기 메모리 제어기에 직접 커플링된 다이렉트 메모리 액세스 제어기에서 소스 어드레스 및 목적지 어드레스를 수신하는 수단은 메모리 제어기와의 시스템 데이터 버스의 동일한 측면 상에 배치된 다이렉트 메모리 액세스 제어기에서 상기 소스 어드레스 및 상기 목적지 어드레스를 수신하는 수단을 포함하는, 컴퓨팅 디바이스.
  25. 제 21 항에 있어서,
    상기 소스 어드레스가 상기 메모리 제어기에 커플링된 메모리에 있는지 여부를 상기 메모리 제어기에서 결정하는 수단은 상기 소스 어드레스가 상기 메모리에 있는지 여부를 동적 랜덤 액세스 메모리 (DRAM) 메모리 제어기에서 결정하는 수단을 포함하는, 컴퓨팅 디바이스.
  26. 제 21 항에 있어서,
    상기 소스 어드레스가 상기 메모리 제어기에 커플링된 메모리에 있는지 여부를 상기 메모리 제어기에서 결정하는 수단은 상기 소스 어드레스가 더블 데이터 레이트 (DDR) 동기식 동적 랜덤 액세스 메모리에 있는지 여부를 DDR 메모리 제어기에서 결정하는 수단을 포함하는, 컴퓨팅 디바이스.
KR1020157014940A 2012-11-08 2013-10-08 인텔리전트 듀얼 데이터 레이트 (ddr) 메모리 제어기 KR101577936B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/672,346 US9116856B2 (en) 2012-11-08 2012-11-08 Intelligent dual data rate (DDR) memory controller
US13/672,346 2012-11-08

Publications (2)

Publication Number Publication Date
KR20150083894A true KR20150083894A (ko) 2015-07-20
KR101577936B1 KR101577936B1 (ko) 2015-12-15

Family

ID=49382662

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157014940A KR101577936B1 (ko) 2012-11-08 2013-10-08 인텔리전트 듀얼 데이터 레이트 (ddr) 메모리 제어기

Country Status (7)

Country Link
US (1) US9116856B2 (ko)
EP (1) EP2917842A1 (ko)
JP (1) JP5866488B1 (ko)
KR (1) KR101577936B1 (ko)
CN (1) CN104769569A (ko)
TW (1) TWI519962B (ko)
WO (1) WO2014074255A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190122682A (ko) * 2017-02-27 2019-10-30 퀄컴 인코포레이티드 동적 랜덤 액세스 메모리(dram)에 대한 등록 클록 드라이브(rcd)의 커맨드 및 어드레스(ca) 버스에 대해 단일 데이터 레이트(sdr) 모드 또는 더블 데이터 레이트(ddr) 모드의 제공

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9934143B2 (en) * 2013-09-26 2018-04-03 Intel Corporation Mapping a physical address differently to different memory devices in a group
CN107132904B (zh) * 2016-02-29 2020-12-15 华为技术有限公司 一种ddr系统的控制系统及控制方法
CN107066419B (zh) * 2017-03-23 2023-08-11 桂林理工大学 可扩展的自适应n×n通道数据通信系统
CN109324982B (zh) * 2017-07-31 2023-06-27 上海华为技术有限公司 一种数据处理方法以及数据处理装置
CN109933553B (zh) * 2019-02-28 2020-09-29 厦门码灵半导体技术有限公司 一种控制系统及其设计方法、一组控制系统、电子装置
TWI773325B (zh) 2021-05-18 2022-08-01 新唐科技股份有限公司 積體電路、監測系統及其監測方法
CN114281724B (zh) * 2021-12-10 2024-01-02 深圳市欧瑞博科技股份有限公司 数据传输方法、装置及电子设备

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6529968B1 (en) 1999-12-21 2003-03-04 Intel Corporation DMA controller and coherency-tracking unit for efficient data transfers between coherent and non-coherent memory spaces
JP3422308B2 (ja) * 2000-03-02 2003-06-30 日本電気株式会社 データ処理装置
US6732243B2 (en) 2001-11-08 2004-05-04 Chaparral Network Storage, Inc. Data mirroring using shared buses
US6594748B1 (en) * 2001-11-09 2003-07-15 Lsi Logic Corporation Methods and structure for pipelined read return control in a shared RAM controller
US6721820B2 (en) * 2002-05-15 2004-04-13 M-Systems Flash Disk Pioneers Ltd. Method for improving performance of a flash-based storage system using specialized flash controllers
EP1396792B1 (en) 2002-09-06 2005-06-15 Sun Microsystems, Inc. Memory copy command specifying source and destination of data executed in the memory controller
KR101085406B1 (ko) * 2004-02-16 2011-11-21 삼성전자주식회사 불 휘발성 메모리를 제어하기 위한 컨트롤러
JP2005267148A (ja) 2004-03-18 2005-09-29 Konica Minolta Business Technologies Inc メモリ制御装置
US7606950B2 (en) 2005-10-17 2009-10-20 National Instruments Corporation Graphical programs with direct memory access FIFO for controller/FPGA communications
US7836220B2 (en) 2006-08-17 2010-11-16 Apple Inc. Network direct memory access
US7865784B1 (en) 2006-09-11 2011-01-04 Marvell International Ltd. Write validation
KR20110004164A (ko) * 2009-07-07 2011-01-13 삼성전자주식회사 반도체 메모리 장치
US8250250B2 (en) * 2009-10-28 2012-08-21 Apple Inc. Using central direct memory access (CDMA) controller to test integrated circuit
US8938589B2 (en) * 2010-01-28 2015-01-20 Hewlett-Packard Development Company, L. P. Interface methods and apparatus for memory devices using arbitration
CN102576338B (zh) * 2010-01-28 2015-06-10 惠普发展公司,有限责任合伙企业 用于存储器设备的接口方法和装置
US8949502B2 (en) 2010-11-18 2015-02-03 Nimble Storage, Inc. PCIe NVRAM card based on NVDIMM

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190122682A (ko) * 2017-02-27 2019-10-30 퀄컴 인코포레이티드 동적 랜덤 액세스 메모리(dram)에 대한 등록 클록 드라이브(rcd)의 커맨드 및 어드레스(ca) 버스에 대해 단일 데이터 레이트(sdr) 모드 또는 더블 데이터 레이트(ddr) 모드의 제공

Also Published As

Publication number Publication date
TWI519962B (zh) 2016-02-01
CN104769569A (zh) 2015-07-08
JP2016505914A (ja) 2016-02-25
US9116856B2 (en) 2015-08-25
WO2014074255A1 (en) 2014-05-15
US20140129766A1 (en) 2014-05-08
TW201432465A (zh) 2014-08-16
EP2917842A1 (en) 2015-09-16
KR101577936B1 (ko) 2015-12-15
JP5866488B1 (ja) 2016-02-17

Similar Documents

Publication Publication Date Title
KR101577936B1 (ko) 인텔리전트 듀얼 데이터 레이트 (ddr) 메모리 제어기
CN110059048B (zh) 基于检测传感器数据的阻抗补偿
CN109154918B (zh) 自刷新状态机mop阵列
US7529955B2 (en) Dynamic bus parking
US20080244156A1 (en) Application processors and memory architecture for wireless applications
JP5537533B2 (ja) ハードウェアのダイナミックなキャッシュパワー管理
TWI747321B (zh) 混合式記憶碟,電腦系統,及用於操作多重模式混合式碟之相關方法
US11675326B2 (en) Method and apparatus for remote field programmable gate array processing
CN114902198B (zh) 用于异构存储器系统的信令
JP2017519294A (ja) フラッシュメモリベースストレージデバイスのマルチホスト電力コントローラ(mhpc)
US20180267595A1 (en) Power reduction via memory efficiency compensation
US11853148B2 (en) Datalogging circuit triggered by a watchdog timer
Wang et al. Building and optimizing MRAM-based commodity memories
US20200104076A1 (en) Dimensional direct memory access controller
US10409513B2 (en) Configurable low memory modes for reduced power consumption
KR20170073266A (ko) 시리얼 인터페이스를 사용하는 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
US20210117127A1 (en) Efficient command queue in universal flash storage (ufs)
Wang et al. Alloy: Parallel-serial memory channel architecture for single-chip heterogeneous processor systems
US20220291733A1 (en) Methods and apparatus to reduce display connection latency
US10949278B2 (en) Early detection of execution errors
US9442788B2 (en) Bus protocol checker, system on chip including the same, bus protocol checking method
US9170768B2 (en) Managing fast to slow links in a bus fabric
Malladi Energy proportional memory systems
KR20150035078A (ko) 반도체 장치 및 시스템

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 5