KR20150095725A - 서비스 품질을 이용하여 상이한 메모리 디바이스들에 메모리를 할당하는 시스템 및 방법 - Google Patents
서비스 품질을 이용하여 상이한 메모리 디바이스들에 메모리를 할당하는 시스템 및 방법 Download PDFInfo
- Publication number
- KR20150095725A KR20150095725A KR1020157017668A KR20157017668A KR20150095725A KR 20150095725 A KR20150095725 A KR 20150095725A KR 1020157017668 A KR1020157017668 A KR 1020157017668A KR 20157017668 A KR20157017668 A KR 20157017668A KR 20150095725 A KR20150095725 A KR 20150095725A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- qos
- type
- different
- dram
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1072—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Power Sources (AREA)
Abstract
상이한 메모리 디바이스들에 메모리를 할당하는 시스템들 및 방법들이 제공된다. 일 예시적인 실시형태는 상이한 메모리 디바이스들에 메모리를 할당하는 방법을 포함한다. 인터리브 대역폭 비율이 결정되며, 인터리브 대역폭 비율은 2 개 이상의 상이한 메모리 디바이스들에 대한 대역폭들의 비율을 포함한다. 상이한 메모리 디바이스들이 다른 성능 레벨들을 갖는 2 개 이상의 메모리 구역들을 정의하기 위해 인터리브 대역폭 비율에 따라 인터리빙된다. 메모리 어드레스 요청들은 서비스 품질 (quality of service; QoS) 에 기초하여 메모리 구역들에 할당된다.
Description
우선권 및 관련 출원들 서술
본 출원은, 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 유형의 메모리 디바이스를 별도로 위치시킨다. 동일한 인접한 블록 내에 있는 물리적 액세스를 지원하기 위한 다른 메모리 디바이스들의 메모리 포트들 사이의 하드웨어 조정은 없다.
이에 따라, 점점 더 증가하는 시스템 및 전력 성능을 제공하도록 컴퓨터 시스템들에 보다 특수화된 메모리 디바이스들에 대한 증가하는 요구가 있는 한편, 상이한 메모리 디바이스들을 관리하기 위한 개선된 시스템들 및 방법들에 대한 기술의 필요가 있다.
상이한 메모리 디바이스들에 메모리를 할당하는 시스템들 및 방법들이 제공된다. 일 예시적인 실시형태는 상이한 메모리 디바이스들에 메모리를 할당하는 방법을 포함한다. 인터리브 대역폭 비율이 결정되며, 인터리브 대역폭 비율은 2 개 이상의 상이한 메모리 디바이스들에 대한 대역폭들의 비율을 포함한다. 상이한 메모리 디바이스들이 다른 성능 레벨들을 갖는 2 개 이상의 메모리 구역들을 정의하기 위해 인터리브 대역폭 비율에 따라 인터리빙된다. 메모리 어드레스 요청들은 서비스 품질 (quality of service; QoS) 에 기초하여 메모리 구역들에 할당된다.
도면들에서, 달리 나타내어지지 않는 한 유사한 도면 번호들은 다양한 도면들에 걸쳐 유사한 부분들을 지칭한다. "102A" 또는 "102B" 와 같이 문자 명칭들을 갖는 도면 번호들에 있어서, 문자 명칭들은 동일한 도면에 있는 2 개의 유사한 부분들 또는 엘리먼트들을 구별지을 수도 있다. 도면 번호들에 대한 문자 명칭들은 도면 번호가 모든 도면들에서 동일한 도면 번호를 갖는 모든 부분들을 망라하고자 하는 경우 생략될 수도 있다.
도 1 은 상이한 메모리 디바이스들을 관리하는 시스템의 일 실시형태의 일 블록도이다.
도 2 는 상이한 메모리 디바이스들을 관리하기 위한 도 1 에서의 메모리 채널 최적화 모듈에 의해 수행되는 방법의 일 실시형태의 플로차트이다.
도 3 은 다양한 유형의 상이한 메모리 디바이스들에 대한 인터리브 대역폭 비율을 도시하는 예시적인 테이블이다.
도 4 는 도 1 의 메모리 채널 최적화 모듈의 컴포넌트들을 도시하는 블록도이다.
도 5 는 다양한 인터리브 대역폭 비율들에 기초한 메모리 채널 어드레스 재맵핑을 도시하는 예시적인 테이블이다.
도 6 은 도 4 의 채널 재맵핑 모듈의 일 실시형태의 일반적인 동작, 아키텍쳐, 및 기능성을 도시하는 결합된 흐름/블록도이다.
도 7 은 상이한 메모리 디바이스들에 걸쳐 다수의 논리적 구역들을 생성하는 인터리브 방법의 일 실시형태를 도시하는 다이어그램이다.
도 8 은 휴대용 컴퓨팅 디바이스에서의 메모리 채널 최적화 모듈의 일 예시적인 구현예를 도시하는 블록도이다.
도 9 는 상이한 메모리 디바이스들에 메모리를 할당하기 위해 하이 레벨 운영 시스템 (high-level operating system; HLOS) 에 커플링된 메모리 채널 최적화 모듈을 포함하는 시스템의 다른 실시형태를 도시하는 블록도이다.
도 10 은 HLOS 에 의해 제공되는 QoS 를 통해 통합 메모리 공간에서의 구역들에 메모리를 할당하기 위한 도 9 의 시스템의 아키텍쳐 및 동작의 일 실시형태를 도시하는 블록도이다.
도 11 은 메모리 채널 최적화 모듈과 합쳐진 QoS 모니터 모듈을 통해 통합 메모리 공간에서 구역들에 메모리를 할당하는 다른 실시형태를 도시하는 블록도이다.
도 12 는 QoS 서비스에 기초하여 상이한 메모리 디바이스들에 메모리를 동적으로 할당하는 방법의 일 실시형태를 도시하는 플로차트이다.
도 13 은 HLOS API 와 연관된 메모리 할당 함수를 통해 논리적 구역들에 메모리를 할당하기 위한 도 7 의 다이어그램을 도시한다.
도 1 은 상이한 메모리 디바이스들을 관리하는 시스템의 일 실시형태의 일 블록도이다.
도 2 는 상이한 메모리 디바이스들을 관리하기 위한 도 1 에서의 메모리 채널 최적화 모듈에 의해 수행되는 방법의 일 실시형태의 플로차트이다.
도 3 은 다양한 유형의 상이한 메모리 디바이스들에 대한 인터리브 대역폭 비율을 도시하는 예시적인 테이블이다.
도 4 는 도 1 의 메모리 채널 최적화 모듈의 컴포넌트들을 도시하는 블록도이다.
도 5 는 다양한 인터리브 대역폭 비율들에 기초한 메모리 채널 어드레스 재맵핑을 도시하는 예시적인 테이블이다.
도 6 은 도 4 의 채널 재맵핑 모듈의 일 실시형태의 일반적인 동작, 아키텍쳐, 및 기능성을 도시하는 결합된 흐름/블록도이다.
도 7 은 상이한 메모리 디바이스들에 걸쳐 다수의 논리적 구역들을 생성하는 인터리브 방법의 일 실시형태를 도시하는 다이어그램이다.
도 8 은 휴대용 컴퓨팅 디바이스에서의 메모리 채널 최적화 모듈의 일 예시적인 구현예를 도시하는 블록도이다.
도 9 는 상이한 메모리 디바이스들에 메모리를 할당하기 위해 하이 레벨 운영 시스템 (high-level operating system; HLOS) 에 커플링된 메모리 채널 최적화 모듈을 포함하는 시스템의 다른 실시형태를 도시하는 블록도이다.
도 10 은 HLOS 에 의해 제공되는 QoS 를 통해 통합 메모리 공간에서의 구역들에 메모리를 할당하기 위한 도 9 의 시스템의 아키텍쳐 및 동작의 일 실시형태를 도시하는 블록도이다.
도 11 은 메모리 채널 최적화 모듈과 합쳐진 QoS 모니터 모듈을 통해 통합 메모리 공간에서 구역들에 메모리를 할당하는 다른 실시형태를 도시하는 블록도이다.
도 12 는 QoS 서비스에 기초하여 상이한 메모리 디바이스들에 메모리를 동적으로 할당하는 방법의 일 실시형태를 도시하는 플로차트이다.
도 13 은 HLOS API 와 연관된 메모리 할당 함수를 통해 논리적 구역들에 메모리를 할당하기 위한 도 7 의 다이어그램을 도시한다.
단어 "예시적인" 은 본원에서 "일 예, 사례, 또는 실례의 역할을 하는" 것을 의미하기 위해 이용된다. "예시적" 으로 본원에서 설명된 임의의 양상은 반드시 다른 양상들보다 바람직하거나 이로운 것으로 해석되지는 않는다.
본 설명에서, 용어 "애플리케이션" 은 실행 가능한 컨텐츠, 예컨대: 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들을 구비하는 파일들을 또한 포함할 수도 있다. 또한, 본원에서 참조되는 "애플리케이션" 은, 공개될 필요가 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같이, 사실상 실행 불가능한 파일들을 또한 포함할 수도 있다.
용어 "컨텐츠" 는 실행가능한 컨텐츠, 예컨대: 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들을 구비하는 파일들을 또한 포함할 수도 있다. 더불어, 본원에서 참조되는 "컨텐츠" 는 또한 공개될 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같은, 사실상 실행불가능한 파일들을 또한 포함할 수도 있다.
본 설명에서 이용되는 바와 같이, 용어들 "컴포넌트", "데이터베이스", "모듈", "시스템" 등은 컴퓨터 관련 엔티티, 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어 중 어느 일방을 지칭하고자 한다. 예를 들어, 컴포넌트는 프로세서 상에서 작동하는 프로세스, 프로세서, 오브젝트, 실행가능물, 실행의 스레드, 프로그램, 및/또는 컴퓨터일 수도 있지만, 이들에 제한되는 것은 아니다. 예로서, 컴퓨팅 디바이스 상에서 작동하는 애플리케이션 및 컴퓨팅 디바이스 양자 모두가 컴포넌트일 수도 있다. 하나 이상의 컴포넌트들은 프로세스 및/또는 실행의 스레드 내에 있을 수도 있고, 컴포넌트는 하나의 컴퓨터 상에 로컬화될 수도 있고/있거나 두 개 이상의 컴퓨터 들 사이에 분산될 수도 있다. 또한, 이들 컴포넌트들은 다양한 데이터 구조들이 저장된 여러 컴퓨터 판독 가능한 매체들로부터 실행될 수도 있다. 컴포넌트들은 하나 이상의 데이터 패킷들 (예를 들어, 로컬 시스템의 다른 컴포넌트, 분산 시스템 및/또는 인터넷과 같은 네트워크에 걸쳐 신호를 통해 다른 시스템들과 상호작용하는 하나의 컴포넌트로부터의 데이터) 을 구비하는 신호에 따르는 것과 같이 로컬 및/또는 원격 프로세스들을 통해 통신할 수도 있다.
본 설명에서, 용어들 "통신 디바이스", "무선 디바이스", "무선 전화기", "무선 통신 디바이스", 및 "무선 핸드셋" 은 상호교환가능하게 이용된다. 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) 시에 결정될 수도 있다.
일 실시형태에서, 인터리브 대역폭 비율은 도 1 에서 도시된 테이블 (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 내지 도 13 은 하이 레벨 운영 시스템 (high-level operating system; HLOS) 환경에서 도 1 내지 도 8 과 연계하여 상술된 재맵핑하고 인터리빙하는 솔루션들의 양상들을 레버리징하는 (leverage) 시스템들 및 방법들의 다양한 대안적인 실시형태들을 도시한다. HLOS 환경은 HSA 재단에 의해 공개된 HSA 표준들에서 개시된 바와 같이, 이종 컴퓨팅 플랫폼 또는 이종 시스템 아키텍쳐 (heterogeneous system architecture; HSA) 를 제공할 수도 있다는 것이 이해되어야 한다. 현재의 표준인, AMD I/O 가상화 기술 (IOMMU) 사양 (공개 제 48882 호, 2.00 수정본, 2011 년 3 월 24 일 발행) 은 그 전체가 참조로서 본원에 포함된다.
공지된 바와 같이, HSA 에 기초한 시스템은 시스템 메모리의 통합 뷰를 제공하도록 구성될 수도 있다. HSA 는 개발자들이, 예를 들어, 메인스트림 프로그래밍 언어들을 이용하고, 개발자로부터 하드웨어 특정사항들을 추출하며, 하드웨어 벤더에 의해 수행되도록 하드웨어 특정 코딩을 벗어남으로써 보다 높은 추상 레벨에서 프로그래밍하는 것을 허락한다. 그러나, 상이한 메모리 유형들 또는 디바이스들을 갖는 시스템에서 HSA 를 효율적으로 구현하기 위한 알려진 솔루션이 없다.
도 9 내지 도 13 과 연계하여 하기에서 설명된 시스템들 및 방법들은 일반적으로, 상술된 것들과 같이, 상이한 메모리 유형들 또는 디바이스들을 포함하는 시스템에서 HSA 및/또는 HLOS 를 지원하기 위한 독특하고 바람직한 솔루션을 제공한다는 것이 이해되어야 한다. 하기에서 설명된 시스템들 및 방법들은 플랫폼에서의 모든 메모리들이 균일해야 하는 기존의 필요성을 제거함으로써 높은 성능, 낮은 전력, 및 낮은 비용들을 제공할 수도 있다. 또한, 하드웨어 개발자들은, 예를 들어, HSA 표준을 고수하는 컴퓨팅 디바이스에서 높고 손실 비용 메모리 디바이스들 및/또는 유형들 양자 모두에 결합하는데 융통성을 가질 수도 있다.
도 9 는 상이한 메모리 디바이스들에 메모리를 동적으로 할당하기 위해 메모리 채널 최적화 모듈 (102) 및 하나 이상의 애플리케이션들 (906) 과 통신에서 HLOS (902) 를 포함하는 시스템 (900) 을 도시한다. 메모리 채널 최적화 모듈 (102) 은 일반적으로 상술된 방식으로 구성되고 동작할 수도 있다. 메모리 채널 최적화 모듈 (102) 은 2 개 이상의 상이한 메모리 유형들 또는 디바이스들 (예를 들어, DRAM (104a 및 104b)) 및 상이한 메모리 디바이스들에 액세스할 수도 있는 임의의 개수의 프로세싱 유닛들에 전기적으로 접속된다. 프로세싱 유닛들은 전용 프로세싱 유닛들 (예를 들어, CPU (108) 및 GPU (106)) 또는 다른 프로그램가능한 프로세서들을 포함할 수도 있다는 것이 이해되어야 한다. GPU (106) 는 전기적 접속 (110) 을 통해 메모리 채널 최적화 모듈 (102) 에 커플링된다. CPU (108) 는 전기적 접속 (112) 을 통해 메모리 채널 최적화 모듈 (102) 에 커플링된다. 하나 이상의 프로그램가능한 프로세서들 (미도시) 이 대응하는 접속들을 통해 메모리 채널 최적화 모듈 (102) 에 커플링될 수도 있다. 상이한 메모리 디바이스들에 액세스하는 전용 프로세싱 유닛들, 프로그램가능한 프로세서들, 및 임의의 애플리케이션들 (906) 은 일반적으로 HLOS (902) 및/또는 메모리 채널 최적화 모듈 (102) 의 "클라이언트들" 이라고 지칭될 수도 있다.
프로그램가능한 프로세서들은, 예를 들어, 비디오 애플리케이션들, 오디오 애플리케이션들, 또는 임의의 다른 애플리케이션들 (906) 을 포함하여, 특수 목적용 및/또는 범용 애플리케이션들을 위한 디지털 신호 프로세서 (DSP) 들을 포함할 수도 있다. 위에서 언급된 바와 같이, 전용 프로세싱 유닛들, 애플리케이션들 (906), HLOS (902), 및/또는 프로그램가능한 프로세서들은 이종 시스템 아키텍쳐 (heterogeneous system architecture; HSA) 를 지원하도록 구성된 이종 컴퓨팅 플랫폼들을 지원할 수도 있다. HSA 는 애플리케이션들 (906) 에 대한 메인스트림 프로그램가능한 컴퓨팅 엘리먼트들의 혜택들 및 능력들을 보이는 개선된 프로세서 설계를 생성한다는 것이 이해되어야 한다. HSA 로, 애플리케이션들 (906) 은 단일의 통합 어드레스 공간에 데이터 구조들을 생성할 수 있고, 주어진 태스크에 대해 가장 적합한 하드웨어 상에서 병렬로 작업 아이템들을 착수시킬 수 있다. 컴퓨팅 엘리먼트들 사이에서 데이터를 공유하는 것은 포인터를 전송하는 것만큼 간단하다. 다수의 컴퓨팅 태스크들이, 데이터 동기화를 유지하는데 필요한 베리어들 및 원자 메모리 동작들을 이용하여 동일한 서로 결부된 메모리 영역들 상에서 작업할 수 있다.
위에서 보다 상세히 설명된 바와 같이, 메모리 채널 최적화 모듈 (102) 은 DRAM (104a 및 104b) 에 커플링하기 위한 복수의 하드웨어 접속부들을 더 포함한다. 하드웨어 접속부들은 메모리 디바이스들의 유형에 따라 달라질 수도 있다. 일 실시형태에서, 상이한 메모리 디바이스들은 메모리 채널 최적화 모듈 (102) 상의 물리적/제어 접속부들에 접속하는 대응하는 채널들을 제공하는 더블 데이터 레이트 (double data rate; DDR) 메모리 디바이스를 포함한다. 물리적/제어 접속부들의 개수 및 구성은 메모리 어드레스들의 사이즈 (예를 들어, 32 비트, 64 비트 등) 를 포함하여, 메모리 디바이스의 유형에 따라 달라질 수도 있는 것으로 이해되어야 한다.
HLOS (902) 는 서비스 품질 (quality of service; Qos) 모니터 모듈(들) (904) 을 포함한다. QoS 모니터 모듈(들) (904) 은 애플리케이션 메모리 요구사항들을 보장하고/하거나 매칭함으로써 애플리케이션들 (906) 에 QoS 서비스들을 제공한다. QoS 서비스들은, 예를 들어, QoS 모니터 모듈들 (904) 과 연관된 애플리케이션 프로그래머 인터페이스 (application programmer interface; API) (1002) 를 통해 HLOS (902) 에 제공되는 프로그래머 선언된 QoS 에 기초할 수도 있다. 다른 실시형태들에서, HLOS (902) 는 애플리케이션들 (906) (예를 들어, 프로세스들, 스레드들 등) 의 메모리 액세스 거동 및/또는 성능을 모니터링하는 것에 기초하여 추정된 QoS 를 결정할 수도 있다. 다른 예시적인 QoS 값들은, 데이터 액세스를 하는 애플리케이션이 원하는 성능 및 품질을 만족시킬 수 있도록 플랫폼 메모리 상에 할당될 데이터에 대한, 메모리 대역폭 및/또는 지연 (latency) 요구사항들, 또는 다른 메모리 성능 메트릭(들)일 수도 있다.
도 10 의 실시형태에 도시된 바와 같이, HLOS (902) 는 통합 어드레스 공간 (1000) 에 의해 어드레싱된 상이한 메모리 디바이스들에 대해 인터리빙된 메모리 액세스를 지원한다. 통합 어드레스 공간 (1000) 은 하나 이상의 논리적 메모리 구역들 (예를 들어, 메모리 구역들 (1004, 1006, 및 1008)) 을 포함할 수도 있다. 통합 어드레스 공간 (1000) 및 메모리 구역들 (1004, 1006, 및 1008) 은 다수의 "논리적" 디바이스들 또는 메모리 구역들을 생성하기 위해 위에서 설명되고 도 7 에서 도시된 다중 계층 인터리브 기법을 이용하여 구성될 수도 있다는 것이 이해되어야 한다. 예를 들어, 상기의 도 7 의 예를 다시 논의해 보면, 2:1 인터리브 대역폭 비율이 사용될 수도 있다. DRAM 디바이스 (104a) 는 통상적으로 GPU (106) 에 대해 최적화된 34 GB/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) 의 컨텐츠들은 커널 동작들 및/또는 다른 저 메모리 프로세스들과 같은 프로세싱을 위해 지정될 수도 있기 때문이다. 도 10 에 있어서, 메모리 구역들 (1004, 1006, 및 1008) 은 도 7 로부터의 구역들 (710, 712, 및 714) 에 대응할 수도 있다. 메모리 구역들 (1004, 1006, 및 1008) 은 다른 밀도 및/또는 성능 레벨들을 가질 수도 있다.
메모리 채널 최적화 모듈 (102) 과 합쳐진 HLOS (902) 는 효율적인 메모리 할당 기법을 제공한다. HLOS (902) 및/또는 메모리 채널 최적화 모듈 (102) 은 디바이스에 걸쳐 다양한 메모리 성능 요구사항들을 갖는 다른 애플리케이션 작업부하들에 메모리를 할당할 수도 있다는 것이 이해되어야 한다. HLOS (902) 는 하드웨어 플랫폼의 효율적인 사용을 위해 다양한 성능 요구사항의 메모리 컴포넌트들의 할당/할당해제를 적절히 관리하도록 구성된다.
QoS 모니터링 모듈 (904) 은 가상 메모리를 동적으로 할당하고 가상 메모리가 메모리 구역들 (1004, 1006, 및 1008) 중 하나 이상의 메모리 구역으로부터 자유로워지는 것을 허용할 수도 있다. 일 실시형태에서, QoS 모니터링 모듈 (904) 은 고성능을 요청하거나 그렇지 않으면 보다 고성능을 받아들일 수도 있는 애플리케이션들 (906) 과 연관된 태스크들/스레드들에 고성능 구역들을 할당할 수도 있다. QoS 모니터링 모듈 (904) 은 고성능을 요청하지 않는 태스크들/스레드들에 저성능 구역들을 할당할 수도 있다. 또한, QoS 모니터링 모듈 (904) 은, 예를 들어, 제 1 요청된 구역 유형으로부터 제 2 또는 제 3 선택으로 폴백하도록 (fallback) 메모리 할당을 동적으로 제어할 수도 있다.
QoS 모니터링 모듈 (904) 은 프로세스들을 검사하고, 그 프로세스의 크리덴셜 (credential) 들 및 그 프로세스가 그 구역에 존재하는 것이 얼마나 바람직할지에 기초하여 고성능 구역으로부터 프로세스들을 이송시키거나 퇴거시키도록 더 구성될 수도 있다. 삭제, 전력 다운 등이 될 수 있는 프로세스들이 검사되고 구역들로부터 이송되거나 퇴거됨으로써, 슬립 모드 동안에 시스템 전력 감소를 제공한다. QoS 모니터링 모듈 (130) 은 애플리케이션들 (906) 을 주기적으로 모니터링하고, 모니터링된 성능에 기초하여, 구역설정 구성들에 대한 수정들을 평가하고 권고할 수도 있다.
QoS 모니터링 모듈 (904) 은 애플리케이션 코드에 대한 메모리를 할당하는 경우 QoS 요청들 또는 힌트들을 제공하도록 구성될 수도 있다. 다양한 QoS 또는 관련된 파라미터들이 QoS 모니터링 모듈 (904) 에 의해 모니터링될 수도 있고, 예를 들어, 할당된 영역에 대한 성능 레벨 또는 액세스의 속성 (예를 들어, 크고 연속적인 스트리밍 고 처리량, 작은 청크 (chunk) 들로 이산 랜덤 액세스 등) 을 나타낼 수도 있다는 것이 이해되어야 한다.
QoS 모니터링 모듈 (904) 은 QoS 파라미터(들)를 해석하고 그것들을 특정 메모리 유형 또는 메모리 구역에 맵핑할 수도 있다. 예를 들어, 랜덤 액세스는 애플리케이션 코드의 효율적인 구현을 위해 저 메모리 액세스 지연을 이용할 수도 있는 반면, 스트리밍 고 처리량 애플리케이션 코드에 대해서는 고 메모리 대역폭을 이용하는 것이 바람직할 수도 있다. QoS 파라미터들은, 예를 들어, "메모리 액세스 지연 < x nsec" 와 같은 직접적인 실시간 값들을 포함할 수도 있다. HLOS (902) 가 API (1002) 를 포함하는 도 10 의 실시형태에서, QoS 파라미터들은 메모리 할당 라이브러리에 대한 선택적 인수일 수도 있다.
QoS 모니터링 모듈 (904) 은 다른 유형의 이종 메모리의 동적 이용들을 추적하기 위해 커널에서 메모리 관리 모듈을 보강하도록 (augment) 구성될 수도 있다. 보강된 메모리 관리 모듈은 QoS 힌트들에 기초하여 메모리 구역들 (1004, 1006, 및 1008) 중 하나의 메모리 구역에 대해 요청된 메모리의 적절한 할당을 결정할 수도 있다.
QoS 값들이 이용될 필요가 없다는 것이 이해되어야 한다. 임의의 QoS 값들의 부재 시에, QoS 모니터링 모듈 (904) 은 초기의 런타임 성능에 기초하여 애플리케이션 요청된 메모리의 할당을 위한 적절한 메모리 구역들을 결정할 수도 있다. 메모리 구역들 (1004, 1006, 및 1008) 은, 예를 들어, 애플리케이션 (906) 의 런타임 성능이 현재의 메모리 구역 할당에 기초하여 영향을 받게 되는 경우, 한 구역에서 다른 구역으로 동적으로 쉬프트될 수도 있다. QoS 파라미터의 부재 시에, QoS 모니터링 모듈 (904) 은 액세스들이 상대적으로 큰 연속적인 청크들인지 랜덤하게 액세스되는지를 추적함으로써 프로세스 및/또는 스레드의 메모리 액세스 성능을 추적할 수도 있다. 각각의 액세스 버스트 (burst) 사이의 시간 갭은 QoS 파라미터를 추정하는데 이용될 수도 있다.
QoS 모니터링 모듈 (904) 은 특정 프로세스/스레드가 계류/대기 상태에 있는 경우 특정 프로세스 또는 스레드에 대해 할당된 메모리를 추정된 QoS 에 최적으로 매칭하는 관련 메모리 구역으로 스왑하도록 (swap) 더 구성될 수도 있다. 다른 구역으로 할당된 메모리를 스왑하는 것은 액티브 실행 동안에 오버헤드를 트레이드오프하기 위해 런 상태 동안에는 방지될 수도 있다.
추정된 QoS 를 구현하는 실시형태들에서, QoS 모니터링 모듈 (904) 은 현재 할당된 메모리 구역에 매칭하도록 구성될 수도 있다. QoS 모니터링 모듈 (904) 은 메모리 액세스 거동에서의 추후의 변화들을 위해 스레드/프로세스를 모니터링할 수도 있다. 프로세스를 모니터링하는 빈도는 원하는 바에 따라 달라질 수도 있다. 대안으로, QoS 모니터링 모듈 (904) 은 모니터 프로세스의 오버헤드를 감소시키기 위해 시스템 (900) 에 대한 전체 활동에 기초하여 추가적인 모니터링을 제거할 수도 있다.
메모리 할당을 적절한 메모리 구역에 맵핑하기 위해 추정된 QoS 를 결정할 목적으로 프로세스/스레드의 메모리 액세스 거동/패턴을 추출하도록 구성되는 다양한 하드웨어 구조들이 구현될 수도 있다는 것이 이해되어야 한다. 또한, 메모리 구역 할당은 특정 프로세스/스레드 내의 다른 할당들이 QoS 가 보다 넓은 범위를 만족시키는 다른 메모리 구역들에 할당될 수 있는 경우 보다 입상일 (granular) 수 있다. 예를 들어, 일부 컴포넌트들은, 예를 들어, 빠른 랜덤 액세스지만 저 대역폭 메모리와 비교하여 고 처리량을 필요로 함으로써 높은 지연을 견딜 수 있는 고 대역폭 스트리밍 데이터에 더 적합할 수도 있다.
도 11 은 상술된 QoS 서비스들 중 하나 이상을 메모리 채널 최적화 모듈 (102) 과 합치기 위한 시스템 (1100) 의 다른 실시형태를 도시한다. 이러한 접근법은 HLOS (902) 에 의해 제공되는 QoS 솔루션과 호환가능하지 않을 수도 있는 레거시 애플리케이션들 (906) 에 맞추는 것이 바람직할 수도 있다. 이러한 실시형태에서, 메모리 채널 최적화 모듈 (102) 은 상술된 채널 재맵핑 모듈(들) (400) 에 동작가능하게 커플링된 QoS 모니터링 모듈(들) (904) 을 더 포함한다.
도 12 는 상술된 인터리빙 및 재맵핑 접근법들에 따라 시스템 (900) (도 9) 또는 시스템 (1100) (도 11) 중 어느 일방에서 메모리를 동적으로 할당하는 방법 (1200) 을 도시한다. 블록 (1202) 에서, 인터리브 대역폭 비율이 결정된다. 상술된 바와 같이, 인터리브 대역폭 비율은 2 개 이상의 상이한 메모리 유형들 또는 디바이스들에 대한 대역폭들의 비율을 포함할 수도 있다. 블록 (1204) 에서, 상이한 메모리 유형들 또는 디바이스들은 블록 (1202) 에서 결정된 인터리브 대역폭 비율에 따라 인터리빙된다. 각각의 메모리 구역이 다른 성능 레벨 및/또는 밀도 레벨을 갖는 2 개 이상의 메모리 구역들 (예를 들어, 구역 (1004, 1006, 및 1008)) 을 정의하기 위해 상술된 접근법 또는 다른 인터리빙 접근법 중 임의의 접근법이 구현될 수도 있다. 블록 (1206) 에서, HLOS (902) 및/또는 메모리 채널 최적화 모듈 (102) 은 애플리케이션들 (906) (또는 다른 클라이언트들) 로부터 메모리 어드레스 요청들을 수신할 수도 있다. 이에 응답하여, (예를 들어, API (1002) 를 통해) 선언된 QoS 또는 추정된 QoS 중 어느 일방에 기초하여 적절한 메모리 구역에 메모리가 할당된다.
도 13 에 도시된 실시형태에서, 선언된 QoS 는 API (1002) 에 대응하는 "malloc" (즉, 메모리 할당) 함수를 이용하여 구현될 수도 있다. 2:1 인터리브 대역폭 비율을 이용하는 위의 예 (도 7) 에 따르면, 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 를 제공하기 위해 인터리빙되지 않을 수도 있다. QoS 는 메모리 할당 함수들의 모든 다른 변형예들에 적용될 수도 있고, "malloc" 은 단지 하나의 가능한 예로서 이용된다는 것이 이해되어야 한다.
제 1 malloc 함수 (1302) 는, 예를 들어, 4-way 인터리빙된 메모리 구역 (710) 과 연관된 제 1 QoS 를 선언하는데 이용될 수도 있다. 제 2 malloc 함수 (1304) 는, 예를 들어, 2-way 인터리빙된 구역 (712) 과 연관된 제 2 QoS 를 선언하는데 이용될 수도 있다. 제 3 malloc 함수 (1306) 는, 예를 들어, 인터리빙되지 않은 구역 (1306) 과 연관된 제 3 QoS 를 선언하는데 이용될 수도 있다.
본원에 설명된 방법 단계들 중 하나 이상의 방법 단계는 상술된 모듈들과 같은 컴퓨터 프로그램 명령들로서 메모리에 저장될 수도 있다는 것이 이해되어야 한다. 이러한 명령들은 본원에 설명된 방법들을 수행하기 위해 대응하는 모듈과 조합하여 또는 대응하는 모듈과 협력하여 임의의 적합한 프로세서에 의해 실행될 수도 있다.
본 명세서에서 설명된 프로세스들 또는 프로세스 흐름들에서의 소정의 단계들은 물론 설명된 바와 같이 기능하기 위해 본 발명에 대한 다른 것들에 선행한다. 그러나, 그러한 순서 또는 시퀀스가 본 발명의 기능성을 변경하지 않는 경우, 본 발명은 설명된 단계들의 순서로 제한되지 않는다. 즉, 다른 실시예들에서, 본 발명의 범위 및 사상을 벗어나지 않으면서 일부 단계들이 다른 단계들 전, 후, 또는 병행하여 (실질적으로 동시에) 수행될 수도 있는 것으로 인식된다. 일부 사례들에서, 본 발명으로부터 벗어나지 않으면서 소정의 단계들이 생략되거나 수행되지 않을 수도 있다. 또한, "그 후", "그 다음", "다음에" 등과 같은 단어들은 단계들의 순서를 제한하려는 의도는 아니다. 이러한 단어들은 단순히 예시적인 방법의 설명을 통해 독자를 인도하려는 의도로 이용된다.
또한, 프로그래밍의 당업자는, 예를 들어, 본 명세서에서의 플로 차트들 및 연관된 설명에 기초하여 어려움 없이 개시된 발명을 구현하기 위해 컴퓨터 코드를 작성하거나 적절한 하드웨어 및/또는 회로들을 식별하는 것이 가능하다.
따라서, 프로그램 코드 명령들의 특정 세트 또는 상세한 하드웨어 디바이스들의 개시물은 본 발명을 제작하고 이용하는 방식의 적절한 이해를 위해 필수적인 것으로 고려되지는 않는다. 청구된 컴퓨터 구현된 프로세스들의 독창적 기능성은 상기의 설명에서, 그리고 다양한 프로세스 흐름들을 도시할 수도 있는 도면들과 연게하여 보다 상세히 설명된다.
하나 이상의 예시적인 양상들에서, 상술된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 송신될 수도 있다. 컴퓨터 판독가능 매체들은 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 가능하게 하는 임의의 매체를 포함하여 컴퓨터 저장 매체들 및 통신 매체들 양자를 포함한다. 저장 매체들은 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수도 있다. 비제한적인 예로서, 그러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 이송 또는 저장하기 위해 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수도 있다.
또한, 임의의 접속은 컴퓨터 판독가능 매체라고 적절히 칭해진다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 ("DSL"), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되는 경우, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다.
본원에서 이용된 디스크 (disk) 와 디스크 (disc) 는, 컴팩트 디스크 ("CD"), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 ("DVD"), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 통상 자기적으로 데이터를 재생하는 반면, 디스크 (disc) 들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 위의 조합들도 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
본 발명의 사상 및 범주로부터 벗어나지 않으면서 본 발명과 관련되는 대안적인 실시형태들이 당업자에게 자명할 것이다. 따라서, 선택된 양상들이 도해되고 상세히 설명되었지만, 다음의 청구항들에 의해 정의되는 본 발명의 사상과 범주로부터 벗어나지 않으면서 다양한 대체예들 및 수정예들이 이루어질 수도 있음이 이해될 것이다.
Claims (25)
- 2 개 이상의 상이한 메모리 디바이스들에 대한 대역폭들의 비율을 포함하는 인터리브 대역폭 비율을 결정하는 단계;
상기 인터리브 대역폭 비율에 따라 상기 상이한 메모리 디바이스들을 인터리빙하고 다른 성능 레벨들을 갖는 2 개 이상의 메모리 구역들을 정의하는 단계; 및
서비스 품질 (quality of service; QoS) 에 기초하여 상기 메모리 구역들에 메모리 어드레스 요청들을 할당하는 단계를 포함하는, 상이한 메모리 디바이스들에 메모리를 할당하는 방법. - 제 1 항에 있어서,
상기 상이한 메모리 디바이스들은 제 1 유형의 동적 랜덤 액세스 메모리 (dynamic random access memory; DRAM) 및 제 2 유형의 DRAM 을 포함하는, 상이한 메모리 디바이스들에 메모리를 할당하는 방법. - 제 2 항에 있어서,
상기 제 1 유형 또는 제 2 유형의 DRAM 중 하나 이상은 더블 데이터 레이트 (double date rate; DDR) 메모리를 포함하는, 상이한 메모리 디바이스들에 메모리를 할당하는 방법. - 제 1 항에 있어서,
상기 QoS 는 애플리케이션으로부터 선언된 QoS 를 포함하는, 상이한 메모리 디바이스들에 메모리를 할당하는 방법. - 제 4 항에 있어서,
상기 QoS 에 기초하여 상기 메모리 구역들에 상기 메모리 어드레스 요청들을 할당하는 것은 상기 메모리 어드레스 요청들을 수신하는 하이 레벨 운영 시스템 (high-level operating system; HLOS) 을 포함하는, 상이한 메모리 디바이스들에 메모리를 할당하는 방법. - 제 1 항에 있어서,
상기 QoS 는 하이 레벨 운영 시스템 (HLOS) 과 연관된 애플리케이션 프로그램 인터페이스 (application program interface; API) 를 통해 선언되는, 상이한 메모리 디바이스들에 메모리를 할당하는 방법. - 제 1 항에 있어서,
상기 QoS 는 상기 메모리 구역들 중 하나 이상의 메모리 구역의 현재 성능에 기초하여 추정된 QoS 를 포함하는, 상이한 메모리 디바이스들에 메모리를 할당하는 방법. - 제 1 항에 있어서,
상기 서비스 품질 (QoS) 에 기초하여 상기 메모리 구역들에 메모리 어드레스 요청들을 할당하는 것은 상기 QoS 를 추정하는 메모리 채널 최적화 모듈을 포함하는, 상이한 메모리 디바이스들에 메모리를 할당하는 방법. - 2 개 이상의 상이한 메모리 디바이스들에 대한 대역폭들의 비율을 포함하는 인터리브 대역폭 비율을 결정하는 수단;
상기 인터리브 대역폭 비율에 따라 상기 상이한 메모리 디바이스들을 인터리빙하고 다른 성능 레벨들을 갖는 2 개 이상의 메모리 구역들을 정의하는 수단; 및
서비스 품질 (quality of service; QoS) 에 기초하여 상기 메모리 구역들에 메모리 어드레스 요청들을 할당하는 수단을 포함하는, 상이한 메모리 디바이스들에 메모리를 할당하기 위한 시스템. - 제 9 항에 있어서,
상기 상이한 메모리 디바이스들은 제 1 유형의 동적 랜덤 액세스 메모리 (dynamic random access memory; DRAM) 및 제 2 유형의 DRAM 을 포함하는, 상이한 메모리 디바이스들에 메모리를 할당하기 위한 시스템. - 제 10 항에 있어서,
상기 제 1 유형 또는 제 2 유형의 DRAM 중 하나 이상은 더블 데이터 레이트 (double date rate; DDR) 메모리를 포함하는, 상이한 메모리 디바이스들에 메모리를 할당하기 위한 시스템. - 제 9 항에 있어서,
상기 QoS 는 애플리케이션으로부터 선언된 QoS 또는 추정된 QoS 중 하나를 포함하는, 상이한 메모리 디바이스들에 메모리를 할당하기 위한 시스템. - 제 9 항에 있어서,
상기 할당하는 수단은 하이 레벨 운영 시스템 (high-level operating system; HLOS) 및 메모리 채널 최적화 모듈 중 하나를 포함하는, 상이한 메모리 디바이스들에 메모리를 할당하기 위한 시스템. - 제 1 유형의 메모리 디바이스;
제 2 유형의 메모리 디바이스;
상기 제 1 및 제 2 유형의 메모리 디바이스들과 통신에서 메모리 채널 최적화 모듈로서, 상기 메모리 채널 최적화 모듈은,
상기 제 1 유형의 메모리 디바이스 및 상기 제 2 유형의 메모리 디바이스에 대한 대역폭들의 비율을 포함하는 인터리브 대역폭 비율을 결정하고;
상기 인터리브 대역폭 비율에 따라 상기 제 1 및 제 2 유형의 메모리 디바이스들을 인터리빙하며 다른 성능 레벨들을 갖는 2 개 이상의 메모리 구역들을 정의함으로써, 상기 제 1 및 제 2 유형의 메모리 다비이스들을 인터리빙하는 통합 동작 모드에서 동작가능한, 상기 메모리 채널 최적화 모듈; 및
하나 이상의 애플리케이션들로부터의 메모리 어드레스 요청들을 QoS 에 기초하여 상기 메모리 구역들 중 하나의 메모리 구역에 할당하기 위해 상기 메모리 채널 최적화 모듈과 통신에서 하이 레벨 운영 시스템 (high-level operating system; HLOS) 을 포함하는, 컴퓨터 시스템에서 메모리 디바이스들을 관리하기 위한 메모리 시스템. - 제 14 항에 있어서,
상기 제 1 유형의 메모리 디바이스는 제 1 유형의 더블 데이터 레이트 (double data rate; DDR) 메모리를 포함하고, 상기 제 2 유형의 메모리 디바이스는 제 2 유형의 DDR 메모리를 포함하는, 컴퓨터 시스템에서 메모리 디바이스들을 관리하기 위한 메모리 시스템. - 제 14 항에 있어서,
상기 HLOS 는 연관된 애플리케이션 프로그램 인터페이스 (application program interface; API) 를 통해 상기 QoS 를 수신하는, 컴퓨터 시스템에서 메모리 디바이스들을 관리하기 위한 메모리 시스템. - 제 14 항에 있어서,
상기 메모리 채널 최적화 모듈은 상기 메모리 구역들 중 하나 이상의 메모리 구역에 대한 현재 성능 레벨에 기초하여 상기 QoS 를 추정하도록 더 동작가능한, 컴퓨터 시스템에서 메모리 디바이스들을 관리하기 위한 메모리 시스템. - 구체화된 컴퓨터 판독가능 프로그램 코드를 갖는 컴퓨터 이용가능한 매체를 포함하는 컴퓨터 프로그램 제품으로서,
상기 컴퓨터 판독가능 프로그램 코드는 상이한 메모리 디바이스들에 메모리를 동적으로 할당하는 방법을 구현하기 위해 실행되도록 구성되고,
상기 방법은,
2 개 이상의 상이한 메모리 디바이스들에 대한 대역폭들의 비율을 포함하는 인터리브 대역폭 비율을 결정하는 단계;
상기 인터리브 대역폭 비율에 따라 상기 상이한 메모리 디바이스들을 인터리빙하고 다른 성능 레벨들을 갖는 2 개 이상의 메모리 구역들을 정의하는 단계; 및
서비스 품질 (quality of service; QoS) 에 기초하여 상기 메모리 구역들에 메모리 어드레스 요청들을 할당하는 단계를 포함하는, 컴퓨터 이용가능한 매체를 포함하는 컴퓨터 프로그램 제품. - 제 18 항에 있어서,
상기 상이한 메모리 디바이스들은 제 1 유형의 동적 랜덤 액세스 메모리 (dynamic random access memory; DRAM) 및 제 2 유형의 DRAM 을 포함하는, 컴퓨터 이용가능한 매체를 포함하는 컴퓨터 프로그램 제품. - 제 19 항에 있어서,
상기 제 1 유형 또는 제 2 유형의 DRAM 중 하나 이상은 더블 데이터 레이트 (double date rate; DDR) 메모리를 포함하는, 컴퓨터 이용가능한 매체를 포함하는 컴퓨터 프로그램 제품. - 제 18 항에 있어서,
상기 QoS 는 애플리케이션으로부터 선언된 QoS 를 포함하는, 컴퓨터 이용가능한 매체를 포함하는 컴퓨터 프로그램 제품. - 제 21 항에 있어서,
상기 선언된 QoS 에 기초하여 상기 메모리 구역들에 상기 메모리 어드레스 요청들을 할당하는 것은 상기 메모리 어드레스 요청들을 수신하는 하이 레벨 운영 시스템 (high-level operating system; HLOS) 을 포함하는, 컴퓨터 이용가능한 매체를 포함하는 컴퓨터 프로그램 제품. - 제 18 항에 있어서,
상기 QoS 는 하이 레벨 운영 시스템 (HLOS) 과 연관된 애플리케이션 프로그램 인터페이스 (application program interface; API) 를 통해 선언되는, 컴퓨터 이용가능한 매체를 포함하는 컴퓨터 프로그램 제품. - 제 18 항에 있어서,
상기 QoS 는 상기 메모리 구역들 중 하나 이상의 메모리 구역의 현재 성능에 기초하여 추정된 QoS 를 포함하는, 컴퓨터 이용가능한 매체를 포함하는 컴퓨터 프로그램 제품. - 제 18 항에 있어서,
상기 서비스 품질 (QoS) 에 기초하여 상기 메모리 구역들에 메모리 어드레스 요청들을 할당하는 것은 상기 QoS 를 추정하는 메모리 채널 최적화 모듈을 포함하는, 컴퓨터 이용가능한 매체를 포함하는 컴퓨터 프로그램 제품.
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,366 | 2013-02-28 | ||
US13/781,366 US9092327B2 (en) | 2012-12-10 | 2013-02-28 | System and method for allocating memory to dissimilar memory devices using quality of service |
PCT/US2013/068217 WO2014092883A1 (en) | 2012-12-10 | 2013-11-04 | System and method for allocating memory to dissimilar memory devices using quality of service |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150095725A true KR20150095725A (ko) | 2015-08-21 |
KR101613826B1 KR101613826B1 (ko) | 2016-04-19 |
Family
ID=50882302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157017668A KR101613826B1 (ko) | 2012-12-10 | 2013-11-04 | 서비스 품질을 이용하여 상이한 메모리 디바이스들에 메모리를 할당하는 시스템 및 방법 |
Country Status (8)
Country | Link |
---|---|
US (2) | US9092327B2 (ko) |
EP (1) | EP2929440A1 (ko) |
JP (1) | JP5916970B2 (ko) |
KR (1) | KR101613826B1 (ko) |
CN (1) | CN104871143B (ko) |
BR (1) | BR112015013487B1 (ko) |
TW (1) | TWI534620B (ko) |
WO (1) | WO2014092883A1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150031400A (ko) * | 2013-09-13 | 2015-03-24 | 삼성전자주식회사 | 고 대역폭 메모리 및 저 대역폭 메모리에 연결되는 응용 프로세서를 포함하는 반도체 장치 및 그것의 채널 인터리빙 방법 |
DE102015120558A1 (de) | 2015-07-06 | 2017-01-12 | Hyundai Motor Company | Untere Abdeckung zur Wärmeabsaugung |
KR20200040109A (ko) * | 2018-10-08 | 2020-04-17 | 울산과학기술원 | 이종 메모리를 활용한 범용 gpu에서의 페이징 방법 및 장치 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8959298B2 (en) | 2012-12-10 | 2015-02-17 | Qualcomm Incorporated | System and method for managing performance of a computing device having dissimilar memory types |
US9110795B2 (en) | 2012-12-10 | 2015-08-18 | Qualcomm Incorporated | System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components |
US9092327B2 (en) | 2012-12-10 | 2015-07-28 | Qualcomm Incorporated | System and method for allocating memory to dissimilar memory devices using quality of service |
US20150261662A1 (en) * | 2014-03-12 | 2015-09-17 | Advanced Micro Devices, Inc. | Address-partitioned multi-class physical memory system |
CN110177279B (zh) * | 2014-03-28 | 2021-10-08 | 联咏科技股份有限公司 | 视频处理装置与其视频处理电路 |
US9910767B2 (en) * | 2014-12-15 | 2018-03-06 | Toshiba Memory Corporation | Leveraging instruction RAM as a data RAM extension during use of a modified Harvard architecture processor |
US10491667B1 (en) * | 2015-03-16 | 2019-11-26 | Amazon Technologies, Inc. | Customized memory modules in multi-tenant service provider systems |
US20170108911A1 (en) * | 2015-10-16 | 2017-04-20 | Qualcomm Incorporated | System and method for page-by-page memory channel interleaving |
US20170109090A1 (en) * | 2015-10-16 | 2017-04-20 | Qualcomm Incorporated | System and method for page-by-page memory channel interleaving |
US20170162235A1 (en) * | 2015-12-02 | 2017-06-08 | Qualcomm Incorporated | System and method for memory management using dynamic partial channel interleaving |
US20180032429A1 (en) * | 2016-07-29 | 2018-02-01 | Intel Corporation | Techniques to allocate regions of a multi-level, multi-technology system memory to appropriate memory access initiators |
US10289847B2 (en) * | 2016-07-29 | 2019-05-14 | Qualcomm Incorporated | Updating virtual memory addresses of target application functionalities for an updated version of application binary code |
US10055158B2 (en) * | 2016-09-22 | 2018-08-21 | Qualcomm Incorporated | Providing flexible management of heterogeneous memory systems using spatial quality of service (QoS) tagging in processor-based systems |
CN107704213B (zh) * | 2017-11-02 | 2021-08-31 | 郑州云海信息技术有限公司 | 一种存储阵列的自动化服务质量管理方法及装置 |
KR102387977B1 (ko) | 2017-11-29 | 2022-04-19 | 삼성전자주식회사 | 적어도 두 개의 채널들을 통해 시스템 온 칩과 통신하는 메모리 장치, 이를 포함하는 전자 장치, 그리고 전자 장치의 동작 방법 |
KR102482896B1 (ko) | 2017-12-28 | 2022-12-30 | 삼성전자주식회사 | 이종 휘발성 메모리 칩들을 포함하는 메모리 장치 및 이를 포함하는 전자 장치 |
KR102257325B1 (ko) * | 2018-12-10 | 2021-05-27 | 한국과학기술원 | 다중 서비스 요청 및 맥락인지 기반의 IoT 카메라 가상화 장치 및 방법 |
US11726910B2 (en) * | 2019-03-13 | 2023-08-15 | Intel Corporation | Dynamic control of memory bandwidth allocation for a processor |
US11011223B2 (en) * | 2019-08-27 | 2021-05-18 | Micron Technology, Inc. | Memory sub-system grading and allocation |
US11782835B2 (en) | 2020-11-30 | 2023-10-10 | Electronics And Telecommunications Research Institute | Host apparatus, heterogeneous system architecture device, and heterogeneous system based on unified virtual memory |
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 |
US11789649B2 (en) | 2021-04-22 | 2023-10-17 | Nvidia Corporation | Combined on-package and off-package memory system |
US11632337B1 (en) * | 2021-10-11 | 2023-04-18 | Cisco Technology, Inc. | Compute express link over ethernet in composable data centers |
Family Cites Families (39)
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 |
US20020065922A1 (en) * | 2000-11-30 | 2002-05-30 | Vijnan Shastri | Method and apparatus for selection and redirection of an existing client-server connection to an alternate data server hosted on a data packet network (DPN) based on performance comparisons |
US20020075844A1 (en) * | 2000-12-15 | 2002-06-20 | Hagen W. Alexander | Integrating public and private network resources for optimized broadband wireless access and method |
US7120727B2 (en) | 2003-06-19 | 2006-10-10 | Micron Technology, Inc. | Reconfigurable memory module and method |
US8407433B2 (en) | 2007-06-25 | 2013-03-26 | Sonics, Inc. | Interconnect implementing internal controls |
EP1733537A1 (en) | 2004-03-10 | 2006-12-20 | Qualcomm, Incorporated | High data rate interface apparatus 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 |
US7680830B1 (en) * | 2005-05-31 | 2010-03-16 | Symantec Operating Corporation | System and method for policy-based data lifecycle management |
US20070083482A1 (en) * | 2005-10-08 | 2007-04-12 | Unmesh Rathi | Multiple quality of service file system |
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 |
US20080250212A1 (en) * | 2007-04-09 | 2008-10-09 | Ati Technologies Ulc | Method and apparatus for accessing memory using programmable memory accessing interleaving ratio information |
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 |
KR20100100395A (ko) | 2009-03-06 | 2010-09-15 | 삼성전자주식회사 | 복수의 프로세서를 포함하는 메모리 시스템 |
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 |
US20120066444A1 (en) | 2010-09-14 | 2012-03-15 | Advanced Micro Devices, Inc. | Resolution Enhancement of Video Stream Based on Spatial and Temporal Correlation |
US8314807B2 (en) | 2010-09-16 | 2012-11-20 | Apple Inc. | Memory controller with QoS-aware scheduling |
CN103354939B (zh) | 2010-12-17 | 2016-03-16 | 艾沃思宾技术公司 | 用于使dram和mram访问交错的存储器控制器和方法 |
US8854387B2 (en) | 2010-12-22 | 2014-10-07 | Advanced Micro Devices, Inc. | Bundle-based CPU/GPU memory controller coordination mechanism |
KR101467941B1 (ko) | 2011-04-26 | 2014-12-02 | 엘에스아이 코포레이션 | 비휘발성 저장부에 대한 가변 오버프로비저닝 |
CN102426552B (zh) * | 2011-10-31 | 2014-06-04 | 华为数字技术(成都)有限公司 | 存储系统服务质量控制方法、装置和系统 |
US9092327B2 (en) | 2012-12-10 | 2015-07-28 | Qualcomm Incorporated | System and method for allocating memory to dissimilar memory devices using quality of service |
US9110795B2 (en) | 2012-12-10 | 2015-08-18 | Qualcomm Incorporated | System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components |
US8959298B2 (en) | 2012-12-10 | 2015-02-17 | Qualcomm Incorporated | System and method for managing performance of a computing device having dissimilar memory types |
-
2013
- 2013-02-28 US US13/781,366 patent/US9092327B2/en active Active
- 2013-11-04 BR BR112015013487-4A patent/BR112015013487B1/pt active IP Right Grant
- 2013-11-04 CN CN201380064062.2A patent/CN104871143B/zh active Active
- 2013-11-04 EP EP13802138.1A patent/EP2929440A1/en not_active Ceased
- 2013-11-04 WO PCT/US2013/068217 patent/WO2014092883A1/en active Application Filing
- 2013-11-04 JP JP2015546477A patent/JP5916970B2/ja active Active
- 2013-11-04 KR KR1020157017668A patent/KR101613826B1/ko active IP Right Grant
- 2013-11-18 TW TW102141943A patent/TWI534620B/zh active
-
2015
- 2015-06-19 US US14/744,831 patent/US10067865B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150031400A (ko) * | 2013-09-13 | 2015-03-24 | 삼성전자주식회사 | 고 대역폭 메모리 및 저 대역폭 메모리에 연결되는 응용 프로세서를 포함하는 반도체 장치 및 그것의 채널 인터리빙 방법 |
DE102015120558A1 (de) | 2015-07-06 | 2017-01-12 | Hyundai Motor Company | Untere Abdeckung zur Wärmeabsaugung |
KR20200040109A (ko) * | 2018-10-08 | 2020-04-17 | 울산과학기술원 | 이종 메모리를 활용한 범용 gpu에서의 페이징 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
CN104871143B (zh) | 2018-04-24 |
JP5916970B2 (ja) | 2016-05-11 |
BR112015013487B1 (pt) | 2023-01-31 |
BR112015013487A2 (pt) | 2017-07-11 |
US20140164690A1 (en) | 2014-06-12 |
TW201439760A (zh) | 2014-10-16 |
KR101613826B1 (ko) | 2016-04-19 |
WO2014092883A1 (en) | 2014-06-19 |
JP2016503911A (ja) | 2016-02-08 |
TWI534620B (zh) | 2016-05-21 |
EP2929440A1 (en) | 2015-10-14 |
US20150286565A1 (en) | 2015-10-08 |
US9092327B2 (en) | 2015-07-28 |
US10067865B2 (en) | 2018-09-04 |
CN104871143A (zh) | 2015-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101613826B1 (ko) | 서비스 품질을 이용하여 상이한 메모리 디바이스들에 메모리를 할당하는 시스템 및 방법 | |
KR101627478B1 (ko) | 비대칭 메모리 컴포넌트들을 구비한 메모리 서브시스템에서 메모리를 동적으로 할당하는 시스템 및 방법 | |
JP6178512B2 (ja) | 選択的な電力または性能の最適化を伴うメモリチャネルインターリービングのためのシステムおよび方法 | |
EP2929446B1 (en) | System and method for managing performance of a computing device having dissimilar memory types | |
KR101952562B1 (ko) | 홀수 계수 메모리 채널 인터리빙을 위한 시스템 및 방법 | |
US20170109090A1 (en) | System and method for page-by-page memory channel interleaving | |
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 | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190327 Year of fee payment: 4 |