KR101627478B1 - 비대칭 메모리 컴포넌트들을 구비한 메모리 서브시스템에서 메모리를 동적으로 할당하는 시스템 및 방법 - Google Patents

비대칭 메모리 컴포넌트들을 구비한 메모리 서브시스템에서 메모리를 동적으로 할당하는 시스템 및 방법 Download PDF

Info

Publication number
KR101627478B1
KR101627478B1 KR1020157017667A KR20157017667A KR101627478B1 KR 101627478 B1 KR101627478 B1 KR 101627478B1 KR 1020157017667 A KR1020157017667 A KR 1020157017667A KR 20157017667 A KR20157017667 A KR 20157017667A KR 101627478 B1 KR101627478 B1 KR 101627478B1
Authority
KR
South Korea
Prior art keywords
memory
memory subsystem
interleaved
subsystem
performance
Prior art date
Application number
KR1020157017667A
Other languages
English (en)
Other versions
KR20150095724A (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
Priority claimed from US13/726,537 external-priority patent/US8959298B2/en
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20150095724A publication Critical patent/KR20150095724A/ko
Application granted granted Critical
Publication of KR101627478B1 publication Critical patent/KR101627478B1/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

Abstract

메모리 서브시스템을 동적으로 할당하는 시스템들 및 방법들이 제공된다. 예시적인 실시형태는 휴대용 컴퓨팅 디바이스에서 메모리 서브시스템을 동적으로 할당하는 방법을 포함한다. 방법은 비대칭 메모리 용량들을 갖는 메모리 컴포넌트들을 구비한 메모리 서브시스템의 제 1 부분을 완전히 인터리빙하는 단계를 수반한다. 메모리 서브시스템의 제 2 남은 부분은 인터리브 대역폭 비율에 따라 부분적으로 인터리빙된다. 메모리 서브시스템의 제 1 부분은 하나 이상의 고성능 메모리 클라이언트들에 할당된다. 제 2 남은 부분은 하나 이상의 상대적으로 저성능 메모리 클라이언트들에 할당된다.

Description

비대칭 메모리 컴포넌트들을 구비한 메모리 서브시스템에서 메모리를 동적으로 할당하는 시스템 및 방법{SYSTEM AND METHOD FOR DYNAMICALLY ALLOCATING MEMORY IN A MEMORY SUBSYSTEM HAVING ASYMMETRIC MEMORY COMPONENTS}
우선권 및 관련 출원들 서술
본 출원은, 2012 년 12 월 10 일에 출원되고, 발명의 명칭이 "System and Method for Managing Performance of a Computing Device Having Dissimilar Memory Types" 로 양도된 미국 가출원 제 61/735,352 (Docket No. 123065P1) 호에 대해 35 U.S.C. 119(e) 에 따라 우선권을 주장하는, 2012 년 12 월 24 일에 출원되고, 발명의 명칭이 "System and Method for Managing Performance of a Computing Device Having Dissimilar Memory Types (Docket No. 123065U1)" 인 계류 중인 미국 특허 출원 제 13/726,537 호의 부분 계속 특허 출원이다.
시스템 성능 및 전력 요구사항들은 컴퓨터 시스템들 및 디바이스들, 특히, 휴대용 컴퓨팅 디바이스 (PCD) 들, 예컨대, 셀룰러 전화기들, 휴대용 정보 단말기 (PDA) 들, 휴대용 게임 콘솔들, 팜탑 컴퓨터들, 태블릿 컴퓨터들, 및 다른 휴대용 전자 디바이스들에서 점점 더 요구가 많아지고 있다. 그러한 디바이스들은 특정 목적을 위해 최적화된 2 개 이상의 유형의 프로세싱 유닛들을 포함할 수도 있다. 예를 들어, 하나 이상의 중앙 프로세싱 유닛 (CPU) 들은 일반적인 시스템 레벨 성능 및 다른 목적들에 이용될 수도 있는 반면, 그래픽 프로세싱 유닛 (GPU) 은 디스플레이 디바이스에 출력하기 위한 컴퓨터 그래픽들을 조작하기 위해 특정하게 설계될 수도 있다. 각각의 프로세서가 보다 많은 성능을 요구함에 따라, 각각의 프로세서의 특정 목적(들)을 가능하게 하도록 설계된 보다 빠르고 보다 특수화된 메모리 디바이스들에 대한 필요가 있다. 메모리 아키텍쳐들은 통상적으로 특정 애플리케이션에 대해 최적화된다. CPU 들은 수용가능한 시스템 레벨 성능을 갖는 고밀도 메모리를 요구할 수도 있는 한편, GPU 들은 CPU 들보다 대체로 높은 성능을 갖는 상대적으로 저밀도 메모리를 요구할 수도 있다.
그 결과, PCD 와 같은 단일 컴퓨터 디바이스는 그것의 특수 목적을 위해 최적화되고 특정 프로세싱 유닛과 페어링되고 특정 프로세싱 유닛에 전용된 각각의 특수화된 메모리 디바이스를 갖는 2 개 이상의 상이한 메모리 디바이스들을 포함할 수도 있다. ("이산" 아키텍쳐라고 지칭되는) 이러한 종래의 아키텍쳐에서, 각각의 전용 프로세싱 유닛은 대응하는 메모리 채널을 각각 갖는 복수의 물리적/제어 계층들을 통해 다른 유형의 메모리 디바이스에 물리적으로 커플링된다. 각각의 전용 프로세싱 유닛은 그것의 의도한 목적에 최적화된 다른 데이터 레이트로 대응하는 메모리 디바이스에 물리적으로 액세스한다. 예를 들어, 일 예시적인 구성에서, 범용 CPU 는 최적화된 데이터 대역폭 (예를 들어, 17Gb/s) 에서 제 1 유형의 동적 랜덤 액세스 메모리 (DRAM) 디바이스에 물리적으로 액세스할 수도 있다. 보다 높은 성능의 전용 GPU 는 보다 높은 대역폭 (예를 들어, 34Gb/s) 에서 제 2 유형의 DRAM 디바이스에 물리적으로 액세스할 수도 있다. 이산 아키텍쳐는 CPU 및 GPU 의 성능을 개별적으로 최적화하지만, 다수의 상당한 단점들이 있다.
보다 높은 성능을 획득하기 위해, GPU 전용 메모리는 모든 잠재적인 이용 경우들, 디스플레이 해상도들, 및 시스템 설정들을 처리하도록 사이즈가 정해지고 구성되어야 한다. 또한, 보다 높은 성능은 오직 GUP 만이 보다 높은 데이터 대역폭에서 GPU 전용 메모리에 물리적으로 액세스할 수 있기 때문에 "로컬화된다". CPU 가 GPU 전용 메모리에 액세스할 수 있고 GPU 가 CPU 전용 메모리에 액세스할 수 있기는 하나, 이산 아키텍쳐는 감소된 데이터 대역폭에서 GUP 와 CPU 사이의 물리적 상호접속 버스 (예를 들어, 주변 컴포넌트 상호접속 익스프레스 (Peripheral Component Interconnect Express; PCIE)) 를 통해 이러한 접속을 제공하며, 감소된 데이터 대역폭은 보통 어느 유형의 메모리 디바이스에 대해서도 덜 최적화된 대역폭이다. GPU 와 CPU 사이의 물리적 상호접속 버스가 성능 "병목구간" 으로서 기능하지 않을지라도, 이산 아키텍쳐는 GPU 또는 CPU 중 어느 일방이 2 개의 다른 유형의 메모리 디바이스들의 결합된 전체 이용가능한 대역폭의 혜택을 취하는 것을 허락하지 않는다. 각각의 메모리 디바이스들의 메모리 공간들은 메모리 어드레스들의 별도의 인접한 블록들에 위치된다. 다시 말해, 전체 메모리 맵은 하나의 인접한 블록에 제 1 유형의 메모리 디바이스를 위치시키고 다른 인접한 블록에 제 2 유형의 메모리 디바이스를 별도로 위치시킨다. 동일한 인접한 블록 내에 있는 물리적 액세스를 지원하기 위한 다른 메모리 디바이스들의 메모리 포트들 사이의 하드웨어 조정은 없다.
이에 따라, 점점 더 증가하는 시스템 및 전력 성능을 제공하도록 컴퓨터 시스템들에 보다 특수화된 메모리 디바이스들에 대한 증가하는 요구가 있는 한편, 상이한 메모리 디바이스들을 관리하기 위한 개선된 시스템들 및 방법들에 대한 기술의 필요가 있다.
예시적인 실시형태는 휴대용 컴퓨팅 디바이스에서 메모리 서브시스템을 동적으로 할당하는 방법을 포함한다. 방법은 비대칭 메모리 용량들을 갖는 메모리 컴포넌트들을 구비한 메모리 서브시스템의 제 1 부분을 완전히 인터리빙하는 단계를 수반한다. 메모리 서브시스템의 제 2 남은 부분은 인터리브 대역폭 비율에 따라 부분적으로 인터리빙된다. 메모리 서브시스템의 제 1 부분은 하나 이상의 고성능 메모리 클라이언트들에 할당된다. 제 2 남은 부분은 하나 이상의 상대적으로 저성능 메모리 클라이언트들에 할당된다.
도면들에서, 달리 나타내어지지 않는 한 유사한 도면 번호들은 다양한 도면들에 걸쳐 유사한 부분들을 지칭한다. "102A" 또는 "102B" 와 같이 문자 명칭들을 갖는 도면 번호들에 있어서, 문자 명칭들은 동일한 도면에 있는 2 개의 유사한 부분들 또는 엘리먼트들을 구별지을 수도 있다. 도면 번호들에 대한 문자 명칭들은 도면 번호가 모든 도면들에서 동일한 도면 번호를 갖는 모든 부분들을 망라하고자 하는 경우 생략될 수도 있다.
도 1 은 상이한 메모리 디바이스들을 관리하는 시스템의 일 실시형태의 일 블록도이다.
도 2 는 상이한 메모리 디바이스들을 관리하기 위한 도 1 에서의 메모리 채널 최적화 모듈에 의해 수행되는 방법의 일 실시형태의 플로차트이다.
도 3 은 다양한 유형의 상이한 메모리 디바이스들에 대한 인터리브 대역폭 비율을 도시하는 예시적인 테이블이다.
도 4 는 도 1 의 메모리 채널 최적화 모듈의 컴포넌트들을 도시하는 블록도이다.
도 5 는 다양한 인터리브 대역폭 비율들에 기초한 메모리 채널 어드레스 재맵핑을 도시하는 예시적인 테이블이다.
도 6 은 도 4 의 채널 재맵핑 모듈의 일 실시형태의 일반적인 동작, 아키텍쳐, 및 기능성을 도시하는 결합된 흐름/블록도이다.
도 7 은 상이한 메모리 디바이스들에 걸쳐 다수의 논리적 구역들을 생성하는 인터리브 방법의 일 실시형태를 도시하는 다이어그램이다.
도 8 은 휴대용 컴퓨팅 디바이스에서의 메모리 채널 최적화 모듈의 일 예시적인 구현예를 도시하는 블록도이다.
도 9 는 비대칭 메모리 용량들을 갖는 메모리 컴포넌트들을 구비한 통합 메모리 서브시스템에 커플링된 메모리 채널 최적화 모듈을 포함하는 시스템의 다른 실시형태를 도시하는 블록도이다.
도 10 은 통합 메모리 서브시스템에서의 메모리를 고성능 영역과 저성능 영역으로 동적으로 할당하기 위한 도 9 의 채널 재맵핑 모듈(들)의 일 실시형태를 도시하는 블록도이다.
도 11 은 고성능 영역과 저성능 영역을 구성하고 조절하기 위한 채널 재맵핑 모듈(듈)의 아키텍쳐, 동작, 및/또는 기능성을 도시하는 결합된 블록/흐름도이다.
도 12 는 도 9 의 시스템에서 메모리를 동적으로 할당하는 방법의 일 실시형태를 도시하는 플로차트이다.
단어 "예시적인" 은 본원에서 "일 예, 사례, 또는 실례의 역할을 하는" 것을 의미하기 위해 이용된다. "예시적" 으로 본원에서 설명된 임의의 양상은 반드시 다른 양상들보다 바람직하거나 이로운 것으로 해석되지는 않는다.
본 설명에서, 용어 "애플리케이션" 은 실행 가능한 컨텐츠, 예컨대: 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들을 구비하는 파일들을 또한 포함할 수도 있다. 또한, 본원에서 참조되는 "애플리케이션" 은, 공개될 필요가 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같이, 사실상 실행 불가능한 파일들을 또한 포함할 수도 있다.
용어 "컨텐츠" 는 실행가능한 컨텐츠, 예컨대: 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들을 구비하는 파일들을 또한 포함할 수도 있다. 더불어, 본원에서 참조되는 "컨텐츠" 는 또한 공개될 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같은, 사실상 실행불가능한 파일들을 또한 포함할 수도 있다.
본 설명에서 이용되는 바와 같이, 용어들 "컴포넌트", "데이터베이스", "모듈", "시스템" 등은 컴퓨터 관련 엔티티, 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어 중 어느 일방을 지칭하고자 한다. 예를 들어, 컴포넌트는 프로세서 상에서 작동하는 프로세스, 프로세서, 오브젝트, 실행가능물, 실행의 스레드, 프로그램, 및/또는 컴퓨터일 수도 있지만, 이들에 제한되는 것은 아니다. 예로서, 컴퓨팅 디바이스 상에서 작동하는 애플리케이션 및 컴퓨팅 디바이스 양자 모두가 컴포넌트일 수도 있다. 하나 이상의 컴포넌트들은 프로세스 및/또는 실행의 스레드 내에 있을 수도 있고, 컴포넌트는 하나의 컴퓨터 상에 로컬화될 수도 있고/있거나 두 개 이상의 컴퓨터 들 사이에 분산될 수도 있다. 또한, 이들 컴포넌트들은 다양한 데이터 구조들이 저장된 여러 컴퓨터 판독 가능한 매체들로부터 실행될 수도 있다. 컴포넌트들은 하나 이상의 데이터 패킷들 (예를 들어, 로컬 시스템의 다른 컴포넌트, 분산 시스템 및/또는 인터넷과 같은 네트워크에 걸쳐 신호를 통해 다른 시스템들과 상호작용하는 하나의 컴포넌트로부터의 데이터) 을 구비하는 신호에 따르는 것과 같이 로컬 및/또는 원격 프로세스들을 통해 통신할 수도 있다.
본 설명에서, 용어들 "통신 디바이스", "무선 디바이스", "무선 전화기", "무선 통신 디바이스", 및 "무선 핸드셋" 은 상호교환가능하게 이용된다. 3 세대 ("3G") 무선 기술 및 4 세대 ("4G") 의 도래로, 보다 넓은 대역폭 이용가능성은 보다 다양한 무선 능력들을 갖는 보다 많은 휴대용 컴퓨팅 디바이스들을 가능하게 했다. 따라서, 휴대용 컴퓨팅 디바이스는 셀룰러 전화기, 페이저, PDA, 스마트폰, 네비게이션 디바이스, 또는 무선 접속이나 링크를 갖는 핸드 헬드 컴퓨터를 포함할 수도 있다.
도 1 은 다른 유형의 2 개의 메모리 디바이스들, 또는 ("상이한 메모리 디바이스들" 이라고 지칭되는) 다른 데이터 대역폭들을 갖는 유사한 유형의 메모리 디바이스들에 액세스하기 위해 2 개 이상의 전용 프로세싱 유닛들을 갖는 임의의 적합한 컴퓨팅 디바이스로 구현될 수도 있는 메모리 관리 아키텍쳐를 포함하는 시스템 (100) 을 도시한다. 컴퓨팅 디바이스는 개인용 컴퓨터, 워크스테이션, 서버, 휴대용 컴퓨팅 디바이스 (PCD), 예컨대, 셀룰러 전화기, 휴대용 정보 단말기 (PDA), 휴대용 게임 콘솔, 팜탑 컴퓨터들, 또는 태블릿 컴퓨터, 및 2 개 이상의 상이한 메모리 디바이스들을 갖는 임의의 다른 컴퓨팅 디바이스를 포함할 수도 있다. 하기에서 보다 상세히 설명되는 바와 같이, 메모리 관리 아키텍쳐는 2 개의 동작 모드들: 통합 모드 및 이산 모드를 선택적으로 제공하도록 구성된다. 이산 모드에서, 메모리 관리 아키텍쳐는 상술된 바와 같이 종래의 방식으로 "이산 아키텍쳐" 로서 동작하며, 여기서 각각의 전용 프로세싱 유닛은 그것의 의도된 목적에 최적화된 대응하는 메모리 디바이스에 액세스한다. 예를 들어, 전용 범용 중앙 프로세싱 유닛 (CPU) 은 최적화된 데이터 대역폭에서 제 1 유형의 메모리 디바이스에 액세스할 수도 있고, 보다 높은 성능의 전용 그래픽 프로세싱 유닛 (GPU) 은 보다 높은 데이터 대역폭에서 제 2 유형의 메모리 디바이스에 액세스할 수도 있다. 통합 모드에서, 메모리 관리 아키텍쳐는 상이한 메모리 디바이스들을 통합하고, 전용 프로세싱 유닛들이 개별적으로 또는 결합하여, 상이한 메모리 디바이스들의 결합된 대역폭 또는 그것의 일부분들에 선택적으로 액세스하는 것을 가능하게 하도록 구성된다.
도 1 의 실시형태에서 도시되는 바와 같이, 시스템 (100) 은 2 개의 다른 유형의 동적 랜덤 액세스 메모리 (dynamic random access memory; DRAM) 디바이스들 (104a 및 104b) 에 전기적으로 접속된 메모리 채널 최적화 모듈 (102) 및 DRAM 디바이스들 (104a 및 104b) 에 액세스할 수도 있는 2 개 이상의 전용 프로세싱 유닛들 (예를 들어, CPU (108) 및 GPU (106)) 을 포함한다. GPU (106) 는 전기적 접속 (110) 을 통해 메모리 채널 최적화 모듈 (102) 에 커플링된다. CPU (108) 는 전기적 접속 (112) 을 통해 메모리 채널 최적화 모듈 (102) 에 커플링된다. 메모리 채널 최적화 모듈 (102) 은 DRAM 디바이스들 (104a 및 104b) 에 커플링하는 복수의 하드웨어 접속부들을 더 포함한다. 하드웨어 접속부들은 메모리 디바이스의 유형에 따라 달라질 수도 있다. 도 1 의 예에서, DRAM (104a) 은 각각 물리적/제어 접속부들 (116a, 116b, 116c, 및 116d) 에 접속하는 4 개의 채널들 (114a, 114b, 114c, 및 114d) 을 지원한다. DRAM (104b) 은 각각 물리적/제어 접속부들 (120a 및 120b) 에 접속하는 2 개의 채널들 (118a 및 118b) 을 지원한다. 물리적/제어 접속부들의 개수 및 구성은 메모리 어드레스들 (예를 들어, 32 비트, 64 비트 등) 의 사이즈를 포함하여, 메모리 디바이스의 유형에 따라 달라질 수도 있는 것으로 이해되어야 한다.
도 2 는 상이한 메모리 디바이스들 (예를 들어, DRAM 디바이스들 (104a 및 104b)) 을 인터리빙함으로써 동작의 통합 모드를 구현하기 위해 메모리 채널 최적화 모듈 (102) 에 의해 실행되는 방법 (200) 을 도시한다. 블록 (202) 에서, 메모리 채널 최적화 모듈 (102) 은 DRAM 디바이스들 (104a 및 104b) 에 대한 데이터 대역폭들의 비율을 포함하여 인터리브 대역폭 비율을 결정한다. 데이터 대역폭들은 컴퓨팅 디바이스의 부트 업 (boot-up) 시에 결정될 수도 있다.
일 실시형태에서, 인터리브 대역폭 비율은 도 3 에서 도시된 테이블 (300) 과 같은 데이터 구조에 액세스함으로써 결정될 수도 있다. 테이블 (300) 은 2 개의 DRAM 디바이스들 (104a 및 104b) 를 구현하기 위한 상이한 메모리 디바이스들의 다양한 결합의 유형들에 대한 인터리브 대역폭 비율들을 식별한다. 열들 (302) 은 DRAM 디바이스 (104a) 에 대한 다양한 구성들을 열거한다. 행들 (304) 은 DRAM 디바이스 (104b) 에 대한 다양한 구성들을 열거한다. 이와 관련하여, 각각의 수치 데이터 필드는 대응하는 구성 행/열 구성에 대한 인터리브 대역폭 비율을 식별한다. 예를 들어, 테이블 (300) 의 상부 부분에서의 제 1 데이터 필드는 검정색으로 강조되고 2.00 의 인터리브 대역폭 비율을 열거하며, 이는 DRAM 디바이스 (104a) 에 대한 12.8GB/s 의 대역폭 및 DRAM 디바이스 (104b) 에 대한 6.4GB/s 의 데이터 대역폭에 대응한다. 도 3 에서, DRAM 디바이스들 (104a 및 104b) 은 모바일 컴퓨팅 시스템에서 이용하도록 최적화된다. DRAM 디바이스 (104b) 는 저전력 더블 데이터 레이트 (low power double data rate; LPDDR) 디바이스를 포함하며, 이는 CPU (108) 에 의한 전용 이용을 위해 이산 모드에서의 이용에 대해 통상적으로 최적화된다. DRAM 디바이스 (104a) 는 Wide I/O (Wide IO) 메모리 디바이스를 포함하며, 이는 GPU (106) 에 의한 전용 이용을 위해 이산 모드에서의 이용에 대해 통상적으로 최적화될 수도 있다. 이와 관련하여, 수치 값들은 메모리 어드레스 비트 사이즈 (x64, xl28, x256, x512), 클록 속도 (MHz), 및 데이터 대역폭 (GB/s) 과 같은 가변적인 성능 파라미터들에 따라 DRAM 디바이스들 (104a 및 104b) 에 대한 인터리브 대역폭 비율들을 식별한다. 메모리 채널 최적화 모듈 (102) 은 DRAM 디바이스들 (104a 및 104b) 과 연관된 인터리브 대역폭 비율을 획득하기 위해 룩-업 (look-up) 을 수행할 수도 있다. 도 2 에서의 블록 (202) 에서, 메모리 채널 최적화 모듈 (102) 은 또한 (예를 들어, 테이블 (300) 로부터 또는 DRAM 디바이스들 (104a 및 104b) 로부터 직접적으로) 수치 데이터 대역폭들을 결정할 수도 있고, 그 다음에 이러한 데이터를 이용하여 인터리브 대역폭 비율을 산출할 수도 있다.
메모리 디바이스들의 유형들 및 성능 파라미터들은, 시스템 (100) 이 구현되는, 특정 유형의 컴퓨팅 디바이스, 시스템 애플리케이션 등에 따라 달라질 수도 있는 것으로 이해되어야 한다. 도 3 에 도시된 예시적인 유형들 및 성능 파라미터들은 본 설명에서 단지 모바일 시스템에서 메모리 채널 최적화 모듈 (102) 에 의해 수행되는 예시적인 인터리빙 방법을 설명하는데 이용된다. 채널 최적화 모듈 (102) 에 적합한 다른 랜덤 액세스 메모리 기술들의 일부 예들은 NOR FLASH, EEPROM, EPROM, DDR-NVM, PSRAM, SRAM, PROM, 및 ROM 을 포함한다. 다양한 대안적인 인터리빙 기법들 및 방법들이 수행될 수도 있다는 것을 당업자들을 쉽게 이해할 것이다.
다시 도 2 를 참조하면, 블록 (204) 에서, 메모리 채널 최적화 모듈 (102) 은 블록 (202) 에서 결정된 인터리브 대역폭 비율에 따라 DRAM 디바이스들 (104a 및 104b) 을 인터리빙한다. 인터리빙 프로세스는 각각 DRAM 디바이스들 (104a 및 104b) 에 대한 메모리 채널들 (114a, 114b, 114c, 114d, 및 118a 와 118b) 의 각각에 대한 트래픽을 특정 채널의 이용가능한 대역폭에 매칭시킨다. 예를 들어, DRAM 디바이스 (104a) 가 34GB/s 의 데이터 대역폭을 갖고 DRAM 디바이스 (104b) 가 17GB/s 의 데이터 대역폭을 갖는 경우, 인터리브 대역폭 비율은 2:1 이다. 이는 DRAM 디바이스 (104a) 의 데이터 레이트가 DRAM 디바이스 (104b) 의 데이터 레이트보다 2 배 빠르다는 것을 의미한다.
도 4 에 도시된 바와 같이, 메모리 채널 최적화 모듈 (102) 은 인터리브 대역폭 비율에 따라 DRAM 디바이스 (104a 및 104b) 에 대한 가상 어드레스 맵핑 테이블을 구성하고 유지하며 인터리브 대역폭 비율에 따라 DRAM 디바이스 (104a 및 104b) 에 대한 트래픽을 분산시키는 하나 이상의 채널 재맵핑 모듈(들) (400) 을 포함할 수도 있다. 예시적인 어드레스 맵핑 테이블 (500) 이 도 5 에 도시된다. 어드레스 맵핑 테이블 (500) 은 인터리브 대역폭 비율에 기초하여 대응하는 채널 및/또는 메모리 디바이스 할당들을 갖는 (임의의 사이즈일 수도 있는) 어드레스 블록들 (502) 의 리스트를 포함한다. 예를 들어, 도 5 에서, 열 (504) 은 1:1 의 인터리브 대역폭 비율에 기초하여 DRAM 디바이스 (104a) ("wideio2") 와 DRAM 디바이스 (104b) ("lpddr3e") 사이에서 교번하는 할당을 도시한다. 짝수 숫자가 매겨진 어드레스 블록들 (N, N+2, N+4, N+6 등) 은 wideio2 에 할당되고, 홀수 숫자가 매겨진 어드레스 블록들 (N+l, N+3, N+5 등) 은 lpddr3e 에 할당된다.
열 (506) 은 2:1 의 인터리브 대역폭 비율에 대한 다른 할당을 도시한다. DRAM 디바이스 (104a) ("wideio2") 가 DRAM 디바이스 (104b) ("lpddr3e") 보다 2배 빠른 레이트를 갖는 경우, lpddr3e 에 할당된 모든 하나의 어드레스 블록에 대해 2 개의 연이은 어드레스 블록들이 wideio2 에 할당된다. 예를 들어, 어드레스 블록들 (N 및 N+l) 은 wideio2 에 할당된다. 블록 (N+2) 은 lppdr3e 에 할당된다. 블록들 (N+3 및 N+4) 은 wideio2 에 할당된다. 열 (508) 은 DRAM 디바이스 (104b) ("lpddr3e") 가 DRAM 디바이스 (104a) ("wideio2") 보다 2 배 빠르기 때문에 할당 기법이 역전되는 1:2 의 인터리브 대역폭 비율에 대한 다른 할당을 도시한다.
도 2 의 플로차트를 다시 참조하면, 블록 (206) 에서, GPU (106) 및 CPU (108) 는, 종래의 방식으로, 메모리 채널 최적화 모듈 (102) 에 메모리 어드레스 요청들을 전송함으로써 인터리빙된 메모리에 액세스할 수도 있다. 도 6 에 도시된 바와 같이, 어드레스 블록들 (N, N+l, N+2, N+3, N+4, N+5 등) (도 5) 에 대응하는 요청들의 입력 스트림 (606, 608, 610, 612, 614, 616 등) 으로서 채널 재맵핑 로직 (600) 에 의해 트래픽이 수신될 수도 있다. 채널 재맵핑 로직 (600) 은 인터리브 대역폭 비율 및 어드레스 맵핑 테이블 (500) 에 포함된 적절한 할당 기법 (예를 들어, 컬럼들 (504, 506, 508 등)) 에 따라 DRAM 디바이스들 (104a 및 104b) 에 트래픽을 분산시키도록 (블록 (208) - 도 2) 구성된다.
위의 예의 2:1 인터리브 대역폭 비율에 따라, 채널 재맵핑 로직 (600) 은 도 6 에 도시된 바와 같이 요청들 (606, 608, 610, 612, 614, 및 616) 을 유도하다. 각각 어드레스 블록들 (N, N+l, N+3, 및 N+4) 에 대한 요청들 (606, 608, 612, 및 614) 은 DRAM 디바이스 (104a) 로 유도될 수도 있다. 어드레스 블록들 (N+2 및 N+5) 에 대한 요청들 (610 및 616) 은 각각 DRAM 디바이스 (104b) 로 유도될 수도 있다. 이러한 방식으로, GPU (106) 및 CPU (108) 로부터의 인커밍 트래픽은 DRAM 디바이스 (104a) 에 대한 메모리 채널들 (114) 및/또는 DRAM 디바이스 (104b) 에 대한 메모리 채널들 (118) 중 어느 하나에 대한 이용가능한 대역폭에 최적으로 매칭될 수도 있다. 이러한 동작의 통합 모드는 GPU (106) 및 CPU (108) 가 종래의 동작의 이산 모드의 "로컬화된" 고성능 동작으로 제한되기 보다는 상이한 메모리 디바이스들의 결합된 대역폭에 개별적으로 및/또는 집합적으로 액세스하는 것을 가능하게 한다.
위에서 언급된 바와 같이, 메모리 채널 최적화 모듈 (102) 은 다양한 원하는 이용 시나리오들, 시스템 설정들 등에 기초하여 통합 모드 또는 이산 모드 중 어느 일방을 선택적으로 가능하게 하도록 구성될 수도 있다. 또한, 전체 메모리 디바이스들을 인터리빙하기 보다는 상이한 메모리 디바이스들의 부분들이 인터리빙될 수도 있다는 것이 이해되어야 한다. 도 7 은 다수의 "논리적" 디바이스들 또는 구역들을 생성하기 위해 메모리 채널 최적화 모듈 (102) 에 의해 구현될 수도 있는 다중 계층 인터리브 기법을 도시한다. 2:1 인터리브 대역폭 비율을 이용하는 위의 예에 따라, DRAM 디바이스 (104a) 는 GPU (106) 에 대해 통상적으로 최적화된 34GB/s 의 고성능 대역폭을 갖는 0.5GB 메모리 디바이스들 (702 및 704) 의 쌍을 포함할 수도 있다. DRAM 디바이스 (104b) 는 CPU (108) 에 대해 통상적으로 최적화된 17GB/s 의 낮은 대역폭을 각각 갖는 1GB 메모리 디바이스 (706) 및 2GB 메모리 디바이스 (708) 를 포함할 수도 있다. 다중 계층 인터리브 기법은 2 개의 인터리빙된 구역들 (710 및 712) 및 인터리빙되지 않은 구역 (714) 을 생성할 수도 있다. 구역 (710) 은 102GB/s 의 결합된 대역폭에서 결합된 1.5GB 를 제공하기 위해 4-way 인터리빙될 수도 있다. 구역 (712) 은 34 GB/s 에서 결합된 1.5GB 를 제공하기 위해 2-way 인터리빙될 수도 있다. 구역(714) 은 17GB/s 에서 1GB 를 제공하기 위해 인터리빙되지 않을 수도 있다. 시스템 (100) 의 메모리 관리 아키텍쳐와 결합한 다중 계층 인터리빙 기법은 인터리빙된 부분과 인터리빙되지 않은 부분 사이에서 전이하는 것을 가능하게 할 수도 있는데, 인터리빙된 구역들 (710 및 712) 의 컨텐츠들이 내보내거나 이동시킬 수 있는 데이터 구조들 및 버퍼들에 대해 명시적으로 지정될 수 있고, 한편 인터리빙되지 않은 구역 (714) 의 컨텐츠들은 커널 동작들 및/또는 다른 저 메모리 프로세스들과 같은 프로세싱을 위해 지정될 수도 있기 때문이다.
위에서 언급된 바와 같이, 메모리 채널 최적화 모듈 (102) 은 임의의 원하는 컴퓨팅 시스템 내에 포함될 수도 있다. 도 8 은 예시적인 휴대용 컴퓨팅 디바이스 (PCD) (800) 에 포함된 메모리 채널 최적화 모듈 (102) 을 도시한다. 메모리 최적화 모듈 (102) 은 시스템 온 칩 (system-on-a-chip; SoC) 또는 휴대용 컴퓨팅 디바이스 (800) 에 대한 설계들에 별도로 제작되고 포함될 수도 있는 임베디드 시스템을 포함할 수도 있다.
도시된 바와 같이, PCD (800) 는 멀티코어 CPU (402A) 를 포함하는 온 칩 시스템 (322) 을 포함한다. 멀티코어 CPU (402A) 는 제 0 코어 (410), 제 1 코어 (412), 및 제 N 코어 (414) 를 포함할 수도 있다. 코어들 중 하나의 코어는, 예를 들어, CPU (108) 를 포함하여 다른 것들 중 하나 이상과 함께 GPU (106) 를 포함할 수도 있다. 대안적인 예시적인 실시형태들에 따르면, CPU (402) 는 또한 단일 코어 유형들의 것 뿐만 아니라 다수의 코어들을 갖는 것을 포함할 수도 있으며, 이 경우 CPU (108) 및 GPU (106) 는 시스템 (100) 에 도시된 바와 같이 전용 프로세서들일 수도 있다.
디스플레이 제어기 (328) 및 터치 스크린 제어기 (330) 가 GPU (106) 에 커플링될 수도 있다. 차례로, 온칩 시스템(322) 의 외부에 있는 터치 스크린 디스플레이 (108) 가 디스플레이 제어기 (328) 및 터치 스크린 제어기 (330) 에 커플링될 수도 있다.
도 8 은, 비디오 인코더 (334), 예를 들어, PAL (phase alternating line) 인코더, SECAM (sequential color a memoire) 인코더, 또는 NTSC (national television system(s) committee) 인코더가 멀티코어 CPU (402A) 에 커플링되어 있는 것을 또한 도시한다. 또한, 비디오 증폭기 (336) 가 비디오 인코더 (334) 및 터치 스크린 디스플레이 (108) 에 커플링된다. 또한, 비디오 포트 (338) 가 비디오 증폭기 (336) 에 커플링된다. 도 8 에 도시된 바와 같이, 범용 직렬 버스 (USB) 제어기 (340) 가 멀티코어 CPU (402A) 에 커플링된다. 또한, USB 포트 (342) 가 USB 제어기 (340) 에 커플링된다. 메모리 (404A) 및 가입자 신원 모듈 (subscriber identity module; SIM) 카드 (346) 가 또한 멀티코어 CPU (402A) 에 커플링될 수도 있다. 메모리 (404A) 는, 상술된 바와 같이, 2 개 이상의 상이한 메모리 디바이스들 (예를 들어, DRAM 디바이스들 (104a 및 104b)) 을 포함할 수도 있다. 메모리 채널 최적화 모듈 (102) 은 (예를 들어, CPU (108) 및 GPU (106) 를 포함하여) CPU (402A) 에 커플링될 수도 있고, 메모리 (404A) 는 2 개 이상의 상이한 메모리 디바이스들을 포함할 수도 있다. 메모리 채널 최적화 모듈 (102) 은 별도의 시스템 온 칩 (SoC) 으로서 또는 SoC (322) 의 컴포넌트로서 포함될 수도 있다.
또한, 도 8 에 도시된 바와 같이, 디지털 카메라 (348) 가 멀티코어 CPU (402A) 에 커플링될 수도 있다. 일 예시적인 양상에서, 디지털 카메라 (348) 는 CCD (charge-coupled device) 카메라 또는 CMOS (complementary metal-oxide semiconductor) 카메라이다.
도 8 에 또한 도시된 바와 같이, 스테레오 오디오 코더 디코더 (코덱) (350)가 멀티코어 CPU (402A) 에 커플링될 수도 있다. 또한, 오디오 증폭기 (352) 가 스테레오 오디오 코덱 (350) 에 커플링될 수도 있다. 일 예시적인 양상에서, 제 1 스테레오 스피커 (354) 및 제 2 스테레오 스피커 (356) 가 오디오 증폭기 (352) 에 커플링된다. 도 8 은 마이크로폰 증폭기 (358) 가 스테레오 오디오 코덱 (350) 에 또한 커플링될 수도 있음을 도시한다. 또한, 마이크로폰 (360) 은 마이크로폰 증폭기 (358) 에 커플링될 수도 있다. 특정 양상에서, 주파수 변조 (frequency modulation; FM) 라디오 튜너 (362) 가 스테레오 오디오 코덱 (350) 에 커플링될 수도 있다. 또한, FM 안테나 (364) 가 FM 라디오 튜너 (362) 에 커플링된다. 또한, 스테레오 헤드폰들 (366) 이 스테레오 오디오 코덱 (350) 에 커플링될 수도 있다.
도 8 은 무선 주파수 (RF) 송수신기 (368) 가 멀티코어 CPU (402A) 에 커플링될 수도 있다는 것을 또한 도시한다. RF 스위치 (370) 가 RF 송수신기 (368) 와 RF 안테나 (372) 에 커플링될 수도 있다. 도 8 에 도시된 바와 같이, 키패드 (204) 가 멀티코어 CPU (402A) 에 커플링될 수도 있다. 또한, 마이크로폰 (376) 을 구비한 모노 헤드셋이 멀티코어 CPU (402A) 에 커플링될 수도 있다. 또한, 진동자 디바이스 (378) 가 멀티코어 CPU (402A) 에 커플링될 수도 있다.
도 8 은 또한 전원 (380) 이 온 칩 시스템 (322) 에 커플링될 수도 있다는 것을 도시한다. 일 특정 양상에서, 전원 (380) 은 전력을 필요로 하는 PCD (800) 의 다양한 컴포넌트들에 전력을 제공하는 직류 (DC) 전원이다. 또한, 일 특정 양상에서, 전원은 AC 전원에 접속된 교류 (AC)-DC 변압기로부터 도출되는 DC 전원 또는 재충전 가능한 DC 배터리이다.
도 8 은 데이터 네트워크, 예를 들어, 근거리 네트워크, 개인 영역 네트워크, 또는 임의의 다른 네트워크에 액세스하기 위해 이용될 수도 있는 네트워크 카드 (388) 를 PCD (800) 가 또한 포함할 수도 있음을 또한 나타낸다. 네트워크 카드 (388) 는 블루투스 네트워크 카드, 와이파이 네트워크 카드, 개인 영역 네트워크 (PAN) 카드, PeANUT (personal area network ultra-low-power technology) 네트워크 카드, 또는 공지된 임의의 다른 네트워크 카드일 수도 있다. 또한, 네트워크 카드 (388) 는 칩에 통합될 수도 있고, 즉, 네트워크 카드 (388) 는 칩 내의 풀 솔루션 (full solution) 일 수도 있고, 별도의 네트워크 카드 (388) 가 아닐 수도 있다.
도 8 에 도시된 바와 같이, 터치 스크린 디스플레이 (108), 비디오 포트 (338), USB 포트 (342), 카메라 (348), 제 1 스테레오 스피커 (354), 제 2 스테레오 스피커 (356), 마이크로폰 (360), FM 안테나 (364), 스테레오 헤드폰들 (366), RF 스위치 (370), RF 안테나 (372), 키패드 (374), 모노 헤드셋 (376), 진동자 (378), 및 전원 (380) 은 온칩 시스템 (322) 의 외부에 있을 수도 있다.
도 9 는 메모리 서브시스템에서 메모리를 동적으로 할당하기 위해 상술된 채널 재맵핑 솔루션들을 일반적으로 구현하기 위한 시스템 (900) 의 다른 실시형태를 도시한다. 메모리 서브시스템은 비대칭 메모리 용량들 (예를 들어, 각각 용량 A 및 용량 B) 을 갖는 2 개 이상의 임베디드 메모리 컴포넌트들 (예를 들어, 메모리 컴포넌트들 (904a 및 904b)) 을 구비한 통합 메모리 디바이스를 포함하는 비대칭 메모리 서브시스템 (902) 을 포함할 수도 있다. 비대칭 메모리 용량들 또는 비대칭 컴포넌트 사이징은 제 1 채널에 접속된 메모리 용량이 제 2 채널에 접속된 메모리 용량과 다른 상황을 지칭한다는 것을 당업자는 이해할 것이다. 예를 들어, 비대칭 메모리 서브시스템 (902) 에서, 메모리 컴포넌트 (904a) 는 1GB 용량 컴포넌트를 가질 수도 있고 메모리 컴포넌트 (904b) 는 2GB 컴포넌트를 가질 수도 있다.
메모리 서브시스템에서의 비대칭 컴포넌트 사이징은 다양한 상황들에서 생길 수도 있다. OEM (original equipment manufacturer) 들 또는 하드웨어 및/또는 소프트웨어 중 어느 일방의 다른 관련 제공자들은, 예를 들어, 비용 목표들, 성능/비용 트레이드오프들 등을 달성하기 위해 비대칭 컴포넌트 사이징의 이용을 지시할 수도 있다. 비대칭 컴포넌트 사이징이 소정의 비용 또는 다른 이점들을 제공할 수도 있으나, 그것은 메모리 성능의 대가를 가져온다. 공지된 바와 같이 그리고 상술된 바와 같이, 동작 메모리 성능은 인터리빙된 메모리의 이용을 통해 개선될 수도 있다. 그러나, 비대칭 컴포넌트 사이징으로 구성된 종래의 메모리 시스템들에서, 시스템 메모리 구조는 어떠한 성능 개선들도 없이 인터리빙되지 않은 메모리로거 구성되거나 일부 성능 개선들을 달성하도록 부분적으로 인터리빙될 것이 요구될 수도 있다.
부분적으로 인터리빙된 메모리 구성들을 사용하는 기존의 솔루션들에서, 메모리 대역폭에 민감한 이용들을 위해 완전히 인터리빙된 메모리 할당들을 다이렉팅할 필요가 있다. 이러한 문제는 보다 복잡하고 비용이 많은 드는 소프트웨어 솔루션들을 요구한다. 예를 들어, 직접적인 할당들은 부차적인 메모리 할당기 또는 메모리 풀 (pool) 할당기를 요구할 수도 있다. 다른 기술적 플랫폼들 및/또는 운영 체제들을 지원하기 위해 추가적인 복잡도 및 비용이 생길 수도 있다. 이러한 복잡성들 때문에, 기존의 시스템들은 비대칭 컴파운드 구성들에서의 인터리빙을 피하고, 대신에 종래의 단일 메모리 할당기를 이용할 수도 있다. 그 결과, 인터리빙된 메모리를 요구할 수도 있거나 인터리빙된 메모리로부터 혜택을 받을 애플리케이션들은 성능 저하를 겪는다.
이러한 문제들을 다루기 위한 다른 접근법은 2 개의 메모리 할당기들을 사용하는 것이다. 하나의 메모리 할당기는 고성능 인터리빙된 풀에 메모리를 할당하도록 구성되고, 다른 메모리 할당기는 상대적으로 저성능의 인터리빙되지 않은 풀에 대해 할당한다. 그러한 접근법들에는 많은 단점들이 있다.
예를 들어, 성능 애플리케이션들은 완전히 인터리빙된 풀로부터 할당하기 위해 고성능 메모리 할당기를 인지해야 한다. 다른 애플리케이션들은 표준 메모리 할당기, 예컨대, 예를 들어, 공지된 메모리 할당 함수 (즉, malloc( )) 를 통해 할당해야 한다. 메모리 할당 함수의 구현은 메모리를 모으고 분산시키는 2 가지 방식들 중 오직 하나만을 갖는다. 이는 상술된 바와 같이 낭비적인, 인터링빙되지 않은 풀로부터 풀링하거나, 어느 풀로부터 풀링하는지를 결정하기 위해 알고리즘들을 이용하여 상대적으로 저성능의 인터리빙되지 않은 풀로부터 그리고 인터리빙된 풀로부터 풀링한다. 이러한 상황은 표준 메모리 할당기를 이용하는 애플리케이션들에 대해 일관성 없는 성능을 제공한다. 표준 메모리 할당기를 이용하여 어느 풀로부터 애플리케이션이 메모리를 수신할지를 결정하는 프로세스는 결정론적이지 않다. 이러한 문제를 다루기 위해, 메모리 할당기는 맞춤형 인터페이스를 제공할 수도 있다. 맞춤형 솔루션은, 예를 들어, 모든 애플리케이션에 의해 이루어진 각각의 할당에 대해 어떤 성능 풀로부터 각각의 할당이 이루어졌는지의 이력을 추적하고 유지하고, 그 다음에 전력 사이클들에 걸쳐 그 데이터를 저장하도록 구성될 수도 있다. 그러나, 이런 것들과 같은 맞춤형 솔루션들은 복잡하고 비싸다.
또한, 대안적인 할당기를 이용하도록 특별히 구성된 애플리케이션들만이 고성능 풀을 이용할 수도 있다. 물리적 메모리 구성들의 속성으로 인해 보다 높은 성능의 메모리 풀이 항상 가장 큰 메모리 풀이기 때문에, 이는 매우 낭비적인 접근법이다. 프로세서 이미지들을 고성능 메모리에 위치시키거나 한편으로 최적화로 튜닝하는 것과 같이 낭비를 감소시키기 위해 최적화들이 이루어질 수 있으나, 결국 동적으로 할당가능한 메모리의 대부분은 그것의 의도한 공유 이용을 위해 이용가능하지 않다. 이러한 접근법의 수정예에서, 일부 기존의 시스템들은 "별도취급 (carveouts)" 의 개념을 도입하며, 이는 고성능 메모리가 고성능 요구사항들을 갖는 알려진 애플리케이션들에 미리 할당되는 것이다. 그럼에도 불구하고, 모든 알려진 기존의 솔루션들은 메모리 할당 비효율성들 또는 고성능 풀로부터 직접적으로 그리고 특정적으로 할당하지 않는 메모리 사용자들에 대한 일관성 없는 성능을 겪는다.
도 9 에 도시된 시스템 (900) 은 비대칭 용량들을 갖는 메모리 컴포넌트들 (904a 및 904b) 을 구비한 비대칭 메모리 시스템 (902) 에서 메모리 성능을 최적화하기 위해 상술된 문제들 중 하나 이상의 문제를 다루는 독특한 솔루션을 제공할 수도 있다는 것이 이해되어야 한다. 예를 들어, 시스템 (900) 은 표준 메모리 할당으로 구현될 수도 있지만, 여전히 다른 성능 레벨들을 갖는 메모리 풀들에 균일한 성능 메모리를 제공한다. 하기에서 보다 상세히 설명되는 바와 같이, 다른 실시형태들에서, 시스템 (900) 은, 예를 들어, 인터리빙된 메모리 풀 중 더 많은 부분 또는 더 적은 부분이 표준 할당기에 이용가능하게 되는 경우에 인터리브 대역폭 비율을 재맵핑함으로써 2 개 이상의 메모리 풀들과 연관된 성능을 조절하도록 구성될 수도 있다.
일반적으로, 시스템 (900) 은 메모리 채널 최적화 모듈 (102) 을 포함하고 2 개 이상의 메모리 영역들 또는 파티션들로 메모리를 동적으로 할당하기 위해 도 1 내지 도 8 을 참조하여 상술된 채널 재맵핑 접근법을 행사한다 (leverage). 도 9 의 실시형태에서 도시된 바와 같이, 시스템 (900) 은 비대칭 메모리 시스템 (902) 에 전기적으로 접속된 메모리 채널 최적화 모듈 (102) 및 비대칭 메모리 시스템 (902) 에 액세스할 수도 있는 임의의 개수의 프로세싱 유닛들을 포함한다. 프로세싱 유닛들은 전용 프로세싱 유닛들 (예를 들어, CPU (108) 및 GPU (106)) 또는 다른 프로그램가능한 프로세서들 (906) 을 포함할 수도 있다는 것이 이해되어야 한다. GPU (106) 는 전기적 접속 (110) 을 통해 메모리 채널 최적화 모듈 (102) 에 커플링된다. CPU (108) 는 전기적 접속 (112) 을 통해 메모리 채널 최적화 모듈 (102) 에 커플링된다. 프로그램가능한 프로세서들 (906) 은 접속(들) (910) 을 통해 메모리 채널 최적화 모듈 (102) 에 커플링된다. 전용 프로세싱 유닛들, 프로그램가능한 프로세서 (906), 및 애플리케이션들 (912) 은 일반적으로 비대칭 메모리 시스템 (902) 및/또는 메모리 채널 최적화 모듈 (102) 의 "클라이언트들" 로 지칭될 수도 있다.
프로그램가능한 프로세서들 (906) 은, 예를 들어, 비디오 애플리케이션들, 오디오 애플리케이션들, 또는 임의의 다른 애플리케이션들 (912) 을 포함하여, 특수 목적용 및/또는 범용 애플리케이션들을 위한 디지털 신호 프로세서 (DSP) 들을 포함할 수도 있다. 전용 프로세싱 유닛들 및/또는 프로그램가능한 프로세서들 (906) 은, HSA 재단에 의해 공개된 HSA 표준들에서 개시된 바와 같은, 이종 시스템 아키텍쳐 (heterogeneous system architecture; HSA) 를 지원하도록 구성된 이종 컴퓨팅 플랫폼들을 지원할 수도 있다. 현재의 표준은 AMD I/O 가상화 기술 (IOMMU) 사양 (공개 제 48882 호, 2.00 수정본, 2011 년 3 월 24 일 발행) 이다.
공지된 바와 같이, HSA 는 애플리케이션들 (912) 에 대한 메인스트림 프로그램가능한 컴퓨팅 엘리먼트들의 혜택들 및 능력들을 보이는 개선된 프로세서 설계를 생성한다. HSA 로, 애플리케이션들 (912) 은 단일의 통합된 어드레스 공간에 데이터 구조들을 생성할 수 있고, 주어진 태스크에 대해 가장 적합한 하드웨어 상에서 병렬로 작업 아이템들을 착수시킬 수 있다. 컴퓨팅 엘리먼트들 사이에서 데이터를 공유하는 것은 포인터를 전송하는 것만큼 간단하다. 다수의 컴퓨팅 태스크들이, 데이터 동기화를 유지하는데 필요한 베리어들 및 원자 메모리 동작들을 이용하여 동일한 서로 결부된 메모리 영역들 상에서 작업할 수 있다.
하기에서 보다 상세히 설명된 바와 같이, 일 실시형태에서, 시스템 (900) 은 클라이언트들에 대한 메모리를 2 개 이상의 메모리 영역들 (예를 들어, 고성능 영역 (1001) 및 저성능 영역 (1003) - 도 10) 로 동적으로 할당함으로써 HSA 측면에서 유리한 메모리 시스템 구성을 제공할 수도 있다.
도 9 를 참조하면, 메모리 채널 최적화 모듈 (102) 은 비대칭 메모리 시스템 (902) 에 커플링하기 위한 복수의 하드웨어 접속부들을 더 포함한다. 하드웨어 접속부들은 메모리 디바이스들의 유형에 따라 달라질 수도 있다. 일 실시형태에서, 메모리 디바이스들은 비대칭 컴포넌트 사이징을 갖는 더블 데이터 레이트 (double data rate; DDR) 메모리 디바이스를 포함하나, 다른 유형들 및 구성들이 적합할 수도 있다. 도 9 의 예에서, 비대칭 메모리 시스템 (902) 은 각각 물리적/제어 접속부들 (116a, 116b, 116c, 및 116d) 에 접속하는 4 개의 채널들 (114a, 114b, 114c, 및 114d) 을 지원한다. 채널들 (114a 및 114b) 은 메모리 컴포넌트 (904a) 와 연관될 수도 있고, 채널들 (114c 및 114d) 은 메모리 컴포넌트 (904b) 와 연관될 수도 있다. 물리적/제어 접속부들의 개수 및 구성은 메모리 어드레스들 (예를 들어, 32 비트, 64 비트 등) 의 사이즈를 포함하여, 메모리 디바이스의 유형에 따라 달라질 수도 있는 것으로 이해되어야 한다.
시스템 (900) 에서의 메모리 채널 최적화 모듈 (102) 은 가상 어드레스 맵핑 테이블을 구성하고 유지하기 위한 하나 이상의 채널 재맵핑 모듈(들) (400) 및 메모리를 2 개 이상의 메모리 영역들로 동적으로 할당하기 위한 연관된 메모리 제어기 (402) 를 포함할 수도 있다.
도 10 의 실시형태에서 도시된 바와 같이, 메모리 영역들은 제 1 고성능 메모리 영역 (1001) 및 제 2 상대적 저성능 메모리 영역 (1003) 을 포함할 수도 있다. 고성능 메모리 영역 (1001) 은 비대칭 메모리 시스템 (902) 의 완전히 인터리빙된 부분을 포함할 수도 있다. 채널 재맵핑 모듈(들) (400) 은 애플리케이션들 (912) 또는 다른 클라이언트들에 고성능 메모리 영역 (1001) 을 할당할 수도 있다. 이와 관련하여, 애플리케이션들 (912), GPU (106), CPU (108), 및 프로그램가능한 프로세서들 (906) 중 하나 이상은 맞춤형 애플리케이션 프로그램 인터페이스 (application program interface; API) 를 사용하도록 구성될 수도 있으며, 맞춤형 애플리케이션 프로그램 인터페이스는 고성능 메모리 영역 (1001) 으로부터 할당한다. 고성능 메모리 영역 (1001) 은 각각의 클라이언트들의 예상되는 고성능 메모리 사용 요구사항들에 대해 특별히 사이즈가 정해질 수도 있다. 비대칭 메모리 시스템 (902) 에서의 메모리의 남은 부분은 저성능 영역 (1003) 을 포함할 수도 있다. 참조 부호 (1005) 는 고성능 메모리 영역 (1001) 과 저성능 메모리 영역 (1003) 사이의 어드레스 범위에서의 메모리 경계를 나타낸다.
도 10 의 실시형태에서, 메모리 할당 모듈 (1002) 은 고성능 메모리 영역 (1001) 및 저성능 메모리 영역 (1003) 의 어드레스 범위들을 구성하고 부팅한다. 고성능 메모리 영역 (1001) 은 상대적으로 보다 높은 대역폭 클라이언트들에 최적의 성능을 제공하도록 완전히 인터리빙될 수도 있다. 저성능 메모리 영역 (1003) 은, 예를 들어, 비대칭 메모리 시스템 (902) 에서 인터리빙된 메모리 블록 및 인터리빙되지 않은 메모리 블록의 상대적 부분에 따른 최적의 인터리브 대역폭 비율로 인터리빙된 메모리 대역폭일 수도 있다. 인터리브 대역폭 비율은, 도 1 내지 도 8 에 대하여 상술된 방식으로 또는 다른 방식으로, 결정되고 메모리가 동적으로 할당될 수도 있다. 이러한 접근법은 메모리 채널 최적화 모듈 (102) 이 이용가능한 시스템 메모리의 보다 최적의 이용을 가능하게 할 수도 있는데, 이는 메모리의 표준 클라이언트가 보다 많은 메모리를 이용가능하게 됨에 따라 채널 재맵핑 모듈(들) (400) 이 할당된 메모리에서 일관된 성능을 유지하는 것을 보장할 수도 있다는 것을 당업자는 이해할 것이다.
고성능 메모리 영역 (1001) 및 저성능 메모리 영역 (1003) 의 사이즈는 시스템 (900) 의 동작 동안에 고정된 채로 있을 수도 있다. 다른 실시형태들에서, 메모리 경계 (1005) 는 시스템 (900) 의 동작 동안에 동적으로 조절될 수도 있다. 예를 들어, 메모리 영역들 (1001 또는 1003) 중 하나의 메모리 영역에서의 메모리 어드레스들의 모두가 할당되고 (또는 미리 결정된 임계치에 도달하고) 다른 영역이 이용가능한 어드레스들을 갖는 경우, 메모리 영역 조절 모듈 (1006) 은 고갈된 메모리 영역의 사이즈를 증가시키도록 메모리 경계 (1005) 를 조절할 수도 있다. 메모리 영역 조절 모듈 (1006) 은, 예를 들어, 종래의 임계 기법들 또는 히스테리시스 (hysteresis) 를 갖는 임계 및/또는 임계 기법들을 이용하여 메모리 영역들 (1001 및 1003) 을 수정할 필요를 결정할 수도 있다. 다른 실시형태에서, 메모리 영역 성능 모듈 (1004) 은 고성능 메모리 영역 (1001) 및/또는 저성능 메모리 영역 (1003) 의 성능을 모니터링하도록 구성될 수도 있다. 모니터링된 성능에 기초하여, 메모리 영역 조절 모듈 (1006) 은 조절의 필요를 결정하도록 구성될 수도 있다.
메모리 경계 (1005) 를 조절할 필요를 결정한 후에, 채널 재맵핑 모듈 (400) 은 수정된 영역 경계로 구성될 수도 있다. 수정된 메모리 경계는, 예를 들어, 시스템 설계 레벨에서 구성될 수도 있다. 다른 실시형태들에서, 메모리 경계 (1005) 는 메모리 영역들 (1001 및 1003) 중 어느 하나 또는 양자 모두에 걸쳐 성능 레벨을 보장하도록 수정된 인터리브 대역폭 비율을 결정함으로써 조절될 수도 있다. 예를 들어, 시스템 (900) 의 성능은 저성능 메모리 영역 (1003) 이 커지는지 줄어드는지 여부에 따라 개선되거나 저하될 수도 있다. 공지된 바와 같이, 저성능 메모리 영역 (1003) 의 성능은 일반적으로 영역의 사이즈가 커짐에 따라 증가하는데, 그것이 완전히 인터리브된 메모리의 보다 큰 부분을 포함할 것이기 때문이다.
도 11 은, 시스템 (900) 의 동작 동안에, 고성능 메모리 영역 (1001) 및 저성능 메모리 영역 (1003) 을 조절하는 채널 재맵핑 모듈(들) (400) 의 일 실시형태를 도시한다. 단계 1102 에서, 메모리 할당 모듈 (1002) 은 최초에 대응하는 메모리 경계 영역 (1005a) 을 갖는 제 1 상태 (1000a) 로 고성능 메모리 영역 (1001) 및 저성능 메모리 영역 (1003) 을 구성한다. 이러한 예에서, 고성능 메모리 영역 (1001) 은 저성능 메모리 영역 (1003) 보다 큰 부분을 포함한다. 시스템 (900) 의 동작 동안에, 메모리 영역 성능 모듈 (1004) 은 메모리 영역들 양자 모두의 성능을 모니터링한다 (단계들 (1104 및 1106)). 모니터링된 성능에 기초하여 메모리 경계 (1005a) 를 조절할 필요가 있는 경우 (단계 (1108)), 메모리 영역 조절 모듈 (1006) 은, 단계 (1110) 에서, 수정된 메모리 경계 (1005b) 를 트리거링할 수도 있다. 수정된 메모리 경계 (1005b) 는 고성능 메모리 영역 (1001) 의 사이즈가 감소되고 저성능 메모리 영역 (1003) 의 사이즈가 증가되는 제 2 상태 (1000b) 에 대응한다. 메모리 영역 (1001) 또는 메모리 영역 (1003) 중 어느 일방의 사이즈는 다양한 원하는 성능 상황들을 수용하도록 증가되거나 감소될 수도 있는 것으로 이해되어야 한다.
도 12 는 시스템 (900) 에서 메모리를 동적으로 할당하는 방법의 일 실시형태를 도시한다. 블록 (1202) 에서, 메모리 서브시스템의 제 1 부분이 완전히 인터리빙된다. 블록 (1204) 에서, 메모리 서브시스템의 제 2 남은 부분은 인터리브 대역폭 비율에 따라 부분적으로 인터리빙된다. 블록 (1206) 에서, 제 1 부분은 고성능 메모리 클라이언트들에 할당된다. 블록 (1208) 에서, 제 2 부분은 상대적으로 저성능 메모리 클라이언트들에 할당된다. 인터리빙 및/또는 메모리 할당은 상술된 방식으로 메모리 채널 최적화 모듈 (102), 채널 재맵핑 모듈(들) (400), 및/또는 메모리 할당 모듈(들) (1002) (도 1, 도 4, 도 9, 도 10, 및 도 11) 에 의해 수행될 수도 있다. 블록 (1210) 에서, 제 1 및/또는 제 2 부분들의 성능은, 예를 들어, 메모리 영역 성능 모듈(들) (1004) (도 10 및 도 11) 에 의해 미리 정의된 성능 임계치들, 동작 조건들, 또는 이용가능한 메모리 어드레스들에 따라 모니터링될 수도 있다. 결정 블록 (1212) 에서, 메모리 영역 조절 모듈(들) (1006) (도 10 및 도 11) 은 메모리 영역 경계가 조절될지 여부를 결정한다. 조절이 필요없는 경우, 흐름은 블록 (1210) 으로 되돌아간다. 메모리 영역 경계가 조절될 것으로 결정되는 경우, 블록 (1214) 에서, 채널 재맵핑 모듈(들) 및/또는 메모리 채널 최적화 모듈 (102) 은 제 2 부분에 대한 수정된 인터리브 대역폭 비율을 결정한다. 블록 (1216) 에서, 메모리 영역 경계는 메모리 채널 최적화 모듈 (102), 채널 재맵핑 모듈(들) (400), 및/또는 메모리 할당 모듈(들) (1002) 중 하나 이상을 통해, 수정된 대역폭 비율에 따라 조절된다.
본원에 설명된 방법 단계들 중 하나 이상의 방법 단계는 상술된 모듈들과 같은 컴퓨터 프로그램 명령들로서 메모리에 저장될 수도 있다는 것이 이해되어야 한다. 이러한 명령들은 본원에 설명된 방법들을 수행하기 위해 대응하는 모듈과 조합하여 또는 대응하는 모듈과 협력하여 임의의 적합한 프로세서에 의해 실행될 수도 있다.
본 명세서에서 설명된 프로세스들 또는 프로세스 흐름들에서의 소정의 단계들은 물론 설명된 바와 같이 기능하기 위해 본 발명에 대한 다른 것들에 선행한다. 그러나, 그러한 순서 또는 시퀀스가 본 발명의 기능성을 변경하지 않는 경우, 본 발명은 설명된 단계들의 순서로 제한되지 않는다. 즉, 일부 단계들이 다른 단계들 전, 후, 또는 병행하여 (실질적으로 동시에) 수행될 수도 있는 것으로 인식된다. 일부 사례들에서, 소정의 단계들이 생략되거나 수행되지 않을 수도 있다. 또한, "그 후", "그 다음", "다음에" 등과 같은 단어들은 단계들의 순서를 제한하려는 의도는 아니다. 이러한 단어들은 단순히 예시적인 방법의 설명을 통해 독자를 인도하려는 의도로 이용된다.
또한, 프로그래밍의 당업자는, 예를 들어, 본 명세서에서의 플로 차트들 및 연관된 설명에 기초하여 어려움 없이 개시된 발명을 구현하기 위해 컴퓨터 코드를 작성하거나 적절한 하드웨어 및/또는 회로들을 식별하는 것이 가능하다.
따라서, 프로그램 코드 명령들의 특정 세트 또는 상세한 하드웨어 디바이스들의 개시물은 본 발명을 제작하고 이용하는 방식의 적절한 이해를 위해 필수적인 것으로 고려되지는 않는다. 청구된 컴퓨터 구현된 프로세스들의 독창적 기능성은 상기의 설명에서, 그리고 다양한 프로세스 흐름들을 도시할 수도 있는 도면들과 연게하여 보다 상세히 설명된다.
하나 이상의 예시적인 양상들에서, 상술된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 송신될 수도 있다. 컴퓨터 판독가능 매체들은 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 가능하게 하는 임의의 매체를 포함하여 컴퓨터 저장 매체들 및 통신 매체들 양자를 포함한다. 저장 매체들은 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수도 있다. 비제한적인 예로서, 그러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 이송 또는 저장하기 위해 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수도 있다.
또한, 임의의 접속은 컴퓨터 판독가능 매체라고 적절히 칭해진다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 ("DSL"), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되는 경우, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다.
본원에서 이용된 디스크 (disk) 와 디스크 (disc) 는, 컴팩트 디스크 ("CD"), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 ("DVD"), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 통상 자기적으로 데이터를 재생하는 반면, 디스크 (disc) 들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 위의 조합들도 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
본 발명과 관련되는 대안적인 실시형태들이 당업자에게 자명할 것이다. 따라서, 선택된 양상들이 도해되고 상세히 설명되었지만, 다음의 청구항들에 의해 정의되는 바와 같이 다양한 대체예들 및 수정예들이 이루어질 수도 있음이 이해될 것이다.

Claims (29)

  1. 비대칭 메모리 용량들을 갖는 메모리 컴포넌트들을 구비한 메모리 서브시스템의 제 1 부분을 완전히 인터리빙하는 단계;
    인터리브 대역폭 비율에 따라 상기 메모리 서브시스템의 제 2 남은 부분을 부분적으로 인터리빙하는 단계로서, 상기 인터리브 대역폭 비율은 상기 메모리 서브시스템의 상기 제 1 부분 및 제 2 부분에 대한 데이터 대역폭들의 비율을 포함하는, 상기 메모리 서브시스템의 제 2 남은 부분을 부분적으로 인터리빙하는 단계;
    하나 이상의 고성능 메모리 클라이언트들에 상기 메모리 서브시스템의 상기 제 1 부분을 할당하는 단계;
    하나 이상의 상대적으로 저성능 메모리 클라이언트들에 상기 메모리 서브시스템의 상기 제 2 남은 부분을 할당하는 단계;
    상기 메모리 서브시스템의 상기 제 1 및 제 2 부분들의 성능을 모니터링하는 단계; 및
    모니터링된 상기 성능에 응답하여, 상기 메모리 서브시스템의 상기 제 1 부분과 상기 제 2 부분 사이의 상대적 메모리 할당을 조절하는 단계로서, 상기 메모리 서브시스템의 상기 제 1 부분과 상기 제 2 부분 사이의 상대적 메모리 할당을 조절하는 단계는 상기 모니터링된 성능에 기초하여 수정된 인터리브 대역폭 비율을 결정하는 단계를 포함하는, 상기 메모리 서브시스템의 상기 제 1 부분과 상기 제 2 부분 사이의 상대적 메모리 할당을 조절하는 단계를 포함하는, 메모리 서브시스템을 동적으로 할당하는 방법.
  2. 제 1 항에 있어서,
    상기 메모리 클라이언트들은 애플리케이션, 중앙 프로세싱 유닛, 그래픽 프로세싱 유닛, 및 프로그램가능한 프로세서 중 하나 이상을 포함하는, 메모리 서브시스템을 동적으로 할당하는 방법.
  3. 제 1 항에 있어서,
    상기 인터리브 대역폭 비율은 인터리빙된 메모리 블록 및 인터리빙되지 않은 메모리 블록에 대한 대역폭들의 비율을 포함하는, 메모리 서브시스템을 동적으로 할당하는 방법.
  4. 제 1 항에 있어서,
    상기 메모리 서브시스템은 더블 데이터 레이트 (double data rate; DDR) 메모리 디바이스를 포함하는, 메모리 서브시스템을 동적으로 할당하는 방법.
  5. 제 1 항에 있어서,
    상기 하나 이상의 고성능 메모리 클라이언트들은 이종 시스템 아키텍쳐를 지원하는, 메모리 서브시스템을 동적으로 할당하는 방법.
  6. 제 1 항에 있어서,
    메모리 채널 최적화 모듈이 상기 메모리를 할당하고, 상기 메모리 클라이언트들은 상기 메모리 채널 최적화 모듈에 커플링되는, 메모리 서브시스템을 동적으로 할당하는 방법.
  7. 비대칭 메모리 용량들을 갖는 메모리 컴포넌트들을 구비한 메모리 서브시스템의 제 1 부분을 완전히 인터리빙하는 수단;
    인터리브 대역폭 비율에 따라 상기 메모리 서브시스템의 제 2 남은 부분을 부분적으로 인터리빙하는 수단으로서, 상기 인터리브 대역폭 비율은 상기 메모리 서브시스템의 상기 제 1 부분 및 제 2 부분에 대한 데이터 대역폭들의 비율을 포함하는, 상기 메모리 서브시스템의 제 2 남은 부분을 부분적으로 인터리빙하는 수단;
    하나 이상의 고성능 메모리 클라이언트들에 상기 메모리 서브시스템의 상기 제 1 부분을 할당하는 수단;
    하나 이상의 상대적으로 저성능 메모리 클라이언트들에 상기 메모리 서브시스템의 상기 제 2 남은 부분을 할당하는 수단;
    상기 메모리 서브시스템의 상기 제 1 및 제 2 부분들의 성능을 모니터링하는 수단; 및
    모니터링된 상기 성능에 응답하여, 상기 메모리 서브시스템의 상기 제 1 부분과 상기 제 2 부분 사이의 상대적 메모리 할당을 조절하는 수단으로서, 상기 메모리 서브시스템의 상기 제 1 부분과 상기 제 2 부분 사이의 상대적 메모리 할당을 조절하는 수단은 상기 모니터링된 성능에 기초하여 수정된 인터리브 대역폭 비율을 결정하는 수단을 포함하는, 상기 메모리 서브시스템의 상기 제 1 부분과 상기 제 2 부분 사이의 상대적 메모리 할당을 조절하는 수단을 포함하는, 메모리 서브시스템을 동적으로 할당하기 위한 시스템.
  8. 제 7 항에 있어서,
    상기 메모리 클라이언트들은 애플리케이션, 중앙 프로세싱 유닛, 그래픽 프로세싱 유닛, 및 프로그램가능한 프로세서 중 하나 이상을 포함하는, 메모리 서브시스템을 동적으로 할당하기 위한 시스템.
  9. 제 7 항에 있어서,
    상기 인터리브 대역폭 비율은 인터리빙된 메모리 블록 및 인터리빙되지 않은 메모리 블록에 대한 대역폭들의 비율을 포함하는, 메모리 서브시스템을 동적으로 할당하기 위한 시스템.
  10. 제 7 항에 있어서,
    상기 메모리 서브시스템은 더블 데이터 레이트 (double data rate; DDR) 메모리 디바이스를 포함하는, 메모리 서브시스템을 동적으로 할당하기 위한 시스템.
  11. 제 7 항에 있어서,
    상기 하나 이상의 고성능 메모리 클라이언트들은 이종 시스템 아키텍쳐를 지원하는, 메모리 서브시스템을 동적으로 할당하기 위한 시스템.
  12. 휴대용 컴퓨팅 디바이스에서 메모리를 동적으로 할당하기 위한 메모리 시스템으로서,
    상기 메모리 시스템은,
    비대칭 메모리 용량들을 갖는 메모리 컴포넌트들을 구비한 메모리 서브시스템; 및
    각각의 전기 접속들을 통해 복수의 채널들을 제공하도록 상기 메모리 서브시스템에 전기적으로 커플링된 메모리 채널 최적화 모듈을 포함하고,
    상기 메모리 채널 최적화 모듈은,
    상기 비대칭 메모리 용량들을 갖는 메모리 컴포넌트들을 구비한 상기 메모리 서브시스템의 제 1 부분을 완전히 인터리빙하는 것;
    인터리브 대역폭 비율에 따라 상기 메모리 서브시스템의 제 2 남은 부분을 부분적으로 인터리빙하는 것으로서, 상기 인터리브 대역폭 비율은 상기 메모리 서브시스템의 상기 제 1 부분 및 제 2 부분에 대한 데이터 대역폭들의 비율을 포함하는, 상기 메모리 서브시스템의 제 2 남은 부분을 부분적으로 인터리빙하는 것;
    하나 이상의 고성능 메모리 클라이언트들에 상기 메모리 서브시스템의 상기 제 1 부분을 할당하는 것;
    하나 이상의 상대적으로 저성능 메모리 클라이언트들에 상기 메모리 서브시스템의 상기 제 2 남은 부분을 할당하는 것;
    상기 메모리 서브시스템의 상기 제 1 및 제 2 부분들의 성능을 모니터링하는 것; 및
    모니터링된 상기 성능에 응답하여, 상기 메모리 서브시스템의 상기 제 1 부분과 상기 제 2 부분 사이의 상대적 메모리 할당을 조절하는 것으로서, 상기 메모리 서브시스템의 상기 제 1 부분과 상기 제 2 부분 사이의 상대적 메모리 할당을 조절하는 것은 상기 모니터링된 성능에 기초하여 수정된 인터리브 대역폭 비율을 결정하는 것을 포함하는, 상기 메모리 서브시스템의 상기 제 1 부분과 상기 제 2 부분 사이의 상대적 메모리 할당을 조절하는 것을 하도록 구성된 로직을 포함하는, 메모리를 동적으로 할당하기 위한 메모리 시스템.
  13. 제 12 항에 있어서,
    상기 메모리 클라이언트들은 애플리케이션, 중앙 프로세싱 유닛, 그래픽 프로세싱 유닛, 및 프로그램가능한 프로세서 중 하나 이상을 포함하는, 메모리를 동적으로 할당하기 위한 메모리 시스템.
  14. 제 12 항에 있어서,
    상기 인터리브 대역폭 비율은 인터리빙된 메모리 블록 및 인터리빙되지 않은 메모리 블록에 대한 대역폭들의 비율을 포함하는, 메모리를 동적으로 할당하기 위한 메모리 시스템.
  15. 제 12 항에 있어서,
    상기 메모리 서브시스템은 더블 데이터 레이트 (double data rate; DDR) 메모리 디바이스를 포함하는, 메모리를 동적으로 할당하기 위한 메모리 시스템.
  16. 제 12 항에 있어서,
    상기 하나 이상의 고성능 메모리 클라이언트들은 이종 시스템 아키텍쳐를 지원하는, 메모리를 동적으로 할당하기 위한 메모리 시스템.
  17. 컴퓨터 판독가능 프로그램 코드를 갖는 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 판독가능 프로그램 코드는 휴대용 컴퓨터 디바이스에서 메모리를 동적으로 할당하는 방법을 구현하는 것이 실행되도록 구성되고,
    상기 방법은,
    비대칭 메모리 용량들을 갖는 메모리 컴포넌트들을 구비한 메모리 서브시스템의 제 1 부분을 완전히 인터리빙하는 단계;
    인터리브 대역폭 비율에 따라 상기 메모리 서브시스템의 제 2 남은 부분을 부분적으로 인터리빙하는 단계로서, 상기 인터리브 대역폭 비율은 상기 메모리 서브시스템의 상기 제 1 부분 및 제 2 부분에 대한 데이터 대역폭들의 비율을 포함하는, 상기 메모리 서브시스템의 제 2 남은 부분을 부분적으로 인터리빙하는 단계;
    하나 이상의 고성능 메모리 클라이언트들에 상기 메모리 서브시스템의 상기 제 1 부분을 할당하는 단계;
    하나 이상의 상대적으로 저성능 메모리 클라이언트들에 상기 메모리 서브시스템의 상기 제 2 남은 부분을 할당하는 단계;
    상기 메모리 서브시스템의 상기 제 1 및 제 2 부분들의 성능을 모니터링하는 단계; 및
    모니터링된 상기 성능에 응답하여, 상기 메모리 서브시스템의 상기 제 1 부분과 상기 제 2 부분 사이의 상대적 메모리 할당을 조절하는 단계로서, 상기 메모리 서브시스템의 상기 제 1 부분과 상기 제 2 부분 사이의 상대적 메모리 할당을 조절하는 단계는 상기 모니터링된 성능에 기초하여 수정된 인터리브 대역폭 비율을 결정하는 단계를 포함하는, 상기 메모리 서브시스템의 상기 제 1 부분과 상기 제 2 부분 사이의 상대적 메모리 할당을 조절하는 단계를 포함하는, 컴퓨터 판독가능 저장 매체.
  18. 제 17 항에 있어서,
    상기 메모리 클라이언트들은 애플리케이션, 중앙 프로세싱 유닛, 그래픽 프로세싱 유닛, 및 프로그램가능한 프로세서 중 하나 이상을 포함하는, 컴퓨터 판독가능 저장 매체.
  19. 제 17 항에 있어서,
    상기 인터리브 대역폭 비율은 인터리빙된 메모리 블록 및 인터리빙되지 않은 메모리 블록에 대한 대역폭들의 비율을 포함하는, 컴퓨터 판독가능 저장 매체.
  20. 제 17 항에 있어서,
    상기 메모리 서브시스템은 더블 데이터 레이트 (double data rate; DDR) 메모리 디바이스를 포함하는, 컴퓨터 판독가능 저장 매체.
  21. 제 17 항에 있어서,
    상기 하나 이상의 고성능 메모리 클라이언트들은 이종 시스템 아키텍쳐를 지원하는, 컴퓨터 판독가능 저장 매체.
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
KR1020157017667A 2012-12-10 2013-11-04 비대칭 메모리 컴포넌트들을 구비한 메모리 서브시스템에서 메모리를 동적으로 할당하는 시스템 및 방법 KR101627478B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261735352P 2012-12-10 2012-12-10
US61/735,352 2012-12-10
US13/726,537 US8959298B2 (en) 2012-12-10 2012-12-24 System and method for managing performance of a computing device having dissimilar memory types
US13/726,537 2012-12-24
US13/781,320 2013-02-28
US13/781,320 US9110795B2 (en) 2012-12-10 2013-02-28 System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components
PCT/US2013/068226 WO2014092884A1 (en) 2012-12-10 2013-11-04 System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components

Publications (2)

Publication Number Publication Date
KR20150095724A KR20150095724A (ko) 2015-08-21
KR101627478B1 true KR101627478B1 (ko) 2016-06-03

Family

ID=50882318

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157017667A KR101627478B1 (ko) 2012-12-10 2013-11-04 비대칭 메모리 컴포넌트들을 구비한 메모리 서브시스템에서 메모리를 동적으로 할당하는 시스템 및 방법

Country Status (7)

Country Link
US (1) US9110795B2 (ko)
EP (1) EP2929447B1 (ko)
JP (1) JP5914773B2 (ko)
KR (1) KR101627478B1 (ko)
CN (1) CN104854572B (ko)
TW (1) TWI525435B (ko)
WO (1) WO2014092884A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9256531B2 (en) 2012-06-19 2016-02-09 Samsung Electronics Co., Ltd. Memory system and SoC including linear addresss remapping logic
US8959298B2 (en) 2012-12-10 2015-02-17 Qualcomm Incorporated System and method for managing performance of a computing device having dissimilar memory types
US9092327B2 (en) 2012-12-10 2015-07-28 Qualcomm Incorporated System and method for allocating memory to dissimilar memory devices using quality of service
US9612648B2 (en) * 2013-08-08 2017-04-04 Qualcomm Incorporated System and method for memory channel interleaving with selective power or performance optimization
CN110177279B (zh) * 2014-03-28 2021-10-08 联咏科技股份有限公司 视频处理装置与其视频处理电路
US9823846B2 (en) * 2014-08-20 2017-11-21 Qualcomm Incorporated Systems and methods for expanding memory for a system on chip
US10126950B2 (en) * 2014-12-22 2018-11-13 Intel Corporation Allocating and configuring persistent memory
KR102464801B1 (ko) * 2015-04-14 2022-11-07 삼성전자주식회사 반도체 장치의 동작 방법 및 반도체 시스템
US20170108911A1 (en) * 2015-10-16 2017-04-20 Qualcomm Incorporated System and method for page-by-page memory channel interleaving
US20170108914A1 (en) * 2015-10-16 2017-04-20 Qualcomm Incorporated System and method for memory channel interleaving using a sliding threshold address
US20170162235A1 (en) * 2015-12-02 2017-06-08 Qualcomm Incorporated System and method for memory management using dynamic partial channel interleaving
US10140223B2 (en) 2016-06-27 2018-11-27 Qualcomm Incorporated System and method for odd modulus memory channel interleaving
US10372635B2 (en) * 2016-08-26 2019-08-06 Qualcomm Incorporated Dynamically determining memory attributes in processor-based systems
KR20180058456A (ko) 2016-11-24 2018-06-01 삼성전자주식회사 메모리를 관리하는 방법 및 장치.
US10254961B2 (en) * 2017-02-21 2019-04-09 International Business Machines Corporation Dynamic load based memory tag management
CN108628776B (zh) * 2017-03-22 2022-02-18 华为技术有限公司 一种数据读写访问控制方法及装置
US10769073B2 (en) 2018-03-28 2020-09-08 Qualcomm Incorporated Bandwidth-based selective memory channel connectivity on a system on chip
KR102057518B1 (ko) 2018-05-23 2019-12-19 단국대학교 산학협력단 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법
CN112513824B (zh) * 2018-07-31 2024-04-09 华为技术有限公司 一种内存交织方法及装置
CN112148653A (zh) * 2019-06-26 2020-12-29 北京百度网讯科技有限公司 数据传输装置、数据处理系统、数据处理方法和介质
US11321068B2 (en) 2019-09-05 2022-05-03 International Business Machines Corporation Utilizing memory coherency to improve bandwidth performance
US11360695B2 (en) 2020-09-16 2022-06-14 Micron Technology, Inc. Apparatus with combinational access mechanism and methods for operating the same
US11749332B2 (en) 2021-02-11 2023-09-05 Qualcomm Incorporated Effective DRAM interleaving for asymmetric size channels or ranks while supporting improved partial array self-refresh
US20240004562A1 (en) * 2022-06-30 2024-01-04 Advanced Micro Devices, Inc. Dynamic memory reconfiguration

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080250212A1 (en) 2007-04-09 2008-10-09 Ati Technologies Ulc Method and apparatus for accessing memory using programmable memory accessing interleaving ratio information
US20100228923A1 (en) 2009-03-06 2010-09-09 Samsung Electronics Co., Ltd. Memory system having multiple processors

Family Cites Families (28)

* 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
US5924117A (en) * 1996-12-16 1999-07-13 International Business Machines Corporation Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto
US7120727B2 (en) 2003-06-19 2006-10-10 Micron Technology, Inc. Reconfigurable memory module and method
US7484065B2 (en) 2004-04-20 2009-01-27 Hewlett-Packard Development Company, L.P. Selective memory allocation
US7716669B2 (en) 2004-04-30 2010-05-11 Microsoft Corporation Concurrent system applications in a multimedia console
US7477257B2 (en) 2005-12-15 2009-01-13 Nvidia Corporation Apparatus, system, and method for graphics memory hub
US7793059B2 (en) * 2006-01-18 2010-09-07 Apple Inc. Interleaving policies for flash memory
US20070180203A1 (en) 2006-02-01 2007-08-02 Madhusudhan Ramgarajan Optimizing system performance in flexible interleaving memory mode
US7707379B2 (en) 2006-07-13 2010-04-27 International Business Machines Corporation Dynamic latency map for memory optimization
US7620793B1 (en) 2006-08-28 2009-11-17 Nvidia Corporation Mapping memory partitions to virtual memory pages
US7768518B2 (en) 2006-09-27 2010-08-03 Intel Corporation Enabling multiple instruction stream/multiple data stream extensions on microprocessors
US8271827B2 (en) 2007-12-10 2012-09-18 Qimonda Memory system with extended memory density capability
US8289333B2 (en) 2008-03-04 2012-10-16 Apple Inc. Multi-context graphics processing
US8099539B2 (en) 2008-03-10 2012-01-17 Lsi Corporation Method and system of a shared bus architecture
US8531471B2 (en) 2008-11-13 2013-09-10 Intel Corporation Shared virtual memory
US8266389B2 (en) 2009-04-29 2012-09-11 Advanced Micro Devices, Inc. Hierarchical memory arbitration technique for disparate sources
US8451281B2 (en) 2009-06-23 2013-05-28 Intel Corporation Shared virtual memory between a host and discrete graphics device in a computing system
US8407516B2 (en) 2009-12-23 2013-03-26 Intel Corporation Controlling memory redundancy in a system
US8669990B2 (en) 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
US20110242427A1 (en) 2010-04-01 2011-10-06 Timothy Ramsdale Method and System for Providing 1080P Video With 32-Bit Mobile DDR Memory
US20110320751A1 (en) 2010-06-25 2011-12-29 Qualcomm Incorporated Dynamic Interleaving Of Multi-Channel Memory
US20120054455A1 (en) 2010-08-31 2012-03-01 Qualcomm Incorporated Non-Uniform Interleaving Scheme In Multiple Channel DRAM System
US8314807B2 (en) 2010-09-16 2012-11-20 Apple Inc. Memory controller with QoS-aware scheduling
EP2652741B1 (en) 2010-12-17 2019-02-20 Everspin Technologies, Inc. Memory controller and method for interleaving dram and mram accesses
US8854387B2 (en) 2010-12-22 2014-10-07 Advanced Micro Devices, Inc. Bundle-based CPU/GPU memory controller coordination mechanism
KR101467939B1 (ko) 2011-04-26 2014-12-02 엘에스아이 코포레이션 비휘발성 저장부에 대한 가변 오버­프로비저닝
US9092327B2 (en) 2012-12-10 2015-07-28 Qualcomm Incorporated System and method for allocating memory to dissimilar memory devices using quality of service
US8959298B2 (en) 2012-12-10 2015-02-17 Qualcomm Incorporated System and method for managing performance of a computing device having dissimilar memory types

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080250212A1 (en) 2007-04-09 2008-10-09 Ati Technologies Ulc Method and apparatus for accessing memory using programmable memory accessing interleaving ratio information
US20100228923A1 (en) 2009-03-06 2010-09-09 Samsung Electronics Co., Ltd. Memory system having multiple processors

Also Published As

Publication number Publication date
KR20150095724A (ko) 2015-08-21
US20140164720A1 (en) 2014-06-12
EP2929447A1 (en) 2015-10-14
EP2929447B1 (en) 2016-08-03
TWI525435B (zh) 2016-03-11
JP2015537317A (ja) 2015-12-24
TW201435589A (zh) 2014-09-16
US9110795B2 (en) 2015-08-18
CN104854572A (zh) 2015-08-19
JP5914773B2 (ja) 2016-05-11
CN104854572B (zh) 2017-04-05
WO2014092884A1 (en) 2014-06-19

Similar Documents

Publication Publication Date Title
KR101627478B1 (ko) 비대칭 메모리 컴포넌트들을 구비한 메모리 서브시스템에서 메모리를 동적으로 할당하는 시스템 및 방법
KR101613826B1 (ko) 서비스 품질을 이용하여 상이한 메모리 디바이스들에 메모리를 할당하는 시스템 및 방법
JP6178512B2 (ja) 選択的な電力または性能の最適化を伴うメモリチャネルインターリービングのためのシステムおよび方法
JP6378325B2 (ja) 非対称な記憶容量を有する複数チャネルメモリアーキテクチャにわたってデータを均一にインターリーブするためのシステムおよび方法
EP2929446B1 (en) System and method for managing performance of a computing device having dissimilar memory types
JP6553828B1 (ja) 奇数モジュラスメモリチャネルインターリービングのためのシステムおよび方法
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

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
LAPS Lapse due to unpaid annual fee