KR20160064223A - 비대칭 저장 용량을 갖는 다중 채널 메모리 아키텍처에 걸친 데이터의 균일한 인터리빙을 위한 시스템 및 방법 - Google Patents

비대칭 저장 용량을 갖는 다중 채널 메모리 아키텍처에 걸친 데이터의 균일한 인터리빙을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20160064223A
KR20160064223A KR1020167011540A KR20167011540A KR20160064223A KR 20160064223 A KR20160064223 A KR 20160064223A KR 1020167011540 A KR1020167011540 A KR 1020167011540A KR 20167011540 A KR20167011540 A KR 20167011540A KR 20160064223 A KR20160064223 A KR 20160064223A
Authority
KR
South Korea
Prior art keywords
memory
memory space
data transfer
storage capacity
physical channels
Prior art date
Application number
KR1020167011540A
Other languages
English (en)
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 KR20160064223A publication Critical patent/KR20160064223A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1647Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Memory System (AREA)
  • Storage Device Security (AREA)

Abstract

물리 채널들에 걸쳐 비-균일 저장 용량을 갖는 메모리 공간의 물리 채널들에 걸쳐 메모리 액세스들을 균일하게 인터리빙하기 위한 시스템들 및 방법들이 개시된다. 인터리버가 하나 이상의 프로세서들 및 시스템 메모리와 통신하게 배열된다. 인터리버는 메모리 채널들에 의해 지원된 메모리 공간에서의 위치들을 식별하고, 원하는 저장 용량을 갖는 가상 섹터들을 정의하는 로직에 응답한다. 인터리버는 메모리 공간에 액세스하기 위한 요청들에 응답하여 가상 섹터들에 걸쳐 비대칭 저장 용량에 균일하게 액세스한다.

Description

비대칭 저장 용량을 갖는 다중 채널 메모리 아키텍처에 걸친 데이터의 균일한 인터리빙을 위한 시스템 및 방법{SYSTEM AND METHOD FOR UNIFORM INTERLEAVING OF DATA ACROSS A MULTIPLE-CHANNEL MEMORY ARCHITECTURE WITH ASYMMETRIC STORAGE CAPACITY}
컴퓨팅 디바이스들은 유비쿼터스이다. 이들 디바이스들은 휴대용 컴퓨터들, 데스크탑 컴퓨터들 및 서버 컴퓨터들, 및 다양한 사이즈들의 다른 디바이스들을 포함할 수도 있다. 이들 디바이스들의 1차 기능에 부가하여, 다수가 주변 기능들을 포함한다. 예를 들어, 셀룰러 전화기는 셀룰러 전화 호들을 가능케 하고 지원하는 1차 기능, 및 스틸 카메라, 비디오 카메라, 글로벌 포지셔닝 시스템 (GPS) 네비게이션, 웹 브라우징, 이메일들의 전송 및 수신, 텍스트 메시지들의 전송 및 수신, 푸시-투-토크 능력들 등의 주변 기능들을 포함할 수도 있다. 그러한 디바이스의 기능이 증가함에 따라, 그러한 기능을 지원하기 위한 데이터 저장 용량 및 요구된 컴퓨팅 또는 프로세싱 전력이 또한 증가한다.
일부 종래의 컴퓨팅 디바이스 설계들은 특정 컴퓨팅 디바이스를 위해 소망된 다양한 1 차 및 주변 기능들을 지원하기 위해 다중의 프로세서들 및/또는 다중의 코어들을 갖는 프로세서들을 포함한다. 증가된 컴퓨팅 용량 및 프로세서 속도로, 프로세서들 및/또는 프로세서 코어들과 시스템 메모리 사이에서 발생할 수 있는 병목들을 최소화하기 위해 다수의 기법들이 개발되었다. 하나의 접근법은, 데이터를 랜덤 액세스 메모리 엘리먼트와 각각의 클록 사이클에서 2회 교환하는 집적 회로 아키텍처들을 포함한다. 예를 들어, 더블 데이터 레이트 (DDR) 랜덤 액세스 메모리 (RAM) 모듈들은 이들 데이터 교환들을 지원한다. 심지어 이러한 접근법으로도, 다중의 프로세서들 및/또는 다중의 코어들을 갖는 오늘날의 시스템들은 종래의 메모리 모듈들의 데이터 전송 레이트들을 초과하는 클록 레이트들에서 동작한다. 다른 접근법들은 부가적인 메모리 채널들을 부가하는 것을 포함한다. 2개의 메모리 채널들을 포함하는 시스템은 가용 메모리 대역폭을 배가함으로써 문제를 경감하는 것을 도울 수 있다. RAM 모듈에 데이터를 기입하고 RAM 모듈로부터 데이터를 판독할 경우에 발생할 수 있는 데이터 전송 병목들을 경감하기 위해 메모리 제어기에 의해 2개의 채널들이 동시에 사용된다.
각각의 메모리 채널이 동일한 저장 용량을 갖는 유사하게 구성된 (즉, 매칭된) 메모리 모듈과 통신할 경우, 제어기는 메모리 버스에 의해 지원된 최대 데이터 레이트로 메모리 공간에 및 메모리 공간으로부터 데이터를 전송할 수 있을 뿐 아니라, 어플리케이션 프로그램들 또는 데이터 파일들을 메모리 공간에서의 임의의 미사용된 및 원하는 위치에 배치하기 위해 전체 메모리 공간이 메모리 제어기에게 이용가능하다. 따라서, 가용 어드레스 공간에 걸친 데이터의 균일한 인터리빙 또는 분배가 소망된다.
종래의 데이터 인터리빙 방식들에 대해, 메모리 모듈(들)의 저장 용량은 최대 지원된 데이터 전송 레이트로 메모리 모듈들에 액세스하기 위해 인터리버에 대해 동일해야 한다. 이는, 일반적으로, 메모리 모듈 제조자들이 고정된 저장 용량들을 갖는 집적 회로들을 제공할 때 문제가 아니다. 컴퓨팅 디바이스의 제조자가 메모리 모듈들을 쌍으로 전개하는 한 (각각의 쌍은 동일한 저장 용량을 가짐), 각각의 메모리 채널에 의해 액세스가능한 저장 용량은 동일하다.
하지만, 컴퓨팅 디바이스 제조자들은, 상업적으로 이용가능한 메모리 모듈의 최소 저장 용량의 배수가 아닌 시스템 메모리 용량을 제공하기 위한 소망을 전달하였다. 이는 상업적으로 이용가능한 메모리 모듈들을 이용하는 것을 불가능하게 하고, 동 메모리 모듈들을 2 이상의 메모리 채널들에 걸쳐 대칭 용량으로 배열하는 것을 불가능하게 한다. 예를 들어, 제조자가 768 M바이트의 시스템 메모리 용량을 원하고 이용가능한 최소 메모리 모듈 용량이 256 M바이트이면, 제조자는 3개의 메모리 모듈들을 전개함으로써 원하는 총 메모리 용량을 달성할 수 있다. 하지만, 3개의 모듈들 중 오직 2개의 모듈은 별도의 메모리 채널들에 걸쳐 대칭적으로 배열될 수 있다.
비대칭 메모리 용량들은, 총 메모리 용량의 제 1 부분이 오직 종래의 인터리빙 펑션 (function) 을 이용하여 액세스될 수 있는 총 메모리 용량의 제 2 부분의 데이터 레이트보다 감소된 데이터 레이트로 비-인터리빙된 방식으로만 액세스될 수 있는 배열을 제시한다. 그러한 배열은 오퍼레이팅 시스템 및/또는 어플리케이션 제공자들에 대한 복잡성들을 도입하여 무슨 펑션들 및 어플리케이션들이 비-인터리빙된 (즉, 더 저속의) 데이터 액세스에 의해 충분히 지원될 수 있는지를 식별한다.
따라서, 비대칭 메모리 용량들을 지원하는 메모리 채널들 간의 데이터 전송 레이트들을 최적화하기 위한 개선된 메커니즘들에 대한 필요성이 존재한다.
다중 채널 메모리 아키텍처에 의해 지원된 메모리 공간이 다중의 채널들에 걸쳐 비-균일 데이터 저장 용량들로 정주될 때를 식별하는 시스템들 및 방법들이 개시된다. 응답으로, 동일한 저장 용량의 다수의 가상 섹터들이 식별된다. 그 후, 인터리빙 펑션이, 가상 섹터들에 걸쳐 메모리 공간에 데이터 액세스들을 분배하는데 사용된다.
예시적인 실시형태는 프로세서 및 시스템 메모리와 통신하여 배치된 인터리버를 갖는 컴퓨팅 디바이스를 포함한다. 인터리버는 시스템 메모리 내 메모리 공간에서의 위치들을 식별한다. 메모리 공간은 적어도 2개의 물리 채널들에 의해 지원되며, 물리 채널들 각각에 커플링된 적어도 하나의 메모리 모듈을 포함한다. 메모리 공간은 물리 채널들에 걸쳐 분배된 비-균일 저장 용량을 갖는다. 인터리버는 원하는 저장 용량을 갖는 가상 섹터들을 식별하는 로직에 응답한다. 동작에 있어서, 인터리버는 메모리 공간에 액세스하기 위한 요청들에 응답하여 가상 섹터들에 걸쳐 비대칭 저장 용량에 균일하게 액세스한다.
하나의 예시적인 실시형태는, 메모리 공간이 다중 채널 메모리 액세스 아키텍처에 걸쳐 비-균일 저장 용량으로 배열될 때를 식별하고, 메모리 공간에서의 원하는 저장 용량의 다수의 가상 섹터들을 더 식별하며, 메모리 공간에 액세스하기 위한 요청들에 응답하여 가상 섹터들에 균일하게 액세스하는 인터리빙 펑션을 적용하는 메커니즘을 포함하는 컴퓨팅 디바이스이다.
다른 예시적인 실시형태는, 비-균일 저장 용량을 갖는 메모리 공간의 물리 채널들에 걸쳐 메모리 액세스들을 균일하게 인터리빙하기 위한 방법이다. 그 방법은 다중 채널 메모리 아키텍처에 다중의 채널들에 걸쳐 비대칭 저장 용량이 제공될 때를 식별하는 단계, 동일한 용량의 다수의 가상 섹터들을 식별하는 단계, 및 메모리 공간에 액세스하기 위한 요청들에 응답하여 가상 섹터들에 걸쳐 비대칭 저장 용량에 균일하게 액세스하는 인터리빙 펑션을 인터리버를 통해 적용하는 단계를 포함한다.
다른 예시적인 실시형태는 프로세서 명령들 및 데이터가 저장된 비-일시적인 프로세서 판독가능 매체이며, 프로세서 명령들 및 데이터는 프로세서로 하여금 다중 채널 메모리 아키텍처가 다중의 채널들에 걸쳐 비대칭 저장 용량을 제공하는 메모리 모듈들로 현재 정주된다는 표시를 수신하게 하고, 그 표시에 응답하여, 동일한 용량의 다수의 가상 섹터들을 식별하게 하며, 메모리 공간에 액세스하기 위한 요청들에 응답하여 가상 섹터들에 걸쳐 비대칭 저장 용량에 균일하게 액세스하는 인터리빙 펑션을 적용하게 한다.
도면들에 있어서, 동일한 참조부호들은, 달리 나타내지 않으면 다양한 뷰들 전반에 걸쳐 동일한 부분들을 지칭한다. "102A" 또는 "102B" 와 같은 문자 지정들을 갖는 참조부호들에 대해, 그 문자 지정들은 동일한 도면에 존재하는 2개의 동일한 부분들 또는 엘리먼트들을 구별할 수도 있다. 참조부호들에 대한 문자 지정들은, 참조부호가 모든 도면들에 있어서 동일한 참조부호를 갖는 모든 부분들을 포괄하도록 의도될 경우에 생략될 수도 있다.
도 1 은 컴퓨팅 디바이스의 예시적인 실시형태를 도시한 개략 다이어그램이다.
도 2 는 대칭 메모리 용량을 갖는 도 1 의 컴퓨팅 디바이스의 예시적인 실시형태를 도시한 개략 다이어그램이다.
도 3 은 비대칭 시스템 메모리 용량을 갖는 도 2 의 컴퓨팅 디바이스를 도시한 개략 다이어그램이다.
도 4 는 2개의 물리 채널들에 걸쳐 1:2 비율로 분배된 가상 섹터들의 세트를 갖는 도 1 의 컴퓨팅 디바이스의 예시적인 실시형태의 개략 다이어그램이다.
도 5 는 상이한 데이터 전송 레이트들에서 동작되는 2개의 물리 채널들에 걸쳐 1:2 비율로 분배된 가상 섹터들의 세트를 갖는 도 1 의 컴퓨팅 디바이스의 예시적인 실시형태의 개략 다이어그램이다.
도 6 은 상이한 데이터 전송 레이트들에서 동작되는 2개의 물리 채널들에 걸쳐 2:3 비율로 분배된 가상 섹터들의 상대적으로 더 큰 세트를 갖는 도 5 의 컴퓨팅 디바이스의 예시적인 실시형태의 개략 다이어그램이다.
도 7 은 대칭적으로 정주된 메모리 공간의 등가의 데이터 대역폭을 달성하기 위해 2개의 상이한 데이터 전송 레이트들에서 동작되는 4개의 물리 채널들에 걸쳐 1:2:2:2 비율로 분배된 가상 섹터들의 대안적인 세트를 갖는 컴퓨팅 디바이스의 예시적인 실시형태의 개략 다이어그램이다.
도 8 은 비-균일 저장 용량을 갖는 메모리 공간의 물리 채널들에 걸쳐 메모리 액세스들을 균일하게 인터리빙하기 위한 방법의 예시적인 실시형태를 도시한 플로우차트이다.
단어 "예시적인" 은 "예, 예증, 또는 예시로서 기능하는" 을 의미하도록 본 명세서에서 사용된다. "예시적인" 것으로서 본 명세서에서 설명되는 임의의 양태는 다른 양태들에 비해 반드시 선호되거나 유리한 것으로서 해석되는 것은 아니다.
이 설명에 있어서, 용어 "어플리케이션" 은 또한 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같은 실행가능 컨텐츠를 갖는 파일들을 포함할 수도 있다. 부가적으로, 본 명세서에서 지칭되는 "어플리케이션" 은 또한, 공개될 필요가 있을 수도 있는 문헌들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같이 본질적으로 실행가능하지 않는 파일들을 포함할 수도 있다.
용어 "컨텐츠" 는 또한 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같은 실행가능 컨텐츠를 갖는 파일들을 포함할 수도 있다. 부가적으로, 본 명세서에서 지칭되는 "컨텐츠" 는 또한, 공개될 필요가 있을 수도 있는 문헌들 또는 액세스될 필요가 있는 다른 데이터 파일들 또는 데이터 값들과 같이 본질적으로 실행가능하지 않는 파일들을 포함할 수도 있다.
이 설명에 있어서 사용되는 바와 같이, 용어들 "컴포넌트", "데이터베이스", "모듈", "시스템" 등은 컴퓨터 관련 엔터티, 즉, 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어 중 어느 하나를 지칭하도록 의도된다. 예를 들어, 컴포넌트는 프로세서 상에서 구동하는 프로세스, 프로세서, 오브젝트, 실행 가능물 (executable), 실행 스레드 (thread of execution), 프로그램, 및/또는 컴퓨터일 수도 있지만, 이에 한정되지 않는다. 예시로서, 컴퓨팅 디바이스 상에서 구동하는 어플리케이션 및 컴퓨팅 디바이스 양자는 컴포넌트일 수도 있다. 하나 이상의 컴포넌트들은 프로세스 및/또는 실행 스레드 내에 상주할 수도 있고, 컴포넌트는 하나의 컴퓨터에 국부화되고/되거나 2 이상의 컴퓨터들 사이에서 분산될 수도 있다. 부가적으로, 이들 컴포넌트들은 다양한 데이터 구조들이 저장된 다양한 컴퓨터 판독가능 매체로부터 실행할 수도 있다. 컴포넌트들은 하나 이상의 데이터 패킷들을 갖는 신호 (예를 들어, 로컬 시스템에서, 분산 시스템에서 및/또는 신호에 의한 다른 시스템들과의 인터넷과 같은 네트워크에 걸쳐 다른 컴포넌트와 상호작용하는 하나의 컴포넌트로부터의 데이터) 에 따라서와 같은 로컬 및/또는 원격 프로세스들에 의해 통신할 수도 있다.
이 설명에 있어서, 용어 "휴대용 컴퓨팅 디바이스" ("PCD") 는 배터리 및/또는 커패시터와 같은 제한된 용량의 재충전가능 전력 소스에 대해 동작하는 임의의 디바이스를 설명하는데 사용된다. 재충전가능 전력 소스들을 갖는 PCD들이 수십년 동안 사용되고 있었지만, 제 3 세대 ("3G") 및 제 4 세대 ("4G") 무선 기술의 도래와 연결된 재충전가능 배터리들에 있어서의 기술적 진보들은 다중의 능력들을 갖는 다수의 PCD들을 인에이블시켰다. 따라서, PCD 는, 다른 것들 중에서, 셀룰러 전화기, 위성 전화기, 페이저, PDA, 스마트폰, 네비게이션 디바이스, 스마트북 또는 리더, 미디어 플레이어, 전술한 디바이스들의 조합, 무선 접속을 갖는 랩탑 또는 태블릿 컴퓨터일 수도 있다.
인터리빙 펑션들은 다중의 물리 채널들에 걸쳐 전개된 메모리 모듈들의 다양한 구성들을 지원하도록 적응될 수 있다. 균일하게 인터리빙된 메모리 공간은, 그렇지 않으면 각각의 물리 채널이 동일한 저장 용량에 커플링될 경우에 가능한 데이터 전송 레이트보다 감소된 데이터 전송 레이트로의 메모리 액세스들을 지원할 것이다.
특정 조건들 하에서, 감소된 데이터 전송 레이트 또는 메모리 액세스 대역폭은 원하는 시스템 성능을 충족하거나 초과하기에 충분할 수도 있다. 그렇지 않으면, 다중의 물리 채널들에 걸쳐 균일한 저장 용량으로 가능한 메모리 액세스 대역폭을 달성하는 것이 소망될 경우, 알고리즘 접근법은 대칭적으로 배열된 메모리 공간의 등가의 메모리 액세스 대역폭을 달성하기 위해 인터리빙 펑션과 결합하여 구현된다.
메모리 공간이 동일한 데이터 저장 용량을 갖는 N개 (정수) 메모리 모듈들로 정주될 경우, 확산 펑션은 인터리버로 하여금 데이터를 가상 섹터들에 걸쳐 분배하게 한다. MOD 펑션과 같은 예시적인 인터리빙 펑션이 인터리버에서 전개될 수도 있다. 예를 들어, 총 192개 메모리 워드들을 매핑하기 위해 3개 채널들에 걸쳐 어드레스 (A[7:0]) 를 확산하기 위해 (여기서, 각각의 채널은, 각각 64개 메모리 워드들을 매핑하는 6비트 어드레스 범위들 ([5:0]) 을 가짐), A[7:0] MOD 3 의 결과는 채널을 선택하는데 사용될 수 있다. 따라서, 각각의 채널은 A[7:0] 의 192개의 가능한 유효 어드레스 패턴들 중 정확히 3번째를 인터리빙 방식으로 수신할 것이다. (어드레스들 (193 내지 255) 은 그 메모리가 정주되지 않기 때문에 무효한 어드레스 패턴임을 유의함). 그 후, 5비트 인트라-채널 어드레싱 펑션들 (A0, A1, A2) 의 세트가 각각의 채널 내에서의 메모리 위치들을 선택하기 위해 정의될 수 있다. 각각의 채널 내에서의 가능한 A[7:0] 의 64개 메모리 위치들의 서브세트가 알려지기 때문에, 표준 로직 설계 및 최소화 기법들을 사용하는 당업자는, 이들 64개 어드레스들을 각각의 채널 내에서의 64개 고유한 메모리 위치들에 매핑하는 유사한 인트라 채널 어드레싱 펑션들을 설계할 수 있다.
다른 예에 있어서, 실제 인터리빙 펑션이 표준 로직 설계 및 최소화 기법들을 사용하여 단일 스테이지로서 설계될 수 있더라도, 다중의 개념적 라운드들을 통해 가상 섹터들에 걸쳐 데이터를 분배하는 인터리빙 펑션이 적용될 수도 있다. 4채널 메모리 아키텍처의 단일 채널로부터 제거된 2개의 메모리 모듈들을 갖는 예시적인 배열에 있어서, 원하는 수의 비트들/바이트들이 다중의 생성들을 통해 라운드-로빈 방식으로 3개 정주된 채널들에 걸쳐 저장된다. 비트들/바이트들의 제 1 부분은 제 1 채널에 커플링된 메모리 모듈에서의 명시된 저장 위치로 안내된다. 저장될 비트들/바이트들의 제 2 부분은 제 2 채널에 커플링된 메모리 모듈에서의 명시된 저장 위치로 안내된다. 저장될 비트들/바이트들의 제 3 부분은 제 3 채널에 커플링된 메모리 모듈에서의 명시된 저장 위치로 안내된다. 그렇지 않으면, 제 4 채널이 메모리 모듈들에 커플링될 경우에 제 4 채널에 커플링된 메모리 엘리먼트로 안내될 나머지 비트들/바이트들은 제 1 채널에 커플링된 메모리 모듈에서의 명시된 저장 위치로 안내될 수 있는 등등이다. 이에 따라, 저장된 데이터는 3개 채널들에 커플링된 메모리 모듈들에 의해 제공된 가용 데이터 저장 용량에 걸쳐 균등하게 확산된다. 도시된 실시형태들은 다중의 채널들에 걸쳐 비-균일 데이터 저장 용량들을 갖는 메모리 공간의 다른 예시적인 배열들을 포함한다.
비록 PCD 내의 동작을 특히 참조하여 설명되지만, 설명된 메모리 관리 시스템들 및 방법들은, 개별 채널들에 걸쳐 비-균일 데이터 저장 용량으로 정주되는 다중 채널 메모리 아키텍처를 갖는 임의의 컴퓨팅 시스템에 적용가능하다. 다른 방식으로 서술될 때, 메모리 관리 시스템들 및 방법들은, 다중의 물리 채널들에 커플링된 비-균일 분산형 데이터 저장 용량을 갖는 데스크탑 컴퓨터들, 서버 컴퓨터들 또는 임의의 전자 디바이스에 적용가능하다.
이제, 도시된 예들을 참조한다. 먼저, 도 1 을 참조하면, 휴대용 컴퓨팅 디바이스 (PCD) 의 예시적, 비한정적인 양태가 도시되고 일반적으로 100 으로 지정된다. 도시된 바와 같이, PCD (100) 는 멀티코어 CPU (210) 를 포함하는 온-칩 시스템 (120) 을 포함한다. 멀티코어 CPU (210) 는 제 0 코어 (215), 제 1 코어 (216), 및 제 N 코어 (217) 를 포함한다.
도 1 에 도시된 바와 같이, 디스플레이 제어기 (128) 및 터치 스크린 제어기 (130) 가 멀티코어 CPU (210) 에 커플링된다. 차례로, 온-칩 시스템 (120) 외부의 디스플레이/터치스크린 (132) 이 디스플레이 제어기 (128) 및 터치 스크린 제어기 (130) 에 커플링된다.
도 1 은 추가로, 비디오 인코더 (134), 예를 들어, PAL (phase-alternating line) 인코더, SECAM (sequential couleur a memoire) 인코더, 또는 NTSC (national television system(s) committee) 인코더가 멀티코어 CPU (210) 에 커플링됨을 나타낸다. 추가로, 비디오 증폭기 (136) 가 비디오 인코더 (134) 및 디스플레이/터치스크린 (132) 에 커플링된다. 또한, 비디오 포트 (138) 가 비디오 증폭기 (136) 에 커플링된다. 도 1 에 도시된 바와 같이, 유니버셜 직렬 버스 (USB) 제어기 (140) 가 멀티코어 CPU (210) 에 커플링된다. 또한, USB 포트 (142) 가 USB 제어기 (140) 에 커플링된다. 시스템 메모리 (230) 및 가입자 아이덴터티 모듈 (SIM) 카드 (146) 가 또한, 온-칩 시스템의 이들 엘리먼트들 사이에서 데이터를 전송하기 위한 2 이상의 물리 채널들 또는 경로들로 이루어지는, 멀티코어 CPU (210) 와 시스템 메모리 (230) 간의 커넥션 (219) 으로 CPU (210) 에 커플링될 수도 있다. 추가로, 도 1 에 도시된 바와 같이, 디지털 카메라 (148) 가 멀티코어 CPU (210) 에 커플링될 수도 있다. 예시적인 양태에 있어서, 디지털 카메라 (148) 는 전하 커플링형 디바이스 (CCD) 카메라 또는 상보적 금속 산화물 반도체 (CMOS) 카메라이다.
도 1 에 추가로 도시된 바와 같이, 스테레오 오디오 코덱 (CODEC) (150) 이 멀티코어 CPU (210) 에 커플링될 수도 있다. 더욱이, 오디오 증폭기 (152) 가 스테레오 오디오 코덱 (150) 에 커플링될 수도 있다. 예시적인 양태에 있어서, 제 1 스테레오 스피커 (154) 및 제 2 스테레오 스피커 (156) 가 오디오 증폭기 (152) 에 커플링된다. 도 1 은, 마이크로폰 증폭기 (158) 가 또한 스테레오 오디오 코덱 (150) 에 커플링될 수도 있음을 나타낸다. 부가적으로, 마이크로폰 (116) 이 마이크로폰 증폭기 (158) 에 커플링될 수도 있다. 특정 양태에 있어서, 주파수 변조 (FM) 라디오 튜너 (162) 가 스테레오 오디오 코덱 (150) 에 커플링될 수도 있다. 또한, FM 안테나 (164) 가 FM 라디오 튜너 (162) 에 커플링된다. 추가로, 스테레오 포트 (166) 가 스테레오 오디오 코덱 (150) 에 커플링될 수도 있다.
도 1 은 또한, 라디오 주파수 (RF) 트랜시버 (168) 가 멀티코어 CPU (210) 에 커플링됨을 나타낸다. RF 스위치 (170) 가 RF 트랜시버 (168) 및 RF 안테나 (172) 에 커플링될 수도 있다. 도 1 에 도시된 바와 같이, 키패드 (174) 가 멀티코어 CPU (210) 에 커플링된다. 또한, 마이크로폰을 갖는 모노 헤드셋 (176) 이 멀티코어 CPU (210) 에 커플링될 수도 있다. 추가로, 바이브레이터 디바이스 (178) 가 멀티코어 CPU (210) 에 커플링될 수도 있다. 도 1 은 추가로, 전력 공급부 (180) 가 USB 제어기 (140) 를 통해 온-칩 시스템 (102) 에 커플링될 수도 있음을 나타낸다. 특정 양태에 있어서, 전력 공급부 (180) 는, 전력을 요구하는 PCD (100) 의 다양한 컴포넌트들에 전력을 제공하는 직류 (DC) 전력 공급부이다. 추가로, 특정 양태에 있어서, 전력 공급부는, AC 전력 소스에 접속되는 교류 (AC)-DC 변압기로부터 도출되는 DC 전력 공급부 또는 재충전가능 DC 배터리이다.
도 1 은 추가로, PCD (100) 가 또한 데이터 네트워크, 예를 들어, 로컬 영역 네트워크, 개인 영역 네트워크, 또는 임의의 다른 네트워크에 액세스하는데 이용될 수도 있는 네트워크 카드 (188) 를 포함할 수도 있음을 나타낸다. 네트워크 카드 (188) 는 블루투스 네트워크 카드, WiFi 네트워크 카드, 개인 영역 네트워크 (PAN) 카드, 또는 당업계에 널리 공지된 임의의 다른 네트워크 카드일 수도 있다. 추가로, 네트워크 카드 (188) 는 집적 회로에 통합될 수도 있다. 즉, 네트워크 카드 (188) 는 칩에서의 풀 (full) 솔루션일 수도 있으며, 별개의 네트워크 카드 (188) 가 아닐 수도 있다.
도 1 에 도시된 바와 같이, 디스플레이/터치스크린 (132), 비디오 포트 (138), USB 포트 (142), 카메라 (148), 제 1 스테레오 스피커 (154), 제 2 스테레오 스피커 (156), 마이크로폰 (116), FM 안테나 (164), 스테레오 포트 (166), RF 스위치 (170), RF 안테나 (172), 키패드 (174), 모노 헤드셋 (176), 바이브레이터 (178), 및 전력 공급부 (180) 는 온-칩 시스템 (120) 외부에 있다.
하나 이상의 모뎀들을 포함할 수도 있는 RF 트랜시버 (168) 는 모바일 통신용 글로벌 시스템 ("GSM"), 코드 분할 다중 액세스 ("CDMA"), 광대역 코드 분할 다중 액세스 ("W-CDMA"), 시분할 동기식 코드 분할 다중 액세스 ("TDSCDMA"), 롱 텀 에볼루션 ("LTE"), 그리고 FDB/LTE 및 PDD/LTE 무선 프로토콜들과 같지만 이에 한정되지 않는 LTE 의 변형들 중 하나 이상을 지원할 수도 있다.
도시된 실시형태에 있어서, 멀티-코어 CPU (210) 의 단일 인스턴스가 도시된다. 하지만, 임의의 수의 유사하게 구성된 멀티-코어 CPU들이 PCD (100) 와 연관된 다양한 주변 디바이스들 및 펑션들을 지원하기 위해 포함될 수 있음을 이해해야 한다. 대안적으로, 단일의 프로세서, 또는 각각 단일 산술 로직 유닛 또는 코어를 갖는 다중의 프로세서들이, 소망될 수도 있는 바와 같이 PCD (100) 와 연관된 다양한 주변 디바이스들 및 펑션들을 지원하기 위해 PCD 또는 다른 컴퓨팅 디바이스에 전개될 수 있다.
도시된 실시형태는, 완전히 집적된 온-칩 시스템 (120) 내에 배열된 시스템 메모리 (230) 를 도시한다. 하지만, M 바이트의 대응하는 데이터 저장 용량을 갖는 메모리 모듈들이 제공된 2 이상의 벤더가 온-칩 시스템 (120) 외부에 배열될 수도 있음을 이해해야 한다. 온-칩 시스템 (120) 외부에 배열될 경우, 시스템 메모리 (230) 를 지원하는 다양한 메모리 모듈들이, 데이터 및 전력을 메모리 모듈들에 전송하기 위한 적합한 전기 커넥션들을 포함한 수정된 다중 채널 메모리 버스 (도시 안됨) 에 의해 CPU (210) 에 커플링된다.
특정 양태에 있어서, 본 명세서에서 설명되는 방법 단계들 중 하나 이상은, 시스템 메모리 (230) 에 저장된 프로세서 명령들과 데이터의 조합을 통해 인에이블링될 수도 있다. 이들 명령들은 본 명세서에 설명된 방법들을 수행하기 위해 멀티코어 CPU (210) 에 의해 실행될 수도 있다. 추가로, 멀티코어 CPU (210), 메모리 (230), EEPROM (도시 안됨), 또는 이들의 조합은 인터리버 로직을 포함한 메모리 관리 로직의 비-일시적인 표현, 및 본 명세서에서 설명된 방법 단계들 중 하나 이상을 수행하기 위한 구성 파라미터들을 저장하는 수단으로서 기능할 수도 있다. 나타낸 바와 같이, 메모리 제어기 또는 다른 메모리 관리 로직은, 시스템 메모리 (230) 가 CPU (210) 와 시스템 메모리 (230) 사이에서 데이터를 통신하는 다중의 메모리 액세스 채널들에 관하여 비대칭 방식으로 정주될 때를 식별한다. 또한 나타낸 바와 같이, 인터리버 로직은, 동일한 저장 용량을 갖는 가상 섹터들을 정의하고 그리고 메모리 공간에 액세스하기 위한 요청들에 응답하여 가상 섹터들에 걸쳐 데이터를 균일하게 분배하기 위한 알고리즘 솔루션을 적용함으로써, 시스템 메모리 (230) 를 지원하는 물리 아키텍처에 따라 응답한다.
도 2 는 CPU (210), 시스템 메모리 (230), 및 메모리 공간 (290) 이 2개의 물리 채널들에 걸쳐 대칭 메모리 용량으로 지원될 경우에 CPU (210) 와 메모리 공간 (290) 간의 데이터 전송들을 인에이블링하는 커넥션 (219) 의 상세들을 도시한 개략 다이어그램이다. 도 2 에 나타낸 바와 같이, 메모리 공간 (290) 은, 채널 (220) (채널 0) 을 통해 CPU (210) 에 커플링된 2개 메모리 모듈들의 제 1 세트, 및 채널 (222) (채널 1) 을 통해 CPU (210) 에 커플링된 2개 메모리 모듈들의 제 2 세트에 의해 지원된다. 메모리 모듈들의 제 1 세트는 메모리 모듈 (291) 및 메모리 모듈 (292) 을 포함한다. 동적 랜덤 액세스 메모리 (DRAM) 집적 회로들로 구현될 수도 있는 메모리 모듈 (291) 및 메모리 모듈 (292) 은 각각 M 바이트의 데이터 저장 용량을 제공한다. 메모리 모듈들의 제 2 세트는 메모리 모듈 (293) 및 메모리 모듈 (294) 을 포함한다. DRAM 집적 회로들로 구현될 수도 있는 메모리 모듈 (293) 및 메모리 모듈 (294) 은 또한, M 바이트의 데이터 저장 용량을 제공한다. 동일한 회로 아키텍처를 포함하고 M 바이트의 동일한 용량을 갖는 메모리 모듈들 (291-294) 각각에 있어서, O/S 로직 (213) 은 메모리 제어기 (211) 를 사용하여, 저장될 데이터를 메모리 공간 (290) 에 걸쳐 임의의 원하는 위치에 배치할 수 있다. 저장된 데이터가 메모리 제어기 (211) 에 의해 원하는 바에 따라 배치될 수 있을 뿐 아니라, 그 데이터는 최대 대역폭으로 그리고 균일한 레이턴시로 4M 바이트의 메모리 공간 (290) 에 전송될 수 있다.
도 2 에 나타낸 바와 같이, CPU (210) 는 메모리 제어기 (211), 인터리버 로직 (212), 오퍼레이팅 시스템 (O/S) 로직 (213), 캐시 (214) 및 코어 (215) 를 포함한다. 이들 엘리먼트들은 CPU (210) 내의 하나 이상의 내부 커넥션들 또는 데이터 버스들 (도시 안됨) 을 따라 서로 커플링된다. 메모리 제어기 (211) 는 시스템 메모리 (230) 로 유입하고 시스템 메모리 (230) 로부터 유출하는 데이터의 흐름을 관리하는 디지털 회로이다. 메모리 제어기 (211) 는 인터리버 로직 (212) 에 의해 보조되거나 증강된다. 인터리버 로직 (212) 은, 가용 채널들 중 어느 채널이 CPU (210) 와 시스템 메모리 (230) 간의 특정 I/O 동작을 위해 사용되는지를 식별하는 어드레스, 라벨, 또는 다른 정보를 제공한다. 인터리버 로직은 통상적으로 또한, 인터리빙 펑션과 호환되는 방식으로, 각각의 채널로 전송되는 서브-채널 어드레스를 재배열하거나 재계산한다. (예를 들어, 32 비트 어드레스 (A[31:0]) 를 갖는 시스템에 대한 자명한 (trivial) 2 채널 인터리버는 어드레스 비트 (A[10]) 를 사용하여 채널을 선택하고, 그 후, 채널들 0 및 1 에 대해 각각 인트라-채널 어드레스들 (A0[A[31:11],A[9:0]] 및 A1[31:11],A[9:0]])) 을 생성할 수도 있음). O/S 로직 (213) 은, 코어 (215) 에 의해 실행될 경우, 다양한 주변 리소스들을 관리하고 메모리 공간 (290) 에 저장된 컴퓨터 프로그램들에 대한 공통 서비스들을 제공하는 명령들의 세트를 포함한다. O/S 로직 (213) 은, 요구될 때, 시스템 메모리 (230) 에 저장되고 CPU (210) 로 판독될 수 있다. 대안적으로, O/S 로직 (213) 은 CPU (210) 에 커플링되거나 집적된 판독 전용 메모리 모듈에 저장될 수 있다. 캐시 (214) 는, 빈번히 사용된 시스템 메모리 위치들로부터 데이터의 사본들을 저장하기 위해 CPU (210) 에 의해 사용된 더 작고 더 빠른 메모리이다. 캐시 (214) 는 메모리에 액세스하기 위한 평균 시간을 감소시킨다. 일부 메모리 액세스들이 캐싱된 메모리 위치들로부터 기인하는 한, 메모리 액세스들의 평균 레이턴시는 시스템 메모리 (230) 의 레이턴시보다 캐시 레이턴시에 더 근접할 것이다. 코어 (215) 는, 프로그램 명령들을 판독하고 버퍼링하고 실행하는 회로들의 세트를 포함한다.
도시된 배열에 있어서, 메모리 제어기 (211) 는 CPU (210) 와 동일한 다이 상에 집적된다. 대안적인 배열들에 있어서, 메모리 제어기 (211) 는 CPU (210) 와 통신하는 별개의 집적 회로 상에 구현될 수 있다. 메모리 제어기 (211) 는 프론트-엔드 부분 및 백-엔드 부분으로 배열된다. 프론트-엔드 부분은 요청들 및 응답들을 버퍼링하고, 컴퓨팅 디바이스 (200) 의 CPU (210) 및 다른 부분들 (도시 안됨) 에 대한 인터페이스를 제공한다. 이 프론트-엔드 부분은 일반적으로, 메모리 모듈 타입에 독립적이다. 이에 반하여, 백-엔드 부분은 메모리 모듈들에 대한 인터페이스를 제공하고, 메모리 모듈들에서의 메모리 회로의 타입에 의존적이다.
도시된 배열에 있어서, 인터리버 로직 (212) 은 코어 (215) 및 메모리 제어기 (211) 와 동일한 다이 상에 집적되며, 코어 (215) 및 메모리 제어기 (211) 와 별개의 회로 또는 회로들의 세트로서 도시된다. 대안적인 실시형태들에 있어서, 인터리버 로직 (212) 은, 메모리 제어기 (211) 또는 O/S 로직 (213) 중 하나를 인에이블링하는 회로들의 서브-부분일 수도 있다. 하지만, 어드레싱가능한 메모리 모듈들의 완전 전량 (full complement) 또는 적어도 밸런싱된 전량이 제시될 경우의 구현된 인터리버 로직 (212) 은 채널 (220) 및 채널 (222) 을 사용하여 메모리 공간 (290) 에 저장될 데이터를 균일하게 분배한다.
도 3 은 비대칭 시스템 메모리 용량을 갖는 도 2 의 컴퓨팅 디바이스를 도시한 개략 다이어그램이다. 비대칭 시스템 메모리 용량은, 제조자가 메모리 모듈들의 완전 전량 미만을 제공하도록 선택할 경우 또는 메모리 모듈이 실패할 경우에 발생한다. 도 3 에 도시된 예시적인 실시형태에 나타낸 바와 같이, 메모리 공간 (390) 은, 채널 (220) (채널 0) 을 통해 CPU (210) 에 커플링된 제 1 메모리 모듈 (391), 및 채널 (222) (채널 1) 을 통해 CPU (210) 에 커플링된 2개 메모리 모듈들에 의해 지원된다. 메모리 모듈 (391), 메모리 모듈 (393) 및 메모리 모듈 (394) 은, M 바이트의 데이터 저장 용량을 각각 갖는 DRAM 집적 회로들로 구현될 수도 있다. 동일한 회로 아키텍처를 포함하고 M 바이트의 동일한 용량을 갖는 메모리 모듈들 (291, 293, 294) 각각에 있어서, 채널 (220) (채널 0) 은 M 바이트에 커플링되지만 채널 (222) (채널 1) 은 2M 바이트에 커플링된다. 도 3 에 나타낸 바와 같이, 메모리 모듈 (391) 및 메모리 모듈 (393) 에 걸쳐 물리 채널들 (220, 222) 사이에 1:1 데이터 액세스 비율이 존재한다. 채널 (220) 에 커플링된 제 2 메모리 모듈의 부재는 물리 채널들 (220, 222) 사이의 0:1 데이터 액세스 비율을 발생한다. 메모리 모듈 (394) 에 의해 지원된 메모리 공간 (390) 의 그 부분은 인터리빙된 데이터를 수신하는 것이 불가능하고, 따라서 메모리 공간의 그 부분보다 단위 시간 당 더 적은 데이터를 프로세싱하며, 여기서, 2개의 메모리 모듈들은 개별 채널들을 통해 동시에 액세스될 수 있다. 채널 (220) 에 커플링된 제 2 메모리 모듈의 부재는 메모리 제어기 (211) 에 의해 검출가능할 수도 있으며, 이 메모리 제어기 (211) 는 그것을 나타내는 신호를 인터리버 로직 (212) 또는 CPU (210) 에 액세스가능한 다른 로직으로 통신할 수도 있다. 이에 응답하여, 인터리버 로직 (212) 또는 다른 로직은 하나 이상의 시스템 파라미터들에 기초하여 사전-프로그래밍된 방식으로 응답할 수도 있다. 대안적으로, 컴퓨팅 디바이스 (300) 는 고정된 방식으로 응답할 수도 있다.
물리 채널들 (220, 222) 에 걸쳐 비대칭 저장 용량으로 배열된 다중 채널 메모리 액세스 아키텍처 (302) 는 부분 또는 비-균일 인터리빙 펑션에 의해 동작하게 할 수 있다. 즉, 메모리 공간 (390) 의 제 1 부분 (도시된 실시형태에서의 최하위 부분) 은 메모리 모듈 (391) 및 메모리 모듈 (393) 에 의해 지원된 최대 데이터 레이트로 인터리빙될 수 있는 한편, 메모리 공간 (390) 의 제 2 부분은 오직 비-인터리빙된 메모리 액세스 요청들만을 프로세싱할 수 있다. 따라서, 인터리버 로직 (212) 은 총 3M 저장 용량 중 2M 바이트에 걸쳐 메모리 공간으로 및 메모리 공간으로부터 데이터를 전송하는데 사용된다.
지원가능한 동안, 그러한 배열은, 모든 메모리 액세스들이 비-인터리빙된 데이터 전송 레이트에서 충분히 지원될 수는 없는 환경 하에서 O/S 로직 (213) 에 의해 제공된 서비스들을 이용하는 어플리케이션 프로그램들 (도시 안됨) 및/또는 O/S 로직 (213) 에 대한 현저한 부담을 도입한다. 이것이 그 경우일 때, 어느 메모리 액세스들이 메모리 공간 (390) 의 비-인터리빙된 부분에 어드레싱될 수 있는지를 식별하는 것은 O/S 로직 (213) 및/또는 어플리케이션 프로그램들의 책임이다. 대안적으로, 컴퓨팅 디바이스 (300) 는 모든 메모리 I/O 를 비-인터리빙된 또는 더 저속의 데이터 전송 레이트로 전송할 수 있다.
도 4 는 2개의 물리 채널들에 걸쳐 1:2 비율로 분배된 가상 섹터들의 세트를 갖는 도 1 의 컴퓨팅 디바이스의 예시적인 실시형태의 개략 다이어그램이다. 도 4 에 도시된 예시적인 실시형태에 나타낸 바와 같이, 메모리 공간 (440) 은, 채널 (220) (채널 0) 을 통해 CPU (210) 에 커플링된 제 1 메모리 모듈 (441), 및 채널 (222) (채널 1) 을 통해 CPU (210) 에 커플링된 2개 메모리 모듈들에 의해 지원된다. 메모리 모듈 (441), 메모리 모듈 (443) 및 메모리 모듈 (444) 은, M 바이트의 데이터 저장 용량을 각각 갖는 DRAM 집적 회로들로 구현될 수도 있다. 동일한 회로 아키텍처를 포함하고 M 바이트의 동일한 용량을 갖는 메모리 모듈들 (441, 443, 444) 각각에 있어서, 채널 (220) (채널 0) 은 M 바이트에 커플링되지만 채널 (222) (채널 1) 은 2M 바이트에 커플링된다. 하지만, 3개의 가용 메모리 모듈들 중 2개에 걸쳐 데이터를 인터리빙하기 위해 부분 인터리브 펑션을 사용하는 대신, 메모리 공간 (440) 은 동일한 용량의 가상 섹터들로 분할된다. 도 4 에 도시된 바와 같이, 가상 섹터는 메모리 모듈 (441), 메모리 모듈 (443) 및 메모리 모듈 (444) 각각과 일치한다. 도 4 에 나타낸 바와 같이, 물리 채널들 (220) 사이에 1:2 데이터 액세스 비율이 존재한다.
비대칭 저장 용량을 갖는 다중 채널 메모리 액세스 아키텍처는, 도 4 에 제시된 바와 같이, 수정된 인터리버 로직 (418) 에 의해 인에이블링된 가상 인터리브 펑션을 이용한다. 가상 섹터들의 수가 홀수일 경우, 수정된 인터리버 로직 (418) 은 홀수-방향 (odd-way) 확산 펑션을 이용하여 가상 섹터들에 걸쳐 데이터를 분배한다.
전자식 소거가능한 프로그래밍가능 판독 전용 모듈 (EEPROM) (411) 은, 가상 채널들에 걸쳐 데이터를 분배할 경우에 수정된 인터리버 로직 (418) 을 안내 또는 조정하기 위하여 프로그래밍가능 파라미터들의 저장 및 원하는 확산 펑션들을 제공하도록 CPU (210) 와 통합된다. 예를 들어, 3방향 확산 펑션은 메모리 공간 (440) 에 걸쳐 채널 (220) 과 채널 (222) 사이에 1:2 비율로 메모리 액세스를 동적으로 분배한다. 결과적으로, 메모리 공간 (440) 의 이용가능한 용량은 균일하게 인터리빙될 수 있다. 그러한 배열들에 있어서, 메모리 공간 (440) 에 걸친 CPU (210) 와 메모리 공간 (440) 사이의 데이터 전송들의 레이트는 채널들 양자에 걸쳐 매칭된 메모리 모듈들에 의해 지원된 최대 데이터 전송 레이트로부터 감소될 것이지만, 도 3 에 도시된 부분 인터리빙 방법에 의해 지원된 더 저속의 비-인터리빙된 데이터 전송보다 관리하기 더 빠르고 더 쉽다. 모든 메모리 액세스들이 동일한 데이터 전송 레이트로 수행되기 때문에, 코어 (215) 에서 실행하는 어플리케이션 프로그램들 및/또는 O/S 로직 (216) 은 데이터를 메모리 공간 (440) 내의 임의의 장소에 배치할 수 있다.
대안적인 실시형태들에 있어서, 가상 섹터 인터리빙 펑션은 더 많거나 더 적은 가상 섹터들을 사용하기 위해 프로그래밍되거나 조정될 수도 있다. 일부 배열들에 있어서, 수정된 인터리버 로직 (418) 에 의해 사용된 가상 섹터들의 수는 메모리 공간 (440) 을 지원하는 메모리 모듈들의 수 미만일 수도 있다. 일부 다른 배열들에 있어서, 수정된 인터리버 로직 (418) 에 의해 사용된 가상 섹터들의 수는 메모리 공간 (440) 을 지원하는 메모리 모듈들의 수 초과일 수도 있다. 메모리 모듈들의 수와 가상 섹터들의 수 간의 그러한 불일치들은, 상이한 용량을 갖는 메모리 모듈들이 메모리 공간을 지원하도록 이용될 경우에 이용가능한 저장 용량을 가상 섹터들로 균등하게 분할하는 복잡성을 완화시킬 수도 있다. 다중의 채널들에 걸쳐 데이터를 분배하는 프로그래밍가능 가상 섹터 확산 펑션은 동일한 CPU (210) 로 하여금 완전히 정주된 및 부분적으로 정주된 메모리 채널들 양자를 지원하게 한다.
예시적인 확산 펑션은 메모리 액세스 채널을 정의하기 위한 코드를 포함할 수도 있다. 3개의 가용 채널들을 갖는 시스템들에 대해, MOD 펑션과 같은 예시적인 확산 펑션이 전개될 수도 있다. 예를 들어, 총 192개 메모리 워드들을 매핑하기 위해 3개 채널들에 걸쳐 어드레스 (A[7:0]) 를 확산하기 위해 (여기서, 각각의 채널은, 각각 64개 메모리 워드들을 매핑하는 6비트 어드레스 범위들 ([5:0]) 을 가짐), A[7:0] MOD 3 의 결과는 채널을 선택하는데 사용될 수 있다. 따라서, 각각의 채널은 A[7:0] 의 192개의 가능한 유효 어드레스 패턴들 중 정확히 3번째를 인터리빙 방식으로 수신할 것이다. (어드레스들 (193 내지 255) 은 그 메모리가 정주되지 않기 때문에 무효한 어드레스 패턴임을 유의함). 그 후, 5비트 인트라-채널 어드레싱 펑션들 (A0, A1, A2) 의 세트가 각각의 채널 내에서의 메모리 위치들을 선택하기 위해 정의될 수 있다. 각각의 채널 내에서의 가능한 A[7:0] 의 64개 메모리 위치들의 서브세트가 알려지기 때문에, 표준 로직 설계 및 최소화 기법들을 사용하는 당업자는, 이들 64개 어드레스들을 각각의 채널 내에서의 64개 고유한 메모리 위치들에 매핑하는 그 취향의 인트라 채널 어드레싱 펑션들을 설계할 수 있다.
도 5 는 상이한 데이터 전송 레이트들에서 동작되는 2개의 물리 채널들에 걸쳐 1:2 비율로 분배된 가상 섹터들의 세트를 갖는 도 1 의 컴퓨팅 디바이스의 예시적인 실시형태의 개략 다이어그램이다. 도 5 에 도시된 예시적인 실시형태에 나타낸 바와 같이, 메모리 공간 (540) 은, 채널 (220) (채널 0) 을 통해 CPU (210) 에 커플링된 제 1 메모리 모듈 (541), 및 채널 (222) (채널 1) 을 통해 CPU (210) 에 커플링된 2개 메모리 모듈들에 의해 지원된다. 메모리 모듈 (541), 메모리 모듈 (543) 및 메모리 모듈 (544) 은, M 바이트의 데이터 저장 용량을 각각 갖는 DRAM 집적 회로들로 구현될 수도 있다. 동일한 회로 아키텍처를 포함하고 M 바이트의 동일한 용량을 갖는 메모리 모듈들 (541, 543, 544) 각각에 있어서, 채널 (220) (채널 0) 은 M 바이트에 커플링되지만 채널 (222) (채널 1) 은 2M 바이트에 커플링된다. 하지만, 오직 3개의 가상 섹터들에만 걸쳐 데이터를 인터리빙하기 위해 가상 인터리브 펑션을 사용하는 대신, 도 4 에 도시된 바와 같이, 메모리 공간 (540) 은 동일한 용량의 가상 섹터들로 분할되고, 수정된 인터리버 로직 (518) 은 채널 (220) 상으로 통신할 경우에 제 1 데이터 전송 레이트를 이용하고 채널 (222) 상으로 통신할 경우에 제 2 데이터 전송 레이트를 이용한다. 예시적인 실시형태에 있어서, 메모리 모듈 (541) 은 256 M바이트의 데이터 용량을 갖는 저전력 더블 데이터 레이트 2 (LPDDR2) 메모리 엘리먼트이고 266 MHz 의 클록 주파수에서 동작 가능하다. 이러한 동일한 예에 있어서, 메모리 모듈 (543) 및 메모리 모듈 (544) 은 동일한 데이터 용량을 갖는 LPDDR2 메모리 엘리먼트들이지만 533 MHz 의 클록 주파수에서 동작 가능하다. 결과적으로, 예시적인 실시형태는 메모리 공간 (540) 에 걸쳐 균일한 대역폭을 달성하면서, 물리 채널들에 걸친 비대칭 데이터 저장 용량과 연관된 잠재적인 비용 절약을 허용한다. 예시적인 실시형태가 채널들에 걸친 1:2 용량 비율, 채널들 주위로 분배된 가상 섹터들에서의 1:2 비율 및 클록 주파수들에서의 1:2 비율을 포함하지만, 클록 주파수들은 각각의 채널에 커플링된 가상 섹터들의 수 및 가상 섹터 비율에 독립적이다.
도 5 에 도시된 바와 같이, 가상 섹터는 메모리 모듈 (541), 메모리 모듈 (543) 및 메모리 모듈 (544) 각각과 일치한다. 도 5 에 추가로 나타낸 바와 같이, 물리 채널들 (220, 222) 사이에 1:2 데이터 액세스 비율이 존재한다. 부가적으로, 채널 (222) 과 통신하는 메모리 모듈들 (543, 544) 은 메모리 공간 (540) 의 영역을 정의하며, 여기서, 수정된 인터리버 로직 (518) 은 메모리 모듈들 및 채널에 의해 지원된 최고 레이트 (또는 최대 데이터 전송 레이트) 로 또는 최대 데이터 전송 레이트보다 더 저속의 원하는 데이터 전송 레이트로 데이터를 균일하게 인터리빙할 수 있다. 도시된 실시형태에 있어서, 채널 (222) 은, 채널 (220) 에 의해 지원된 데이터 전송 레이트의 2배인 데이터 전송 레이트로 CPU (210) 와 데이터를 통신한다.
EEPROM (511) 은, 가상 채널들에 걸쳐 데이터를 분배할 경우에 수정된 인터리버 로직 (518) 을 안내 또는 조정하기 위하여 프로그래밍가능 파라미터들의 저장 및 원하는 확산 펑션들을 제공하도록 프로세서 CPU (210) 와 통합된다. 일부 배열들에 있어서, EEPROM (511) 은 가상 섹터들의 수, 물리 통신 채널들의 수, 및 메모리 공간 (540) 에 걸쳐 데이터를 확산할 경우에 사용하기 위한 데이터 전송 레이트들을 식별하는 하나 이상의 파라미터들을 포함할 것이다. 일부 배열들에 있어서, CPU (210) 와 메모리 공간 (540) 사이에서 채널들에 걸쳐 데이터를 통신하는데 사용된 데이터 전송 레이트들은 다른 채널 또는 채널들의 함수들로서 식별될 수도 있다.
도 6 은 상이한 데이터 전송 레이트들에서 동작되는 2개의 물리 채널들에 걸쳐 2:3 비율로 분배된 가상 섹터들의 상대적으로 더 큰 세트를 갖는 도 5 의 컴퓨팅 디바이스의 예시적인 실시형태의 개략 다이어그램이다. 도 6 에 도시된 예시적인 실시형태에 나타낸 바와 같이, 메모리 공간 (640) 은, 채널 (220) (채널 0) 을 통해 CPU (210) 에 커플링된 메모리 모듈 (641) 및 메모리 모듈 (642), 및 채널 (222) (채널 1) 을 통해 CPU (210) 에 커플링된 메모리 모듈 (644), 메모리 모듈 (645) 및 메모리 모듈 (646) 에 의해 지원된다. 메모리 모듈들 (641, 642, 644, 645, 646) 은, 각각 M 바이트의 데이터 저장 용량을 갖는 DRAM 집적 회로들로 구현될 수도 있다. 동일한 회로 아키텍처를 포함하고 M 바이트의 동일한 용량을 갖는 메모리 모듈들 (641, 642, 644, 645, 646) 각각에 있어서, 채널 (220) (채널 0) 은 저장 용량의 2M 바이트에 커플링되지만 채널 (222) (채널 1) 은 저장 용량의 3M 바이트에 커플링된다. 여기서, 메모리 공간 (640) 은 동일한 용량의 5개 가상 섹터들로 분할되고, 수정된 인터리버 로직 (618) 은 채널 (220) 상으로 통신할 경우에 제 1 데이터 전송 레이트를 이용하고 채널 (222) 상으로 통신할 경우에 제 2 데이터 전송 레이트를 이용한다.
도 6 에 나타낸 바와 같이, 제 1 및 제 2 데이터 전송 레이트들 (f(0), f(1)) 은 완전히 인터리빙된 시스템에서 전개된 데이터 전송 레이트 (ft), 채널에서의 가상 섹터들의 수 (N0, N1), 및 메모리 공간 (640) 에서의 가상 섹터들의 총 수에 대한 물리 채널들의 수의 비율 (P/Vtot) 의 함수로서 결정될 수 있다. 구체적으로, 메모리 공간 (640) 으로 하여금 매칭된 용량의 완전히 인터리빙된 저장 시스템에 의해 제공된 대역폭을 달성하게 하는 제 1 및 제 2 데이터 전송 레이트들은 완전히 인터리빙된 시스템의 데이터 전송 주파수와, 채널에서의 가상 섹터들의 수와, 그리고 시스템 (600) 에 의해 전개된 가상 섹터들의 총 수에 대한 물리 채널들의 수의 비율과의 곱에 의해 결정될 수 있다.
예시적인 실시형태에 있어서, 메모리 모듈 (641) 및 메모리 모듈 (642) 은 각각 256 M바이트의 데이터 용량을 갖는 DRAM 엘리먼트들이고 320 MHz 의 클록 주파수에서 동작 가능하다. 이러한 동일한 예에 있어서, 메모리 모듈 (644), 메모리 모듈 (645) 및 메모리 모듈 (646) 은 256 M바이트의 동일한 데이터 용량을 갖는 DRAM 엘리먼트들이지만 480 MHz 의 클록 주파수에서 동작 가능하다. 결과적으로, 예시적인 실시형태는 메모리 공간 (640) 에 걸쳐 균일한 대역폭을 달성하면서, 물리 채널들에 걸친 비대칭 데이터 저장 용량과 연관된 잠재적인 비용 절약을 허용한다. 예시적인 실시형태가 채널들에 걸친 2:3 용량 비율, 채널들 주위로 분배된 가상 섹터들에서의 2:3 비율 및 클록 주파수들에서의 2:3 비율을 포함하지만, 클록 주파수들은 각각의 채널에 커플링된 가상 섹터들의 수 및 가상 섹터 비율에 독립적이다.
도 6 에 도시된 바와 같이, 가상 섹터는 메모리 모듈들 (641, 642, 644, 645, 646) 각각과 일치한다. 부가적으로, 채널 (222) 과 통신하는 메모리 모듈들 (644-646) 은 메모리 공간 (640) 의 영역을 정의하며, 여기서, 수정된 인터리버 로직 (618) 은 메모리 모듈들 및 채널에 의해 지원된 최고 레이트로 또는 최대 데이터 전송 레이트보다 더 저속의 원하는 데이터 전송 레이트로 데이터를 균일하게 인터리빙할 수 있다. 도시된 실시형태에 있어서, 채널 (222) 은, 채널 (220) 에 의해 지원된 데이터 전송 레이트의 1과 1/2배인 데이터 전송 레이트로 CPU (210) 와 데이터를 통신한다.
EEPROM (611) 은, 가상 채널들에 걸쳐 데이터를 분배할 경우에 수정된 인터리버 로직 (618) 을 안내 또는 조정하기 위하여 프로그래밍가능 파라미터들의 저장 및 원하는 확산 펑션들을 제공하도록 프로세서 CPU (210) 와 통합된다. 일부 배열들에 있어서, EEPROM (611) 은 가상 섹터들의 수, 물리 통신 채널들의 수, 및 메모리 공간 (640) 에 걸쳐 데이터를 확산할 경우에 사용하기 위한 데이터 전송 레이트들을 식별하는 하나 이상의 파라미터들을 포함할 것이다. 일부 배열들에 있어서, CPU (210) 와 메모리 공간 (640) 사이에서 채널들에 걸쳐 데이터를 통신하는데 사용된 데이터 전송 레이트들은 다른 채널 또는 채널들의 함수들로서 식별될 수도 있다.
도 7 은 대칭적으로 정주된 메모리 공간의 등가의 데이터 대역폭을 달성하기 위해 2개의 상이한 데이터 전송 레이트들에서 동작되는 4개의 물리 채널들에 걸쳐 1:2:2:2 비율로 분배된 가상 섹터들의 대안적인 세트를 갖는 컴퓨팅 디바이스의 예시적인 실시형태의 개략 다이어그램이다. 도 7 에 도시된 예시적인 실시형태에 나타낸 바와 같이, 메모리 공간 (740) 은, 채널 (220) (채널 0) 을 통해 CPU (210) 에 커플링된 메모리 모듈 (741), 채널 (222) (채널 1) 을 통해 CPU (210) 에 커플링된 메모리 모듈 (743) 및 메모리 모듈 (744), 채널 (224) (채널 2) 을 통해 CPU (210) 에 커플링된 메모리 모듈 (745) 및 메모리 모듈 (746), 채널 (226) (채널 3) 을 통해 CPU (210) 에 커플링된 메모리 모듈 (747) 및 메모리 모듈 (748) 에 의해 지원된다. 메모리 모듈들 (741, 743, 744, 745, 746, 747, 748) 은, 각각 M 바이트의 데이터 저장 용량을 갖는 DRAM 집적 회로들로 구현될 수도 있다. 동일한 회로 아키텍처를 포함하고 M 바이트의 동일한 용량을 갖는 메모리 모듈들 (741, 743-748) 각각에 있어서, 채널 (220) (채널 0) 은 저장 용량의 M 바이트에 커플링되지만 채널 (222, 224, 226) (채널 1 내지 채널 3) 은 저장 용량의 2M 바이트에 커플링된다. 여기서, 메모리 공간 (740) 은 동일한 용량의 7개 가상 섹터들로 분할되고, 수정된 인터리버 로직 (718) 은 채널 (220) 상으로 통신할 경우에 제 1 데이터 전송 레이트를 이용하고 채널들 (222, 224, 226) 상으로 통신할 경우에 제 2 데이터 전송 레이트를 이용한다.
도 7 에 나타낸 바와 같이, 제 1 및 제 2 데이터 전송 레이트들 (f(0), f(1, 2, 3)) 은 완전히 인터리빙된 시스템에서 전개된 데이터 전송 레이트 (ft), 채널에서의 가상 섹터들의 수 (N0, N1,2,3), 및 메모리 공간 (740) 에서의 가상 섹터들의 총 수에 대한 물리 채널들의 수의 비율 (P/Vtot) 의 함수로서 결정될 수 있다. 구체적으로, 메모리 공간 (740) 으로 하여금 매칭된 용량의 완전히 인터리빙된 저장 시스템에 의해 제공된 대역폭을 달성하게 하는 제 1 및 제 2 데이터 전송 레이트들은 완전히 인터리빙된 시스템의 데이터 전송 주파수와, 채널에서의 가상 섹터들의 수와, 그리고 시스템 (700) 에 의해 전개된 가상 섹터들의 총 수에 대한 물리 채널들의 수의 비율과의 곱에 의해 결정될 수 있다.
예시적인 실시형태에 있어서, 메모리 모듈 (741) 은 256 M바이트의 데이터 용량을 갖는 DRAM 엘리먼트이고 약 229 MHz 의 클록 주파수에서 동작 가능하다. 이러한 동일한 예에 있어서, 메모리 모듈들 (743-748) 은 256 M바이트의 동일한 데이터 용량을 갖는 DRAM 엘리먼트들이지만 약 457 MHz 의 클록 주파수에서 동작 가능하다. 결과적으로, 예시적인 실시형태는 메모리 공간 (740) 에 걸쳐 균일한 대역폭을 달성하면서, 4개의 물리 채널들에 걸친 비대칭 데이터 저장 용량과 연관된 잠재적인 비용 절약을 허용한다. 예시적인 실시형태가 4개 채널들에 걸친 1:2:2:2 용량 비율, 채널들 주위로 분배된 가상 섹터들에서의 1:2:2:2 비율 및 클록 주파수들에서의 약 1:2 비율을 포함하지만, 클록 주파수들은 각각의 채널에 커플링된 가상 섹터들의 수 및 가상 섹터 비율에 독립적으로 적용될 수도 있다.
도 7 에 도시된 바와 같이, 가상 섹터는 메모리 모듈들 (741, 743-748) 각각과 일치한다. 부가적으로, 채널들 (222, 224, 226) 과 통신하는 메모리 모듈들 (743-748) 은 메모리 공간 (740) 의 영역을 정의하며, 여기서, 수정된 인터리버 로직 (718) 은 메모리 모듈들 및 채널에 의해 지원된 최고 레이트로 또는 최대 데이터 전송 레이트보다 더 저속의 원하는 데이터 전송 레이트로 데이터를 균일하게 인터리빙할 수 있다. 도시된 실시형태에 있어서, 채널들 (222, 224, 226) 각각은, 채널 (220) 에 의해 지원된 데이터 전송 레이트의 약 2배인 데이터 전송 레이트로 CPU (210) 와 데이터를 통신한다.
EEPROM (711) 은, 가상 채널들에 걸쳐 데이터를 분배할 경우에 수정된 인터리버 로직 (718) 을 안내 또는 조정하기 위하여 프로그래밍가능 파라미터들의 저장 및 원하는 확산 펑션들을 제공하도록 프로세서 CPU (210) 와 통합된다. 일부 배열들에 있어서, EEPROM (711) 은 가상 섹터들의 수 (예를 들어, 7), 물리 통신 채널들의 수 (예를 들어, 4), 및 메모리 공간 (740) 에 걸쳐 데이터를 확산할 경우에 사용하기 위한 데이터 전송 레이트들 (229 MHz, 457 MHz) 을 식별하는 하나 이상의 파라미터들을 포함할 것이다.
도시된 실시형태들이 홀수의 메모리 모듈들 상으로 분배된 홀수의 가상 섹터들 및 짝수의 채널들을 포함하지만, 다중의 채널들에 걸쳐 비대칭 메모리 용량을 발생하는 다수의 다른 배열들이 가능하다. 예를 들어, 짝수의 메모리 모듈들이 홀수의 채널들에 걸쳐 전개될 수 있다. 하나의 그러한 배열에 있어서, 4개의 전체 메모리 모듈들은 3개 채널들에 걸쳐 분배될 수도 있다 (1:1:2, 1:2:1, 또는 2:1:1). 메모리 모듈들이 동일한 저장 용량을 공유할 경우, 가상 섹터들의 수는 메모리 모듈들의 저장 용량보다 작거나 같을 수도 있다. 추가의 예로서, 채널들에 걸친 저장 용량에서의 비대칭성은 짝수의 채널들에 걸쳐 상이한 저장 용량들을 갖는 메모리 모듈들을 전개하는 결과일 수 있다. 하나의 그러한 배열에 있어서, 1GB 의 저장 용량을 갖는 제 1 메모리 모듈은 제 1 채널에 커플링되고, 2GB 의 저장 용량을 갖는 제 2 메모리 모듈은 제 2 채널에 커플링된다. 이러한 배열에 있어서, 인터리버 펑션은 각각 1GB 의 3개 가상 섹터들에 걸쳐 데이터를 동일하게 분배함으로써 응답할 수도 있다. 다중의 채널들에 걸쳐 분배된 비대칭 저장 용량들을 갖는 이들 및 다른 배열들은 설명된 인터리빙 펑션들, 및 컴퓨팅 디바이스에서의 가용 저장부에 액세스하기 위해 가상 섹터들을 사용하는 것을 이용하는 다른 펑션들에 의해 개선될 수 있다.
도 8 은 비-균일 저장 용량을 갖는 메모리 공간의 물리 채널들에 걸쳐 메모리 액세스들을 균일하게 인터리빙하기 위한 방법 (800) 의 예시적인 실시형태를 도시한 플로우차트이다. 블록 802 에 있어서, 컴퓨팅 시스템과 연관된 메모리 제어기 또는 다른 센서는 메모리 공간이 CPU (210) 와 시스템 메모리 사이의 다중의 물리 채널들에 걸쳐 비-균일 데이터 저장 용량을 포함할 때를 식별한다. 블록 804 에 있어서, 프로그래밍가능 인터리버 또는 인터리버 로직은 메모리 공간에서의 원하는 저장 용량의 가상 섹터들의 세트를 식별한다. 블록 806 에 있어서, 인터리버 또는 인터리버 로직은 메모리 공간에서의 가상 섹터들 또는 가상 섹터들의 일부에 걸쳐 균일한 방식으로 메모리 공간에 액세스하기 위한 요청들에 응답한다. 판정 블록 808 에 있어서, 인터리버 또는 인터리버 로직을 사용하여 메모리 공간에 액세스하기 위한 요청들을 계속 프로세싱하는지에 대해 결정이 행해진다. 그 응답이 "예" 로 라벨링된 플로우 제어 화살표에 의해 나타낸 바와 같이 긍정적일 경우, 블록 806 및 808 에서의 기능들이 반복된다. 그렇지 않으면, 판정 블록 808 을 나가는 "아니오" 로 라벨링된 플로우 제어 화살표에 의해 나타낸 바와 같이, 방법 800 이 종료한다.
본 명세서에 설명된 프로세스들 또는 프로세스 플로우들에서의 특정 단계들은 자연스럽게, 본 발명이 설명된 바와 같이 기능하도록 다른 것들보다 선행한다. 하지만, 본 발명은, 그러한 순서 또는 시퀀스가 본 발명의 기능을 변경하지 않는다면, 설명된 단계들의 순서로 한정되지 않는다. 즉, 일부 단계들은 본 발명의 범위로부터 일탈함없이 다른 단계들 이전에, 그 이후에 또는 그와 병렬로 (실질적으로 동시에) 수행될 수도 있음이 인식된다. 일부 경우들에 있어서, 특정 단계들은 본 발명으로부터 일탈함없이 생략되거나 또는 수행되지 않을 수도 있다. 추가로, "그 이후", "그 후", "다음으로", "후속적으로" 등과 같은 단어들은 단계들의 순서를 한정하도록 의도되지 않는다. 이들 단어들은 단순히, 예시적인 방법의 설명을 통해 독자를 가이드하기 위해 사용된다.
부가적으로, 프로그래밍에 있어서의 당업자는, 예를 들어, 본 명세서에 있어서의 플로우 차트들 및 관련 설명에 기초하여 어려움없이, 개시된 발명을 구현하기 위해 컴퓨터 코드를 기입하거나 적절한 하드웨어 및/또는 회로들을 식별할 수 있다. 따라서, 프로그램 코드 명령들 또는 상세한 하드웨어 디바이스들의 특정 세트의 개시는 본 발명을 제조 및 이용하는 방법의 적절한 이해에 필수적인 것으로 고려되지 않는다. 청구된 프로세서 가능식 프로세스들의 본 발명의 기능은, 다양한 프로세스 플로우들을 예시할 수도 있는 도면들과 함께 상기 설명에서 더 상세히 설명된다.
상기 나타낸 바와 같은 하나 이상의 예시적인 양태들에 있어서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어에서 구현된다면, 그 기능들은 하나 이상의 명령들 또는 코드로서 비-일시적인 프로세서 판독가능 매체와 같은 컴퓨터 판독가능 매체 상에 저장될 수도 있다. 컴퓨터 판독가능 매체는 데이터 저장 매체를 포함한다.
저장 매체는, 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 임의의 가용 매체일 수도 있다. 한정이 아닌 예로서, 그러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장부, 자기 디스크 저장부 또는 다른 자기 저장 디바이스들, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 수록 또는 저장하는데 이용될 수도 있고 컴퓨터에 의해 액세스될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 본 명세서에서 사용된 바와 같은 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 ("CD"), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 ("DVD"), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서, 디스크 (disk) 는 통상적으로 데이터를 자기적으로 재생하지만 디스크 (disc) 는 레이저를 이용하여 데이터를 광학적으로 재생한다. 상기의 조합들이 또한, 비-일시적인 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
비록 선택된 양태들이 상세히 도시 및 설명되었지만, 다양한 치환들 및 변경들이 다음의 청구항들에 의해 정의되는 바와 같은 본 시스템들 및 방법들로부터 일탈함없이 본 명세서에서 행해질 수도 있음이 이해될 것이다.

Claims (47)

  1. 물리 채널들에 걸쳐 비-균일 저장 용량을 갖는 메모리 공간으로의 메모리 액세스들을 균일하게 인터리빙하기 위한 방법으로서,
    다중 채널 메모리 아키텍처에 상기 물리 채널들에 걸쳐 비대칭 저장 용량이 제공될 때를 식별하는 단계;
    상기 식별하는 것에 응답하는 로직을 사용하여 동일한 용량의 가상 섹터들의 수를 정의하는 단계; 및
    상기 메모리 공간에 액세스하기 위한 요청들에 응답하여 상기 가상 섹터들에 걸쳐 상기 비대칭 저장 용량에 균일하게 액세스하는 인터리빙 펑션을 인터리버를 통해 적용하는 단계를 포함하는, 메모리 공간으로의 메모리 액세스들을 균일하게 인터리빙하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 물리 채널들의 수는 짝수이고, 상기 동일한 용량의 가상 섹터들의 수는 홀수인, 메모리 공간으로의 메모리 액세스들을 균일하게 인터리빙하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 물리 채널들의 수는 홀수이고, 상기 동일한 용량의 가상 섹터들의 수는 짝수인, 메모리 공간으로의 메모리 액세스들을 균일하게 인터리빙하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 인터리빙 펑션을 적용하는 단계는 확산 펑션을 적용하는 단계를 포함하는, 메모리 공간으로의 메모리 액세스들을 균일하게 인터리빙하기 위한 방법.
  5. 제 4 항에 있어서,
    상기 확산 펑션은 상기 메모리 공간 상으로의 물리 채널들 간의 정의된 비율로 메모리 액세스들을 동적으로 분배하는, 메모리 공간으로의 메모리 액세스들을 균일하게 인터리빙하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 동일한 용량의 가상 섹터들의 수는 프로그래밍가능한, 메모리 공간으로의 메모리 액세스들을 균일하게 인터리빙하기 위한 방법.
  7. 제 1 항에 있어서,
    상기 동일한 용량의 가상 섹터들의 수는 상기 메모리 공간을 지원하는 메모리 모듈들의 수보다 수적으로 더 적은, 메모리 공간으로의 메모리 액세스들을 균일하게 인터리빙하기 위한 방법.
  8. 제 1 항에 있어서,
    상기 동일한 용량의 가상 섹터들의 수는 상기 메모리 공간을 지원하는 메모리 모듈들의 수보다 더 큰, 메모리 공간으로의 메모리 액세스들을 균일하게 인터리빙하기 위한 방법.
  9. 제 1 항에 있어서,
    상기 메모리 공간은 동일한 저장 용량의 홀수의 메모리 모듈들에 의해 지원되는, 메모리 공간으로의 메모리 액세스들을 균일하게 인터리빙하기 위한 방법.
  10. 제 1 항에 있어서,
    상기 메모리 공간은, 적어도 하나의 메모리 모듈이 나머지 메모리 모듈들의 저장 용량과는 상이한 저장 용량을 갖는 짝수의 메모리 모듈들에 의해 지원되는, 메모리 공간으로의 메모리 액세스들을 균일하게 인터리빙하기 위한 방법.
  11. 제 1 항에 있어서,
    상기 메모리 공간에 액세스하는 동작들은, 비-인터리빙된 데이터 전송 레이트를 초과하는 물리 채널들 각각에 대한 데이터 전송 레이트로 지원되는, 메모리 공간으로의 메모리 액세스들을 균일하게 인터리빙하기 위한 방법.
  12. 제 1 항에 있어서,
    제 1 물리 채널을 통해 상기 메모리 공간에 액세스하는 동작들은 제 1 데이터 전송 레이트로 지원되고, 제 2 물리 채널을 통해 상기 메모리 공간에 액세스하는 동작들은 상기 제 1 데이터 전송 레이트와는 상이한 제 2 데이터 전송 레이트로 지원되는, 메모리 공간으로의 메모리 액세스들을 균일하게 인터리빙하기 위한 방법.
  13. 제 12 항에 있어서,
    상기 제 1 데이터 전송 레이트는 상기 제 2 데이터 전송 레이트의 함수인, 메모리 공간으로의 메모리 액세스들을 균일하게 인터리빙하기 위한 방법.
  14. 제 13 항에 있어서,
    상기 제 1 데이터 전송 레이트 및 상기 제 2 데이터 전송 레이트는 물리 채널에 의해 지원된 가상 섹터들의 수에 기초하여 결정되는, 메모리 공간으로의 메모리 액세스들을 균일하게 인터리빙하기 위한 방법.
  15. 컴퓨팅 디바이스로서,
    프로세서 및 시스템 메모리와 통신하는 버스 상에 배열된 인터리버로서, 상기 인터리버는 적어도 2개의 물리 채널들에 의해 지원된 메모리 공간에서의 위치들을 식별하도록 구성되고, 상기 인터리버는, 원하는 저장 용량을 갖는 가상 섹터들을 식별하는 로직에 응답하는, 상기 인터리버; 및
    상기 적어도 2개의 물리 채널들에 각각 커플링된 적어도 하나의 메모리 모듈로서, 상기 메모리 공간은 상기 물리 채널들 사이에서 비-균일 저장 용량을 갖고, 상기 인터리버는 상기 메모리 공간에 액세스하기 위한 요청들에 응답하여 상기 가상 섹터들에 걸쳐 상기 비-균일 저장 용량에 균일하게 액세스하는, 상기 적어도 하나의 메모리 모듈을 포함하는, 컴퓨팅 디바이스.
  16. 제 15 항에 있어서,
    상기 적어도 2개의 물리 채널들에 상기 적어도 2개의 물리 채널들 간의 상이한 저장 용량이 제공될 때를 상기 인터리버에게 시그널링하는 메모리 제어기를 더 포함하는, 컴퓨팅 디바이스.
  17. 제 15 항에 있어서,
    상기 인터리버는 N방향 확산 펑션을 적용하고, 상기 N 은 정수이고, 상기 N방향 확산 펑션은 상기 메모리 공간 상으로의 물리 채널들 간의 정의된 비율로 메모리 액세스들을 동적으로 분배하는, 컴퓨팅 디바이스.
  18. 제 15 항에 있어서,
    동일한 용량의 가상 섹터들의 수는 상기 프로세서에서 수신된 파라미터에 응답하는, 컴퓨팅 디바이스.
  19. 제 15 항에 있어서,
    동일한 용량의 가상 섹터들의 수는 상기 메모리 공간을 지원하는 메모리 모듈들의 수보다 수적으로 더 적은, 컴퓨팅 디바이스.
  20. 제 15 항에 있어서,
    상기 메모리 공간은 동일한 저장 용량의 홀수의 메모리 모듈들에 의해 지원되는, 컴퓨팅 디바이스.
  21. 제 15 항에 있어서,
    상기 메모리 공간에 액세스하는 동작들은, 비-인터리빙된 데이터 전송 레이트를 초과하는 물리 채널들 각각에 대한 데이터 전송 레이트로 지원되는, 컴퓨팅 디바이스.
  22. 제 15 항에 있어서,
    제 1 물리 채널을 통해 상기 메모리 공간에 액세스하는 동작들은 제 1 데이터 전송 레이트로 지원되고, 제 2 물리 채널을 통해 상기 메모리 공간에 액세스하는 동작들은 상기 제 1 데이터 전송 레이트와는 상이한 제 2 데이터 전송 레이트로 지원되는, 컴퓨팅 디바이스.
  23. 제 15 항에 있어서,
    제 1 데이터 전송 레이트는 물리 채널들의 제 1 세트에 걸쳐 적용되고, 제 2 데이터 전송 레이트는 물리 채널들의 제 2 세트에 걸쳐 적용되는, 컴퓨팅 디바이스.
  24. 제 23 항에 있어서,
    상기 제 1 데이터 전송 레이트 및 상기 제 2 데이터 전송 레이트는 물리 메모리 채널에 의해 지원된 가상 섹터들의 수의 함수로서 결정되는, 컴퓨팅 디바이스.
  25. 컴퓨팅 디바이스로서,
    다중 채널 메모리 액세스 아키텍처에 걸쳐 비-균일 저장 용량으로 배열된 메모리 공간을 식별하는 수단;
    상기 메모리 공간에서 동일한 저장 용량의 가상 섹터들의 수를 식별하는 수단; 및
    상기 메모리 공간에 액세스하기 위한 요청들에 응답하여 상기 가상 섹터들에 균일하게 액세스하는 인터리빙 펑션을 적용하는 수단을 포함하는, 컴퓨팅 디바이스.
  26. 제 25 항에 있어서,
    상기 메모리 공간은 정수의 메모리 모듈들에 의해 지원되는, 컴퓨팅 디바이스.
  27. 제 26 항에 있어서,
    적어도 하나의 메모리 모듈은, 나머지 메모리 모듈들의 저장 용량과는 상이한 저장 용량을 갖는, 컴퓨팅 디바이스.
  28. 제 25 항에 있어서,
    상기 인터리빙 펑션을 적용하는 수단은 N방향 확산 펑션을 적용하고, 상기 N 은 정수인, 컴퓨팅 디바이스.
  29. 제 28 항에 있어서,
    상기 N방향 확산 펑션은 상기 메모리 공간 상으로의 물리 채널들 간의 정의된 비율로 메모리 액세스들을 동적으로 분배하는, 컴퓨팅 디바이스.
  30. 제 25 항에 있어서,
    동일한 용량의 가상 섹터들의 수는 프로세서에서 수신된 파라미터에 응답하는, 컴퓨팅 디바이스.
  31. 제 25 항에 있어서,
    동일한 용량의 가상 섹터들의 수는 상기 메모리 공간을 지원하는 메모리 모듈들의 수보다 수적으로 더 적은, 컴퓨팅 디바이스.
  32. 제 25 항에 있어서,
    상기 메모리 공간은 동일한 저장 용량의 홀수의 메모리 모듈들에 의해 지원되는, 컴퓨팅 디바이스.
  33. 제 25 항에 있어서,
    상기 메모리 공간에 액세스하는 동작들은, 비-인터리빙된 데이터 전송 레이트를 초과하는 물리 채널들 각각에 대한 데이터 전송 레이트로 지원되는, 컴퓨팅 디바이스.
  34. 제 25 항에 있어서,
    제 1 물리 채널을 통해 상기 메모리 공간에 액세스하는 동작들은 제 1 데이터 전송 레이트로 지원되고, 제 2 물리 채널을 통해 상기 메모리 공간에 액세스하는 동작들은 상기 제 1 데이터 전송 레이트와는 상이한 제 2 데이터 전송 레이트로 지원되는, 컴퓨팅 디바이스.
  35. 제 34 항에 있어서,
    상기 제 1 데이터 전송 레이트는 상기 제 2 데이터 전송 레이트의 함수인, 컴퓨팅 디바이스.
  36. 제 25 항에 있어서,
    제 1 데이터 전송 레이트는 물리 채널들의 제 1 세트에 걸쳐 적용되고, 제 2 데이터 전송 레이트는 물리 채널들의 제 2 세트에 걸쳐 적용되는, 컴퓨팅 디바이스.
  37. 제 36 항에 있어서,
    상기 제 1 데이터 전송 레이트 및 상기 제 2 데이터 전송 레이트는 물리 채널에 의해 지원된 가상 섹터들의 수의 함수로서 결정되는, 컴퓨팅 디바이스.
  38. 실행될 경우, 프로세서로 하여금 펑션들을 수행하게 하는 프로세서 명령들이 저장된 비-일시적인 프로세서 판독가능 매체로서,
    다중의 채널들에 걸쳐 비대칭 저장 용량을 제공하는 메모리 모듈들이 다중 채널 메모리 아키텍처에 현재 정주된다는 표시를 수신하는 것;
    상기 표시에 응답하여, 동일한 용량의 가상 섹터들의 수를 식별하는 것; 및
    메모리 공간에 액세스하기 위한 요청들에 응답하여 상기 가상 섹터들에 걸쳐 상기 비대칭 저장 용량에 균일하게 액세스하는 인터리빙 펑션을 적용하는 것을 포함하는, 비-일시적인 프로세서 판독가능 매체.
  39. 제 38 항에 있어서,
    적어도 하나의 메모리 모듈은, 나머지 메모리 모듈들의 저장 용량과는 상이한 저장 용량을 갖는, 비-일시적인 프로세서 판독가능 매체.
  40. 제 38 항에 있어서,
    상기 인터리빙 펑션을 적용하는 것은 N방향 확산 펑션을 적용하는 것을 포함하는, 비-일시적인 프로세서 판독가능 매체.
  41. 제 40 항에 있어서,
    상기 N방향 확산 펑션은 상기 메모리 공간 상으로의 물리 채널들 간의 정의된 비율로 메모리 액세스들을 동적으로 분배하는, 비-일시적인 프로세서 판독가능 매체.
  42. 제 38 항에 있어서,
    상기 동일한 용량의 가상 섹터들의 수는 프로그래밍가능한, 비-일시적인 프로세서 판독가능 매체.
  43. 제 42 항에 있어서,
    상기 동일한 용량의 가상 섹터들의 수는 상기 메모리 공간을 지원하는 메모리 모듈들의 수보다 수적으로 더 적은, 비-일시적인 프로세서 판독가능 매체.
  44. 제 38 항에 있어서,
    상기 메모리 공간은 동일한 저장 용량의 홀수의 메모리 모듈들에 의해 지원되는, 비-일시적인 프로세서 판독가능 매체.
  45. 제 38 항에 있어서,
    상기 메모리 공간에 액세스하는 동작들은, 비-인터리빙된 데이터 전송 레이트를 초과하는 물리 채널들 각각에 대한 데이터 전송 레이트로 지원되는, 비-일시적인 프로세서 판독가능 매체.
  46. 제 38 항에 있어서,
    제 1 물리 채널을 통해 상기 메모리 공간에 액세스하는 동작들은 제 1 데이터 전송 레이트로 지원되고, 제 2 물리 채널을 통해 상기 메모리 공간에 액세스하는 동작들은 상기 제 1 데이터 전송 레이트와는 상이한 제 2 데이터 전송 레이트로 지원되는, 비-일시적인 프로세서 판독가능 매체.
  47. 제 46 항에 있어서,
    상기 제 1 데이터 전송 레이트는 물리 채널들의 제 1 세트에 걸쳐 적용되고, 상기 제 2 데이터 전송 레이트는 물리 채널들의 제 2 세트에 걸쳐 적용되는, 비-일시적인 프로세서 판독가능 매체.
KR1020167011540A 2013-10-03 2014-10-03 비대칭 저장 용량을 갖는 다중 채널 메모리 아키텍처에 걸친 데이터의 균일한 인터리빙을 위한 시스템 및 방법 KR20160064223A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/045,784 2013-10-03
US14/045,784 US9465735B2 (en) 2013-10-03 2013-10-03 System and method for uniform interleaving of data across a multiple-channel memory architecture with asymmetric storage capacity
PCT/US2014/058946 WO2015051201A1 (en) 2013-10-03 2014-10-03 System and method for uniform interleaving of data across a multiple-channel memory architecture with asymmetric storage capacity

Publications (1)

Publication Number Publication Date
KR20160064223A true KR20160064223A (ko) 2016-06-07

Family

ID=51842833

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167011540A KR20160064223A (ko) 2013-10-03 2014-10-03 비대칭 저장 용량을 갖는 다중 채널 메모리 아키텍처에 걸친 데이터의 균일한 인터리빙을 위한 시스템 및 방법

Country Status (8)

Country Link
US (1) US9465735B2 (ko)
EP (1) EP3053044B1 (ko)
JP (1) JP6378325B2 (ko)
KR (1) KR20160064223A (ko)
CN (1) CN105612501B (ko)
BR (1) BR112016007344A2 (ko)
CA (1) CA2925131A1 (ko)
WO (1) WO2015051201A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180015565A (ko) * 2016-08-03 2018-02-13 삼성전자주식회사 메모리 모듈 및 그것의 동작 방법

Families Citing this family (151)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US20150169445A1 (en) 2013-12-12 2015-06-18 International Business Machines Corporation Virtual grouping of memory
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9367243B1 (en) * 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
KR102355573B1 (ko) * 2014-10-29 2022-01-27 삼성전자주식회사 선형 리맵퍼 및 액세스 윈도우를 포함하는 메모리 시스템 및 시스템 온 칩
US9720825B2 (en) * 2014-12-19 2017-08-01 Dell Products, Lp System and method for performance optimal partial rank/bank interleaving for non-symmetrically populated DIMMs across DDR channels
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US9697884B2 (en) * 2015-10-08 2017-07-04 Rambus Inc. Variable width memory module supporting enhanced error detection and correction
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US11762764B1 (en) 2015-12-02 2023-09-19 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US9760479B2 (en) * 2015-12-02 2017-09-12 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US10140223B2 (en) 2016-06-27 2018-11-27 Qualcomm Incorporated System and method for odd modulus memory channel interleaving
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US10642733B1 (en) * 2018-07-12 2020-05-05 Lightbits Labs Ltd. System and method for memory interface load balancing
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
CN112513824B (zh) * 2018-07-31 2024-04-09 华为技术有限公司 一种内存交织方法及装置
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US10783025B2 (en) 2018-10-15 2020-09-22 Dell Products, L.P. Method and apparatus for predictive failure handling of interleaved dual in-line memory modules
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US10990517B1 (en) * 2019-01-28 2021-04-27 Xilinx, Inc. Configurable overlay on wide memory channels for efficient memory access
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
TWI692774B (zh) 2019-05-15 2020-05-01 瑞昱半導體股份有限公司 記憶體系統及記憶體系統的操作方法
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
CN112395216A (zh) * 2019-07-31 2021-02-23 北京百度网讯科技有限公司 用于存储管理的方法、装置、设备和计算机可读存储介质
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11137936B2 (en) * 2020-01-21 2021-10-05 Google Llc Data processing on memory controller
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11222258B2 (en) 2020-03-27 2022-01-11 Google Llc Load balancing for memory channel controllers
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
EP4189548A1 (en) * 2020-08-03 2023-06-07 ARRIS Enterprises LLC Gateway device with clock speed that reduces electro-magnetic noise
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
WO2022160214A1 (zh) * 2021-01-28 2022-08-04 华为技术有限公司 一种访问内存的方法和装置
CN116472520A (zh) * 2021-01-30 2023-07-21 华为技术有限公司 一种访问内存的方法和装置
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
WO2023122127A1 (en) * 2021-12-21 2023-06-29 Sambanova Systems Inc Non-uniform memory interleaving processor and method
CN114661711B (zh) * 2022-03-11 2023-08-29 上海原能细胞生物低温设备有限公司 样本存储位置分配方法、装置、电子设备及存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5341486A (en) * 1988-10-27 1994-08-23 Unisys Corporation Automatically variable memory interleaving system
JPH11338768A (ja) * 1998-05-22 1999-12-10 Nec Kofu Ltd メモリ制御方法、メモリ制御装置及びその記録媒体
US7114040B2 (en) 2004-03-02 2006-09-26 Hewlett-Packard Development Company, L.P. Default locality selection for memory objects based on determining the type of a particular memory object
US8806103B2 (en) 2004-04-28 2014-08-12 Hewlett-Packard Development Company, L.P. System and method for interleaving memory
TWI299497B (en) * 2004-06-24 2008-08-01 Via Tech Inc Method and related apparatus for accessing memory apparatus
JP2006018489A (ja) * 2004-06-30 2006-01-19 Hitachi Ltd 複数ノード間のメモリインターリーブシステム
US8443162B2 (en) * 2005-01-21 2013-05-14 Qualcomm Incorporated Methods and apparatus for dynamically managing banked memory
US20070022261A1 (en) 2005-07-19 2007-01-25 Gateway Inc. Method of interleaving asymmetric memory arrays
US7552280B1 (en) * 2006-06-28 2009-06-23 Emc Corporation Asymmetrically interleaving access to redundant storage devices
US20080250212A1 (en) 2007-04-09 2008-10-09 Ati Technologies Ulc Method and apparatus for accessing memory using programmable memory accessing interleaving ratio information
US8095735B2 (en) 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US8271827B2 (en) 2007-12-10 2012-09-18 Qimonda Memory system with extended memory density capability
US20100115233A1 (en) * 2008-10-31 2010-05-06 Convey Computer Dynamically-selectable vector register partitioning
US8266408B2 (en) 2009-03-17 2012-09-11 Memoir Systems, Inc. System and method for storing data in a virtualized high speed memory system
US8886898B2 (en) 2009-08-19 2014-11-11 Oracle America, Inc. Efficient interleaving between a non-power-of-two number of entities
US9268720B2 (en) * 2010-08-31 2016-02-23 Qualcomm Incorporated Load balancing scheme in multiple channel DRAM systems
US9529712B2 (en) * 2011-07-26 2016-12-27 Nvidia Corporation Techniques for balancing accesses to memory having different memory types

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180015565A (ko) * 2016-08-03 2018-02-13 삼성전자주식회사 메모리 모듈 및 그것의 동작 방법

Also Published As

Publication number Publication date
US20150100746A1 (en) 2015-04-09
EP3053044A1 (en) 2016-08-10
CN105612501B (zh) 2018-11-13
CA2925131A1 (en) 2015-04-09
JP2016532926A (ja) 2016-10-20
US9465735B2 (en) 2016-10-11
BR112016007344A2 (pt) 2017-08-01
WO2015051201A1 (en) 2015-04-09
EP3053044B1 (en) 2019-11-20
CN105612501A (zh) 2016-05-25
JP6378325B2 (ja) 2018-08-22

Similar Documents

Publication Publication Date Title
KR20160064223A (ko) 비대칭 저장 용량을 갖는 다중 채널 메모리 아키텍처에 걸친 데이터의 균일한 인터리빙을 위한 시스템 및 방법
EP3030949B1 (en) System and method for memory channel interleaving with selective power or performance optimization
US9110795B2 (en) System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components
US9092327B2 (en) System and method for allocating memory to dissimilar memory devices using quality of service
US7730261B1 (en) Multicore memory management system
KR101952562B1 (ko) 홀수 계수 메모리 채널 인터리빙을 위한 시스템 및 방법
US20150089112A1 (en) System and method for conserving memory power using dynamic memory i/o resizing
US20170109090A1 (en) System and method for page-by-page memory channel interleaving
US9747038B2 (en) Systems and methods for a hybrid parallel-serial memory access
US20170108914A1 (en) System and method for memory channel interleaving using a sliding threshold address
US20170108911A1 (en) System and method for page-by-page memory channel interleaving
EP3427153B1 (en) Multi-rank collision reduction in a hybrid parallel-serial memory system

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination