KR20160104641A - 단일 채널 내에서의 dram 공간적 통합을 위한 방법 및 장치 - Google Patents

단일 채널 내에서의 dram 공간적 통합을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20160104641A
KR20160104641A KR1020167019844A KR20167019844A KR20160104641A KR 20160104641 A KR20160104641 A KR 20160104641A KR 1020167019844 A KR1020167019844 A KR 1020167019844A KR 20167019844 A KR20167019844 A KR 20167019844A KR 20160104641 A KR20160104641 A KR 20160104641A
Authority
KR
South Korea
Prior art keywords
memory
memory devices
data
map
reordered
Prior art date
Application number
KR1020167019844A
Other languages
English (en)
Other versions
KR101752117B1 (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 KR20160104641A publication Critical patent/KR20160104641A/ko
Application granted granted Critical
Publication of KR101752117B1 publication Critical patent/KR101752117B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • Y02B60/1225
    • Y02B60/1228
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

양태들은 판독 또는 기록 트랜잭션들을 위하여 메모리 모듈의 메모리 디바이스들의 전부보다 더 적은 것을 급전하기 위하여 메모리에서의 데이터의 저장을 재편성하기 위한 컴퓨팅 디바이스들, 시스템들, 및 방법들을 포함한다. 메모리 디바이스들은 재순서화 로직이 재순서화된 메모리 맵에 따른 트랜잭션을 위하여 급전하기 위한 메모리 디바이스들을 결정하도록 개별 선택 라인들에 접속될 수도 있다. 재순서화 로직은, 프로세서가 그 메모리 어드레스 방식을 변경할 필요 없이, 트랜잭션을 위하여 프로세서에 의해 제공된 메모리 어드레스가 재순서화된 메모리 맵에 따른 재순서화된 메모리 어드레스로 변환되도록, 메모리 어드레스들을 재순서화할 수도 있다. 재순서화된 메모리 맵은 메모리 디바이스들에 의한 감소된 에너지 소비, 또는 레이턴시 용인 프로세스들에 대한 에너지 소비 및 성능 속도의 균형을 제공할 수도 있다.

Description

단일 채널 내에서의 DRAM 공간적 통합을 위한 방법 및 장치{METHOD AND APPARATUS FOR DRAM SPATIAL COALESCING WITHIN A SINGLE CHANNEL}
디바이스들에서의 메모리 풋프린트 (memory footprint)(밀도) 는 급속하게 증가하고 있다. 이중 데이터 레이트 동적 랜덤-액세스 메모리 (double data rate dynamic random-access memory; DDR DRAM) 의 비용은 감소하고 있다. 오퍼레이팅 시스템 (operating system) 들 및 애플리케이션 (application) 들은 더 크고, 더욱 복잡해지고 있고, 더 많은 메모리를 이용하고 있다. 사용자들은 양호한 성능 및 응답성을 여전히 기대하면서, 프로그램들을 동시에 로딩하고 실행한다. 높은 성능을 달성하기 위하여, 시스템들은 동시에 동작하는 다수의 병렬화된 메모리 컴포넌트들의 고속이면서 폭이 넓은 메모리 버스를 요구한다. 이러한 시스템에서는, 모든 병렬 메모리 디바이스가 CPU 로부터의 메모리 트랜잭션 (memory transaction) 동안에 급전된다. 이것은 높은 전력 소비를 희생하여 높은 성능을 초래한다. DDR RAM 동작들은 디바이스가 이동 컴퓨터, 스마트폰, 태블릿, 데스크톱, 또는 또 다른 타입의 이동 디바이스이든 관계 없이, 디바이스의 총 전력 소비의 15 % 를 초과할 수 있다. 많은 상황들 (예컨대, 오디오 재생) 하에서, DDR RAM 은 사용자를 위한 적절한 성능을 제공하기 위하여 필요할 수도 있는 것보다 더 많은 전력을 이용한다.
다양한 양태들의 방법들 및 장치들은, 메모리 트랜잭션 명령 (memory transaction instruction) 에 대한 데이터 버스트 (data burst) 가 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 재순서화된 메모리 맵을 초래하는, 복수의 메모리 디바이스들의 메모리 맵을 재순서화하는 것, 메모리 트랜잭션 명령과 연관된 적어도 하나의 메모리 어드레스를 수신하는 것, 적어도 하나의 메모리 어드레스를 재순서화된 메모리 맵에 따른 적어도 하나의 재순서화된 메모리 어드레스로 변환하는 것, 및 데이터 버스트에 대한 메모리 트랜잭션 명령을 실행하기 위하여 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 것으로서, 복수의 메모리 디바이스들의 활성화된 전부보다 더 적은 것은 재순서화된 메모리 맵에 따른 적어도 하나의 재순서화된 메모리 어드레스와 연관되는, 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 것을 포함할 수도 있는, 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 회로들 및 방법들을 제공한다.
양태의 방법에서, 데이터 버스트에 대한 메모리 트랜잭션 명령을 실행하기 위하여 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 것은, 복수의 메모리 디바이스들의 전부보다 더 적은 것의 각각을 개별적으로 활성화하는 것을 포함할 수도 있다.
양태의 방법에서, 메모리 트랜잭션 명령에 대한 데이터 버스트가 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 재순서화된 메모리 맵을 초래하는, 복수의 메모리 디바이스들의 메모리 맵을 재순서화하는 것은, 메모리 트랜잭션 명령에 대한 데이터 버스트가 복수의 메모리 디바이스들 중의 하나를 이용하도록, 재순서화된 메모리 맵을 초래하는, 복수의 메모리 디바이스들의 메모리 맵을 재순서화하는 것을 포함할 수도 있고, 데이터 버스트에 대한 메모리 트랜잭션 명령을 실행하기 위하여 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 것은, 데이터 버스트에 대한 메모리 트랜잭션 명령을 실행하기 위하여 복수의 메모리 디바이스들 중의 하나를 활성화하는 것을 포함할 수도 있다.
양태의 방법에서, 메모리 트랜잭션 명령에 대한 데이터 버스트가 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 재순서화된 메모리 맵을 초래하는, 복수의 메모리 디바이스들의 메모리 맵을 재순서화하는 것은, 메모리 트랜잭션 명령에 대한 데이터 버스트가 메모리 모듈의 복수의 메모리 디바이스들 중의 적어도 하나를 다수 회 이용하도록, 재순서화된 메모리 맵을 초래하는, 복수의 메모리 디바이스들의 메모리 맵을 재순서화하는 것을 포함할 수도 있다.
양태의 방법은, 복수의 메모리 디바이스들에 기록하기 위한 적어도 하나의 메모리 어드레스 및 데이터 버스트를 포함하는 기록 트랜잭션을 위한 메모리 트랜잭션 명령을 수신하는 것으로서, 데이터 버스트는 병렬인 기록 데이터를 포함할 수도 있는, 상기 메모리 트랜잭션 명령을 수신하는 것, 데이터 버스트의 적어도 부분을, 재순서화된 메모리 어드레스에 기록하기 위한 직렬 기록 데이터로 변환하는 것, 및 변환된 기록 데이터를, 재순서화된 메모리 어드레스와 연관된 복수의 메모리 디바이스들의 활성화된 전부보다 더 적은 것 중의 적어도 하나로 출력하는 것을 더 포함할 수도 있다.
양태의 방법은, 복수의 메모리 디바이스들로부터 판독하기 위한 메모리 어드레스를 포함하는 판독 트랜잭션을 위한 메모리 트랜잭션 명령을 수신하는 것, 재순서화된 메모리 어드레스와 연관된 복수의 메모리 디바이스들의 활성화된 전부보다 더 적은 것 중의 적어도 하나로부터 데이터 버스트를 수신하는 것으로서, 데이터 버스트의 적어도 부분은 직렬 판독 데이터를 포함할 수도 있는, 상기 데이터 버스트를 수신하는 것, 병렬 포맷인 판독 데이터가 메모리 트랜잭션 명령의 메모리 어드레스들을 따르도록 하게 순서화되도록, 데이터 버스트를 병렬 포맷인 판독 데이터로 변환하는 것, 및 병렬 포맷인 판독 데이터를 프로세서로 출력하는 것을 더 포함할 수도 있다.
양태의 방법에서, 메모리 트랜잭션 명령에 대한 데이터 버스트가 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 재순서화된 메모리 맵을 초래하는, 복수의 메모리 디바이스들의 메모리 맵을 재순서화하는 것은, 메모리 트랜잭션 명령에 대한 데이터 버스트가 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록 메모리 맵의 적어도 하나의 부분이 재순서화되는 상이한 재순서화 패턴들을 이용하여, 복수의 메모리 디바이스들의 메모리 맵의 부분들을 재순서화하는 것을 포함할 수도 있다.
양태는 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 메모리 제어기로서, 메모리 제어기는 위에서 설명된 양태의 방법들 중의 하나 이상을 포함할 수도 있는 동작을 수행하도록 구성되는, 상기 메모리 제어기를 포함하는 장치를 포함한다.
양태는 위에서 설명된 양태의 방법들 중의 하나 이상의 방법의 기능들을 수행하기 위한 수단을 포함하는 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 장치를 포함한다.
양태는 메모리 제어기로 하여금, 위에서 설명된 양태의 방법들 중의 하나 이상의 방법의 동작들을 수행하게 하도록 구성된 프로세서-실행가능 명령들을 저장한 비-일시적 프로세서-판독가능 매체를 포함한다.
본원에 편입되며 이 명세서의 일부를 구성하는 첨부한 도면들은 발명의 예시적인 양태들을 예시하고, 위에서 주어진 일반적인 설명 및 이하에서 주어진 상세한 설명과 함께, 발명의 특징들을 설명하도록 작용한다.
도 1 은 양태에 따라, 단일 채널 내에서의 DRAM 공간적 통합을 위하여, 각각이 채널과 연관된, 복수의 메모리 제어기들에 접속된 복수의 메모리 모듈들 상의 복수의 메모리 디바이스들을 가지는 컴퓨팅 디바이스를 예시하는 컴포넌트 블록도이다.
도 2 는 양태에 따라, 단일 채널 내에서의 DRAM 공간적 통합을 위하여, 각각이 채널과 연관된, 메모리 제어기에 접속된 메모리 모듈 상의 복수의 메모리 디바이스들을 가지는 컴퓨팅 디바이스를 예시하는 컴포넌트 블록도이다.
도 3 은 양태에 따라, 병렬 포맷인 데이터를 직렬 데이터로 변환하고 직렬 데이터를 복수의 메모리 디바이스들 중의 하나 이상에 기록하도록 구성된 컴퓨팅 디바이스를 예시하는 컴포넌트 블록도이다.
도 4 는 양태에 따라, 복수의 메모리 디바이스들 중의 하나 이상으로부터 직렬 데이터를 판독하고 직렬 데이터를 병렬 포맷인 데이터로 변환하도록 구성된 컴퓨팅 디바이스를 예시하는 컴포넌트 블록도이다.
도 5 는 양태에 따라, 최소 전력 소비를 위한 복수의 메모리 디바이스에 대한 예시적인 재순서화된 메모리 맵을 예시하는 개략도이다.
도 6 은 양태에 따라, 레이턴시 용인 (latency tolerant) 프로세스들을 위한 복수의 메모리 디바이스에 대한 예시적인 재순서화된 메모리 맵을 예시하는 개략도이다.
도 7 은 양태에 따라, 단일 채널 내에서의 DRAM 공간적 통합을 위하여 복수의 메모리 디바이스들에 대한 복수의 메모리 맵들의 예시적인 적용을 예시하는 개략도이다.
도 8 은 단일 채널 내에서의 DRAM 공간적 통합을 위한 메모리 맵 재순서화를 위한 양태의 방법을 예시하는 프로세스 흐름도이다.
도 9 는 복수의 메모리 디바이스들 중의 하나 이상에 기록하기 위하여 병렬 포맷인 데이터를 직렬 데이터로 변환하기 위한 양태의 방법을 예시하는 프로세스 흐름도이다.
도 10 은 복수의 메모리 디바이스들 중의 하나 이상으로부터 판독하기 위하여 직렬 데이터를 병렬 포맷인 데이터로 변환하기 위한 양태의 방법을 예시하는 프로세스 흐름도이다.
도 11 은 복수의 메모리 디바이스들 중의 하나 이상에 기록하기 위하여 병렬 포맷인 데이터를 직렬 데이터로 변환하기 위한 양태의 방법을 예시하는 프로세스 흐름도이다.
도 12 는 복수의 메모리 디바이스들 중의 하나 이상으로부터 판독하기 위하여 직렬 데이터를 병렬 포맷인 데이터로 변환하기 위한 양태의 방법을 예시하는 프로세스 흐름도이다.
도 13 은 다양한 양태들과 함께 이용하기 위해 적당한 예시적인 이동 디바이스를 예시하는 컴포넌트 블록도이다.
도 14 는 다양한 양태들과 함께 이용하기 위해 적당한 예시적인 이동 디바이스를 예시하는 컴포넌트 블록도이다.
다양한 양태들은 첨부한 도면들을 참조하여 상세하게 설명될 것이다. 가능한 경우마다, 동일한 참조 번호들은 동일하거나 유사한 부분들을 지칭하기 위하여 도면들의 전반에 걸쳐 이용될 것이다. 특정한 예들 및 구현예들에 대해 행해진 참조들은 예시적인 목적들을 위한 것이고, 발명 또는 청구항들의 범위를 제한하도록 의도된 것은 아니다.
용어들 "컴퓨팅 디바이스" 및 "이동 디바이스" 는 셀룰러 전화들, 스마트폰들, 개인용 또는 이동 멀티미디어 플레이어들, 개인 정보 단말 (personal data assistant; PDA) 들, 랩톱 컴퓨터들, 태블릿 컴퓨터들, 스마트북 (smartbook) 들, 울트라북 (ultrabook) 들, 팜톱 (palm-top) 컴퓨터들, 무선 전자 메일 수신기들, 멀티미디어 인터넷 가능형 셀룰러 전화들, 무선 게임용 제어기들과, 메모리 및 프로그래밍가능 프로세서를 포함하는 유사한 개인용 전자 디바이스들 중의 임의의 하나 또는 전부를 지칭하기 위하여 본원에서 상호 교환가능하게 이용된다. 다양한 양태들은 제한된 자원들을 가지는 스마트폰들과 같은 이동 컴퓨팅 디바이스들을 위해 특히 유용하지만, 양태들은 복수의 메모리 디바이스와, 메모리 디바이스들의 전력 소비를 감소시키는 것이 이동 컴퓨팅 디바이스의 수명을 연장할 수 있는 제한된 전력 버젯 (power budget) 을 구현하는 임의의 전자 디바이스에서 일반적으로 유용하다.
용어 "시스템-온-칩 (system-on-chip)" (SoC) 은 전형적으로, 그러나 배타적이지는 않게, 하드웨어 코어, 메모리, 및 통신 인터페이스를 포함하는 상호접속된 전자 회로들의 세트를 지칭하기 위하여 본원에서 이용된다. 하드웨어 코어는 범용 프로세서, 중앙 프로세싱 유닛 (central processing unit; CPU), 디지털 신호 프로세서 (digital signal processor; DSP), 그래픽 프로세싱 유닛 (graphics processing unit; GPU), 가속된 프로세싱 유닛 (accelerated processing unit; APU), 보조 프로세서, 단일-코어 (single-core) 프로세서, 및 멀티-코어 (multi-core) 프로세서와 같은 다양한 상이한 타입들의 프로세서들을 포함할 수도 있다. 하드웨어 코어는 필드 프로그래밍가능 게이트 어레이 (field programmable gate array; FPGA), 애플리케이션-특정 집적 회로 (application-specific integrated circuit; ASIC), 다른 프로그래밍가능 로직 디바이스, 개별 게이트 로직, 트랜지스터 로직, 성능 모니터링 하드웨어, 와치도그 하드웨어 (watchdog hardware), 및 시간 기준 (time reference) 들과 같은 다른 하드웨어 및 하드웨어 조합들을 추가로 구체화할 수도 있다. 집적 회로들은 집적 회로의 컴포넌트들이 실리콘 (silicon) 과 같은 반도체 재료의 단일 피스 (piece) 상에 존재하도록 구성될 수도 있다.
용어들 "채널" 및 "메모리 버스" 는 메모리 제어기와 메모리 모듈 사이에서 데이터를 송신하도록 구성된 데이터 도관 (data conduit) 을 지칭하기 위하여 본원에서 상호 교환가능하게 이용된다. 각각의 메모리 모듈은 메모리 모듈을 위한 전용 채널에 접속될 수도 있다. 예를 들어, "x" 개의 메모리 모듈들을 가지는 디바이스는 각각의 채널이 하나의 메모리 모듈에 대응하는 "x" 개의 채널들을 가질 수도 있다. 채널들은 크기에 있어서 변동될 수도 있지만, 참조의 용이함을 위하여, 본원에서 논의된 예들은 최대한으로 64 비트들의 데이터를 병렬로 송신할 수 있는 64-비트 채널을 참조한다. 양태들이 상이한 크기들의 채널들로 구현될 수도 있으므로, 이 예들은 제한하는 것으로 의도된 것은 아니다. 용어 "서브-채널" 및 "메모리 디바이스 버스" 는, 서브-채널의 메모리 디바이스가 개별적으로 활성화되거나 급전될 때에 메모리 모듈의 메모리 디바이스들에 접속된 채널의 부분들을 지칭하기 위하여 본원에서 상호 교환가능하게 이용된다.
용어 "트랜잭션" 은 요청된 크기의 데이터의 완전한 전송을 지칭한다. 용어 "데이터 버스트" 는 전송을 완료하기 위하여 다수의 연속적인 사이클들을 이용한 인터페이스 상에서의 데이터의 전송을 지칭한다. 트랜잭션은 단일 사이클에서 완료할 수도 있거나, 그것은 다수의 사이클들의 버스트에서 완료할 수도 있다.
참조의 용이함을 위하여, 본원에서 설명된 예들은 8 개의 메모리 디바이스들 또는 칩들을 가지는 메모리 모듈들을 가정한다. 본원에서 설명된 예들에서, 메모리 디바이스는 크기에 있어서 변동될 수도 있고, 메모리 디바이스의 부분들은 1-바이트 (1-byte) 또는 8 비트들로 분할될 수도 있다. 이 예들은 여하튼 제한하는 것으로 의도된 것이 아니고, 본원에서의 개시물들은 변동되는 크기 및 구성의 메모리 모듈들 및 메모리 디바이스들에 적용할 수 있다. 또한, 프로세서, 메모리 제어기, 데이터 버퍼, 디바이스 버퍼, 선입선출 (first in first out; FIFO) 버퍼, 멀티플렉서 (multiplexer), 디멀티플렉서 (demultiplexer), 재순서화 로직 (re-order logic), 및 복수의 버스들 및 라인들의 각각과 같은 본원에서 설명된 다른 컴포넌트들은 메모리 모듈들 및 메모리 디바이스들의 변동되는 크기들 및 구성들을 지원하도록 대안적으로 구성될 수도 있다.
기존의 메모리 판독 또는 기록 트랜잭션 동안에는, 예컨대, 하나의 메모리 모듈 상의 메모리 디바이스들의 그룹은 컴퓨팅 디바이스의 프로세서로 트랜잭션을 위해 급전될 수도 있다. 예를 들어, 기존의 메모리 디바이스에서는, 주 메모리가 메모리 디바이스들의 각각이 각각 1-바이트의 다수의 세그먼트 (segment) 들로 구획된 8 개의 메모리 디바이스들을 가지는 적어도 하나의 메모리 모듈을 포함할 때, 64 비트 판독 또는 기록 트랜잭션은 각각의 메모리 디바이스의 1-바이트 세그먼트를 액세스하기 위하여 모든 8 개의 메모리 디바이스들을 급전할 것이다. 기존의 메모리 디바이스에서는, 각각의 메모리 디바이스가 또 다른 메모리 디바이스와 동시에 데이터를 수신할 수 있으므로, 데이터가 메모리 디바이스들의 그룹에 병렬로 기록됨으로써, 많은 양들의 데이터에 대한 고속 액세스를 가능하게 한다. 트랜잭션의 64 비트들의 데이터가 병렬로 메모리 디바이스들에 기록될 수도 있거나 메모리 디바이스들로부터 판독될 수도 있으므로, 메모리를 액세스하는 이 기존의 방식은 높은 성능 또는 속도를 위해 구성된 메모리 맵을 이용하여 구현된다. 메모리를 액세스하는 이 방식은 트랜잭션을 위하여 메모리 디바이스들의 전부를 급전하므로, 많은 양의 에너지를 또한 이용한다. 그러나, 이 예의 64 비트들에서는, 최대 크기의 데이터 버스트가 병렬로 판독되거나 기록될 수 있으므로, 이러한 성능 레벨들에서 메모리 판독 또는 기록 트랜잭션들을 수행하는 것이 불필요할 수도 있다. 또한, 그렇게 행하는 결과가 제한된 전력 버젯을 갖는 디바이스를 위한 에너지의 과잉 이용일 때, 이러한 성능 레벨들에서 메모리 판독 또는 기록 트랜잭션들을 수행하는 것은 바람직하지 않을 수도 있다.
다양한 실시형태들은, 데이터의 바이트들이 병렬로 다수의 메모리 디바이스들에 걸쳐서가 아니라, 단일 메모리 디바이스에서 저장되도록, 트랜잭션 내의 바이트들에 대한 메모리 로케이션 (memory location) 들을 재맵핑함으로써, 기존의 방법들보다 더욱 전력 효율적인 방식으로 컴퓨팅 디바이스의 메모리 내에 데이터를 저장하기 위한 방법들을 제공한다. 이러한 방식으로 데이터 버스트를 재맵핑하는 것은 단일 메모리 디바이스만이 데이터를 기록하거나 판독하기 위하여 급전되는 것을 초래함으로써, 기존의 병렬 메모리 액세스 동작을 위하여 모든 메모리 디바이스들을 급전하기 위하여 그렇지 않을 경우에 요구될 전력을 절감한다. 참조의 용이함을 위하여, 용어들 "데이터 버스트" 및 "데이터의 버스트" 는 단일 클록 사이클에서 저장을 위하여 프로세서로부터 출력되거나 메모리로부터 요청되는 데이터의 양을 지칭하기 위하여 상호 교환가능하게 이용된다. 예를 들어, 64 비트 프로세서는 단일 프로세서 클록 사이클에서 저장을 위하여 64 비트들의 데이터를 메모리로 전송할 수도 있거나 메모리로부터 64 비트들의 데이터를 요청할 수도 있으므로, 이러한 프로세서에 대한 데이터 버스트는 8 바이트들의 데이터일 수도 있다. 다양한 실시형태들에서는, 8 개의 메모리 디바이스들의 각각에서 병렬로 1 바이트를 저장하는 대신에, 64 비트 프로세서로부터/프로세서로의 데이터 버스트에서의 8 바이트들의 데이터는 단일 메모리 디바이스에서 직렬로 저장되도록 메모리 맵에서 재순서화될 것이다.
재순서화된 메모리 맵을 이용하여 데이터 버스트에 대한 메모리 어드레스들을 재순서화하는 프로세스는 SoC, 메모리 디바이스, 또는 별도의 집적 회로의 컴포넌트일 수도 있는 (또한, "메모리 제어기" 로서 본원에서 지칭된) 메모리 액세스 제어기 내에서 달성될 수도 있다. 양태의 메모리 액세스 제어기는 다양한 양태들의 메모리 맵핑을 수행하도록 구성된 재순서화 로직을 포함할 수도 있다. 양태의 방법들은 또한, 또는 대안적으로, 메모리 액세스 제어기로부터의 별도의 컴포넌트인 재순서화 로직에서 수행될 수도 있다. 이러한 방식으로, 데이터 버스트 내에서 바이트들을 재순서화하는 프로세스는 프로세서에 관한 요건들을 부과하지 않고도 달성될 수도 있다. 다시 말해서, 프로세서는 기존의 메모리 어드레싱 기법들을 이용하여 데이터를 메모리로 출력할 수도 있고 메모리로부터 데이터를 액세스할 수도 있는 반면, 메모리 액세스 제어기는 바이트들이 에너지-효율적인 방식으로 메모리 내에 저장될 수도 있도록 데이터 버스트들 내에서 바이트들을 재순서화하는 동작들을 수행한다. 실제로는, 데이터 버스트 내의 바이트들이 단일 메모리 디바이스 내에서 직렬로 저장되도록, 메모리에서의 병렬 저장을 위한 프로세서에서 출력된 데이터는 메모리 액세스 제어기에 의해 직렬 메모리 어드레스들로 변환되는 반면, 직렬 포맷으로 단일 디바이스에서 저장되는 메모리로부터 판독된 데이터의 버스트는 요청된 메모리 로케이션들에 따라 프로세서에 의해 예상된 병렬 포맷으로 변환된다.
판독 및 기록 동작들에서, 프로세서는 병렬인 데이터를 위한 메모리 로케이션들에 대한 트랜잭션을 요청할 수도 있다. 메모리 액세스 제어기는 특정한 메모리 디바이스들 내에서 요청된 데이터의 재순서화된 메모리 로케이션들을 결정하기 위하여 프로세서에 의해 특정된 메모리 어드레스들을 재순서화된 메모리 맵과 비교할 수도 있다. 메모리 액세스 제어기는 직렬 및 병렬 포맷들 사이에서 데이터를 변환할 수도 있으므로, 메모리 디바이스는 직렬 데이터를 처리할 수도 있고, 프로세서는 데이터를 병렬로 처리할 수도 있다.
양태에서, 메모리 액세스 제어기는 데이터의 버스트를 처리하기 위하여 메모리 디바이스들의 하나를 초과하지만 전부보다는 적은 것을 배정함으로써, 성능 및 에너지 절감의 균형을 맞추는 레이턴시 용인 재순서화된 메모리 맵을 이용하여 데이터 어드레스들을 재순서화할 수도 있다. 이 양태에서는, 메모리 디바이스들의 전부를 병렬로 이용함으로써 메모리 액세스 성능을 최대화하거나, 또는 위에서 설명된 바와 같이 데이터 버스트를 처리하기 위하여 하나의 메모리 디바이스를 이용함으로써 전력 소비를 최소화하는 것이 아니라, 레이턴시 용인 재순서화된 메모리 맵은 데이터 버스트를 처리하기 위하여 메모리 디바이스들의 전부가 아닌 일부를 이용할 수도 있다. 이러한 방식으로, 재순서화된 메모리 맵은 데이터 버스트를 판독하거나 기록하기 위하여 급전된 메모리 디바이스들의 수를 제한한다. 이 양태는 기존의 메모리 액세스 기법들의 높은 성능이지만 높은 전력 수요와, 위에서 설명된 양태에 의해 제공된 낮은 전력이지만 더 느린 메모리 액세스와의 사이의 절충을 나타낸다.
양태에서, 메모리 액세스 제어기에 의해 이용된 재순서화된 메모리 맵은 또한, 메모리 맵들의 조합일 수도 있다. 메모리 디바이스들의 재순서화된 메모리 맵은 상이한 메모리 맵들로부터 기인하는 상이한 목적들을 위해 이용된 메모리 디바이스들의 상이한 섹션들을 나눌 수도 있다. 예를 들어, 메모리 액세스 제어기는, 각각의 메모리 디바이스의 제 1 부분이 직렬 포맷 최소 에너지 소비로 데이터를 저장하기 위하여 이용될 수도 있고, 각각의 메모리 디바이스의 제 2 부분이 레이턴시 용인을 위해 편성된 데이터를 저장하기 위하여 이용되고, 각각의 메모리 디바이스의 제 3 부분이 최대 성능을 위해 편성된 데이터를 저장하기 위하여 이용되도록 구성될 수도 있다. 메모리 액세스 제어기는, 데이터 구조, 레이턴시 용인, 또는 데이터에 대한 소스 애플리케이션에 따라 데이터를 적절한 메모리 부분에 맵핑하는 메모리 맵들을 이용하여 메모리 로케이션들의 이러한 배분을 달성할 수도 있다. 메모리 액세스 제어기는, 메모리 디바이스들 내의 메모리 어드레스들이 다양한 상이한 방법들로 배분되고, 다양한 상이한 재순서화된 메모리 맵들에 관련되도록 구성될 수도 있고, 본원에서 제공된 예들은 제한하는 것으로 의도된 것은 아니다.
양태에서, 프로세서에 의해 요청된 트랜잭션들은 상이한 재순서화된 메모리 맵들에 관련되는 메모리 디바이스들의 상이한 부분들에 배정될 수도 있다. 메모리 액세스 제어기 (또는 메모리 액세스 제어기와 함께 작동하는 프로세서) 는 프로세서에 의해 실행된 프로세스들에서의, 또는 프로세스들에 관련되는 명령들에 기초하여, 상이한 재순서화된 메모리 맵들에 대해 최상으로 적합한 데이터 트랜잭션들을 결정할 수도 있다. 이러한 결정들은 데이터의 소스 또는 사용자인 소프트웨어 애플리케이션에서, 또는 소프트웨어 애플리케이션의 분석을 통해 제공된 표시들 (예컨대, 플래그들, 데이터 태그들 등) 을 이용하여 행해질 수도 있다.
도 1 은 양태에 따라, 각각이 채널과 연관된, 복수의 메모리 제어기들에 접속된 복수의 메모리 모듈들 상의 복수의 메모리 디바이스들을 가지는 예시적인 컴퓨팅 디바이스를 예시한다. 컴퓨팅 디바이스 (100) 는 프로세서 (104), 각각이 적어도 프로세서 (104) 에 접속된, 정적 랜덤-액세스 메모리 (static random-access memory; SRAM) (106), 판독 전용 메모리 (read only memory; ROM) (108), 메모리 제어기 (110), 및 저장 제어기 (112) 를 가지는 SoC (102) 를 포함할 수도 있다. SoC (102) 는 저장 제어기 (112) 를 통해 저장 디바이스 (114) 에 접속될 수도 있다. SoC (102) 는 메모리 제어기 (110) 를 통해 메모리 모듈 (116) 에 접속될 수도 있다. 메모리 모듈 (116) 은 메모리 디바이스 (118) 를 포함할 수도 있다. SoC (102) 에 접속된 각각의 메모리 모듈 (116) 은 메모리 모듈 (116) 과 SoC (102) 사이에서 데이터를 전송하기 위한 채널과 연관될 수도 있다. 메모리 모듈 (116) 의 각각의 메모리 디바이스 (118) 는 또한, 메모리 모듈 (116) 의 채널과 연관될 수도 있다. SoC (102) 에 접속된 각각의 메모리 모듈 (116) 은 전용 메모리 제어기 (110) 를 통해 접속될 수도 있어서, 메모리 모듈 (116) 및 메모리 제어기 (110) 의 각각의 쌍은 동일한 채널과 연관된다. 도 1 에서의 예는, 각각의 메모리 모듈 (116) 이 8 개의 메모리 디바이스들 (118)(메모리 디바이스들 0 내지 7) 을 포함하고, 각각의 메모리 모듈 (116) 이 그 전용 메모리 제어기 (110) (메모리 제어기 - 채널 0, 메모리 제어기 - 채널 1) 에 접속되는, 2 개의 메모리 모듈들 (116) (메모리 모듈 - 채널 0, 메모리 모듈 - 채널 1) 에 접속된 하나의 SoC (102) 를 가지는 양태의 컴퓨팅 디바이스 (100) 를 예시한다. SoC 들 (102), 메모리 모듈들 (116), 메모리 디바이스들 (118), 및 메모리 제어기들 (110) 의 수와, 이에 따라 채널들은 이 예에서, 여하튼 제한하는 것으로 의도된 것은 아니고, 컴퓨팅 디바이스 (100) 의 컴포넌트들의 구성은 변동될 수도 있다.
컴퓨팅 디바이스 (100) 에서, 프로세서 (104) 는 다양한 메모리 디바이스들 (118) 의 특정 메모리 로케이션들로부터 데이터를 판독하거나 이러한 특정 메모리 로케이션들에 데이터를 기록하기 위하여 트랜잭션 요청들을 행할 수도 있다. 요청된 트랜잭션을 위한 메모리 로케이션들과 연관된 메모리 제어기 (110) 는 데이터 트랜잭션 요청을 수신할 수도 있고, 트랜잭션 요청의 데이터가 어떻게 메모리 디바이스들 (118) 로부터 판독되는지, 또는 메모리 디바이스들 (118) 에 기록되는지를 제어할 수도 있다. 이하에서 더욱 상세하게 논의된 바와 같이, 메모리 제어기 (110) 는 메모리 디바이스들 (118) 에 대한 메모리 맵을 재순서화할 수도 있고, 데이터의 흐름 및 포맷을 제어할 수도 있고, 급전되는 메모리 디바이스들 (118), 및 트랜잭션을 위해 이용되는 메모리 로케이션들을 제어할 수도 있다.
도 2 는 각각이 채널과 연관된, 메모리 제어기 (110) 에 접속된 메모리 모듈 (118) 상의 복수의 메모리 디바이스들을 가지는 컴퓨팅 디바이스를 예시한다. 메모리 제어기 (110) 및 메모리 모듈 (118) 은 "n" 번 채널과 연관된 임의의 수의 메모리 제어기들 (110) 및 메모리 모듈들 (118) 중의 번호 "n" 일 수도 있다. 메모리 제어기 (110) 는 데이터 버퍼 (200) 및 재순서화 로직 (202) 을 포함할 수도 있다. 컴퓨팅 디바이스 프로세서 (104) 는, 프로세서 (104) 와 메모리 제어기 (110) 사이에서 데이터, 메모리 로케이션들 또는 어드레스들, 및 트랜잭션 신호들을 전송하도록 구성될 수도 있는 트랜잭션 버스 (204) 에 의해 메모리 제어기 (110) 에 접속될 수도 있다. 프로세서 데이터 버스 (206) 는 트랜잭션 버스 (204) 와 데이터 버퍼 (200) 사이에서 데이터를 전송할 수도 있다. 프로세서 어드레스 버스 (208) 는 트랜잭션을 위하여 프로세서 (104) 에 의해 특정된 메모리 로케이션들과, 요청된 트랜잭션이 판독 또는 기록 트랜잭션인지 여부를 특정하는 트랜잭션 신호를 전송할 수도 있다. 데이터 버퍼 제어 버스 (210) 는, 병렬 포맷인 데이터와 직렬 데이터 사이에서 데이터를 변환하고 프로세서 (104) 또는 메모리 디바이스들 (118) 로부터 데이터를 수신하기 위한 신호들을 포함할 수도 있는 제어 신호들을 재순서화 로직 (202) 으로부터 데이터 버퍼 (200) 로 전송할 수도 있다.
데이터 버퍼 (200) 는 또한, 메모리 데이터 버스 (212) 에 의해 메모리 디바이스들 (118) 에 접속할 수도 있다. 메모리 디바이스들 (118) 의 각각은 동일한 메모리 데이터 버스 (212) 및 동일한 데이터 버퍼 (200) 에 병렬로 접속할 수도 있다. 이에 따라, 64 비트 메모리 데이터 버스의 예에서, 메모리 디바이스들 (118) 의 각각은 전체 64 비트 메모리 데이터 버스에 접속될 수도 있다. 양태에서, 메모리 디바이스들 (118) 의 각각은 메모리 데이터 버스 (212) 의 부분들에 의해 동일한 데이터 버퍼 (200) 에 접속할 수도 있다. 64 비트 메모리 데이터 버스의 또 다른 예에서, 메모리 디바이스들 (118) 의 각각은 64 비트 메모리 데이터 버스의 부분에 접속될 수도 있어서, 각각의 메모리 디바이스 (118) 는 그것이 접속되는 부분 상에서만 데이터를 수신하거나 송신할 수도 있다. 예를 들어, 64 비트 메모리 데이터 버스는, 각각이 64 비트 메모리 데이터 버스의 8 비트 부분에 접속되는 8 개의 메모리 디바이스들 (118) 에 접속될 수도 있다. 유사한 예들은 메모리 데이터 버스 (212) 의 동일하지 않은 크기의 부분들에 접속된 메모리 디바이스들 (118) 을 포함할 수도 있다. 이 구성들은 메모리 데이터 버스 (212) 가 메모리 디바이스들 (118) 과 데이터 버퍼 (200) 사이에서 데이터를 병렬로 그리고 직렬로 전송하도록 허용한다.
재순서화 로직 (202) 은 메모리 어드레스 및 제어 버스 (214) 및 메모리 디바이스 선택 버스 (216) 에 의해 메모리 디바이스들 (118) 에 접속할 수도 있다. 메모리 어드레스 및 제어 버스 (214) 는, 메모리 디바이스들 (118) 이 데이터를 특정 메모리 로케이션들에 저장하거나 특정 메모리 로케이션들로부터 데이터를 방출하도록, 신호들을 재순서화 로직 (202) 으로부터 메모리 디바이스들 (118) 로 송신할 수도 있다. 메모리 디바이스 선택 버스 (216) 는 메모리 디바이스들 (118) 을 급전하기 위하여 신호들을 재순서화 로직 (202) 으로부터 메모리 디바이스들 (118) 로 전송할 수도 있다. 메모리 디바이스 선택 버스 (216) 는 각각의 접속된 메모리 디바이스 (118) 를 위한 전용 라인을 포함할 수도 있고, 재순서화 로직 (202) 이 급전하기 위하여 선택하는, 특정 메모리 디바이스 (118) 에 접속된 전용 라인을 선택할 수도 있다. 개별적인 메모리 디바이스들 (118) 에 급전하는 것은 메모리 데이터 버스 (212) 상에서 서브-채널들을 생성할 수도 있다.
재순서화 로직 (202) 은 또한, 메모리 디바이스들 (118) 에 대한 메모리 맵들을 재순서화하도록 구성될 수도 있다. 위에서 설명된 바와 같이, 메모리 맵들은 메모리 디바이스들 (118) 에 의한 전력 소비를 최소화하기 위하여, 성능 속도를 최대화하기 위하여, 및/또는 전력 소비 및 성능 속도의 균형을 맞추기 위하여 재순서화될 수도 있다. 재순서화된 메모리 맵들은 프로세서 제공된 메모리 로케이션들을 트랜잭션 요청의 일부로서, 재순서화된 메모리 맵들의 목적들을 달성하는 메모리 디바이스들 (118) 의 재순서화된 메모리 로케이션들에 연관시키기 위하여 이용될 수도 있다. 이러한 방식으로, 프로세서 (104) 는 특정된 메모리 로케이션들에서의 데이터에 대한 트랜잭션을 요청할 수도 있고, 메모리 제어기 (110) 는 프로세서 (104) 가 그것이 트랜잭션의 데이터와 연관시키는 메모리 로케이션들을 변경하지 않으면서, 재순서화된 메모리 맵들의 목적들에 따라, 데이터가 어디에서 메모리 디바이스들 (118) 에 기록되는지, 또는 메모리 디바이스들 (118) 로부터 판독되는지를 제어할 수도 있다. 메모리 맵들을 재순서화하기 위한 프로세스들과, 재순서화된 메모리 맵들이 어떻게 이용되는지는 이하에서 더욱 설명된다.
도 3 은 병렬 포맷인 데이터를 직렬 데이터로 변환하고 직렬 데이터를 복수의 메모리 디바이스들 중의 하나 이상에 기록하도록 구성된 컴퓨팅 디바이스를 예시한다. 데이터 버퍼 (200) 는, 선입선출 (FIFO) 버퍼 (302) 및 멀티플렉서 (304) 를 포함할 수도 있는 메모리 디바이스 버퍼 (300) 를 포함할 수도 있다. 데이터 버퍼 (200) 는 복수의 메모리 디바이스 버퍼들 (300) (메모리 디바이스 버퍼 0, 메모리 디바이스 버퍼 1 내지 메모리 디바이스 버퍼 n) 을 포함할 수도 있다. 예를 들어, 데이터 버퍼 (200) 는 데이터 버퍼 (200) 에 접속된 메모리 디바이스들 (118) (메모리 디바이스 0, 메모리 디바이스 1 내지 메모리 디바이스 n) 이 존재하는 것만큼 많은 메모리 디바이스 버퍼들 (300) 을 포함할 수도 있다.
메모리 디바이스 버퍼들 (300) 의 각각은 메모리 데이터 버스 (212) 에 의해 메모리 디바이스들 (118) 에 접속할 수도 있다. 양태에서, 메모리 디바이스 버퍼들 (300) 의 각각은 병렬로 데이터 버퍼 (200) 에 접속된 메모리 디바이스들 (118) 의 전부에 접속될 수도 있다. 또 다른 양태에서, 메모리 디바이스 버퍼들 (300) 의 각각은 별도의 메모리 데이터 버스 (212) 의 부분 또는 별도의 메모리 데이터 버스 (212) 에 의해 데이터 버퍼 (200) 에 접속된 하나 이상의 전용 메모리 디바이스들 (118) 에 접속될 수도 있다.
프로세서 (104) 는 위에서 설명된 바와 같이 데이터 버퍼 (200) 에 접속될 수도 있고, 트랜잭션 버스 (204) 및 프로세서 데이터 버스 (206) 에 의해 메모리 디바이스 버퍼들 (300) 의 각각에 병렬로 추가로 접속될 수도 있다. 메모리 디바이스 버퍼들 (300) 에 접속할 시에, 프로세서 (104) 는 또한, 메모리 디바이스 버퍼들 (300) 의 각각의 메모리 디바이스 버퍼의 FIFO 버퍼들 (302) 과 접속할 수도 있다.
재순서화 로직 (202) 은 위에서 설명된 바와 같이, 메모리 어드레스 및 제어 버스 (214) 및 메모리 디바이스 선택 버스 (216) 에 의해 메모리 디바이스들 (118) 에, 그리고 데이터 버퍼 제어 버스 (210) 에 의해 데이터 버퍼 (200) 에 접속할 수도 있다. 재순서화 로직은 FIFO 제어 버스 (310) 에 의해 메모리 디바이스 버퍼들 (300) 의 각각의 메모리 디바이스 버퍼의 FIFO 버퍼들 (302) 에, 그리고 멀티플렉서 선택 버스 (308) 에 의해 메모리 디바이스 버퍼들 (300) 의 각각의 메모리 디바이스 버퍼의 멀티플렉서들 (304) 에 추가로 접속할 수도 있다.
동작 시에, 데이터 트랜잭션을 수행하기 위한 양태의 방법은 다음과 같이 진행할 수도 있다. 프로세서 (104) 는 기록 트랜잭션을 요청할 수도 있고, 메모리 제어기는 트랜잭션 버스 (204) 상에서 프로세서 (104) 로부터 기록 트랜잭션 요청을 수신할 수도 있다. 메모리 제어기는 프로세서 어드레스 버스 (208) 상에서 트랜잭션 신호 (이 예에서, 기록 신호) 및 프로세서 제공된 메모리 로케이션들을 재순서화 로직 (202) 으로 라우팅 (routing) 할 수도 있다. 재순서화 로직 (202) 은 프로세서 제공된 메모리 로케이션들을 수신할 수도 있다. 재순서화 로직 (202) 은 프로세서 제공된 메모리 로케이션들과 연관된 메모리 디바이스들 (118) 의 재순서화된 메모리 로케이션들을 결정하기 위하여, 프로세서 제공된 메모리 로케이션들을 재순서화된 메모리 맵과 비교할 수도 있다. 재순서화 로직 (202) 은 트랜잭션을 위한 식별된 재순서화된 메모리 로케이션들과 연관된 메모리 디바이스 (118) 에 접속된 메모리 디바이스 버퍼 (300) 를 결정할 수도 있다. 재순서화 로직 (202) 은 또한, 트랜잭션 신호를 수신할 수도 있고, 트랜잭션 신호를 기록 요청으로서 인식할 수도 있다. 트랜잭션 신호에 응답하여, 재순서화 로직 (202) 은 프로세서 (104) 로부터의 착신 데이터를 저장하는 것을 인에이블 (enable) 할 것을, FIFO 제어 버스 (310) 에 의해, 식별된 메모리 디바이스 버퍼 (300) 의 FIFO 버퍼 (302) 에 시그널링할 수도 있다. 메모리 제어기는 프로세서 데이터 버스 (206) 상에서 기록 트랜잭션 요청의 데이터를 메모리 디바이스 버퍼들 (300) 로 라우팅할 수도 있고, 인에이블된 FIFO 버퍼 (302) 는 데이터를 저장할 수도 있다. FIFO 버퍼 (302) 는 데이터를 병렬로 수신할 수도 있으므로, 데이터가 수신되는 시간적인 순서가 없다. 그러나, FIFO 버퍼 (302) 의 입력들은 프로세서 데이터 버스 (206) 의 특정 부분 또는 라인에 각각 접속할 수도 있다. 데이터가 프로세서 데이터 버스 (206) 상에서 어떻게 편성되는지는 FIFO 버퍼 (302) 가 데이터를 어떻게 저장하는지를 결정할 수도 있다. FIFO 버퍼 (302) 상의 최초의 로케이션과 연관된 FIFO 버퍼 (302) 의 입력에 접속된 프로세서 데이터 버스 (206) 의 부분 상의 데이터의 비트는 데이터에 있어서의 최초의 것으로 고려될 수도 있다. FIFO 버퍼 (302) 상의 다음 로케이션과 연관된 FIFO 버퍼 (302) 의 다음 입력에 접속된 프로세서 데이터 버스 (206) 의 다음 부분 상의 데이터의 비트는 데이터에 있어서 다음의 것으로 고려될 수도 있고, 그리고 시퀀스에서 FIFO 버퍼 (302) 의 각각의 입력에 대하여 기타 등등으로 고려될 수도 있다.
재순서화 로직 (202) 은 또한, 멀티플렉서 (304) 가 FIFO 버퍼 (302) 로부터 수신하는 데이터를 병렬 데이터 포맷으로부터 직렬 데이터로 변환할 것을, 식별된 메모리 디바이스 버퍼 (300) 의 멀티플렉서 (304) 에 시그널링할 수도 있다. 양태에서, 멀티플렉서 (304) 는 예를 들어, 64-대-8 멀티플렉서일 수도 있다. 의미하는 것은 멀티플렉서 (304) 가 64 개의 입력들 및 8 개의 출력들을 포함한다는 것이고, 여기서, 입력들 및 출력들의 각각은 한 번에 1 비트의 데이터를 처리할 수 있다. 멀티플렉서 (304) 는 각각이 한 번에 1-바이트의 데이터를 처리할 수 있는 8 개의 입력들 및 하나의 출력을 가지는 8-대-1 멀티플렉서로서 대안적으로 식별될 수도 있다. 멀티플렉서 선택 버스 (308) 에 의해 재순서화 로직 (202) 으로부터 멀티플렉서 (304) 에 의해 수신된 선택 신호는 출력을 위하여 선택된 멀티플렉서 입력들을 제어할 수도 있다. 재순서화 로직 (202) 은, 멀티플렉서 (304) 에 의해 출력된 멀티플렉서 (304) 의 최초의 입력이 FIFO 버퍼 (302) 상의 최초의 로케이션과 연관된 FIFO 버퍼 (302) 의 출력에 접속될 수도 있도록 하는 순서로, 선택 신호들을 멀티플렉서 (304) 로 전송할 수도 있다. 양태에서, 선택 신호들은 멀티플렉서 (304) 에 의해 출력된 멀티플렉서 (304) 의 최초의 입력이 FIFO 버퍼 (302) 상의 최초의 8 개의 로케이션들과 연관된 FIFO 버퍼 (302) 의 출력에 접속될 수도 있다는 것을 멀티플렉서 (304) 에 표시할 수도 있다. 재순서화 로직 (202) 에 의해 전송된 다음 선택 신호는 FIFO 버퍼 (302) 상의 데이터의 다음 비트 또는 바이트를 출력할 것을 멀티플렉서 (304) 에 시그널링할 수도 있고, 멀티플렉서 (304) 가 FIFO 버퍼 (302) 상에서 저장된 데이터의 전부를 직렬 방식으로 출력하였을 때까지 기타 등등과 같이 시그널링할 수도 있다.
메모리 데이터 버스 (212) 는 멀티플렉서 (304) 에 의해 출력된 직렬 데이터를 메모리 디바이스 (118) 로 전송할 수도 있다. 위에서 설명된 바와 같이, 멀티플렉서 (304) 를 가지는 메모리 디바이스 버퍼 (300) 는 하나 이상의 전용 메모리 디바이스들 (118) 에 접속할 수도 있거나, 병렬로 데이터 버퍼 (200) 에 접속된 메모리 디바이스들 (118) 의 전부에 접속할 수도 있다. 멀티플렉서 (304) 를 가지는 메모리 디바이스 버퍼 (300) 가 하나 이상의 메모리 디바이스들 (118) 에 어떻게 접속하든지 간에, 재순서화 로직 (202) 은 직렬 데이터를 수신하기 위하여 적절한 메모리 디바이스 (118) 를 선택할 수도 있다. 프로세서 제공된 메모리 로케이션들과 재순서화된 메모리 맵 사이의 재순서화 로직의 비교에 기초하여, 재순서화 로직 (202) 은 어느 재순서화된 메모리 로케이션들이 프로세서 제공된 메모리 로케이션들과 연관되는지를 결정할 수도 있다. 재순서화 로직 (202) 은 어느 메모리 디바이스들 (118) 이 재순서화된 메모리 로케이션들과 연관되는지를 식별할 수도 있다. 재순서화 로직 (202) 은 메모리 디바이스 선택 버스 (216) 를 이용하여 적절한 메모리 디바이스 (118) 를 선택하고 활성화할 수도 있다. 재순서화 로직 (202) 은 관련된 메모리 디바이스 (118) 를 대기상태 (standby) 로부터 깨우기 위하여, 선택된 메모리 디바이스 (118) 에 접속된 메모리 디바이스 선택 버스 (216) 를 선택하고 인에이블할 수도 있다. 관련된 메모리 디바이스 (118) 를 활성화하는 것은 메모리 제어기와 메모리 디바이스 (118) 사이에서 서브-채널을 생성할 수도 있다. 재순서화 로직 (202) 은 또한, 메모리 디바이스 (118) 가 직렬 데이터와, 직렬 데이터를 저장하기 위한 재순서화된 메모리 로케이션들을 저장하기 위한 것이라는 것을 메모리 디바이스 (118) 에 표시하는 신호들을, 메모리 어드레스 및 제어 버스 (214) 상에서 선택된 메모리 디바이스 (118) 로 송신할 수도 있다.
양태에서, 재순서화 로직 (202) 은 기록 데이터를 부분적으로 직렬화할 것을 데이터 버퍼 (200) 에 시그널링할 수도 있다. 재순서화 로직 (202) 은 프로세서 제공된 메모리 로케이션들이 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 또는 재순서화된 메모리 맵의 부분과 연관되는 것으로 결정할 수도 있다. 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵의 구성에 따라서는, "n" 개보다 더 적은 변동되는 수의 메모리 디바이스들 (118) 이 기록 트랜잭션을 위하여 이용될 수도 있다. 기록 트랜잭션을 위하여 "n" 개보다 더 적은 메모리 디바이스들 (118) 을 이용하는 것은 메모리 디바이스들 (118) 중의 적어도 하나의 메모리 디바이스의 하나를 초과하는 메모리 로케이션을 이용하는 것을 요구할 수도 있다. 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵의 구성은 병렬로 기록된 메모리 디바이스들 (118) 의 수를 제한할 수도 있다. 이와 같이, 재순서화 로직 (202) 은 "n" 개보다 더 적은 메모리 디바이스들 (118) 과 연관된 메모리 디바이스 버퍼들 (300) 의 FIFO 버퍼들 (302) 을 인에이블할 수도 있다. 인에이블된 FIFO 버퍼들 (302) 은 프로세서 (104) 로부터 데이터를 병렬로 수신할 수도 있고, 위에서 설명된 바와 같이 데이터를 저장할 수도 있다. 재순서화 로직은 FIFO 버퍼들 (302) 에서 저장된 데이터의 상이한 부분들을 출력할 것을, 인에이블된 FIFO 버퍼들 (302) 에 접속된 멀티플렉서들 (304) 에 시그널링할 수도 있다. 예를 들어, FIFO 버퍼들 (302) 의 전부가 동일한 방식으로 저장되고 나누어진 동일한 데이터를 가질 수도 있을 경우, 재순서화 로직 (202) 은 그 접속된 FIFO 버퍼 상에서 저장된 데이터의 제 1 부분을 출력할 것을 제 1 멀티플렉서에 시그널링할 수도 있다. 재순서화 로직은 그 접속된 FIFO 버퍼 상에서 저장된 데이터의 제 2 부분을 출력할 것을 제 2 멀티플렉서에 시그널링할 수도 있고, 재순서화된 메모리 맵에 의해 설정된 메모리 디바이스들 (118) 의 한계에 도달할 때까지 기타 등등과 같이 시그널링할 수도 있다. FIFO 버퍼들 (302) 이 메모리 디바이스들 (118) 에 기록하기 위한 데이터를 여전히 가질 때, 재순서화 로직은 그것이 멀티플렉서들 (304) 중의 임의의 것에 의해 아직 출력되지 않은 데이터의 다음 부분을 출력할 것을 제 1 멀티플렉서에 시그널링할 수도 있도록 데이터를 직렬화할 수도 있다. 이 프로세스는 트랜잭션을 위하여 FIFO 버퍼들 (302) 상에서 저장된 데이터의 전부가 적절한 메모리 디바이스들 (118) 에 기록될 때까지 이러한 방식으로 계속될 수도 있다.
도 4 는 복수의 메모리 디바이스들 중의 하나 이상으로부터 직렬 데이터를 판독하고 직렬 데이터를 병렬인 데이터로 변환하도록 구성된 컴퓨팅 디바이스를 예시한다. 도 3 에서 설명된 컴포넌트들에 추가하여, 메모리 디바이스 버퍼들 (300) 의 각각은 동일한 또는 또 다른 FIFO 버퍼 (302) 에 접속된 디멀티플렉서 (400) 를 포함할 수도 있다. 디멀티플렉서들 (400) 은 위에서 설명된 멀티플렉서들 (304) 과 동일한 방식으로 메모리 데이터 버스 (212) 에 의해 메모리 디바이스들 (118) 에 접속할 수도 있다. 디멀티플렉서들 (400) 은 또한, 디멀티플렉서 선택 버스 (402) 및 데이터 버퍼 제어 버스 (210) 에 의해 재순서화 로직에 접속할 수도 있다.
양태에서, 프로세서 (104) 는 판독 트랜잭션을 요청할 수도 있다. 메모리 제어기는 트랜잭션 버스 (204) 상에서 프로세서 (104) 로부터 판독 트랜잭션 요청을 수신할 수도 있다. 메모리 제어기는 프로세서 어드레스 버스 (208) 상에서 트랜잭션 신호 (이 예에서, 판독 신호) 및 프로세서 제공된 메모리 로케이션들을 재순서화 로직 (202) 으로 라우팅할 수도 있다. 재순서화 로직 (202) 은 프로세서 제공된 메모리 로케이션들을 재순서화된 메모리 맵과 비교할 수도 있고, 메모리 디바이스들 (118) 의 어느 재순서화된 메모리 로케이션들이 프로세서 제공된 메모리 로케이션들과 연관되는지를 결정할 수도 있다. 프로세서 제공된 메모리 로케이션들과 재순서화된 메모리 맵 사이의 재순서화 로직의 비교에 기초하여, 재순서화 로직 (202) 은 재순서화된 메모리 로케이션들과 연관된 메모리 디바이스들 (118) 을 식별할 수도 있다. 재순서화 로직 (202) 은 메모리 디바이스 선택 버스 (216) 를 이용하여 적절한 메모리 디바이스 (118) 를 선택하고 활성화할 수도 있다. 재순서화 로직 (202) 은 관련된 메모리 디바이스 (118) 를 대기상태로부터 깨우기 위하여, 선택된 메모리 디바이스 (118) 에 접속된 메모리 디바이스 선택 버스 (216) 의 라인을 선택하고 인에이블할 수도 있다. 재순서화 로직 (202) 은 또한, 요청된 데이터가 메모리 디바이스 (118) 상에서 저장되는 재순서화된 메모리 로케이션들과, 특정된 재순서화된 메모리 로케이션들에서 저장된 직렬 데이터를 적절한 데이터 버퍼 (300) 로 방출할 것을 메모리 디바이스 (118) 에 표시하는 신호들을 메모리 어드레스 및 제어 버스 (214) 상에서 선택된 메모리 디바이스 (118) 로 송신할 수도 있다.
메모리 디바이스 데이터 버스 (212) 는 직렬 데이터를 메모리 디바이스 (118) 로부터 데이터 버퍼 (300) 로 전송할 수도 있다. 위에서 설명된 바와 같이, 디멀티플렉서 (400) 를 가지는 메모리 디바이스 버퍼 (300) 는 하나 이상의 전용 메모리 디바이스들 (118) 에 접속될 수도 있거나, 병렬로 데이터 버퍼 (200) 에 접속된 메모리 디바이스들 (118) 의 전부에 접속될 수도 있다. 디멀티플렉서 (400) 를 가지는 메모리 디바이스 버퍼 (300) 가 하나 이상의 메모리 디바이스들 (118) 에 어떻게 접속되든지 간에, 재순서화 로직 (202) 은 직렬 데이터를 수신하기 위하여 적절한 메모리 디바이스 버퍼 (300) 를 선택할 수도 있다. 프로세서 제공된 메모리 로케이션들과 재순서화된 메모리 맵 사이의 재순서화 로직의 비교에 기초하여, 재순서화 로직 (202) 은 재순서화된 메모리 로케이션들 및 메모리 디바이스 (118) 와 연관된 메모리 디바이스 버퍼 (300) 를 식별할 수도 있다. 양태에서, 트랜잭션에서 관여된 데이터의 양은 FIFO 버퍼들 (302) 중의 하나가 처리할 수 있는 데이터의 양 이하일 수도 있다. 이러한 상황에서는, 메모리 디바이스 버퍼들 (300) 이 병렬로 프로세서 (104) 에 접속할 수도 있으므로, 특정한 메모리 디바이스 버퍼 (300) 을 선택하는 것이 필요하지 않을 수도 있다. 또 다른 양태에서, 트랜잭션에서 관여된 데이터의 양은 FIFO 버퍼들 (302) 중의 하나가 처리할 수 있는 데이터의 양보다 더 클 수도 있고, 메모리 제어기는 데이터를 프로세서 (104) 에 전달하기 위하여 다수의 버스트들을 요구하는 데이터의 스트림을 재구성해야 한다. 이러한 상황에서는, 데이터를 예상된 순서로 프로세서 (104) 에 전달하기 위하여 적절한 메모리 디바이스 버퍼들 (300) 을 선택하는 것이 요구될 수도 있거나 요구되지 않을 수도 있다.
재순서화 로직 (202) 은 또한, 디멀티플렉서 (400) 가 메모리 디바이스 (118) 로부터 수신하는 데이터를 직렬 데이터로부터 병렬인 데이터로 변환할 것을, 식별된 메모리 디바이스 버퍼 (300) 의 디멀티플렉서 (400) 에 시그널링할 수도 있다. 양태에서, 디멀티플렉서 (400) 는 예를 들어, 8-대-64 디멀티플렉서일 수도 있다. 의미하는 것은 디멀티플렉서 (400) 가 8 개의 입력들 및 64 개의 출력들을 포함한다는 것이고, 여기서, 입력들 및 출력들의 각각은 한 번에 1 비트의 데이터를 처리할 수 있다. 디멀티플렉서 (400) 는 각각이 한 번에 1-바이트의 데이터를 처리할 수 있는 하나의 입력 및 8 개의 출력들을 가지는 1-대-8 디멀티플렉서로서 대안적으로 식별될 수도 있다. 디멀티플렉서 선택 버스 (402) 에 의해 재순서화 로직 (202) 으로부터 디멀티플렉서 (400) 에 의해 수신된 선택 신호는 출력을 위하여 선택된 디멀티플렉서 입력들을 제어할 수도 있다. 재순서화 로직 (202) 은 또한, 디멀티플렉서 (400) 로부터 수신된 데이터를 저장할 것을 FIFO 제어 버스 (310) 에 의해 FIFO 버퍼 (302) 에 시그널링할 수도 있다. 디멀티플렉서 (400) 의 데이터 출력들은 FIFO 버퍼 (302) 에 의해 수신될 수도 있고, 여기서, 디멀티플렉서 (400) 의 각각의 출력은 FIFO 버퍼 (302) 상의 로케이션과 연관된 FIFO 버퍼 (302) 의 입력에 접속될 수도 있다. FIFO 버퍼 (302) 상의 제 1 로케이션과 연관된 FIFO 버퍼 입력 상에서 수신된 디멀티플렉서 출력은 데이터에 있어서의 최초의 것으로 고려될 수도 있다. FIFO 버퍼 (302) 상의 다음 로케이션과 연관된 FIFO 버퍼 (302) 의 다음 입력 상에서 수신된 다음 디멀티플렉서 출력은 데이터에 있어서 다음의 것으로 고려될 수도 있고, 시퀀스 (sequence) 에서 FIFO 버퍼 (302) 의 각각의 입력에 대하여 기타 등등으로 고려될 수도 있다. 디멀티플렉서 (400) 가 직렬 데이터를 FIFO 버퍼 (302) 로 출력할 때, 그것은 디멀티플렉서 (400) 에 의해 수신된 데이터의 양에 대하여 시퀀스에서 FIFO 버퍼 (302) 의 각각의 입력으로 출력할 수도 있다. 재순서화 로직 (202) 은, 디멀티플렉서 (400) 에 의해 수신된 직렬 데이터가 그것이 수신되는 순서로 디멀티플렉서 (400) 에 의해 출력되도록 하는 순서로, 선택 신호들을 디멀티플렉서 (400) 로 전송할 수도 있다.
재순서화 로직 (202) 은 디멀티플렉서 (400) 에 의해 수신된 직렬 데이터의 출력을 제어할 수도 있어서, FIFO 버퍼 (302) 가 데이터를 프로세서 (104) 로 출력할 때, 직렬 데이터는 프로세서 (104) 에 의해 요청된 순서로 병렬 데이터 포맷으로 변환되는 방식으로, 데이터가 FIFO 버퍼 (302) 에 의해 수신된다. FIFO 버퍼 (302) 가 디멀티플렉서 (400) 로부터 직렬 데이터의 전부를 수신하였을 때, 메모리 제어기는 트랜잭션 버스 (204) 에 의해, 병렬로 FIFO 버퍼 (302) 에서 저장된 데이터를 프로세서 (104) 에 방출할 수도 있다.
양태에서, 디멀티플렉서 (400) 에 의해 수신된 데이터는 부분적으로 병렬이고 부분적으로 직렬화되기만 할 수도 있다. 위에서 설명된 바와 같이, 기록 데이터는 부분적으로 직렬화될 수도 있고, 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵에 대한 메모리 디바이스들 (118) 에 기록될 수도 있다. 레이턴시 용이 프로세스들을 위한 재순서화된 메모리 맵의 메모리 로케이션들에 대한 판독 트랜잭션에서는, 재순서화 로직 (202) 이 부분적으로 병렬이며 부분적으로 직렬화된 데이터를 병렬인 데이터로 변환하기 위하여 디멀티플렉서들 (402) 및 FIFO 버퍼들 (302) 을 제어할 수도 있다. 재순서화 로직 (202) 은 재순서화된 메모리 로케이션들과, 요청된 데이터에 대한 메모리 디바이스 (118) 를 식별하기 위하여, 프로세서 제공된 메모리 로케이션들을 수신할 수도 있고 이들을 이용할 수도 있다. 재순서화 로직 (202) 은 또한, 연관된 메모리 디바이스 버퍼들 (300) 을 식별할 수도 있다. 재순서화 로직 (202) 은 재순서화된 메모리 로케이션들로부터 데이터를 방출할 것을 메모리 디바이스들 (118) 에 시그널링할 수도 있고, 데이터는 연관된 메모리 디바이스 버퍼들 (300) 의 디멀티플렉서들 (402) 에 의해 수신될 수도 있다. 재순서화 로직 (202) 은, 프로세서 (104) 가 데이터를 예상하는 프로세서 데이터 버스 (206) 의 부분으로, 데이터가 FIFO 버퍼 (302) 에 의해 출력되도록, 데이터를 그 접속된 FIFO 버퍼 (302) 의 적절한 입력으로 출력할 것을, 병렬 포맷인 데이터의 부분을 수신하는 각각의 디멀티플렉서 (402) 에 시그널링할 수도 있다. 재순서화 로직 (202) 은 또한, 유사한 방식에 따라 데이터를 그 접속된 FIFO 버퍼 (302) 의 적절한 입력으로 다시 출력할 것을, 데이터의 부분적으로 직렬화된 부분을 수신하는 각각의 디멀티플렉서 (402) 에 시그널링할 수도 있다. 이러한 방식으로, 데이터는 병렬 데이터 포맷으로 포맷팅되고, 프로세서 데이터 버스 (206) 의 각각의 부분 상의 데이터는 프로세서 제공된 메모리 로케이션들에 따라 프로세서 (104) 에 의해 예상된 바와 같다.
전형적인 메모리 모듈에 대하여, 컴퓨팅 디바이스는 최대 성능 속도를 위해 구성된 메모리 맵을 구현할 수도 있다. 전형적인 메모리 모듈은 길이에 있어서 N 바이트들인 데이터 버스트들에 대한 트랜잭션들을 처리하도록 구성될 수도 있고, 데이터는 1-바이트 청크 (chunk) 들로 분해될 수도 있고, 각각의 1-바이트 청크는 전형적인 메모리 모듈의 N 개의 메모리 디바이스들의 각각의 메모리 디바이스의 하나의 메모리 로케이션에 기록되거나 이러한 하나의 메모리 로케이션으로부터 판독된다. 이 전형적인 메모리 모듈의 예에서, N 개의 메모리 모듈들의 각각은 1-바이트 청크의 데이터를 저장하거나 출력하기 위하여 급전되어야 한다. 예를 들어, 8 바이트 트랜잭션은 1-바이트 청크를 8 개의 메모리 디바이스들로 한꺼번에 전송할 수도 있다.
도 5 는 최소 전력 소비를 위한 복수의 메모리 디바이스에 대한 예시적인 재순서화된 메모리 맵을 예시한다. 양태에서, 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 은, 각각의 메모리 디바이스가 개별적으로 급전될 수도 있도록 각각의 메모리 디바이스에 접속된 메모리 디바이스 선택 버스를 가지는 메모리 모듈에 의해 지원될 수도 있다. 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 은, 길이에 있어서 N 바이트들인 하나의 전체 데이터 버스트가 메모리 디바이스들 중의 하나의 메모리 디바이스의 N 개의 메모리 로케이션들에 기록될 수도 있거나 N 개의 메모리 로케이션들로부터 판독될 수도 있도록, N 개의 메모리 디바이스들의 메모리 로케이션들을 배정할 수도 있다. 이 양태에서는, 1-바이트 청크들의 데이터의 전부를 저장하거나 출력하기 위하여 하나의 메모리 디바이스만이 급전될 수도 있다.
유사하게, 길이에 있어서 N 바이트들인 다수의 데이터 버스트들의 트랜잭션이 발생할 경우, 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 은, 각각의 연속적인 데이터 버스트가 시퀀스에서 다음 메모리 디바이스에 기록될 수도 있거나 다음 메모리 디바이스로부터 판독될 수도 있도록, N 개의 메모리 디바이스들의 메모리 로케이션들을 배정할 수도 있다. 데이터 버스트들의 수가 메모리 디바이스들의 수를 초과할 때, 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 은, 연속적인 데이터 버스트들이 최초의 N 개의 데이터 버스트들과 동일한 순서로 메모리 디바이스들의 N 개의 메모리 로케이션들의 다음 세트에 기록될 수도 있거나 이러한 다음 세트로부터 판독될 수도 있도록 메모리 로케이션들을 배정할 수도 있다. 다수의 데이터 버스트 트랜잭션들을 갖는 상황들에서는, 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 에 따른 필요한 수의 메모리 디바이스들만이 급전될 수도 있다.
도 5 에서 예시된 바와 같이, 일 양태의 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 은 복수의 열 (column) 들을 가지는 테이블로서 나타내어질 수도 있고, 여기서, 각각의 열은 메모리 모듈의 메모리 디바이스 (메모리 디바이스 0 내지 7) 를 나타낼 수도 있다. 테이블의 각각의 셀은 개개의 메모리 디바이스들 내의 로케이션을 나타낼 수도 있고, 수치들은 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 이 이용하기 위한 메모리 로케이션들을 배정할 수도 있는 순서를 나타낼 수도 있다. 이 양태의 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 은 프로세서가 8 바이트 데이터 버스트들에서 트랜잭트 (transact) 하는 것으로 가정하지만, 그러나 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 은 다양한 데이터 버스트 길이들을 처리하도록 구성될 수도 있다.
재순서화 로직은 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 을 생성하기 위하여, 기존의 메모리 맵, 예를 들어, 위에서 설명된 바와 같은 최대 성능 속도를 달성하도록 구성된 메모리 맵을 재순서화할 수도 있다. 예시된 바와 같이, 각각의 메모리 디바이스에는 8 개의 1-바이트 그룹들, 또는 64 비트들에서의 이용의 순서가 배정될 수도 있다. 예를 들어, 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 은 이용을 위한 제 1 의 8 개의 배정된 1-바이트 메모리 로케이션들 (메모리 로케이션들 0 내지 7) 을 메모리 디바이스 1 에 배정할 수도 있다. 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 은 이용을 위한 제 2 의 8 개의 8 바이트 메모리 로케이션들 (메모리 로케이션들 8 내지 15) 을 메모리 디바이스 2 에 배정할 수도 있고, 메모리 디바이스 7 까지 기타 등등과 같이 배정할 수도 있다. 동일한 패턴은, 메모리 로케이션들의 전부가 배정될 때까지, 메모리 디바이스들에 걸쳐 연속적인 8 바이트 청크들의 메모리를 배정하는 것을 반복할 수도 있어서, 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 은 메모리 디바이스들의 메모리 로케이션들의 전부에 적용할 수도 있다. 양태에서, 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 은 메모리 디바이스들의 메모리 로케이션들의 전부가 아니라, 메모리 디바이스들의 메모리 로케이션들의 부분들에 적용할 수도 있다.
도 6 은 레이턴시 용인 프로세스들을 위한 복수의 메모리 디바이스에 대한 예시적인 재순서화된 메모리 맵을 예시한다. 양태에서, 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 은, 각각의 메모리 디바이스가 개별적으로 급전될 수도 있도록 각각의 메모리 디바이스에 접속된 메모리 디바이스 선택 버스를 가지는 메모리 모듈에 의해 지원될 수도 있다. 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 은, 길이에 있어서 N 바이트들인 데이터 버스트가 N 개보다 더 적은 메모리 디바이스들의 하나 이상의 메모리 로케이션들에 기록될 수도 있거나 이러한 하나 이상의 메모리 로케이션들로부터 판독될 수도 있도록, N 개의 메모리 디바이스들의 메모리 로케이션들을 배정할 수도 있다. 다시 말해서, 전체 데이터 버스트보다 더 적은 데이터 버스트의 제 1 부분은 데이터 버스트의 부분에 대한 바이트들의 수와 동일한 수의 메모리 디바이스들에 대한 제 1 메모리 로케이션에 배정될 수도 있다. 또한, 데이터 버스트의 나머지는 전체 데이터 버스트가 배정될 때까지 동일한 메모리 디바이스들의 제 2 메모리 로케이션에 배정될 수도 있다. 데이터 버스트의 부분이 동일한 메모리 디바이스들의 더 많은 메모리 로케이션들을 요구할 정도로 충분히 작은 것이 가능할 수도 있다. 이 양태에서는, 데이터 버스트의 전부를 저장하거나 출력하기 위하여, 데이터 버스트의 부분들에서의 바이트들의 수와 동일한 수의 메모리 디바이스들만이 급전될 수도 있다.
유사하게, 길이에 있어서 N 바이트들인 다수의 데이터 버스트들의 트랜잭션이 발생할 경우, 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 은, 각각의 연속적인 데이터 버스트가 시퀀스에서 N 개보다 더 적은 메모리 디바이스들의 다음 메모리 로케이션에 기록될 수도 있거나 이러한 다음 메모리 로케이션으로부터 판독될 수도 있도록, N 개의 메모리 디바이스들의 메모리 로케이션들을 배정할 수도 있다. 데이터 버스트들이 N 개보다 더 적은 메모리 디바이스들에 걸친 메모리 로케이션들의 제 1 그룹의 용량 (capacity), 예를 들어, N 개보다 더 적은 수의 메모리 디바이스들에 걸친 적어도 8 개의 메모리 로케이션들을 초과할 때, 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 은, 연속적인 데이터 버스트들이 N 개보다 더 적은 메모리 디바이스들의 다음 그룹에 걸쳐 메모리 로케이션들의 다음 그룹에 기록될 수도 있거나 이러한 다음 그룹으로부터 판독될 수도 있도록 메모리 로케이션들을 배정할 수도 있다. 다수의 데이터 버스트 트랜잭션들을 갖는 상황들에서는, 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 에 따른 필요한 수의 메모리 디바이스들만이 급전될 수도 있다.
도 6 에서 예시된 바와 같이, 일 양태의 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 은 도 5 에서의 테이블과 유사한 테이블로서 나타내어질 수도 있다. 이 양태의 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 은 프로세서가 8 바이트 데이터 버스트들에서 트랜잭트하는 것으로 가정하지만; 그러나, 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 은 다양한 데이터 버스트 길이들을 처리하도록 구성될 수도 있다.
재순서화 로직은 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 을 생성하기 위하여, 기존의 메모리 맵, 예를 들어, 위에서 설명된 바와 같은 최대 성능 속도를 달성하도록 구성된 메모리 맵을 재순서화할 수도 있다. 예시된 바와 같이, 4 개의 메모리 디바이스들의 그룹들에는, 8 개의 1-바이트 그룹들, 또는 64 비트들에서의 이용의 순서가 배정될 수도 있다. 예를 들어, 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 은 이용하기 위한 제 1 배정된 1-바이트 메모리 로케이션 (메모리 로케이션 0) 을 메모리 디바이스 1 에, 이용하기 위한 제 2 의 1-바이트 메모리 로케이션 (메모리 로케이션 1) 을 메모리 디바이스 2 에, 그리고 메모리 디바이스 3 까지 기타 등등으로 배정할 수도 있다. 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 은 메모리 로케이션 31 을 통해 동일한 방식으로 동일한 메모리 디바이스들 (메모리 디바이스들 0 내지 3) 을 배정할 수도 있다. 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 은 동일한 방식으로 메모리 로케이션들 32 내지 63 을 배정하는 메모리 디바이스들 4 내지 7 과 함께 계속할 수도 있다. 동일한 패턴은, 메모리 로케이션들의 전부가 배정될 때까지, 메모리 디바이스들에 걸쳐 연속적인 32 바이트들의 메모리를 배정하는 것을 반복할 수도 있어서, 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 은 메모리 디바이스들의 메모리 로케이션들의 전부에 적용할 수도 있다. 양태에서, 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 은 메모리 디바이스들의 메모리 로케이션들의 전부가 아니라, 메모리 디바이스들의 메모리 로케이션들의 부분들에 적용할 수도 있다.
도 7 은 복수의 메모리 디바이스들에 대한 복수의 메모리 맵들의 예시적인 적용을 예시한다. 양태에서, 컴퓨팅 디바이스는 복수의 메모리 디바이스들 (118) 에 걸쳐 다수의 메모리 맵들을 적용할 수도 있다. 메모리 맵들의 각각은 각각의 메모리 디바이스 (118) 의 메모리 로케이션들의 범위에 적용할 수도 있다. 양태에서, 메모리 맵들은 개개의 메모리 맵들에 대한 메모리 디바이스들 (118) 의 각각에 걸쳐 메모리 로케이션들의 동등한 범위들에 적용할 수도 있다. 예를 들어, 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 은 각각의 메모리 디바이스 (118) 내의 상부 물리적 어드레스 (upper physical address) 들에 대응하는 메모리 디바이스들 (118) 의 각각의 메모리 디바이스의 메모리 로케이션들의 상부 부분에 걸쳐 적용할 수도 있다. 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 은 각각의 메모리 디바이스 (118) 내의 상부 및 하부 물리적 어드레스들 사이에서 각각의 메모리 디바이스 (118) 내의 물리적 어드레스들의 범위에 대응하는 메모리 디바이스들 (118) 의 각각의 메모리 디바이스의 메모리 로케이션들의 중간 범위에 걸쳐 적용할 수도 있다. 최대 성능 속도를 위한 재순서화된 메모리 맵 (700) 은 각각의 메모리 디바이스 (118) 내의 하부 물리적 어드레스 (lower physical address) 들에 대응하는 메모리 디바이스 (118) 의 각각의 메모리 디바이스의 메모리 로케이션들의 하단 범위에 걸쳐 적용할 수도 있다. 다양한 양태들에서, 재순서화된 메모리 맵들 (500, 600, 700) 의 상이한 조합들은 메모리 디바이스들 (118) 의 각각의 메모리 디바이스의 메모리 로케이션들의 상이한 범위들에 걸쳐 적용될 수도 있다. 메모리 디바이스들 (118) 의 각각의 메모리 디바이스의 메모리 로케이션들의 상이한 범위들에 걸쳐 적용된 유사한 재순서화된 메모리 맵들을 가지는 것이 가능할 수도 있다. 예를 들어, 최소 전력 소비를 위한 재순서화된 메모리 맵 (500) 및/또는 최대 성능 속도를 위한 재순서화된 메모리 맵 (700) 은 메모리 디바이스들 (118) 의 각각의 메모리 디바이스의 메모리 로케이션들의 다수의 범위들에 걸쳐 적용될 수도 있다. 또한, 레이턴시 용인 프로세스들을 위한 재순서화된 메모리 맵 (600) 의 동일하고 및/또는 상이한 버전들은 메모리 디바이스들 (118) 의 각각의 메모리 디바이스의 메모리 로케이션들의 다수의 범위들에 걸쳐 적용될 수도 있다.
도 8 은 단일 채널 내에서의 DRAM 공간적 통합을 위한 메모리 맵 재순서화를 위한 양태의 방법 (800) 을 예시한다. 방법 (800) 은 메모리 제어기 또는 유사한 컴포넌트들 내에서, 또는 프로세서를 포함하는 컴퓨팅 디바이스의 다양한 컴포넌트들 내에서 구현될 수도 있고, 메모리 제어기는 그 컴포넌트들 (예컨대, 재순서화 로직) 을 본원에서 설명된 바와 같이 포함하고, 메모리 모듈은 그 컴포넌트들을 본원에서 설명된 바와 같이 포함한다. 참조의 용이함을 위하여, 방법 (800) 내에서의 동작들은 프로세서와 함께 메모리 제어기에 의해 수행되는 것으로서 설명된다. 메모리 제어기에 대한 참조들은 또한, 양태의 방법들을 수행하기 위하여 개별적으로 또는 조합으로 기능할 수도 있는, 개별적인 메모리 디바이스들의 각각에 접속될 수도 있는 메모리 제어기들 중의 하나 이상의 조합들을 망라한다. 메모리 제어기에 대한 참조들은 양태의 방법을 수행함에 있어서 관여된 임의의 그리고 모든 컴포넌트들을 망라하도록 의도된 것이라는 것이 이해되어야 한다.
블록 (802) 에서, 프로세서 내의 메모리 제어기/메모리 제어기 또는 프로세서는 재순서화를 위한 메모리 맵 로케이션들을 결정할 수도 있다. 이 결정을 행함에 있어서, 메모리 제어기 및/또는 프로세서는 다수의 인자들을 이용할 수도 있다. 예를 들어, 프로세서는 컴퓨팅 디바이스의 전력, 열, 또는 활성 상태를 분석할 수 있을 수도 있고, 상태를 임계점 레벨과 비교할 수 있을 수도 있다. 컴퓨팅 디바이스의 상태가 그 개개의 임계점들과 관련하여 양호하지 않은 전력, 열, 또는 활성 레벨들을 나타낼 때, 프로세서는 컴퓨팅 디바이스의 전력 소비 및 성능 속도를 감소시키기 위하여 하나 이상의 메모리 디바이스들의 부분들 또는 전부의 메모리 맵을 구현할 것을 결정할 수도 있다. 프로세서가 결정할 수도 있는 전력 소비 및 성능 속도에 있어서의 감소의 양이 희망되는 것에 따라서는, 프로세서 및/또는 메모리 제어기는 재순서화를 위한 메모리 로케이션들의 하나 이상의 변동되는 범위들을 선택할 수도 있다.
재순서화를 위한 메모리 로케이션들을 결정하기 위한 인자들의 또 다른 예로서, 프로세서는 그 레이턴시 용인 (즉, 애플리케이션에 의해 용인될 수 있는 데이터 기록 및/또는 판독 동작들에서의 레이턴시의 양) 에 대하여 프로세서 상에서 실행되는 소프트웨어를 분석할 수도 있다. 프로세서 상에서 실행된 하나 이상의 소프트웨어 프로그램들이 레이턴시 용인되는 것으로 결정되는 (즉, 소프트웨어가 메모리 액세스 트랜잭션들에서 지연들을 용인할 수 있음) 상황에서는, 프로세서가 현재의 성능 레벨들을 필요로 하지 않는 프로세스들에 대한 성능 속도를 희생하여 전력 소비를 감소시키는 재순서화 메모리 맵 로케이션들을 이용할 것을 결정할 수도 있다. 양태에서, 소프트웨어 애플리케이션들은 소프트웨어가 (예컨대, 플래그들, API 호출들, 데이터 태그들 등의 형태로) 레이턴시 용인하는지 여부와, 프로세서가 성능 속도를 희생하여 전력 소비를 감소시키기 위하여 메모리 제어기가 메모리 로케이션들을 재순서화하도록 구성하기 위한 이러한 표시들을 이용할 수도 있다는 것을 프로세서에 표시하도록 구성될 수도 있다.
양태에서, 컴퓨팅 디바이스가 프로세서 상에서 실행되는 소프트웨어가 더 많은 성능 속도를 요구하는 양호한 전력, 열, 또는 활성 레벨들을 나타내고 있는 것으로 프로세서가 결정하는 것에 응답하여, 프로세서는 메모리 제어기가 더 높은 전력 소비를 희생하여 컴퓨팅 디바이스의 성능 속도를 증가시키기 위하여 하나 이상의 메모리 디바이스들의 부분들 또는 전부의 메모리 맵을 이용하도록 구성할 수도 있다. 프로세서가 결정하는 성능 속도에 있어서의 증가의 양이 희망되는 것에 따라서는, 메모리 제어기 내의 프로세서/프로세서 또는 메모리 제어기는 메모리 어드레스들을 재순서화하기 위한 메모리 로케이션들의 하나 이상의 변동되는 범위들을 선택할 수도 있다.
선택된 메모리 로케이션들에 대한 메모리 맵들을 재순서화하기 위하여, 메모리 로케이션들은 아이들 (idle) (즉, 현재의 데이터를 저장하지 않음) 이어야 한다. 메모리 로케이션들이 아이들이 아닐 경우, 컴퓨팅 디바이스는 그러한 메모리 로케이션들에서 저장된 데이터를 추적하지 못할 수도 있고 요청될 때에 데이터를 취출 (retrieve) 할 수 없을 수도 있어서, 실행되는 소프트웨어에서 프로그램 에러들을 야기시킬 수도 있다. 결정 블록 (804) 에서, 메모리 제어기 및/또는 프로세서는 선택된 메모리 로케이션들이 아이들인지 여부를 결정할 수도 있다. 이 결정을 행하기 위하여, 메모리 제어기 및/또는 프로세서는 선택된 메모리 로케이션들과 연관된 메모리 디바이스를 검사할 수도 있다. 메모리 디바이스가 급전될 때, 메모리 제어기 및/또는 프로세서는 메모리 로케이션들이 활성인 것으로 결정할 수도 있다. 양태에서, 메모리 제어기 및/또는 프로세서는 또한, 메모리 로케이션들이 데이터를 저장하고 있는지 또는 아닌지 여부를 표시할 수도 있는 룩업 테이블을 검사할 수도 있다. 메모리 로케이션들이 데이터를 저장하고 있는 것으로 결정될 때, 메모리 제어기 및/또는 프로세서는 메모리 로케이션들이 활성인 것으로 결정할 수도 있다. 이 상황들 중의 어느 것도 메모리 로케이션들이 활성인 것을 표시하지 않을 때, 메모리 제어기 및/또는 프로세서는 메모리 로케이션들이 아이들인 것으로 결정할 수도 있다. 양태에서, 메모리 로케이션들이 활성일 때, 메모리 제어기 및/또는 프로세서는 새로운 트랜잭션들을 의도적으로 그리고 일시적으로 중단할 수도 있고, 메모리 로케이션들이 아이들이 되도록 하기 위하여 완료하기 위한 이전의 트랜잭션들을 위하여 미리 결정된 시간의 주기를 대기할 수도 있다. 메모리 제어기 및/또는 프로세서가 메모리 로케이션들이 활성인 것으로 결정할 때 (즉, 결정 블록 (804) = "아니오"), 메모리 제어기 및/또는 프로세서는 블록 (802) 에서의 동작들로 복귀할 수도 있다.
메모리 제어기 및/또는 프로세서가 메모리 로케이션들이 아이들인 것으로 결정할 때 (즉, 결정 블록 (802) = "예"), 메모리 제어기 및/또는 프로세서는 블록 (806) 에서 데이터 트랜잭션들을 위해 이용되어야 할 메모리 맵 재순서화 패턴을 결정할 수도 있다. 메모리 맵 재순서화 패턴들은 위에서 설명된 바와 같은, 최소 전력 소비를 위한 재순서화된 메모리 맵, 레이턴시 용인 프로세스들을 위한 다양한 재순서화된 메모리 맵들, 또는 최대 성능 속도를 위한 재순서화된 메모리 맵으로부터 선택될 수도 있다. 메모리 제어기 및/또는 프로세서는 전력 소비를 감소시키거나 컴퓨팅 디바이스의 성능 속도를 증가시키기 위한 메모리 맵 재순서화 패턴들을 선택할 수도 있다.
블록 (808) 에서, 메모리 제어기는 선택된 메모리 맵 재순서화 패턴에 따라 메모리 맵을 재순서화할 수도 있다. 메모리 맵을 재순서화할 시에, 메모리 제어기는 희망할 경우에 원래의 메모리 맵으로 복귀할 수 있기 위한 메모리 디바이스들의 원래의 메모리 맵을 저장하거나 저장하였을 수도 있다. 메모리 제어기는 그것이 메모리 어드레스들을 메모리 디바이스들의 메모리 로케이션들에 배정할 수도 있도록 하는 룩업 테이블 또는 일부의 다른 알려진 데이터 구조를 생성할 수도 있다. 룩업 테이블은 또한, 재순서화된 메모리 맵을 원래의 메모리 맵에 관련시킬 수도 있다. 재순서화된 그리고 원래의 메모리 맵들의 이 관련을 통해, 메모리 제어기는 원래의 메모리 맵에서 프로세서 제공된 메모리 어드레스들을 발견할 수도 있고, 재순서화된 메모리 맵의 관련된 메모리 어드레스들을 결정할 수도 있다. 양태에서, 알고리즘은 변동되는 메모리 맵 재순서화 패턴들과 연관될 수도 있다. 알고리즘은 프로세서 제공된 메모리 어드레스로부터 메모리 어드레스를 계산하기 위하여 이용될 수도 있어서, 대응하는 재순서화된 메모리 어드레스를 초래할 수도 있다.
블록 (810) 에서, 메모리 제어기는 프로세서로부터, 프로세서-제공된 메모리 로케이션들을 포함하는 트랜잭션 명령을 수신할 수도 있다. 위에서 설명된 바와 같이, 트랜잭션 타입 및 프로세서 제공된 메모리 어드레스들은 컴퓨팅 디바이스의 적절한 컴포넌트들로 라우팅될 수도 있다. 기록 트랜잭션을 위하여, 병렬 포맷인 데이터가 또한 적절하게 라우팅될 수도 있다. 블록 (812) 에서, 메모리 제어기는 어느 재순서화된 메모리 로케이션들을 프로세서 제공된 메모리 로케이션들에 적용할 것인지를 결정할 수도 있다. 위에서 설명된 바와 같이, 이 결정은 프로세서에 의해 예상된 바와 같은 원래의 메모리 어드레스들 및 재순서화된 메모리 맵의 대응하는 재순서화된 메모리 어드레스들을 가지는 하나 이상의 데이터 구조들에서의 데이터의 비교에 의해 달성될 수도 있다. 또한, 위에서 설명된 양태에서, 메모리 제어기는 프로세서 제공된 메모리 어드레스에 대응하는 재순서화된 메모리 어드레스를 결정하기 위하여 재순서화된 메모리 맵과 연관된 알고리즘을 적용할 수도 있다.
블록 (814) 에서, 메모리 제어기는 프로세서 제공된 메모리 어드레스를, 구현된 메모리 맵 재순서화 패턴에 따라 대응하는 재순서화된 메모리 어드레스로서 식별된 재순서화된 메모리 어드레스로 변환할 수도 있다. 블록 (816) 에서, 메모리 제어기는 재순서화된 메모리 맵에 따른 결정된 재순서화된 메모리 어드레스와 연관된 개별적인 메모리 디바이스를 활성화하거나 급전할 수도 있다. 재순서화된 메모리 맵을 위한 데이터 구조들은 재순서화된 메모리 어드레스들 및 그 대응하는 원래의 메모리 어드레스들을 식별할 수도 있을 뿐만 아니라, 특정 재순서화된 및/또는 원래의 메모리 어드레스들, 또는 이 메모리 어드레스들의 범위들에 대응하는 메모리 디바이스들을 식별할 수도 있다.
위에서 설명된 바와 같이, 양태의 방법들은 전용 디바이스 또는 칩 선택 라인들에 의해 개별적인 메모리 디바이스들의 각각에 접속된 메모리 제어기들의 각각 또는 조합에 의해 수행될 수도 있다. 이 전용 접속들은 메모리 모듈 및 그 메모리 디바이스들의 전부에 대한 전형적인 채널 내에서 서브-채널들을 생성할 수도 있다. 전형적인 채널은 그 메모리 디바이스들의 전부와 함께, 메모리 모듈의 활성화 및 급전을 허용할 수도 있다. 서브-채널들은 메모리 모듈의 개별적인 메모리 디바이스들의 개별적인 활성화 또는 급전을 허용할 수도 있다. 메모리 제어기는 단지 그 하나의 특정 메모리 디바이스를 활성화하거나 급전하기 위하여 하나의 특정 메모리 디바이스에 접속된 전용 메모리 디바이스 또는 칩 선택 라인에 전력을 인가할 수도 있다. 메모리 제어기는 하나 이상의 특정 메모리 디바이스들을 활성화하거나 급전하기 위하여, 각각이 하나의 특정 메모리 디바이스에 접속된, 하나 이상의 메모리 디바이스 또는 칩 선택 라인들에 전력을 인가할 수도 있다. 메모리 제어기는 희망하거나 필요한 바와 같이 개별적인 디바이스들을 활성화하거나 급전하기 위하여, 또는 비활성화하거나 급전해제 (de-energize) 하기 위하여, 각각의 서브-채널에 대한 제어를 유지한다. 메모리 디바이스들을 개별적으로 제어함으로써, 컴퓨팅 디바이스는 메모리 모듈의 메모리 디바이스들의 전부보다 더 적은 것을 이용할 수도 있음으로써, 메모리 디바이스들의 전부가 활성이거나 급전될 때에 더 적은 에너지를 이용할 수도 있다.
결정 블록 (818) 에서, 메모리 제어기는 트랜잭션 명령이 기록 트랜잭션을 위한 것인지 여부를 결정할 수도 있다. 메모리 제어기가, 트랜잭션 명령이 기록 트랜잭션인 것으로 결정할 때 (즉, 결정 블록 (818) = "예"), 메모리 제어기는 이하에서 설명된 바와 같이, 도 9 의 블록 (902) 에서 메모리 디바이스에 대한 기록 트랜잭션을 구현하는 것을 계속할 수도 있다. 메모리 제어기가 트랜잭션 명령이 기록 트랜잭션이 아닌 것으로 결정할 때 (즉, 결정 블록 (818) = "아니오"), 메모리 제어기는 이하에서 설명된 바와 같이, 도 10 의 블록 (1002) 에서 메모리 디바이스로부터의 판독 트랜잭션을 구현하는 것을 계속할 수도 있다. 양태에서, 메모리 제어기는 트랜잭션 명령이 판독 트랜잭션을 위한 것인지 여부를 결정할 수도 있고, 블록들 (902 또는 1002) 을 적절하게 계속할 수도 있다.
도 9 는 복수의 메모리 디바이스들 중의 하나 이상에 기록하기 위하여 병렬 포맷인 데이터를 직렬 데이터로 변환하기 위한 양태의 방법 (900) 을 예시한다. 위에서 설명된 방법 (800) 과 유사하게, 이 방법 (900) 은 메모리 제어기, 및/또는 메모리 제어기와 함께 작동하는 프로세서에 의해 구현될 수도 있다. 컴퓨팅 디바이스의 프로세서가 데이터 트랜잭션 명령 또는 요청을 발행할 때, 메모리 제어기는 트랜잭션 명령이 실제로 컴퓨팅 디바이스의 메모리에 기록하기 위한 기록 트랜잭션 명령인지 여부를 결정할 수도 있다. 도 8 을 참조하여 위에서 설명된 결정 블록 (818) 에서와 같이, 메모리 제어기가 트랜잭션 명령이 기록 트랜잭션을 위한 것인 것으로 결정할 때, 블록 (902) 에서는, 메모리 제어기가 기록 트랜잭션 명령을, 트랜잭션을 위한 재순서화된 메모리 어드레스들과 연관된 메모리 디바이스에 접속된 메모리 디바이스 버퍼로 시그널링할 수도 있다. 트랜잭션이 기록 트랜잭션인 것을 메모리 디바이스 버퍼로 시그널링하는 것은 기록 트랜잭션의 일부로서 프로세서에 의해 병렬로 제공된 데이터를 저장할 것을 메모리 디바이스 버퍼의 FIFO 버퍼에 명령할 수도 있다. 하나를 초과하는 메모리 디바이스 버퍼는 데이터의 양이 하나의 메모리 디바이스가 처리하기에 너무 많을 때에 그 데이터를 병렬로 수신하도록 시그널링될 수도 있다.
위에서 설명된 바와 같이, 메모리 디바이스 버퍼는 메모리 제어기를 메모리 모듈과 접속하는 메모리 데이터 버스의 일부를 통해 특정한 메모리 디바이스에 접속될 수도 있다. 재순서화된 메모리 맵을 위한 데이터 구조는 또한, 원래의 메모리 어드레스들 및 재순서화된 메모리 어드레스들과 연관된 메모리 디바이스에 접속된 메모리 디바이스 버퍼를 포함할 수도 있다.
블록 (904) 에서, 메모리 제어기는 병렬 포맷인 데이터를 직렬 데이터로 변환하고 직렬 데이터를 메모리 디바이스로 출력할 것을, 활성화된 메모리 디바이스에 접속된 메모리 디바이스 버퍼에 시그널링할 수도 있다. 위에서 설명된 바와 같이, 메모리 제어기는 메모리 디바이스 버퍼의 FIFO 버퍼로부터 데이터를 선택적으로 수신하고 데이터를 메모리 디바이스로 출력할 것을, 재순서화된 메모리 로케이션들과 연관된 메모리 디바이스 버퍼의 멀티플렉서에 시그널링할 수도 있다. 메모리 제어기는 미리 결정된 순서로 멀티플렉서의 선택된 입력들에서 FIFO 버퍼로부터 데이터를 수신할 것을 멀티플렉서에 시그널링할 수도 있다. 멀티플렉서가 선택된 입력들에서 데이터를 수신하므로, 그것은 또한 데이터를 메모리 디바이스로 출력할 수도 있다. 병렬로 FIFO 버퍼로부터 데이터의 전부를 수신하고 데이터의 전부를 동시에 또는 병렬로 출력하는 것이 아니라, 데이터를 선택적으로 수신하는 것은 멀티플렉서가 데이터를 미리 정의된 크기의 패킷들로 분해하고 하나의 패킷을 한 번에 출력하도록 할 수도 있다. 패킷들은 각각 1 비트만큼 작을 수도 있다. 미리 결정된 순서에서의 데이터의 수신 및 데이터의 출력은 FIFO 버퍼에 의해 병렬로 수신된 데이터를 멀티플렉서에 의해 직렬로 출력된 데이터로 변환할 수도 있다. 이에 따라, 멀티플렉서에 대한 입력들을 제어하기 위하여 이용된 선택 신호들을 통해, 컴퓨팅 디바이스는 병렬 포맷인 데이터의 직렬 데이터로의 변환을 제어할 수도 있다.
블록 (906) 에서, 메모리 제어기는 활성화된 메모리 디바이스 상의 재순서화된 메모리 어드레스들에서 직렬 기록 데이터를 저장할 것을 메모리 모듈 또는 개별적인 활성화된 메모리 디바이스로 시그널링할 수도 있다. 위에서 설명된 바와 같이, 메모리 제어기는 트랜잭션 타입, 이 예에서는 기록 트랜잭션 타입과, 재순서화된 메모리 어드레스들을 메모리 디바이스들로 시그널링할 수도 있다. 트랜잭션 타입의 신호는 메모리 디바이스가 직렬 데이터를 저장하거나 방출하는 것으로 가정되는지 여부를 제어할 수도 있다. 기록 트랜잭션 신호의 경우, 메모리 디바이스는 직렬 데이터를 저장할 수도 있다. 재순서화된 메모리 어드레스들은 메모리 디바이스의 어느 메모리 로케이션들이 직렬 데이터의 특정 부분들을 저장하기 위하여 지정될 수도 있는지를 메모리 디바이스에 특정할 수도 있다.
결정 블록 (908) 에서, 메모리 제어기는 기록 트랜잭션이 완료된 것인지 여부를 결정할 수도 있다. 기록 트랜잭션은 트랜잭션의 모든 데이터가 메모리 디바이스들 상의 재순서화된 메모리 어드레스들에 기록되었을 때에 완료된 것일 수도 있다. 메모리 제어기가 기록 트랜잭션이 완료된 것으로 결정할 때 (즉, 결정 블록 (908) = "예"), 메모리 제어기는 방법 (900) 을 종료할 수도 있다. 메모리 제어기가 기록 트랜잭션이 완료되지 않은 것으로 결정할 때 (즉, 결정 블록 (908) = "아니오"), 메모리 제어기는 블록 (902) 에서, 병렬 포맷인 데이터를 직렬 데이터로 변환하고 직렬 데이터를 재순서화된 메모리 어드레스들에 기록하는 것을 계속할 수도 있다. 이것은 예를 들어, 기록 트랜잭션이 단일 메모리 디바이스 버퍼가 처리할 수도 있는 것보다 더 큰 데이터의 양에 대한 것일 때에 발생할 수도 있다. 다수의 메모리 디바이스 버퍼들이 기록 트랜잭션을 위하여 병렬로 데이터를 수신할 때, 메모리 제어기는 각각의 메모리 디바이스 버퍼에 대하여, 그리고 일부의 경우들에는, 기록 트랜잭션의 데이터의 양이 메모리 디바이스 버퍼들의 전부가 처리할 수 있는 것보다 더 클 경우에 동일한 메모리 디바이스 버퍼에 대하여 한 번을 초과하여 방법 (900) 을 구현할 수도 있다.
양태에서, 메모리 맵 재순서화 패턴이 레이턴시 용인 프로세스들을 위한 것일 때, 방법 (900) 은 다수의 메모리 디바이스 버퍼들에 대하여 병렬로 실행될 수도 있다.
도 10 은 복수의 메모리 디바이스들 중의 하나 이상으로부터 판독하기 위해 직렬 데이터를 병렬 포맷인 데이터로 변환하기 위하여, 메모리 제어기에서 구현될 수도 있는 양태의 방법 (1000) 을 예시한다. 컴퓨팅 디바이스의 프로세서가 트랜잭션 명령 또는 요청을 발행할 때, 메모리 제어기는 트랜잭션 명령이 실제로 컴퓨팅 디바이스의 메모리에 기록 (또는 이로부터 판독) 하기 위한 기록 (또는 판독) 트랜잭션 명령인지 여부를 결정할 수도 있다. 상기 도 8 의 결정 블록 (818) 에서와 같이, 메모리 제어기가, 트랜잭션 명령이 기록 트랜잭션을 위한 것이 아닌 것 (또는 판독 트랜잭션을 위한 것) 으로 결정할 때, 블록 (1002) 에서는, 메모리 제어기가 판독 트랜잭션 명령을, 트랜잭션을 위한 재순서화된 메모리 어드레스들과 연관된 메모리 디바이스에 접속된 메모리 디바이스 버퍼로 시그널링할 수도 있다. 트랜잭션이 판독 트랜잭션인 것을 메모리 디바이스 버퍼로 시그널링하는 것은 판독 트랜잭션의 일부로서 디멀티플렉서에 의해 변환된 바와 같이, 병렬로 메모리 디바이스에 의해 제공된 직렬 데이터를 저장할 것을 메모리 디바이스 버퍼의 FIFO 버퍼에 명령할 수도 있다. 데이터가 다수의 메모리 디바이스들 상에서 저장될 때, 하나를 초과하는 메모리 디바이스 버퍼는 직렬 데이터의 전부가 메모리 디바이스들과 연관된 메모리 디바이스 버퍼들에 의해 수신되도록 시그널링될 수도 있다.
블록 (1004) 에서, 메모리 제어기는 활성화된 메모리 디바이스 상의 재순서화된 메모리 어드레스들로부터 직렬 판독 데이터를 방출할 것을 메모리 모듈 또는 개별적인 활성화된 메모리 디바이스로 시그널링할 수도 있다. 위에서 설명된 바와 같이, 메모리 제어기는 트랜잭션 타입, 이 예에서는 판독 트랜잭션 타입과, 재순서화된 메모리 어드레스들을 메모리 디바이스들로 시그널링할 수도 있다. 트랜잭션 타입의 신호는 메모리 디바이스가 직렬 데이터를 저장하거나 방출하는 것으로 가정되는지 여부를 제어할 수도 있다. 판독 트랜잭션 신호의 경우, 메모리 디바이스는 직렬 데이터를 방출할 수도 있다. 재순서화된 메모리 어드레스들은 메모리 디바이스의 어느 메모리 로케이션들이 직렬 데이터의 특정 부분들을 저장하는 것으로서 지정될 수도 있는지를 메모리 디바이스에 특정할 수도 있다.
블록 (1006) 에서, 메모리 제어기는 메모리 디바이스로부터 수신된 직렬 데이터를 병렬 포맷인 데이터로 변환하고 병렬 포맷인 데이터를 프로세서로 출력할 것을, 활성화된 메모리 디바이스에 접속된 메모리 디바이스 버퍼에 시그널링할 수도 있다. 위에서 설명된 바와 같이, 메모리 제어기는 디멀티플렉서로부터 수신된 데이터를 저장할 것을 FIFO 버퍼에 시그널링할 수도 있다. 재순서화된 메모리 로케이션들과 연관된 메모리 디바이스 버퍼의 디멀티플렉서에 접속된 메모리 디바이스는 재순서화된 메모리 로케이션들로부터 데이터를 방출하도록 컴퓨팅 디바이스에 의해 시그널링될 수도 있다. 메모리 제어기는 또한, 미리 결정된 시퀀스로 메모리 디바이스 버퍼의 FIFO 버퍼로 데이터를 선택적으로 출력할 것을 디멀티플렉서에 시그널링할 수도 있다. 메모리 제어기는 디멀티플렉서의 입력에서 수신될 수도 있는 직렬 데이터를 디멀티플렉서로 방출할 것을 메모리 디바이스에 시그널링할 수도 있다.
디멀티플렉서가 입력에서 직렬 데이터를 수신하므로, 그것은 또한, 데이터를 FIFO 버퍼로 선택적으로 출력하도록 메모리 제어기에 의해 시그널링될 수도 있다. 데이터의 전부를 FIFO 버퍼로 직렬로 출력하는 대신에, 미리 결정된 시퀀스로 데이터를 선택적으로 출력하는 것은 디멀티플렉서가 데이터를 FIFO 버퍼의 각각의 입력으로 한 번에 하나의 입력으로 출력함으로써 FIFO 버퍼에서 데이터를 순서화하도록 할 수도 있다. 데이터의 수신 및 출력은 디멀티플렉서에 의해 수신된 직렬 데이터를 FIFO 버퍼 상에 저장된 병렬 포맷인 데이터로 변환할 수도 있다. 데이터의 그룹이 FIFO 버퍼 상에서 저장되고 있을 때, 메모리 제어기는 FIFO 버퍼로부터의 데이터를 병렬로 프로세서로 출력할 수도 있다. 이에 따라, 디멀티플렉서로부터의 출력들을 제어하기 위하여 이용된 선택 신호들을 통해, 메모리 제어기는 직렬 데이터의 병렬인 데이터로의 변환을 제어한다.
결정 블록 (1008) 에서, 메모리 제어기는 판독 트랜잭션이 완료된 것인지 여부를 결정할 수도 있다. 판독 트랜잭션은 트랜잭션을 위해 요청된 데이터의 전부가 메모리 디바이스들 상의 재순서화된 메모리 어드레스들로부터 판독되었을 때에 완료된 것일 수도 있다. 메모리 제어기가 판독 트랜잭션이 완료된 것으로 결정할 때 (즉, 결정 블록 (1008) = "예"), 메모리 제어기는 방법 (1000) 을 종료할 수도 있다. 메모리 제어기가 판독 트랜잭션이 완료되지 않은 것으로 결정할 때 (즉, 결정 블록 (1008) = "아니오"), 메모리 제어기는 블록 (1002) 에서, 재순서화된 메모리 어드레스들로부터 직렬 데이터를 판독하고 직렬 데이터를 병렬인 데이터로 변환하는 것을 계속할 수도 있다. 이것은 예를 들어, 판독 트랜잭션이 단일 메모리 디바이스 버퍼가 처리할 수도 있는 것보다 더 큰 데이터의 양에 대한 것일 때에 발생할 수도 있다. 다수의 메모리 디바이스 버퍼들이 판독 트랜잭션을 위하여 직렬 데이터를 수신할 때, 메모리 제어기는 각각의 메모리 디바이스 버퍼에 대하여, 그리고 일부의 경우들에는, 판독 트랜잭션의 데이터의 양이 메모리 디바이스 버퍼들의 전부가 처리할 수 있는 것보다 더 클 경우에 동일한 메모리 디바이스 버퍼에 대하여 한 번을 초과하여 방법 (1000) 을 구현할 수도 있다.
양태에서, 메모리 맵 재순서화 패턴이 레이턴시 용인 프로세스들을 위한 것일 때, 방법 (1000) 은 다수의 메모리 디바이스 버퍼들에 대하여 병렬로 실행될 수도 있다.
도 11 은 복수의 메모리 디바이스들 중의 하나 이상에 기록하기 위해 병렬 포맷인 데이터를 직렬 데이터로 변환하기 위하여, 메모리 제어기 또는 다른 컴포넌트들에서 구현될 수도 있는 양태의 방법 (1100) 을 예시한다. 컴퓨팅 디바이스의 프로세서가 기록 트랜잭션 명령 또는 요청을 발행할 때, 블록 (1102) 에서, 메모리 제어기의 데이터 버퍼는 재순서화 로직으로부터 기록 트랜잭션 신호를 수신할 수도 있다. 위에서 설명된 바와 같이, 기록 트랜잭션 신호는 프로세서에 의해 제공된 병렬 포맷인 기록 데이터를 저장할 것을, 데이터 버퍼, 그리고 더욱 구체적으로, 기록 트랜잭션의 재순서화된 메모리 어드레스들과 연관된 메모리 디바이스 버퍼들의 하나 이상의 FIFO 버퍼들로 시그널링할 수도 있다.
블록 (1104) 에서, 데이터 버퍼는 프로세서로부터 병렬 포맷인 기록 트랜잭션 데이터를 수신할 수도 있다. 위에서 설명된 바와 같이, 프로세서는 프로세서 데이터 버스에 의해 데이터 버퍼 및 개별적인 메모리 디바이스 버퍼들에 접속될 수도 있다. 메모리 디바이스 버퍼들의 각각은 병렬로 프로세서에 접속될 수도 있다. 이와 같이, 프로세서에 의해 하나의 버스트에서 출력된 데이터의 전부는 프로세서 데이터 버스, 그리고 효과적으로는, 메모리 디바이스 버퍼들의 전부로 출력된다. 그러나, 기록 트랜잭션 신호를 수신하는 메모리 디바이스 버퍼들만이 프로세서로부터 병렬 포맷인 기록 데이터를 저장하도록 명령받는다. 양태에서, 프로세서 데이터 버스의 최대 크기까지, 프로세서로부터의 병렬 포맷인 기록 데이터의 각각의 버스트에 대하여, 재순서화 로직은 병렬 포맷인 기록 데이터의 버스트를 그 FIFO 버퍼로 저장할 것을 메모리 디바이스 버퍼들 중의 하나에만 시그널링할 수도 있다.
블록 (1106) 에서, 데이터 버퍼는 FIFO 버퍼로부터 멀티플렉서로의 직렬 입력에 대한 선택 신호를 재순서화 로직으로부터 수신할 수도 있다. 블록 (1108) 에서, 데이터 버퍼는 병렬 포맷인 데이터를 직렬 데이터로 변환할 수도 있다. 위에서 설명된 바와 같이, 데이터 버퍼의 멀티플렉서는 동일한 데이터 버퍼의 FIFO 버퍼에 접속될 수도 있다. FIFO 버퍼의 출력들은 멀티플렉서의 입력들에 접속될 수도 있다. 멀티플렉서는 멀티플렉서 선택 버스를 통해 선택 신호를 수신할 수도 있다. 멀티플렉서에 의해 수신된 선택 신호들은 그 입력들 중의 어느 것을 출력할 것인지를 멀티플렉서에 표시할 수도 있다. 선택 신호들은 멀티플렉서가 FIFO 버퍼의 출력들로부터 순서대로 수신하는 데이터를 출력할 것을 멀티플렉서에 명령할 수도 있다. 선택 신호가 멀티플렉서가 FIFO 버퍼로부터 수신하는 데이터를 출력할 것을 멀티플렉서에 명령하는 순서는 프로세서로부터 전송되고 FIFO 버퍼 상에 저장되는 바와 같은 병렬 포맷인 데이터를, 멀티플렉서에 의해 출력된 직렬 데이터로 변환할 수도 있다.
블록 (1110) 에서, 데이터 버퍼는 멀티플렉서에 의해 변환된 직렬 데이터를, 메모리 데이터 버스 상에서 데이터 버퍼와 연관된 메모리 디바이스로 출력할 수도 있다. 결정 블록 (1112) 에서, 메모리 제어기는 기록 트랜잭션이 완료된 것인지 여부를 결정할 수도 있다. 기록 트랜잭션은, 블록 (1110) 에서, 기록 트랜잭션 신호와 연관된 데이터의 전부가 직렬 데이터로서 메모리 디바이스로 출력될 때에 결정 블록 (1112) 을 위하여 종결될 수도 있다. 양태에서, 트랜잭션은 다수의 데이터 버스트들을 포함할 수도 있고, 더 많은 기록 데이터는 메모리 디바이스 버퍼들 중의 하나 이상에 대한 데이터 버퍼에 의해 수신될 수도 있다. 메모리 제어기가 기록 트랜잭션이 완료된 것으로 결정할 때 (즉, 결정 블록 (1112) = "예"), 메모리 제어기는 방법 (1100) 을 종료할 수도 있다. 메모리 제어기가 기록 트랜잭션이 완료되지 않은 것으로 결정할 때 (즉, 결정 블록 (1112) = "아니오"), 메모리 제어기는 블록 (1104) 에서 나머지 기록 데이터를 수신하는 것을 계속할 수도 있다.
도 12 는 복수의 메모리 디바이스들 중의 하나 이상으로부터 판독하기 위하여 직렬 데이터를 병렬 포맷인 데이터로 변환하기 위한 양태의 방법 (1200) 을 예시한다. 프로세서를 포함하는 컴퓨팅 디바이스, 본원에서 설명된 바와 같은 그 컴포넌트들을 포함하는 메모리 제어기, 및 본원에서 설명된 바와 같은 그 컴포넌트들을 포함하는 메모리 모듈은 이 방법 (1200) 을 구현할 수도 있다. 컴퓨팅 디바이스의 프로세서가 판독 트랜잭션 명령 또는 요청을 발행할 때, 블록 (1202) 에서, 메모리 제어기의 데이터 버퍼는 재순서화 로직으로부터 판독 트랜잭션 신호를 수신할 수도 있다. 위에서 설명된 바와 같이, 판독 트랜잭션 신호는, 직렬 데이터로서 메모리 디바이스에 의해 제공되고 디멀티플렉서에 의해 병렬 포맷인 데이터로 변환된 병렬 포맷인 판독 데이터를 저장할 것을 데이터 버퍼, 그리고 더욱 구체적으로, 판독 트랜잭션의 재순서화된 메모리 어드레스들과 연관된 메모리 디바이스 버퍼들의 하나 이상의 FIFO 버퍼들로 시그널링할 수도 있다.
블록 (1204) 에서, 데이터 버퍼는 메모리 디바이스로부터 직렬 판독 트랜잭션 데이터를 수신할 수도 있다. 위에서 설명된 바와 같이, 메모리 디바이스는 메모리 데이터 버스에 의해 데이터 버퍼 및 개별적인 메모리 디바이스 버퍼들에 접속될 수도 있다. 메모리 디바이스 버퍼들의 각각은 연관된 하나 이상의 메모리 디바이스들에 접속될 수도 있다. 이와 같이, 메모리 디바이스에 의해 출력된 직렬 데이터의 전부는 메모리 데이터 버스로, 그리고 직접적으로 연관된 메모리 디바이스 버퍼들로 출력된다. 양태에서, 메모리 디바이스들은 병렬로 다수의 메모리 디바이스 버퍼들에 접속될 수도 있다. 재순서화 로직은 메모리 디바이스 버퍼들 중의 어느 것이 병렬인 메모리 디바이스들로부터의 직렬 판독 데이터를 저장할 것인지를 메모리 디바이스 버퍼들에 명령하는 판독 트랜잭션 신호 및 디멀티플렉서 선택 신호들을 수신하는지를 제어할 수도 있다. 양태에서, 프로세서 데이터 버스의 최대 크기까지, 메모리 디바이스로부터의 직렬 판독 데이터의 각각의 버스트에 대하여, 재순서화 로직은 병렬 포맷인 직렬 판독 데이터의 버스트를 그 FIFO 버퍼로 저장할 것을 메모리 디바이스 버퍼들 중의 하나에만 시그널링할 수도 있다.
블록 (1206) 에서, 데이터 버퍼는 디멀티플렉서로부터 FIFO 버퍼로의 병렬인 출력에 대한 선택 신호를 재순서화 로직으로부터 수신할 수도 있다. 블록 (1208) 에서, 데이터 버퍼는 직렬 데이터를 병렬인 데이터로 변환할 수도 있다. 위에서 설명된 바와 같이, 데이터 버퍼의 디멀티플렉서는 동일한 데이터 버퍼의 FIFO 버퍼에 접속될 수도 있다. 디멀티플렉서의 출력들은 FIFO 버퍼의 입력들에 접속될 수도 있다. 디멀티플렉서는 디멀티플렉서 선택 버스를 통해 선택 신호를 수신할 수도 있다. 디멀티플렉서에 의해 수신된 선택 신호들은 메모리 디바이스로부터의 수신된 입력을 어느 출력으로 출력할 것인지를 디멀티플렉서에 표시한다. 선택 신호들은 디멀티플렉서가 FIFO 버퍼의 입력들을 순서대로 수신하는 데이터를 출력할 것을 디멀티플렉서에 명령할 수도 있다. 선택 신호가 멀티플렉서가 메모리 디바이스로부터 수신하는 데이터를 출력할 것을 멀티플렉서에 명령하는 순서는, 그것이 메모리 디바이스로부터 전송되는 바와 같은 직렬 데이터를, FIFO 버퍼에 의해 저장되고 프로세서로 출력된 병렬 포맷인 데이터로 변환할 수도 있다.
블록 (1210) 에서, 데이터 버퍼는 디멀티플렉서에 의해 변환된 병렬인 판독 데이터를 프로세서 데이터 버스 상에서 프로세서로 출력할 수도 있다. 결정 블록 (1212) 에서, 메모리 제어기는 판독 트랜잭션이 완료된 것인지 여부를 결정할 수도 있다. 판독 트랜잭션은, 블록 (1210) 에서, 판독 트랜잭션 신호와 연관된 데이터의 전부가 병렬 포맷인 데이터로서 프로세서로 출력될 때에 결정 블록 (1212) 을 위하여 종결될 수도 있다. 양태에서, 트랜잭션은 다수의 데이터 버스트를 포함할 수도 있고, 더 많은 판독 데이터는 메모리 디바이스 버퍼들 중의 하나 이상에 대한 데이터 버퍼에 의해 수신될 수도 있다. 메모리 제어기가 판독 트랜잭션이 완료된 것으로 결정할 때 (즉, 결정 블록 (1212) = "예"), 메모리 제어기는 방법 (1200) 을 종료할 수도 있다. 메모리 제어기가 판독 트랜잭션이 완료되지 않은 것으로 결정할 때 (즉, 결정 블록 (1212) = "아니오"), 메모리 제어기는 블록 (1204) 에서 나머지 판독 데이터를 수신하는 것을 계속할 수도 있다.
도 13 은 다양한 양태들과 함께 이용하기 위해 적당한 예시적인 이동 디바이스를 예시한다. 이동 디바이스 (1300) 는 터치스크린 제어기 (1304) 및 내부 메모리 (1306) 에 결합된 프로세서 (1302) 를 포함할 수도 있다. 프로세서 (1302) 는 일반적인 또는 특정한 프로세싱 태스크 (task) 들을 위해 지정된 하나 이상의 멀티코어 집적 회로 (multicore integrated circuit) 들일 수도 있다. 내부 메모리 (1306) 는 휘발성 또는 비휘발성 메모리일 수도 있고, 또한, 보안 및/또는 암호화된 메모리, 또는 비보안 및/또는 비암호화된 메모리, 또는 그 임의의 조합일 수도 있다. 활용될 수 있는 메모리 타입들의 예들은 DDR, LPDDR, GDDR, WIDEIO, RAM, SRAM, DRAM, P-RAM, R-RAM, M-RAM, STT-RAM, 및 내장된 DRAM 을 포함하지만, 이것으로 제한되지는 않는다. 터치스크린 제어기 (1304) 및 프로세서 (1302) 는 또한, 저항-감지 터치스크린 (resistive-sensing touchscreen), 용량-감지 터치스크린 (capacitive-sensing touchscreen), 적외선 감지 터치스크린 (infrared sensing touchscreen) 등과 같은 터치스크린 패널 (1312) 에 결합될 수도 있다. 추가적으로, 컴퓨팅 디바이스 (1300) 의 디스플레이는 터치 스크린 능력을 가질 필요가 없다.
이동 디바이스 (1300) 는, 서로 및/또는 프로세서 (1302) 에 결합된, 통신들을 전송하고 수신하기 위한 하나 이상의 라디오 신호 트랜시버들 (1308) (예컨대, 피넛 (Peanut), 블루투스 (Bluetooth), 지그비 (Zigbee), Wi-Fi, RF 라디오) 및 안테나들 (1310) 을 가질 수도 있다. 트랜시버들 (1308) 및 안테나들 (1310) 은 다양한 무선 송신 프로토콜 스택 (wireless transmission protocol stack) 들 및 인터페이스들을 구현하기 위하여 상기 언급된 회로부와 함께 이용될 수도 있다. 이동 디바이스 (1300) 는, 셀룰러 네트워크를 통한 통신을 가능하게 하고 프로세서에 결합되는 셀룰러 네트워크 무선 모뎀 칩 (1316) 을 포함할 수도 있다.
이동 디바이스 (1300) 는 프로세서 (1302) 에 결합된 주변 디바이스 접속 인터페이스 (1318) 를 포함할 수도 있다. 주변 디바이스 접속 인터페이스 (1318) 는 하나의 타입의 접속을 수용하도록 단수로 구성될 수도 있거나, USB, 파이어와이어 (FireWire), 썬더볼트 (Thunderbolt), 또는 PCIe 와 같은, 공통 또는 전용인, 다양한 타입들의 물리적 및 통신 접속들을 수용하도록 구성될 수도 있다. 주변 디바이스 접속 인터페이스 (1318) 는 또한, 유사하게 구성된 주변 디바이스 접속 포트 (도시되지 않음) 에 결합될 수도 있다.
이동 디바이스 (1300) 는 또한, 오디오 출력들을 제공하기 위한 스피커들 (1314) 을 포함할 수도 있다. 이동 디바이스 (1300) 는 또한, 본원에서 논의된 컴포넌트들의 전부 또는 일부를 포함하기 위한, 플라스틱, 금속, 또는 재료들의 조합으로 구성된 하우징 (1320) 을 포함할 수도 있다. 이동 디바이스 (1300) 는 1 회용 또는 재충전가능한 배터리와 같이, 프로세서 (1302) 에 결합된 전원 (1322) 을 포함할 수도 있다. 재충전가능한 배터리는 또한, 이동 디바이스 (1300) 의 외부의 소스로부터 충전 전류를 수신하기 위하여 주변 디바이스 접속 포트에 결합될 수도 있다. 이동 디바이스 (1300) 는 또한, 사용자 입력들을 수신하기 위한 물리적 버튼 (1324) 을 포함할 수도 있다. 이동 디바이스 (1300) 는 또한, 이동 디바이스 (1300) 를 턴온 및 턴오프하기 위한 전원 버튼 (1326) 을 포함할 수도 있다.
위에서 설명된 다양한 양태들은 또한, 도 14 에서 예시된 랩톱 컴퓨터 (1400) 와 같은 다양한 이동 디바이스들 내에서 구현될 수도 있다. 다수의 랩톱 컴퓨터들은, 컴퓨터의 포인팅 디바이스로서 작용하고, 이에 따라, 터치 스크린 디스플레이를 구비한, 그리고 위에서 설명된 컴퓨팅 디바이스들 상에서 구현된 것들과 유사한 드래그 (drag), 스크롤 (scroll), 및 플릭 (flick) 제스처들을 수신할 수도 있는 터치패드 터치 표면 (1417) 을 포함한다. 랩톱 컴퓨터 (1400) 는 전형적으로, 휘발성 메모리 (1412) 와, 플래시 메모리의 디스크 드라이브 (1413) 와 같은 대용량 비휘발성 메모리에 결합된 프로세서 (1411) 를 포함할 것이다. 추가적으로, 컴퓨터 (1400) 는, 무선 데이터 링크, 및/또는 프로세서 (1411) 에 결합된 셀룰러 전화 트랜시버 (1416) 에 접속될 수도 있는, 전자기 복사를 전송하고 수신하기 위한 하나 이상의 안테나 (1408) 를 가질 수도 있다. 컴퓨터 (1400) 는 또한, 프로세서 (1411) 에 결합된 플로피 디스크 (floppy disc) 드라이브 (1414) 및 컴팩트 디스크 (CD) 드라이브 (1415) 를 포함할 수도 있다. 노트북 구성에서, 컴퓨터 하우징은 프로세서 (1411) 에 모두 결합된 터치패드 (1417), 키보드 (1418), 및 디스플레이 (1419) 를 포함한다. 컴퓨팅 디바이스의 다른 구성들은 다양한 양태들과 함께 또한 이용될 수도 있는, 잘 알려진 바와 같이 (예컨대, USB 입력을 통해) 프로세서에 결합된 컴퓨터 마우스 또는 트랙볼 (trackball) 을 포함할 수도 있다.
다양한 양태들의 동작들을 수행하기 위한 프로그래밍가능 프로세서 상에서의 실행을 위한 컴퓨터 프로그램 코드 또는 "프로그램 코드" 는 C, C++, C#, 스몰토크 (Smalltalk), 자바 (Java), 자바스크립트 (JavaScript), 비쥬얼 베이직 (Visual Basic), 구조화 질의어 (Structured Query Language) (예컨대, 트랜잭트-SQL (Transact-SQL)), 펄 (Perl), 또는 다양한 다른 프로그래밍 언어들과 같은 하이 레벨 프로그래밍 언어로 기재될 수도 있다. 이 출원에서 이용된 바와 같은 컴퓨터 판독가능 저장 매체 상에 저장된 프로그램 코드 또는 프로그램들은 그 포맷이 프로세서에 의해 이해가능한 (오브젝트 코드 (object code) 와 같은) 머신 언어 코드를 지칭할 수도 있다.
시스템 커널 (system kernel) 들을 동작시키는 다수의 컴퓨팅 디바이스들은 사용자 공간 (비-특권부여된 (non-privileged) 코드가 실행됨) 및 커널 공간 (특권부여된 코드가 실행됨) 으로 편성된다. 이 분리는, 커널 공간의 일부인 코드가 GPL 라이센싱되어야 하는 반면, 사용자-공간에서 실행되는 코드는 GPL 라이센싱되지 않을 수도 있는 안드로이드 (Android) 및 다른 일반 공중 라이선스 (general public license; GPL) 환경들에서 특히 중요하다. 여기에서 논의된 다양한 소프트웨어 컴포넌트들/모듈들은 이와 다르게 명시적으로 기재되지 않으면, 커널 공간 또는 사용자 공간의 어느 하나에서 구현될 수도 있다는 것이 이해되어야 한다.
상기한 방법 설명들 및 프로세스 흐름도들은 예시적인 예들에 불과한 것으로서 제공되고, 다양한 양태들의 동작들이 제시된 순서로 수행되어야 하는 것을 요구하거나 암시하도록 의도된 것이 아니다. 당해 분야의 당업자에 의해 인식되는 바와 같이, 상기한 양태들에서의 동작들의 순서는 임의의 순서로 수행될 수도 있다. "그 후", "다음으로", "다음" 등과 같은 단어들은 동작들의 순서를 제한하도록 의도된 것이 아니고; 이 단어들은 방법들의 설명을 통해 독자를 안내하기 위하여 간단하게 이용된다. 또한, 예를 들어, 관사들 "a", "an", 또는 "the" 를 이용하는 단수인 청구항 구성요소들에 대한 임의의 참조는 구성요소를 단수로 제한하는 것으로 해석되지 않아야 한다.
다양한 양태들과 관련하여 설명된 다양한 예시적인 논리적 블록들, 모듈들, 회로들, 및 알고리즘 동작들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합들로서 구현될 수도 있다. 하드웨어 및 소프트웨어의 이 교환가능성을 명확하게 예시하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 동작들은 일반적으로 그 기능성의 측면에서 위에서 설명되었다. 이러한 기능성이 하드웨어 또는 소프트웨어로서 구현되는지 여부는 특정한 애플리케이션과, 전체 시스템에 부과된 설계 제약들에 종속된다. 숙련된 기술자들은 각각의 특별한 애플리케이션을 위한 다양한 방법들로 설명된 기능성을 구현할 수도 있지만, 이러한 구현 판정들은 본 발명의 범위로부터의 이탈을 야기시키는 것으로 해석되지 않아야 한다.
본원에서 개시된 양태들과 관련하여 설명된 다양한 예시적인 로직들, 논리적 블록들, 모듈들, 및 회로들을 구현하기 위하여 이용된 하드웨어는 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (application specific integrated circuit; ASIC), 필드 프로그래밍가능한 게이트 어레이 (field programmable gate array; FPGA) 또는 다른 프로그래밍가능한 로직 디바이스, 개별 게이트 또는 트랜지스터 로직, 개별 하드웨어 컴포넌트들, 또는 본원에서 설명된 기능들을 수행하도록 설계된 그 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안적으로, 프로세서는 임의의 기존의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신 (state machine) 일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예컨대, DSP 및 마이크로프로세서, 복수의 마이크로프로세서들, DSP 코어와 함께 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성의 조합으로서 구현될 수도 있다. 대안적으로, 일부의 동작들 또는 방법들은 소정의 기능에 특정적인 회로부에 의해 수행될 수도 있다.
하나 이상의 양태들에서는, 설명된 기능들이 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현될 경우, 기능들은 비-일시적인 컴퓨터-판독가능 매체 또는 비-일시적 프로세서-판독가능 매체 상에서 하나 이상의 명령들 또는 코드로서 저장될 수도 있다. 본원에서 개시된 방법 또는 알고리즘의 동작들은 비-일시적 컴퓨터-판독가능 또는 프로세서-판독가능 저장 매체 상에서 상주할 수도 있는 프로세서-실행가능 소프트웨어 모듈에서 구체화될 수도 있다. 비-일시적 컴퓨터-판독가능 또는 프로세서-판독가능 저장 매체들은 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 임의의 저장 매체들일 수도 있다. 제한이 아닌 예로서, 이러한 비-일시적인 컴퓨터-판독가능한 또는 프로세서-판독가능한 매체들은 RAM, ROM, EEPROM, FLASH 메모리, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 희망하는 프로그램 코드를 저장하기 위해 이용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 본원에서 이용된 바와 같은 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (compact disc; CD), 레이저 디스크 (laser disc), 광학 디스크 (optical disc), 디지털 다기능 디스크 (digital versatile disc; DVD), 플로피 디스크 (floppy disk) 및 블루레이 디스크 (blu-ray disc) 를 포함하고, 여기서, 디스크 (disk) 들은 통상 데이터를 자기적으로 재생하는 반면, 디스크 (disc) 들은 데이터를 레이저들로 광학적으로 재생한다. 상기의 조합들은 또한, 비-일시적인 컴퓨터-판독가능한 그리고 프로세서-판독가능한 매체들의 범위 내에 포함된다. 추가적으로, 방법 또는 알고리즘의 동작들은, 컴퓨터 프로그램 제품 내로 편입될 수도 있는 비-일시적인 프로세서-판독가능한 매체 및/또는 컴퓨터-판독가능한 매체 상에 코드들 및/또는 명령들 중의 하나 또는 임의의 조합 또는 세트로서 상주할 수도 있다.
개시된 양태들의 선행하는 설명은 당해 분야의 당업자가 본 발명을 제조하거나 이용하는 것을 가능하게 하도록 제공된다. 이 양태들에 대한 다양한 수정들은 당해 분야의 당업자들에게 용이하게 명백할 것이고, 본원에서 정의된 일반적인 원리들은 발명의 사상 또는 범위로부터 이탈하지 않으면서 다른 양태들에 적용될 수도 있다. 따라서, 본 발명은 본원에서 도시된 양태들에 제한되도록 의도된 것이 아니라, 다음의 청구항들 및 본원에서 개시된 원리들 및 신규한 특징들과 일관되는 가장 넓은 범위를 따르도록 하기 위한 것이다.

Claims (28)

  1. 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 방법으로서,
    메모리 트랜잭션 명령 (memory transaction instruction) 에 대한 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 메모리 맵을 재순서화하는 단계;
    상기 메모리 트랜잭션 명령과 연관된 적어도 하나의 메모리 어드레스를 수신하는 단계;
    상기 적어도 하나의 메모리 어드레스를 상기 재순서화된 메모리 맵에 따른 적어도 하나의 재순서화된 메모리 어드레스로 변환하는 단계; 및
    상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 단계로서, 상기 복수의 메모리 디바이스들의 상기 활성화된 전부보다 더 적은 것은 상기 재순서화된 메모리 맵에 따른 상기 적어도 하나의 재순서화된 메모리 어드레스와 연관되는, 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 단계를 포함하는, 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 단계는, 복수의 메모리 디바이스들의 전부보다 더 적은 것의 각각을 개별적으로 활성화하는 단계를 포함하는, 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하는 단계는, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들 중의 하나를 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하는 단계를 포함하고, 그리고
    상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 단계는, 상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들 중의 하나를 활성화하는 단계를 포함하는, 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하는 단계는, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 메모리 모듈의 상기 복수의 메모리 디바이스들 중의 적어도 하나를 다수 회 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하는 단계를 포함하는, 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 방법.
  5. 제 1 항에 있어서,
    상기 복수의 메모리 디바이스들에 기록하기 위한 상기 적어도 하나의 메모리 어드레스 및 상기 데이터 버스트를 포함하는 기록 트랜잭션을 위한 상기 메모리 트랜잭션 명령을 수신하는 단계로서, 상기 데이터 버스트는 병렬인 기록 데이터를 포함하는, 상기 메모리 트랜잭션 명령을 수신하는 단계;
    상기 데이터 버스트의 적어도 부분을, 상기 재순서화된 메모리 어드레스에 기록하기 위한 직렬 기록 데이터로 변환하는 단계; 및
    상기 변환된 기록 데이터를, 상기 재순서화된 메모리 어드레스와 연관된 상기 복수의 메모리 디바이스들의 상기 활성화된 전부보다 더 적은 것 중의 적어도 하나로 출력하는 단계를 더 포함하는, 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 복수의 메모리 디바이스들로부터 판독하기 위한 상기 적어도 하나의 메모리 어드레스를 포함하는 판독 트랜잭션을 위한 상기 메모리 트랜잭션 명령을 수신하는 단계;
    상기 재순서화된 메모리 어드레스와 연관된 상기 복수의 메모리 디바이스들의 상기 활성화된 전부보다 더 적은 것 중의 적어도 하나로부터 상기 데이터 버스트를 수신하는 단계로서, 상기 데이터 버스트의 적어도 부분은 직렬 판독 데이터를 포함하는, 상기 데이터 버스트를 수신하는 단계;
    병렬 포맷인 상기 판독 데이터가 상기 메모리 트랜잭션 명령의 메모리 어드레스들을 따르도록 하게 순서화되도록, 상기 데이터 버스트를 병렬 포맷인 판독 데이터로 변환하는 단계; 및
    병렬 포맷인 상기 판독 데이터를 프로세서로 출력하는 단계를 더 포함하는, 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 방법.
  7. 제 1 항에 있어서,
    상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하는 단계는, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 메모리 맵의 적어도 하나의 부분이 재순서화되는 상이한 재순서화 패턴들을 이용하여, 상기 복수의 메모리 디바이스들의 상기 메모리 맵의 부분들을 재순서화하는 단계를 포함하는, 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 방법.
  8. 장치로서,
    메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 메모리 제어기로서,
    상기 메모리 제어기는,
    메모리 트랜잭션 명령에 대한 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 메모리 맵을 재순서화하는 것;
    상기 메모리 트랜잭션 명령과 연관된 적어도 하나의 메모리 어드레스를 수신하는 것;
    상기 적어도 하나의 메모리 어드레스를 상기 재순서화된 메모리 맵에 따른 적어도 하나의 재순서화된 메모리 어드레스로 변환하는 것; 및
    상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 것으로서, 상기 복수의 메모리 디바이스들의 상기 활성화된 전부보다 더 적은 것은 상기 재순서화된 메모리 맵에 따른 상기 적어도 하나의 재순서화된 메모리 어드레스와 연관되는, 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 것을 포함하는 동작을 수행하도록 구성되는, 장치.
  9. 제 8 항에 있어서,
    상기 메모리 제어기는, 상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 것이, 복수의 메모리 디바이스들의 전부보다 더 적은 것의 각각을 개별적으로 활성화하는 것을 포함하도록 하는 동작들을 수행하도록 구성되는, 장치.
  10. 제 8 항에 있어서,
    상기 메모리 제어기는,
    상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하는 것이, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들 중의 하나를 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하는 것을 포함하고, 그리고
    상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 것이, 상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들 중의 하나를 활성화하는 것을 포함하도록 하는 동작들을 수행하도록 구성되는, 장치.
  11. 제 8 항에 있어서,
    상기 메모리 제어기는, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하는 것이, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 메모리 모듈의 상기 복수의 메모리 디바이스들 중의 적어도 하나를 다수 회 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하는 것을 포함하도록 하는 동작들을 수행하도록 구성되는, 장치.
  12. 제 8 항에 있어서,
    상기 메모리 제어기는,
    상기 복수의 메모리 디바이스들에 기록하기 위한 상기 적어도 하나의 메모리 어드레스 및 상기 데이터 버스트를 포함하는 기록 트랜잭션을 위한 상기 메모리 트랜잭션 명령을 수신하는 것으로서, 상기 데이터 버스트는 병렬인 기록 데이터를 포함하는, 상기 메모리 트랜잭션 명령을 수신하는 것;
    상기 데이터 버스트의 적어도 부분을, 상기 재순서화된 메모리 어드레스에 기록하기 위한 직렬 기록 데이터로 변환하는 것; 및
    상기 변환된 기록 데이터를, 상기 재순서화된 메모리 어드레스와 연관된 상기 복수의 메모리 디바이스들의 상기 활성화된 전부보다 더 적은 것 중의 적어도 하나로 출력하는 것을 포함하는 동작들을 수행하도록 추가로 구성되는, 장치.
  13. 제 8 항에 있어서,
    상기 메모리 제어기는,
    상기 복수의 메모리 디바이스들로부터 판독하기 위한 상기 적어도 하나의 메모리 어드레스를 포함하는 판독 트랜잭션을 위한 상기 메모리 트랜잭션 명령을 수신하는 것;
    상기 재순서화된 메모리 어드레스와 연관된 상기 복수의 메모리 디바이스들의 상기 활성화된 전부보다 더 적은 것 중의 적어도 하나로부터 상기 데이터 버스트를 수신하는 것으로서, 상기 데이터 버스트의 적어도 부분은 직렬 판독 데이터를 포함하는, 상기 데이터 버스트를 수신하는 것;
    병렬 포맷인 상기 판독 데이터가 상기 메모리 트랜잭션 명령의 메모리 어드레스들을 따르도록 하게 순서화되도록, 상기 데이터 버스트를 병렬 포맷인 판독 데이터로 변환하는 것; 및
    병렬 포맷인 상기 판독 데이터를 프로세서로 출력하는 것을 포함하는 동작들을 수행하도록 구성되는, 장치.
  14. 제 8 항에 있어서,
    상기 메모리 제어기는, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하는 것이, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 메모리 맵의 적어도 하나의 부분이 재순서화되는 상이한 재순서화 패턴들을 이용하여, 상기 복수의 메모리 디바이스들의 상기 메모리 맵의 부분들을 재순서화하는 것을 포함하도록 하는 동작들을 수행하도록 구성되는, 장치.
  15. 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 장치로서,
    메모리 트랜잭션 명령에 대한 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 메모리 맵을 재순서화하기 위한 수단;
    상기 메모리 트랜잭션 명령과 연관된 적어도 하나의 메모리 어드레스를 수신하기 위한 수단;
    상기 적어도 하나의 메모리 어드레스를 상기 재순서화된 메모리 맵에 따른 적어도 하나의 재순서화된 메모리 어드레스로 변환하기 위한 수단; 및
    상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하기 위한 수단으로서, 상기 복수의 메모리 디바이스들의 상기 활성화된 전부보다 더 적은 것은 상기 재순서화된 메모리 맵에 따른 상기 적어도 하나의 재순서화된 메모리 어드레스와 연관되는, 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하기 위한 수단을 포함하는, 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 장치.
  16. 제 15 항에 있어서,
    상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하기 위한 수단은, 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것의 각각을 개별적으로 활성화하기 위한 수단을 포함하는, 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 장치.
  17. 제 15 항에 있어서,
    상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하기 위한 수단이, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들 중의 하나를 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하기 위한 수단을 포함하고, 그리고
    상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하기 위한 수단이, 상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들 중의 하나를 활성화하기 위한 수단을 포함하는, 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 장치.
  18. 제 15 항에 있어서,
    상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하기 위한 수단은, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 메모리 모듈의 상기 복수의 메모리 디바이스들 중의 적어도 하나를 다수 회 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하기 위한 수단을 포함하는, 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 장치.
  19. 제 15 항에 있어서,
    상기 복수의 메모리 디바이스들에 기록하기 위한 상기 적어도 하나의 메모리 어드레스 및 상기 데이터 버스트를 포함하는 기록 트랜잭션을 위한 상기 메모리 트랜잭션 명령을 수신하기 위한 수단으로서, 상기 데이터 버스트는 병렬인 기록 데이터를 포함하는, 상기 메모리 트랜잭션 명령을 수신하기 위한 수단;
    상기 데이터 버스트의 적어도 부분을, 상기 재순서화된 메모리 어드레스에 기록하기 위한 직렬 기록 데이터로 변환하기 위한 수단; 및
    상기 변환된 기록 데이터를, 상기 재순서화된 메모리 어드레스와 연관된 상기 복수의 메모리 디바이스들의 상기 활성화된 전부보다 더 적은 것 중의 적어도 하나로 출력하기 위한 수단을 더 포함하는, 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 장치.
  20. 제 15 항에 있어서,
    상기 복수의 메모리 디바이스들로부터 판독하기 위한 상기 적어도 하나의 메모리 어드레스를 포함하는 판독 트랜잭션을 위한 상기 메모리 트랜잭션 명령을 수신하기 위한 수단;
    상기 재순서화된 메모리 어드레스와 연관된 상기 복수의 메모리 디바이스들의 상기 활성화된 전부보다 더 적은 것 중의 적어도 하나로부터 상기 데이터 버스트를 수신하기 위한 수단으로서, 상기 데이터 버스트의 적어도 부분은 직렬 판독 데이터를 포함하는, 상기 데이터 버스트를 수신하기 위한 수단;
    병렬 포맷인 상기 판독 데이터가 상기 메모리 트랜잭션 명령의 메모리 어드레스들을 따르도록 하게 순서화되도록, 상기 데이터 버스트를 병렬 포맷인 판독 데이터로 변환하기 위한 수단; 및
    병렬 포맷인 상기 판독 데이터를 프로세서로 출력하기 위한 수단을 더 포함하는, 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 장치.
  21. 제 15 항에 있어서,
    상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하기 위한 수단은, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 메모리 맵의 적어도 하나의 부분이 재순서화되는 상이한 재순서화 패턴들을 이용하여, 상기 복수의 메모리 디바이스들의 상기 메모리 맵의 부분들을 재순서화하기 위한 수단을 포함하는, 메모리 모듈의 복수의 메모리 디바이스들을 이용하기 위한 장치.
  22. 프로세서-실행가능 명령들을 저장한 비-일시적 프로세서-판독가능 매체로서,
    상기 프로세서-실행가능 명령들은, 메모리 제어기로 하여금,
    메모리 트랜잭션 명령에 대한 데이터 버스트가 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 재순서화된 메모리 맵을 초래하는, 메모리 모듈의 상기 복수의 메모리 디바이스들의 메모리 맵을 재순서화하는 것;
    상기 메모리 트랜잭션 명령과 연관된 적어도 하나의 메모리 어드레스를 수신하는 것;
    상기 적어도 하나의 메모리 어드레스를 상기 재순서화된 메모리 맵에 따른 적어도 하나의 재순서화된 메모리 어드레스로 변환하는 것; 및
    상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 것으로서, 상기 복수의 메모리 디바이스들의 상기 활성화된 전부보다 더 적은 것은 상기 재순서화된 메모리 맵에 따른 상기 적어도 하나의 재순서화된 메모리 어드레스와 연관되는, 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 것을 포함하는 동작을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능 매체.
  23. 제 22 항에 있어서,
    저장된 상기 프로세서-실행가능 명령들은, 상기 메모리 제어기로 하여금, 상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 것이, 복수의 메모리 디바이스들의 전부보다 더 적은 것의 각각을 개별적으로 활성화하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능 매체.
  24. 제 22 항에 있어서,
    저장된 상기 프로세서-실행가능 명령들은, 상기 메모리 제어기로 하여금,
    상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하는 것이, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들 중의 하나를 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하는 것을 포함하고, 그리고
    상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 활성화하는 것이, 상기 데이터 버스트에 대한 상기 메모리 트랜잭션 명령을 실행하기 위하여 상기 복수의 메모리 디바이스들 중의 하나를 활성화하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능 매체.
  25. 제 22 항에 있어서,
    저장된 상기 프로세서-실행가능 명령들은, 상기 메모리 제어기로 하여금, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하는 것이, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 메모리 모듈의 상기 복수의 메모리 디바이스들 중의 적어도 하나를 다수 회 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능 매체.
  26. 제 22 항에 있어서,
    저장된 상기 프로세서-실행가능 명령들은, 상기 메모리 제어기로 하여금,
    상기 복수의 메모리 디바이스들에 기록하기 위한 상기 적어도 하나의 메모리 어드레스 및 상기 데이터 버스트를 포함하는 기록 트랜잭션을 위한 상기 메모리 트랜잭션 명령을 수신하는 것으로서, 상기 데이터 버스트는 병렬인 기록 데이터를 포함하는, 상기 메모리 트랜잭션 명령을 수신하는 것;
    상기 데이터 버스트의 적어도 부분을, 상기 재순서화된 메모리 어드레스에 기록하기 위한 직렬 기록 데이터로 변환하는 것; 및
    상기 변환된 기록 데이터를, 상기 재순서화된 메모리 어드레스와 연관된 상기 복수의 메모리 디바이스들의 상기 활성화된 전부보다 더 적은 것 중의 적어도 하나로 출력하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능 매체.
  27. 제 22 항에 있어서,
    저장된 상기 프로세서-실행가능 명령들은, 상기 메모리 제어기로 하여금,
    상기 복수의 메모리 디바이스들로부터 판독하기 위한 상기 적어도 하나의 메모리 어드레스를 포함하는 판독 트랜잭션을 위한 상기 메모리 트랜잭션 명령을 수신하는 것;
    상기 재순서화된 메모리 어드레스와 연관된 상기 복수의 메모리 디바이스들의 상기 활성화된 전부보다 더 적은 것 중의 적어도 하나로부터 상기 데이터 버스트를 수신하는 것으로서, 상기 데이터 버스트의 적어도 부분은 직렬 판독 데이터를 포함하는, 상기 데이터 버스트를 수신하는 것;
    병렬 포맷인 상기 판독 데이터가 상기 메모리 트랜잭션 명령의 메모리 어드레스들을 따르도록 하게 순서화되도록, 상기 데이터 버스트를 병렬 포맷인 판독 데이터로 변환하는 것; 및
    병렬 포맷인 상기 판독 데이터를 프로세서로 출력하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능 매체.
  28. 제 22 항에 있어서,
    저장된 상기 프로세서-실행가능 명령들은, 상기 메모리 제어기로 하여금, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 재순서화된 메모리 맵을 초래하는, 상기 복수의 메모리 디바이스들의 상기 메모리 맵을 재순서화하는 것이, 상기 메모리 트랜잭션 명령에 대한 상기 데이터 버스트가 상기 복수의 메모리 디바이스들의 전부보다 더 적은 것을 이용하도록, 상기 메모리 맵의 적어도 하나의 부분이 재순서화되는 상이한 재순서화 패턴들을 이용하여, 상기 복수의 메모리 디바이스들의 상기 메모리 맵의 부분들을 재순서화하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능 매체.
KR1020167019844A 2013-12-27 2014-12-12 단일 채널 내에서의 dram 공간적 통합을 위한 방법 및 장치 KR101752117B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/142,573 2013-12-27
US14/142,573 US9396109B2 (en) 2013-12-27 2013-12-27 Method and apparatus for DRAM spatial coalescing within a single channel
PCT/US2014/070123 WO2015100038A1 (en) 2013-12-27 2014-12-12 Method and apparatus for dram spatial coalescing within a single channel

Publications (2)

Publication Number Publication Date
KR20160104641A true KR20160104641A (ko) 2016-09-05
KR101752117B1 KR101752117B1 (ko) 2017-06-28

Family

ID=52302356

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167019844A KR101752117B1 (ko) 2013-12-27 2014-12-12 단일 채널 내에서의 dram 공간적 통합을 위한 방법 및 장치

Country Status (6)

Country Link
US (1) US9396109B2 (ko)
EP (1) EP3087452A1 (ko)
JP (1) JP6062121B1 (ko)
KR (1) KR101752117B1 (ko)
CN (1) CN105849669A (ko)
WO (1) WO2015100038A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210121997A (ko) * 2020-03-31 2021-10-08 웨스턴 디지털 테크놀로지스, 인코포레이티드 Ssd용 버스 멀티플렉서 그리드를 위한 고급 ce 인코딩

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114038374A (zh) * 2014-02-05 2022-02-11 寇平公司 用于微型显示设备的列总线驱动方法
US10091904B2 (en) * 2016-07-22 2018-10-02 Intel Corporation Storage sled for data center
US10394724B2 (en) * 2016-08-22 2019-08-27 Qualcomm Incorporated Low power data transfer for memory subsystem using data pattern checker to determine when to suppress transfers based on specific patterns
CN106339326A (zh) * 2016-08-26 2017-01-18 记忆科技(深圳)有限公司 一种提升固态硬盘顺序读性能的方法
KR20180038875A (ko) 2016-10-07 2018-04-17 삼성전자주식회사 데이터 입출력 유닛, 전자 장치 및 그 제어 방법들
US10684955B2 (en) * 2017-04-21 2020-06-16 Micron Technology, Inc. Memory devices and methods which may facilitate tensor memory access with memory maps based on memory operations
CN107743101B (zh) * 2017-09-26 2020-10-09 杭州迪普科技股份有限公司 一种数据的转发方法及装置
US10956315B2 (en) 2018-07-24 2021-03-23 Micron Technology, Inc. Memory devices and methods which may facilitate tensor memory access
KR20200015233A (ko) 2018-08-03 2020-02-12 삼성전자주식회사 불휘발성 메모리 장치들을 포함하는 반도체 메모리 모듈
WO2020077518A1 (zh) * 2018-10-16 2020-04-23 华为技术有限公司 一种混合存储设备及访问方法
KR20220063335A (ko) * 2020-11-10 2022-05-17 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745913A (en) * 1996-08-05 1998-04-28 Exponential Technology, Inc. Multi-processor DRAM controller that prioritizes row-miss requests to stale banks
US6145065A (en) 1997-05-02 2000-11-07 Matsushita Electric Industrial Co., Ltd. Memory access buffer and reordering apparatus using priorities
KR100852084B1 (ko) * 2001-01-12 2008-08-13 엔엑스피 비 브이 메모리 어드레스 변환 장치, 메모리 어드레스 변환 방법 및 이미지 처리 장치
US6779074B2 (en) * 2001-07-13 2004-08-17 Micron Technology, Inc. Memory device having different burst order addressing for read and write operations
US6920523B2 (en) * 2002-10-07 2005-07-19 Infineon Technologies Ag Bank address mapping according to bank retention time in dynamic random access memories
US8407433B2 (en) 2007-06-25 2013-03-26 Sonics, Inc. Interconnect implementing internal controls
JP4470453B2 (ja) * 2003-11-04 2010-06-02 富士ゼロックス株式会社 画像処理装置、画像形成装置及びプログラム
KR100606812B1 (ko) 2004-03-08 2006-08-01 엘지전자 주식회사 비디오 디코딩 시스템
EP1736883A4 (en) * 2004-04-15 2008-12-10 Panasonic Corp BURST MEMORY ACCESS PROCEDURES ON A RECTANGULAR AREA
US7340619B2 (en) 2005-03-16 2008-03-04 International Business Machines Corporation System and method for circulating power usage information on a closed ring communication path within a multi-node computer system
US7721011B1 (en) 2005-05-09 2010-05-18 Oracle America, Inc. Method and apparatus for reordering memory accesses to reduce power consumption in computer systems
JP4693843B2 (ja) * 2005-06-09 2011-06-01 パナソニック株式会社 メモリ制御装置及びメモリ制御方法
TW200746161A (en) * 2005-12-21 2007-12-16 Nxp Bv Power partitioning memory banks
US8135936B2 (en) 2009-12-23 2012-03-13 Intel Corporation Adaptive address mapping with dynamic runtime memory mapping selection
WO2008015370A1 (en) 2006-08-03 2008-02-07 Arm Limited Memory controller address mapping scheme
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
JP2011175563A (ja) 2010-02-25 2011-09-08 Elpida Memory Inc データ処理システム及びその制御方法
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US8775754B2 (en) * 2011-06-24 2014-07-08 Arm Limited Memory controller and method of selecting a transaction using a plurality of ordered lists
KR101878902B1 (ko) * 2011-10-04 2018-07-17 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그의 구동 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210121997A (ko) * 2020-03-31 2021-10-08 웨스턴 디지털 테크놀로지스, 인코포레이티드 Ssd용 버스 멀티플렉서 그리드를 위한 고급 ce 인코딩
US11513976B2 (en) 2020-03-31 2022-11-29 Western Digital Technologies, Inc. Advanced CE encoding for bus multiplexer grid for SSD

Also Published As

Publication number Publication date
US20150186267A1 (en) 2015-07-02
JP2017504889A (ja) 2017-02-09
WO2015100038A1 (en) 2015-07-02
CN105849669A (zh) 2016-08-10
EP3087452A1 (en) 2016-11-02
JP6062121B1 (ja) 2017-01-18
KR101752117B1 (ko) 2017-06-28
US9396109B2 (en) 2016-07-19

Similar Documents

Publication Publication Date Title
KR101752117B1 (ko) 단일 채널 내에서의 dram 공간적 통합을 위한 방법 및 장치
EP3493066B1 (en) Apparatus and method to provide cache move with non-volatile mass memory system
JP6373559B2 (ja) メモリ装置及びメモリ装置の動作方法
US8838879B2 (en) Memory system
US11036412B2 (en) Dynamically changing between latency-focused read operation and bandwidth-focused read operation
US10002072B2 (en) Method and apparatus for controlling data migration in multi-channel memory device
US20150082317A1 (en) Techniques for distributed processing task portion assignment
US20120239873A1 (en) Memory access system and method for optimizing SDRAM bandwidth
US9569381B2 (en) Scheduler for memory
CN106873904B (zh) 数据写入方法及固态硬盘
US20220350655A1 (en) Controller and memory system having the same
US20230274774A1 (en) Effective DRAM Interleaving For Asymmetric Size Channels Or Ranks While Supporting Improved Partial Array Self-Refresh
JP2018152112A (ja) メモリ装置及びメモリ装置の動作方法
JP2018511111A (ja) ビクティムキャッシュモードを向上させるためのプロセススケジューリング
US20120159024A1 (en) Semiconductor apparatus
KR101135313B1 (ko) 요청 동작을 스케줄링하는 낸드 플래시 메모리 장치 및 방법
EP4020220A1 (en) Utilizing nand buffer for dram-less multilevel cell programming
US11106559B2 (en) Memory controller and memory system including the memory controller
US20240111424A1 (en) Reducing latency in pseudo channel based memory systems
US11907141B1 (en) Flexible dual ranks memory system to boost performance
US11513691B2 (en) Systems and methods for power and performance improvement through dynamic parallel data transfer between device and host
CN117971110A (zh) 基于开放通道固态盘的数据存储方法、装置、设备及介质

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant