KR20210016325A - 메모리 구성의 동적 변환을 위한 아키텍처 - Google Patents
메모리 구성의 동적 변환을 위한 아키텍처 Download PDFInfo
- Publication number
- KR20210016325A KR20210016325A KR1020207026986A KR20207026986A KR20210016325A KR 20210016325 A KR20210016325 A KR 20210016325A KR 1020207026986 A KR1020207026986 A KR 1020207026986A KR 20207026986 A KR20207026986 A KR 20207026986A KR 20210016325 A KR20210016325 A KR 20210016325A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- circuit
- memory circuit
- data
- pages
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 665
- 230000009466 transformation Effects 0.000 title description 3
- 238000012546 transfer Methods 0.000 claims abstract description 28
- 238000000034 method Methods 0.000 claims description 47
- 238000003860 storage Methods 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 10
- 230000002085 persistent effect Effects 0.000 claims description 8
- 230000008878 coupling Effects 0.000 claims description 7
- 238000010168 coupling process Methods 0.000 claims description 7
- 238000005859 coupling reaction Methods 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 6
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 76
- 238000010586 diagram Methods 0.000 description 40
- 238000006073 displacement reaction Methods 0.000 description 40
- 238000006243 chemical reaction Methods 0.000 description 39
- 238000004891 communication Methods 0.000 description 26
- 238000007667 floating Methods 0.000 description 18
- 239000003795 chemical substances by application Substances 0.000 description 16
- 230000008569 process Effects 0.000 description 15
- 238000012545 processing Methods 0.000 description 13
- 230000009977 dual effect Effects 0.000 description 9
- 230000003416 augmentation Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 238000013501 data transformation Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000000977 initiatory effect Effects 0.000 description 6
- 230000000873 masking effect Effects 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 6
- 230000001052 transient effect Effects 0.000 description 6
- 238000004220 aggregation Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000036961 partial effect Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 4
- 230000003190 augmentative effect Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Power Sources (AREA)
- Memory System (AREA)
Abstract
일 실시예가 장치를 제공한다. 장치는 제1 전도성 버스를 통해 제1 메모리 회로에 대한 판독 및/또는 기입 액세스를 제어하는 제1 메모리 제어기 회로를 포함한다. 장치는 제2 전도성 버스를 통해 제2 메모리 회로에 대한 판독 및/또는 기입 액세스를 제어하는 제2 메모리 제어기 회로를 포함한다. 장치는 제1 메모리 제어기 회로 및 제2 메모리 제어기 회로에 결합된 전력 제어 회로를 포함한다. 전력 제어 회로는 제2 전도성 버스를 통한 제2 메모리 제어기 회로에 의한 제2 메모리 회로로부터의 데이터를 제1 전도성 버스를 통한 제1 메모리 제어기 회로에 의한 제1 메모리 회로로 전송한다. 전력 제어 회로는 제2 메모리 회로로부터 제1 메모리 회로로의 데이터의 전송 이후에 제2 메모리 회로를 파워 다운한다. 전력 제어 회로는 장치의 전력 소비를 감소시키고 장치의 배터리 수명을 증가시킬 수 있다.
Description
본 개시내용은 메모리 구성에 관한 것인데, 특히 메모리 구성의 동적 변환을 위한 아키텍처에 관한 것이다.
배터리 수명은 실질적으로 모바일 컴퓨팅 디바이스들의 편의성을 규정한다. 더 긴 배터리 수명을 갖는 모바일 디바이스들은 물리적으로 이동 중인 동안에 사용 상태가 그들의 네트워크에 사실상 테더링된 채로 남아 있게 해준다. 그러나, 모바일 컴퓨팅 디바이스가 짧은 배터리 수명을 가질 때, 사용자들은 스크린을 디밍(dimming)하는 것, 저전력 모드에 진입하는 것, 프로세서들을 늦추는 것, 피처들을 턴 오프하는 것, 모바일 디바이스를 턴 오프하는 것 등과 같은 일련의 불편한 동작들을 통해 배터리 수명을 연장하려고 시도한다. 디바이스 및 소프트웨어 제조자들의 상충하는 목표는 모바일 컴퓨팅 디바이스들의 사용자들이 모바일 컴퓨팅 디바이스들에 의해 제공되는 특징들을 향유하는 것을 허용하면서, 모바일 컴퓨팅 디바이스의 편리한 사용을 가능하게 하는 배터리 수명을 제공하는 것이다.
저전력 동작들 및 전력 집약적인 동작들 둘 모두 동안 배터리로부터 전력을 인출하는 컴퓨터 컴포넌트들 중 하나는 모바일 컴퓨팅 디바이스의 메인 메모리이다. 메인 메모리는 통상적으로 데이터를 보존하기 위해 규칙적으로 리프레시되거나 전력 재공급됨으로써 전력을 인출하는 랜덤 액세스 메모리(RAM)를 지칭한다. 메인 메모리는 예를 들어 모바일 컴퓨팅 디바이스의 애플리케이션들, 데이터, 및 기본 동작들에 관련된 정보를 저장하기 위해 프로세서에 의해 사용된다. 메모리의 용량 및 대역폭 둘 다는 수년 동안 상당히 증가하였기 때문에, 많은 모바일 컴퓨팅 디바이스들은 간단한 동작들 또는 사용들을 위해 필요한 것보다 훨씬 더 많은 메인 메모리 용량을 갖는다. 메인 메모리 용량 및 메인 메모리의 더 큰 양에 의해 인출되는 전력 때문에, 일부 모바일 컴퓨팅 디바이스들은 더 작고, 더 얇고, 덜 강력한 전자기기(예를 들어, 태블릿들)의 배터리 수명 능력들을 ?i아가려고 애쓰고 있다. 이는 사용자들로 하여금 모바일 컴퓨팅 디바이스들이 보조 전자 디바이스들과 동일한 특징들 (및 더 많은 것)을 제공하는 능력에도 불구하고 보조 전자 디바이스들을 구매하도록 야기할 수 있다.
청구된 발명 대상의 특징들 및 장점들은 그와 일치하는 실시예들의 다음의 상세한 설명으로부터 명백할 것이며, 이 설명은 첨부 도면들을 참조하여 고려되어야 한다.
도 1a 및 도 1b는 본 개시내용의 몇몇 실시예들과 부합하여 메인 메모리를 동적으로 통합(consolidating) 및/또는 재구성함으로써 컴퓨팅 시스템의 전력 소비를 감소시킬 수 있는 호스트 시스템을 갖는 컴퓨팅 시스템의 기능 블록도를 예시한다.
도 2는 본 개시내용의 적어도 하나의 실시예에 따라 메인 메모리의 메모리 세그먼트들의 메모리 페이지들을 동적으로 통합하는 흐름도이다.
도 3은 본 개시내용의 다양한 실시예들에 따른, 메인 메모리를 이중 채널 또는 다중 채널 구성으로부터 단일 채널 구성으로 변환하는 것의 흐름도이다.
도 4는 본 개시내용의 다양한 실시예들에 따른, 메인 메모리를 이중 채널 또는 다중 채널 구성으로부터 단일 채널 구성으로 동적으로 변환하는 흐름도이다.
도 5는 본 개시내용의 다양한 실시예들에 따른, 메인 메모리를 단일 채널 구성으로부터 네이티브(이중 채널 또는 다중 채널) 구성으로 동적으로 변환 해제하는 흐름도이다.
도 6a 및 도 6b는 본 개시내용의 실시예들에 따른 일반적 벡터 친화적 명령어 포맷 및 이것의 명령어 템플릿들을 예시하는 블록도들이다.
도 7a 내지 도 7d는 본 개시내용의 실시예들에 따른 예시적인 특정 벡터 친화적 명령어 포맷을 예시하는 블록도들이다.
도 8은 본 개시내용의 일 실시예에 따른 레지스터 아키텍처의 블록도이다.
도 9a는 본 개시내용의 실시예들에 따른 예시적인 순차적 파이프라인 및 예시적인 레지스터 리네이밍, 비순차적 발행/실행 파이프라인의 둘 모두를 예시하는 블록도이다.
도 9b는 본 개시내용의 실시예들에 따른 프로세서에 포함되는 순차적 아키텍처 코어와 예시적인 레지스터 리네이밍, 비순차적 발행/실행 아키텍처 코어의 예시적인 실시예 둘 모두를 예시하는 블록도이다.
도 10a 및 도 10b는 더 특정적이고 예시적인 순차적 코어 아키텍처의 블록도를 예시하는데, 이 코어는 칩 내의(동일 타입 및/또는 상이한 타입들의 다른 코어들을 포함하는) 여러 개의 로직 블록 중 하나일 것이다.
도 11은 본 개시내용의 실시예들에 따라 둘 이상의 코어를 가질 수 있고, 통합 메모리 제어기를 가질 수 있고, 통합 그래픽을 가질 수 있는 프로세서의 블록도이다.
도 12 내지 도 15는 예시적인 컴퓨터 아키텍처들의 블록도들이다. 및
도 16은 본 개시내용의 실시예들에 따라 소스 명령어 세트에서의 바이너리 명령어들을 타겟 명령어 세트에서의 바이너리 명령어들로 변환하는 소프트웨어 명령어 변환기의 사용을 대조하는 블록도이다.
이하의 상세한 설명은 예시적인 실시예들을 참조하여 진행될 것이지만, 그의 많은 대안들, 수정들, 및 변형들이 본 기술분야의 통상의 기술자에게 명백할 것이다.
도 1a 및 도 1b는 본 개시내용의 몇몇 실시예들과 부합하여 메인 메모리를 동적으로 통합(consolidating) 및/또는 재구성함으로써 컴퓨팅 시스템의 전력 소비를 감소시킬 수 있는 호스트 시스템을 갖는 컴퓨팅 시스템의 기능 블록도를 예시한다.
도 2는 본 개시내용의 적어도 하나의 실시예에 따라 메인 메모리의 메모리 세그먼트들의 메모리 페이지들을 동적으로 통합하는 흐름도이다.
도 3은 본 개시내용의 다양한 실시예들에 따른, 메인 메모리를 이중 채널 또는 다중 채널 구성으로부터 단일 채널 구성으로 변환하는 것의 흐름도이다.
도 4는 본 개시내용의 다양한 실시예들에 따른, 메인 메모리를 이중 채널 또는 다중 채널 구성으로부터 단일 채널 구성으로 동적으로 변환하는 흐름도이다.
도 5는 본 개시내용의 다양한 실시예들에 따른, 메인 메모리를 단일 채널 구성으로부터 네이티브(이중 채널 또는 다중 채널) 구성으로 동적으로 변환 해제하는 흐름도이다.
도 6a 및 도 6b는 본 개시내용의 실시예들에 따른 일반적 벡터 친화적 명령어 포맷 및 이것의 명령어 템플릿들을 예시하는 블록도들이다.
도 7a 내지 도 7d는 본 개시내용의 실시예들에 따른 예시적인 특정 벡터 친화적 명령어 포맷을 예시하는 블록도들이다.
도 8은 본 개시내용의 일 실시예에 따른 레지스터 아키텍처의 블록도이다.
도 9a는 본 개시내용의 실시예들에 따른 예시적인 순차적 파이프라인 및 예시적인 레지스터 리네이밍, 비순차적 발행/실행 파이프라인의 둘 모두를 예시하는 블록도이다.
도 9b는 본 개시내용의 실시예들에 따른 프로세서에 포함되는 순차적 아키텍처 코어와 예시적인 레지스터 리네이밍, 비순차적 발행/실행 아키텍처 코어의 예시적인 실시예 둘 모두를 예시하는 블록도이다.
도 10a 및 도 10b는 더 특정적이고 예시적인 순차적 코어 아키텍처의 블록도를 예시하는데, 이 코어는 칩 내의(동일 타입 및/또는 상이한 타입들의 다른 코어들을 포함하는) 여러 개의 로직 블록 중 하나일 것이다.
도 11은 본 개시내용의 실시예들에 따라 둘 이상의 코어를 가질 수 있고, 통합 메모리 제어기를 가질 수 있고, 통합 그래픽을 가질 수 있는 프로세서의 블록도이다.
도 12 내지 도 15는 예시적인 컴퓨터 아키텍처들의 블록도들이다. 및
도 16은 본 개시내용의 실시예들에 따라 소스 명령어 세트에서의 바이너리 명령어들을 타겟 명령어 세트에서의 바이너리 명령어들로 변환하는 소프트웨어 명령어 변환기의 사용을 대조하는 블록도이다.
이하의 상세한 설명은 예시적인 실시예들을 참조하여 진행될 것이지만, 그의 많은 대안들, 수정들, 및 변형들이 본 기술분야의 통상의 기술자에게 명백할 것이다.
본 개시내용의 몇몇 실시예들과 부합하여, 메모리를 동적으로 통합하여 컴퓨팅 시스템의 메모리의 부분들을 파워 다운(power down)하는 것을 가능하게 함으로써 전력 소비를 감소시키게 구성되는 컴퓨팅 시스템이 개시되어 있다.
몇몇 요인들이 컴퓨팅 시스템에 의해 사용되는 전력량에 영향을 미친다. 요인들 중 일부는 프로세서들을 냉각 상태로 유지하기 위해 팬에 전력공급하는 것, 계산 동작들을 가능하게 하기 위해 프로세서에 전력공급하는 것, 및 프로세서 동작들을 지원하기 위해 메모리를 리프레시하는 것을 포함한다. 전력의 무제한 공급에 의해서는, 이들 요인들 중 다수가 문제될 것이 없다. 그러나, 배터리 수명을 연장하려고, 전력 소비를 감소시키려고, 또는 컴퓨팅 시스템 동작들에 의해 소비되는 열을 감소시키려고 시도할 때, 컴퓨팅 시스템에 의해 소비되는 전력량을 감소시키는 것은 바람직한 목표일 수 있다.
본 개시내용은 일반적으로, 예를 들어, 성능 절충이 허용가능한 경우(예를 들어, 비디오 스트리밍 대신 비디오 재생), 컴퓨팅 시스템이 메모리의 부분들을 파워 다운하는 것을 허용함으로써 전력 소비를 감소시키는 것에 관한 것이다. 통상적으로, 컴퓨팅 시스템 내의 프로세서에 의해 가장 많이 사용되는 메모리는 신속하게 기입되고 판독될 수 있는 메인 메모리인 것으로 지칭된다. 이 메인 메모리는 일반적으로 비영구적인 메모리이며, 이는 전력이 제거될 때 및/또는 메인 메모리에 의해 저장된 정보가 리프레시되지 않을 때 데이터를 잃는다. 메인 메모리의 리프레시는 메모리 셀들에 저장된 데이터가 필요할 때 정확하게 판독될 수 있도록 보장하기 위해 메인 메모리 내의 메모리 셀들(예를 들어, 커패시터들)에 전력을 주기적으로 인가하는 것을 포함한다. 컴퓨팅 시스템이 저전력 또는 대기 모드에 놓일 때조차도, 메인 메모리는 여전히 리프레시되어 컴퓨팅 시스템이 이전 동작들을 신속하게 재개할 수 있도록 한다. 그러나, 대기 모드에서조차도, 메인 메모리는 메모리의 유휴 전력 및 메모리의 용량에 비례하는 양의 전력을 계속해서 인출한다. 컴퓨팅 시스템의 일부 동작들이 메인 메모리의 전체 용량보다 상당히 작은 (예를 들어, 절반 또는 그보다 작은) 것으로 수행될 수 있기 때문에, 본 개시내용의 실시예들은 컴퓨팅 시스템으로 하여금 물리적 메모리 채널에 액세스하지 않음으로써, 파워 다운된 메모리 채널과 연관된 메모리를 리프레시하지 않음으로써, 파워 다운된 메모리 채널에 대한 메모리 제어기를 파워 오프(power off)함으로서, 그리고 프로세서 패키지의 SoC(system on a chip) 내의 물리적 회로(PHY)의 부분들을 파워 오프함으로써, 메모리를 동적으로 통합시키고 전력 소비를 감소시키게 할 수 있다.
일 실시예에서, 컴퓨팅 시스템은 2개 이상의 채널로 동작되는 메인 메모리를 포함한다. 메인 메모리를 동적으로 통합하기 위해, 메인 메모리의 세그먼트들(또는 부분들)이 식별된다. 메인 메모리의 세그먼트들 내에서, 덜 중요한 (예를 들어, 덜 사용되는) 메모리 페이지들이 페이지 아웃되고(즉, 영구 메모리에 전송되고/저장됨), 더 중요한 메모리 페이지들은 메인 메모리의 세그먼트들의 감소된 양(예를 들어, 1, 2, 또는 절반)으로 통합된다. 이어서, 전력 제어 회로는 일 실시예에 따라, 다수의 채널, 메모리 회로, 및/또는 메모리 회로의 랭크들 사이에 분산된 데이터를 단일 채널, 단일 세트의 메모리 회로, 및/또는 단일 랭크에 방법론적으로 이동시키도록 구성된다. 이어서, 미사용 채널들과 연관된 메인 메모리의 부분들은 파워 다운되고 또는 리프레시되는 것이 중지되어, 메인 메모리에 의해 소비되는 전력량을 감소시킬 수 있다.
본 개시내용의 일부 프로토타입 구현들은 모바일 컴퓨팅 디바이스의 대기 모드 배터리 수명을 7.2일에서 8.5일(즉, 대략 18%)로 증가시키는 것으로 보여졌다. 비-대기 모드들에서, 메인 메모리의 동적 통합은, 다양한 구현들(예를 들어, 비디오 재생 동작 동안)에 따라, 3.8% 내지 10.8%만큼 전력 소비를 동시에 감소시키면서 계속된 계산 동작들을 가능하게 할 수 있다.
도 1a 및 도 1b는 본 개시내용의 몇몇 실시예들에 부합하게, 메인 메모리를 동적으로 통합 및/또는 재구성함으로써 컴퓨팅 시스템(100)의 전력 소비를 감소시킬 수 있는 시스템 호스트(102)를 갖는 컴퓨팅 시스템(100)의 기능 블록도를 예시한다. 시스템 호스트(102)는 SOC(system on a chip)일 수 있으며, 본 명세서에 설명된 바와 같이 도 15의 SOC(1500)의 한 예시적인 구현이다. 컴퓨팅 시스템(100)은 통신 채널(106) 및 통신 채널(108)을 통해 메인 메모리(104)에/그로부터 메모리 페이지들 및 캐시 라인들을 저장 및 검색하도록 구성된 시스템 호스트(102)를 포함한다. 통신 채널들(106 및 108)은 데이터, 제어, 및/또는 전력에 대한 트레이스들을 포함하는 전도성 버스들 또는 포인트-투-포인트 인터커넥트들이다. 시스템 호스트(102)는 시스템 호스트(102)로 하여금 메인 메모리(104)의 구성을 동적으로 변환하여 컴퓨팅 시스템(100)의 전력 소비를 감소시키는 것을 가능하게 하는 하나 이상의 컴포넌트를 포함한다.
시스템 호스트(102)는 일 실시예에 따르면, 하나 이상의 코어(112A-N), 하나 이상의 캐시 회로(114A-N), 및 공유 캐시 회로(116)를 포함하는 프로세서(110); 시스템 에이전트 회로(118); 통신 채널(106)에 대한 메모리 제어기 회로(120); 통신 채널(108)에 대한 메모리 제어기 회로(122); DMA(direct memory access) 회로(124); 전력 제어 회로(126); 시스템 호스트(102)의 컴포넌트들을 물리적으로 그리고 통신적으로 인터커넥트하는 인터커넥트 회로(125)를 포함한다. 하나 이상의 코어(112A-N)는 데이터에 대한 계산 연산들을 수행한다. 하나 이상의 캐시 회로(114A-N) 및 공유 캐시 회로(116)는 하나 이상의 코어(112A-N)에 의한 계산 연산들을 지원하기 위해 데이터를 저장하는 상이한 레벨들의 저 레이턴시 메모리를 나타낸다. 시스템 에이전트 회로(118)는 프로세서(110)에 대한 전력을 관리하고, 메인 메모리(104)의 셀프 리프레시(self-refresh) 및 클록 인에이블을 관리할 수 있다. 메모리 제어기 회로(120)는 통신 채널(106)에 접속되는 메모리 회로에 대한 판독 및 기입 액세스를 제어한다. 메모리 제어기 회로(122)는 통신 채널(108)에 접속되는 메모리 회로에 대한 판독 및 기입 액세스를 제어한다. 메모리 제어기들(120 및 122)은 또한 전력 제어 유닛 정책들에 기초하여 메인 메모리(104)에 대한 셀프 리프레시 및 클록 인에이블 동작들을 실행한다. DMA 회로(124)는 채널 통합 동작들을 실행한다. DMA 회로(124)는 자유로운 및 점유된 메모리 세그먼트들의 표시들을 수신하고, 메모리 세그먼트들을 통합 또는 통합 해제하기 위해 전력 제어 회로(126)(예를 들어, 전력 제어 유닛)로부터 커맨드들을 수신한다. 통합 또는 통합 해제하라는 전력 제어 회로(126)로부터의 커맨드들에 응답하여, DMA 회로(124)는 "소스" 채널에서의 점유된 세그먼트들로부터 "타겟" 채널에서의 자유로운 세그먼트들로 메모리를 복사함으로써 채널 통합을 수행하여, 소스 채널이 턴 오프되는 것을 가능하게 한다. DMA 회로(124)는 통합 해제 동안 역 동작을 수행한다. 일 실시예에 따르면, 전력 제어 회로(126) 및/또는 DMA 회로(124)는 메인 메모리(104)로 하여금 동적으로(예를 들어, 컴퓨팅 시스템(100)이 동작하고 있는 동안) 메인 메모리(104)를 이중 채널(또는 다중 채널, 예를 들어 LPDDR4 및 LPDDR5에서 8 채널) 동작으로부터 단일 채널 동작(또는 채널들의 절반, 예를 들어, LPDDR4 및 LPDDR5에서의 4 채널)으로 변환하는 동작들을 수행하도록 야기하여, 메인 메모리(104)에 의한, 메모리 제어기 회로(122)에 의한, 그리고 컴퓨팅 시스템(100)에 의한 전력 소비를 감소시킨다.
메인 메모리(104)는 통신 채널(106) 및 통신 채널(108)을 통해 시스템 호스트(102)에 결합된다. 2개의 통신 채널이 예시되고 설명되지만, 시스템 호스트(102)와 메인 메모리(104) 사이의 정보 전송을 용이하게 하기 위해 더 많은 통신 채널들이 이용될 수 있다(예를 들어, 4개, 6개 등). 일 실시예에 따르면, 메인 메모리(104)는 제1 메모리 회로(128), 제2 메모리 회로(130), 제3 메모리 회로(132), 및 제4 메모리 회로(134)를 포함한다. 메인 메모리(104)는 다양한 구현들에 따라 더 많거나 더 적은 메모리 회로를 포함할 수 있다. 일 실시예에 따라, 제1 메모리 회로(128)는 제1 DIMM(dual in-line memory module)이고, 제2 메모리 회로(130)는 제2 DIMM이고, 제3 메모리 회로(132)는 제3 DIMM이고, 제4 메모리 회로(134)는 제4 DIMM이다. 일 실시예에서, 제1 메모리 회로(128), 제2 메모리 회로(130), 제3 메모리 회로(132), 및 제4 메모리 회로(134) 각각은 DIMM의 제1 측 상에 배치된 다수의 RAM(random access memory) 다이(즉, 랭크 1), 및 DIMM의 제2 측 상에 배치된 다수의 RAM 다이(즉, 랭크 2)를 포함한다. RAM 다이는 본 명세서에서 메모리 패키지 또는 메모리 다이 패키지라고 지칭될 수 있다. 메모리 다이 패키지의 예는 BGA(ball grid array) 메모리 다이 패키지이다. 복수의 메모리 패키지는 DIMM을 적어도 부분적으로 구성할 수 있다. DIMM들이 본 명세서에서 설명되고 예시되지만, SIMM들 및/또는 RIMM들이 또한 개시된 컴퓨팅 시스템에서 사용될 수 있다. 통신 채널(106)은 제1 메모리 회로(128) 및 제3 메모리 회로(132)에 접속될 수 있다. 통신 채널(108)은 제2 메모리 회로(130) 및 제4 메모리 회로(134)에 접속될 수 있다.
도 1a 및 도 1b는, 본 개시내용의 실시예들에 부합하게, 메인 메모리(104)의 전력 소비를 감소시키기 위해, 컴퓨팅 시스템(100)이 계속 동작하는 동안, 메인 메모리(104)를 다중 채널 구성으로부터 단일 채널 구성으로 동적으로 변환하기 위한 다단계 프로세스의 간략화된 블록도들을 예시한다. 초기에, DMA 회로(124) 및/또는 전력 제어 회로(126)는 프로세서(110)로부터 하나 이상의 커맨드를 수신하여 메모리 동작들을 메인 메모리(104)의 감소된 수의 세그먼트들 또는 부분들에 동적으로 통합시킨다. DMA 회로(124) 및/또는 전력 제어 회로(126)는 (예를 들어, 운영 체제에 의해) 프로세서(110)에 의해 업데이트/변경될 수 있는, 레지스터(127)로부터의 구성 비트들을 판독함으로써 하나 이상의 커맨드를 수신할 수 있다. 메모리 제어기 회로(120, 122)가 캐시 라인들을 메인 메모리(104)에 기입할 때, 메모리 제어기 회로(120, 122)는, 물리적 페이지가 대역폭을 최대화하기 위해 모든 채널들에 걸쳐 분산되도록, 양 채널들에 걸쳐 미세 그래뉼래리티로 트래픽을 분배함으로써 그렇게 한다. 물리적 페이지들은 총 이용가능 메모리의 세그먼트들(또는 부분들)로서 논리적으로 조직될 수 있고, 다수의 채널, DIMM들, 및/또는 랭크들에 걸쳐 분산될 수 있다. 일 실시예에서, 각각의 세그먼트는 메인 메모리(104)의 물리적 페이지들의 1/8번째를 나타낸다. 일 실시예에서, 메모리의 단일의 물리적 페이지는 4 킬로바이트를 나타낸다. 메모리의 단일의 물리적 페이지는 메인 메모리(104)의 모든 다이들 중 각각의 RAM 다이의 하나의 뱅크의 단일 행을 나타낼 수 있다.
DMA 회로(124) 및/또는 전력 제어 회로(126)는 메모리 제어기 회로(120) 및 메모리 제어기 회로(122)를 제어하여 메모리의 세그먼트들을 감소된 수의 세그먼트들로, 이어서 감소된 수의 채널들로 통합한다. 세그먼트들의 수를 감소시키는 것은 메모리의 페이지들을 페이징 아웃하는 운영 체제(OS)에 의해 수행된다. 채널들의 수를 감소시키는 것(예를 들어, 2에서 1로)은 전력 제어 회로(126), DMA 회로(124), 및 메모리 제어기들(120, 122)에 의해 수행된다. 메모리 제어기(122), 제2 메모리 회로(130), 및 제4 메모리 회로(134)는 이어서 파워 오프될 수 있다.
일 실시예에서, OS는 메인 메모리(104)에서의 메모리의 LRU(least recently used) 페이지들을 식별한다. 메모리의 LRU 페이지들은 BIOS 동작, OS 동작, 및 진행 중인 계산들에 대해 필요하지 않은 메모리의 페이지들(예를 들어, 데이터의 페이지들)을 포함한다. 일 실시예에서, OS는 버스(142)를 통해, 메모리의 LRU 페이지들을 영구 저장 디바이스(140)에 전송(페이징 아웃)한다. 메모리의 LRU 페이지들을 영구 저장 디바이스(140)상의 하나 이상의 파일에 전송한 후에, OS는 메인 메모리(104)를 단편화 해제(defragment)하고, 메모리의 나머지 페이지들을 연속적인 메모리 페이지들의 그룹으로 통합한다. 연속적인 메모리 페이지들의 그룹은 세그먼트로 지칭될 수 있고 메인 메모리(104)는 논리적으로 8개 이상의 세그먼트로 분리될 수 있다. OS는 후속 동작들을 위한 준비로 세그먼트들(136)(예를 들어, 세그먼트들 5 내지 8을 나타냄)에서의 데이터가 메모리 세그먼트들(138)(예를 들어, 세그먼트들 1 내지 4를 나타냄)로 이동되게 야기할 수 있다. 그 결과, 각각의 통신 채널(106 및 108)에 접속된 메모리 회로는 점유된 메모리 페이지들(예를 들어, 세그먼트들 1 내지 4로 표현됨) 및 비어 있는 메모리 페이지들(예를 들어, 세그먼트들 5 내지 8로 표현됨)을 가질 것이다. 다시 말해서, 채널 0은 채널 0 상의 세그먼트들 1 내지 8로부터 채널 0 상의 세그먼트들 1 내지 4로 통합되는 채널 0 데이터(ch 0 데이터)를 가질 것이다. 덧붙여, 채널 1은 채널 1 상의 세그먼트들 1 내지 8로부터 채널 1 상의 세그먼트들 1 내지 4로 통합되는 채널 1 데이터(ch 1 데이터)를 가질 것이다.
도 1b를 참조하면, 메인 메모리(104)를 다중 채널 구성으로부터 단일 채널 구성으로 동적으로 변환하기 위한 프로세스의 제2 동작에서, DMA 회로(124) 및/또는 전력 제어 회로(126)는 (예를 들어, 메모리 회로(130 및 134)의) 한 채널의 (채널 1의 세그먼트들 1 내지 4 로부터의 ch 1 데이터로 표현되는) 메모리의 점유된 세그먼트들을 (예를 들어, 메모리 회로(128 및 132)에 대한) 또 다른 채널상의 (채널 0의 세그먼트들 5 내지 8로 표현되는) 메모리의 비어 있는 세그먼트들에 복사한다. 일 실시예에 따르면, 통신 채널(108)상의 메모리 세그먼트들(138)에 저장된 데이터(ch 1 데이터)는 (예를 들어, 제1 메모리 회로(128)에 대한) 통신 채널(106)상의 세그먼트들(136)로, 및/또는 제1 메모리 회로(128)에 대한 메모리 다이들의 제1 랭크로 이동된다. 동시에, 일 실시예에 따르면, 통신 채널(106)상의 메모리 세그먼트들(138)에 저장된 데이터(ch 0 데이터)는 제1 메모리 회로(128)상에 (및/또는 제3 메모리 회로(132)상에) 유지된다. 메인 메모리(104)를 이러한 방식으로 통합하는 것은, 전력 제어 회로(126), 및/또는 시스템 호스트(102)의 하나 이상의 컴포넌트가 메모리 제어기(122), 제2 메모리 회로(130), 및 제4 메모리 회로(134) 중 하나 이상을 파워 다운할 수 있게 한다. 메모리 제어기(122), 제2 메모리 회로(130), 및/또는 제4 메모리 회로(134)를 파워 다운하는 것은, 다양한 실시예들에 따라, 메모리 다이들을 리프레시하기를 중지하는 것, 클록 신호들의 송신을 디스에이블하는 것, 전력을 디스에이블하는 것, 메모리 제어기 회로(122)로부터 전력을 적어도 부분적으로 제거하는 것, 및/또는 채널 1의 동작을 지원하는 추가 회로를 파워 다운하는 것을 포함할 수 있다.
다른 말로 요약하면, OS는 물리적 어드레스 공간에서 페이지들을 이동시키고, 메모리 세그먼트는 몇 개의 페이지(예를 들어, 1 GB 메모리 = 2억5천6백만 4K 페이지들)를 포함하는 메모리 영역이다. 한 타입의 메모리 세그먼트는 DRAM 세그먼트인데, 이것은 페이지들의 부분들을 포함하는 DRAM 공간에서의 메모리 영역이다(예를 들어, 위의 예에서, 페이지들이 2개의 채널로 분열되는 경우, 각각의 DRAM 세그먼트는 2억5천6백만 절반-페이지들을 포함하는 0.5 GB의 메모리일 것이다). OS는 페이지들을 이동시켜 그들을 대략 4개의 세그먼트 또는 메모리 공간의 절반으로 통합한다. (예를 들어, DMA 회로(124), 전력 제어 회로(126), 및 메모리 제어기 회로(122)를 이용하는) 개시된 기술들은 하드웨어 컴포넌트들을 이용하여, 한 채널로부터의 점유된 세그먼트들을 또 다른 채널의 비어 있는 세그먼트들로 복사하여 적어도 하나의 채널을 파워 다운하는 것을 가능하게 한다.
본 명세서에 개시된 메커니즘들의 실시예들은 하드웨어, 소프트웨어, 펌웨어, 또는 이러한 구현 접근법들의 조합으로 구현될 수 있다. 본 개시내용의 실시예들은 적어도 하나의 프로세서, 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 요소들을 포함함), 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함하는 프로그래머블 시스템들상에서 실행되는 컴퓨터 프로그램들 또는 프로그램 코드로서 구현될 수 있다.
도 2는 본 개시내용의 실시예들에 부합하게, 메인 메모리(104)(도 1a 및 도 1b에 도시됨)의 메모리 세그먼트들의 메모리 페이지들을 동적으로 통합하기 위한 프로세스(200)의 메모리 도면을 예시한다. 프로세스는 메인 메모리(104)를 이중 채널 또는 다중 채널 구성으로부터 단일 채널 또는 절반 채널 구성으로 변환하기 위한 준비로 메인 메모리(104)의 부분들(예를 들어, 세그먼트들)을 자유롭게 하는 몇몇 동작들을 포함한다.
동작(202)에서, 프로세스(200)는, 일 실시예에 따라, LRU(least recently used) 페이지들을 페이지 아웃하는 것을 포함한다. LRU 페이지들을 페이지 아웃하는 것은 LRU 페이지들로부터 영구 저장 디바이스상의 하나 이상의 파일로 데이터를 전송하는 것을 포함할 수 있다.
동작(204)에서, 프로세스(200)는 일 실시예에 따라, NPP(non-pageable pages) 및 핫 페이지들(hot pages)(예를 들어, 활동적으로 사용되는 페이지들)을 이동시키는 것을 포함한다. 페이징 가능하지 않은 페이지들은 기본 입출력 시스템(BIOS)을 위한 데이터 및/또는 OS를 위한 및 드라이버 펌웨어/소프트웨어를 위한 데이터를 저장하는 메모리의 페이지들을 포함할 수 있다. 핫 페이지들은 프로세서에 의해 또는 OS에 의해 현재 실행되거나 실행되는 애플리케이션들에 대한 데이터를 포함하는 페이지들을 포함할 수 있다.
동작(206)에서, 프로세스(200)는 일 실시예에 따라, 미사용 페이지들을 리프레시하는 것을 중지하는 것을 포함한다. 리프레시를 중지하는 것은 메모리 회로에 대한 셀프 리프레시 모드들을 디스에이블하는 것을 포함할 수 있다. 미사용 페이지들의 리프레시를 중지하는 것은 메인 메모리(104)에 의해 소비되는 전력을 감소시킨다.
동작(208)에서, 전력 소비를 감소시키기 위해 미사용 페이지들이 리프레시되지 않는다. 예시된 바와 같이, 동작(208)에서, 메모리 세그먼트들(138)(예를 들어, 메모리 세그먼트들 1 내지 4)은 점유된 메모리 페이지들을 포함하고, 메모리 세그먼트들(136)(예를 들어, 메모리 세그먼트들 5 내지 8)은 비어 있는 메모리 페이지들을 포함한다. 메모리 세그먼트들(136 및 138)은 통신 채널(106) 및 통신 채널(108) 둘 모두로부터의 메모리의 인터리빙된 페이지들을 포함한다는 점에 유의해야 한다.
도 3은 본 개시내용의 실시예들에 부합하게, 메인 메모리(104)(도 1a 및 도 1b에 도시됨)를 이중 채널 또는 다중 채널 구성으로부터 단일 채널 또는 절반 채널 구성으로 변환하기 위한 프로세스(300)의 메모리 도면이다. 프로세스(300)는 일 실시예에 따라, 메인 메모리(104)의 부분들을 다중 채널 구성(304)으로부터 절반 채널 구성(306)으로 변환하기 위해 채널 통합 동작들(302)을 수행한다. 통합된 메모리 세그먼트들(310)의 부분들(308) 각각은 채널들(310a 및 310b)의 통합된 메모리 공간에서의 세그먼트를 나타낸다. 통합된 메모리 세그먼트들(310)의 부분들(308)이 메모리에서의 OS 페이지보다 작은 그래뉼래리티로 채널들에 걸쳐 분열되기 때문에, 운영 체제("OS")는 채널들 사이에서(예를 들어, 채널 1로부터 채널 0으로) 데이터를 전송할 수 없다. 예를 들어, SOC(예를 들어, 시스템 호스트(102))는 통상적으로 가상 또는 물리적 페이지(예를 들어, 4 킬로바이트 페이지)를 기입 또는 판독할 때 한 번에 64개의 캐시 라인(4,096 바이트)을 전송하도록 구성된다.
다중 채널 구성(304)에서, 통합된 메모리 세그먼트들(310a)의 채널 0은 미사용 또는 비어 있는 메모리 페이지들(UU)(예를 들어, 세그먼트들(5-8)) 및 점유된 메모리 페이지들(예를 들어, 세그먼트들(1-4))을 포함하고, CH 0은 채널 0상에 저장되는 데이터를 나타낸다. 통합된 메모리 세그먼트들(310b)의 채널 1은 미사용 메모리 UU(예를 들어, 세그먼트들 5-8) 및 점유된 메모리 페이지들(예를 들어, 세그먼트들 1-4)을 포함하고, 데이터 CH1은 채널 1상에 저장되는 데이터를 나타낸다. 통합된 메모리 세그먼트들(310)에서, 데이터 CH0 및 데이터 CH1은 일 실시예에 따라 제1 채널과 제2 채널 사이에서 인터리빙된다. 일 실시예에서, 데이터는 2개보다 많은 채널 사이에서 인터리빙될 수 있다.
채널 통합 동작들(302) 이후에, 메인 메모리(104)는 일 실시예에 따라 단일 채널 구성(306)으로 변환된다. 일 실시예에서, 변환 후의 통합된 메모리 세그먼트들(312)은 채널 0상의 점유된 메모리 페이지들(예를 들어, 채널 0의 세그먼트들 1-4)을 포함한다. 추가적으로, 통합된 메모리 세그먼트들(312a)의 통합 후의 채널 0은, 통합된 메모리 세그먼트들(312b)의 채널 1로서 채널 1상에 이전에 저장된 데이터 CH 1으로 그것의 미사용 메모리 UU(예를 들어, 세그먼트들 5-8)를 적어도 부분적으로 채운다. 2개 이상의 채널로부터 단일 채널로 데이터를 통합함으로써, 컴퓨팅 시스템은 채널(예를 들어, 채널 1), 채널에 대한 메모리 제어기, 및 채널에 의해 지원되는 메모리 회로(예를 들어, DIMM)를 파워 다운하는 능력을 수신한다.
특히, 단일 채널 구성으로의 변환 후에, OS 및 애플리케이션들은 마치 가상 페이지들에 기입함으로써 메인 메모리가 다중 채널 구성에 있었던 것처럼 계속 동작하고, 이 가상 페이지들은 전력 제어 회로 및/또는 시스템 에이전트 회로에 의해 단일 채널에서의 물리적 페이지들로 변환된다. 이런 점으로부터의 주목할 만한 차이는, OS가 다중 채널 상태로 복귀할 때까지 UU 세그먼트들을 사용할 수 없는데, 그 이유는 이 UU 공간이 (310a)에서의 미사용 공간에 매핑하고, (310b)는 이제 (312a)에서의 채널 0상의 CH1 세그먼트들 및 파워 오프되는 (312b)에서의 액세스가능하지 않은 세그먼트들에 의해 취해지기 때문이다. OS는 이러한 UU 세그먼트들에서 페이지들을 할당하지 않고, 시스템 에이전트(118)(도 1a에 도시됨)는 이러한 불법 트랜잭션들을 차단한다.
채널 통합 동작들(302)은 본 개시내용의 실시예들에 부합하게 도 4의 프로세스(400)에서 및 도 5의 프로세스(500)에서 설명된다.
채널 통합 동작들(302)은 제1 채널에서 미사용 공간을 식별하고, 제2 채널의 부분들을 제1 채널에 매핑하고, 제2 채널로부터 제1 채널에서의 미사용 공간으로 데이터를 복사하고, 제1 채널을 이용하여 제1 채널 및 제2 채널을 향해 지향되는 동작들(예를 들어, 판독 및 기입)에 응답함으로써 동작 시스템 및 소프트웨어 애플리케이션들이 마치 제2 채널이 또는 다중 채널이 활성화되기나 한 것처럼 가상 메모리 매핑들을 사용할 수 있게 하고, 제2 채널(예를 들어, 채널 1)을 파워 다운하는 것을 포함하는데, 이것들에만 제한되지는 않는다.
구성 변환이 동적이기 때문에(예를 들어, 도 1a 및 도 1b의 컴퓨팅 시스템(100)이 실행되고 있는 동안에 발생함), 전력 제어 회로는 판독 및 기입 요청들을 계속 수신하는 동안에 단일 채널 구성으로의 변환을 핸들링하도록 구성될 수 있다. 새로운 판독 또는 기입 요청이 제2 채널(채널 1)로부터 제1 채널(예를 들어, 채널 0)로의 부분(308)의 실제 복사 동안 수신되는 경우, 전력 제어 회로는 판독 또는 기입 요청을 이행하기 위해 구 메모리 어드레스 또는 이전 메모리 어드레스를 사용하도록 구성될 수 있다. 메모리 부분이 제1 채널로 넘어가 복사된 후, 전력 제어 회로는 판독 또는 기입 요청을 새로운 어드레스(예를 들어, 채널 0의 것)로 지향시키도록 구성될 수 있다. 변환은, 변환이 이미 발생하였는지를 결정하기 위해 그리고 판독 또는 기입 요청을 구 어드레스 또는 새로운 어드레스로 전송할지를 결정하기 위해 단순 비교기가 사용될 수 있게 하기 위해 더 높은 어드레스들에서 시작하고 더 낮은 어드레스들로 계속될 수 있다. 일 실시예에서, OS는 변환 중에 변환을 중지할 수 있다. 변환을 역으로 하기 위해, OS는 전력 제어 회로에 대한 레지스터 내의 구성 비트들을 변경할 수 있고, 이는 일 실시예에서 전력 제어 회로가 파워 다운 채널에 전력을 재인가하고 채널 1 데이터를 채널 0으로부터의 채널 1에 복원하게 야기한다.
도 4는 본 개시내용의 다양한 실시예들에 따라 이중 채널 또는 다중 채널 구성으로부터 단일 채널 또는 절반 채널 구성으로 메인 메모리를 동적으로 변환하는 프로세스(400)의 흐름도이다.
동작(402)에서, 일 실시예에 따라, 운영 체제(OS)는 메인 메모리를 절반 메모리 채널 구성으로 변환하는 동작들을 개시하고, OS는 메모리의 절반 이하가 점유되도록 LRU 페이지들을 페이지 아웃하고, 페이지들을 세그먼트들의 수의 절반 이하로 통합한다. 예로서, OS는 OS가 저 대역폭 동작들(예를 들어, 비디오 재생, 워드 프로세싱 애플리케이션들을 실행하는 것 등)을 수행하고 있을 때 메인 메모리를 단일 채널 구성으로 변환하기로 결정할 수 있다.
동작(404)에서, OS는 일 실시예에 따라, 절반 메모리 채널 구성으로의 변환의 개시를 요청한다. 일 실시예에 따르면, OS는 프로그램 코드에서 하나 이상의 요청을 송신함으로써 구성의 개시를 요청할 수 있다. OS는 메인 메모리의 다중 채널 구성으로부터 절반 메모리 채널 구성으로의 변환을 관리하도록 구성된 전력 제어 회로에 대한 레지스터의 하나 이상의 비트를 변경함으로써 절반 메모리 채널 구성의 개시를 요청할 수 있다.
동작(406)에서, 전력 제어 회로 및/또는 시스템 에이전트 회로는, 일 실시예에 따라, OS로부터의 요청이 허용가능한지를 결정한다. 요청이 허용가능하지 않은 경우, 동작(406)은 일 실시예에 따라 오류가 보고되는 동작(408)로 진행한다. 요청이 허용가능한 경우, 동작(406)은 일 실시예에 따라 동작(410)으로 진행한다.
동작(410)에서, 전력 제어 회로는, 일 실시예에 따라, 절반 메모리 채널 구성으로의 변환이 진행 중이라는 표시를 제공하고, 전력 제어 회로는 직접 메모리 액세스(DMA) 회로를 통해 변환을 개시한다. 변환은, DMA에게 변환을 개시하라는 커맨드를 제공함으로써 그리고 DMA에게 데이터 전송을 위한 소스(예를 들어, 채널 1에서의 점유된 세그먼트들) 및 목적지(예를 들어, 채널 0에서의 비어 있는 세그먼트들) 어드레스들을 제공함으로써 DMA를 통해 개시되었다.
동작(412)에서, 일 실시예에 따라, DMA는 소스 채널들(소스 어드레스들)의 점유된 세그먼트들로부터의 데이터를 타겟 채널들(목적지 어드레스들)의 비어 있는 세그먼트들에 복사하고, 소스 채널들에 대한 트랜잭션들은 타겟 채널들의 재매핑된 세그먼트들로 라우팅된다. 일 실시예에서, DMA는 가장 최근에 판독된 소스 어드레스의 어드레스로 상태 레지스터를 업데이트한다. 일 실시예에서, DMA는 가장 최근에 기입된 목적지 어드레스의 어드레스로 상태 레지스터를 업데이트한다. 일 실시예에서, DMA 또는 라우터 로직은 데이터가 구 어드레스로부터 이미 전송되었는지에 기초하여 판독 또는 기입 액세스 요청들이 구(소스) 메모리 어드레스로 또는 새로운(타겟) 메모리 어드레스로 지향되어야 하는지를 결정한다.
동작(414)에서, 일 실시예에 따라, DMA는 변환의 완료를 전력 제어 회로에 보고한다.
동작(416)에서, 일 실시예에 따라, 전력 제어 회로는 절반 채널 구성으로의 변환이 진행 중이라는 표시를 클리어하고, 전력 제어 회로는 소스 채널들을 파워 다운한다. 소스 채널들을 파워 다운하는 것은 소스 채널들에 대한 메모리 제어기 회로에의 전력을 디스에이블하는 것, 소스 채널들에 대한 메모리 회로에의 클록들을 디스에이블하는 것, 소스 채널들의 동작을 지원하는 드라이버들 및/또는 다른 물리적 계층 컴포넌트들에 대한 전력을 디스에이블하는 것을 포함할 수 있다.
일 실시예에서, 채널들의 절반으로의 또는 단일 채널 구성으로의 변환 대신에, 컴퓨팅 시스템은 메인 메모리를 단일 랭크 구성으로 변환하도록 구성될 수 있다(예를 들어, 데이터 및 동작들을 DIMM의 랭크 1 또는 랭크 2로 이동시킨다).
일 실시예에서, DMA는, 단일 채널 구성의 전력 감소를 개선할 수 있는 경우, 각각의 OS 페이지들(예를 들어, 4 킬로바이트의 데이터)을 단일 DRAM 페이지(예를 들어, 채널 0상의 모든 메모리 다이들에 대해 동일한 뱅크에서의 단일 행)에 기입한다.
도 5는 본 개시내용의 다양한 실시예들에 따라 메인 메모리를 절반 채널 구성으로부터 네이티브(이중 채널 또는 다중 채널) 구성으로 동적으로 변환 해제하는 프로세스(500)의 흐름도이다.
동작(502)에서, 운영 체제(OS)는 일 실시예에 따라, 메인 메모리를 절반 채널 구성으로부터 변환 해제하기로 결정한다.
동작(504)에서, OS는 일 실시예에 따라 절반 채널 구성으로부터 네이티브 메모리 구성으로의 변환 해제의 개시를 요청한다. OS는 일 실시예에 따라, 프로그램 코드에서 하나 이상의 요청을 송신함으로써 절반 채널 구성으로부터의 변환 해제의 개시를 요청할 수 있다. OS는 메인 메모리의 다중 채널 구성으로부터 절반 채널 구성으로의 변환 및 그 반대로 하는 것을 관리하도록 구성되는 전력 제어 회로에 대한 레지스터의 하나 이상의 비트를 변경함으로써 절반 채널 구성으로부터의 변환 해제의 개시를 요청할 수 있다.
동작(506)에서, 전력 제어 회로 및/또는 시스템 에이전트 회로는, 일 실시예에 따라, OS로부터의 요청이 허용가능한지를 결정한다. 요청이 허용가능하지 않은 경우, 동작(506)은 일 실시예에 따라 오류가 보고되는 동작(508)로 진행한다. 요청이 허용가능한 경우, 동작(506)은 일 실시예에 따라 동작(510)으로 진행한다.
동작(510)에서, 일 실시예에 따르면, 전력 제어 회로는 절반 채널 구성으로부터의 변환 해제가 진행 중이라는 표시를 제공하고, 전력 제어 회로는 SoC 내의 메모리 채널들 및 회로를 파워 백(power back)하고, 직접 메모리 액세스(DMA) 회로를 통해 변환 해제를 개시한다. 변환은, DMA에게 변환 해제를 개시하라는 커맨드를 제공함으로써 그리고 DMA에게 데이터 전송을 위한 소스 및 목적지 어드레스들을 제공함으로써 DMA를 통해 개시되었다.
동작(512)에서, 일 실시예에 따라, DMA는 타겟 채널들의 점유된(재매핑된) 세그먼트들로부터의 소스 채널 데이터를 소스 채널의 세그먼트들로 되돌려 복사하고, 소스 채널들에 대한 트랜잭션들은 그들의 원래 목적지로 라우팅된다. 일 실시예에서, DMA는 가장 최근에 판독된 소스 어드레스의 어드레스로 상태 레지스터를 업데이트한다. 일 실시예에서, DMA는 가장 최근에 기입된 목적지 어드레스의 어드레스로 상태 레지스터를 업데이트한다. 일 실시예에서, DMA 또는 라우터 로직은 데이터가 구 어드레스로부터 이미 전송되었는지에 기초하여 추가적인 판독 또는 기입 액세스 요청들이 구 메모리 어드레스(예를 들어, 채널 0)로 또는 새로운 메모리 어드레스(예를 들어, 채널 1)로 지향되어야 하는지를 결정한다.
동작(514)에서, DMA는 일 실시예에 따라, 변환 해제의 완료를 전력 제어 회로에 보고한다.
동작(516)에서, 전력 제어 회로는 네이티브 구성으로의 변환이 진행 중이라는 표시를 클리어하고, 제2 채널 동작들을 지원하기 위한 지원 회로 및 컴포넌트들이 파워 업된다.
레지스터(127)(도 1에 도시됨)의 레지스터 및 비트들의 예가 아래의 표 1에 포함된다. 본 명세서에서 사용되는 바로는 "Pcode"는 전력 제어 회로를 지칭하거나 또는 머신 코드와 OS 코드 코드 사이에 있는 중간 컴파일된 언어인 프로그램 코드를 지칭한다.
일 실시예에서, 레지스터는 16 비트 길이를 갖는다. 레지스터의 8 비트는 메모리의 어느 세그먼트들 또는 부분들이 비어 있는지 또는 점유되는지를 나타낼 수 있다. 레지스터의 3 비트는 변환의 타입을 나타낼 수 있다(예를 들어, 64 비트 단일 채널, 32 비트 단일 채널, 단일 랭크 변환, 또는 네이티브 구성으로의 복귀). 1 비트는 변환 또는 변환 해제가 진행 중인지를 표시하기 위해 사용될 수 있다. 3 비트는 어느 타입의 변환이 발생하고 있는지를 표시하기 위해 사용될 수 있고, OS에 송신될 수 있다. 1 비트는 오류가 존재하는지를 표시하기 위해 사용될 수 있어서, 변환이 실행되지 않게 한다.
도 1a, 도 1b, 도 2, 도 3, 도 4 및 도 5의 도면들은 다양한 실시예들에 따른 동작들을 예시하지만, 도 1a, 도 1b, 도 2, 도 3, 도 4, 및 도 5에 묘사된 동작들 모두가 다른 실시예들에 대해 필요하지는 않다는 것이 이해되어야 한다. 또한, 본 개시내용의 다른 실시예들에서, 도 1a, 도 1b, 도 2, 도 3, 도 4, 및 도 5에 도시된 동작들 및/또는 본 명세서에 설명된 다른 동작들은 도면들 중 임의의 것에 구체적으로 도시되지 않은 방식으로 조합될 수 있고, 이러한 실시예들은 도 1a, 도 1b, 도 2, 도 3, 도 4, 및 도 5에 도시된 것보다 적거나 많은 동작들을 포함할 수 있다는 것이 본 명세서에서 충분히 고려된다. 따라서, 하나의 도면에 정확하게 도시되지 않은 특징들 및/또는 동작들에 관한 청구항들은 본 개시내용의 범위 및 내용 내에 있는 것으로 간주된다. 아래의 도면들은 위의 실시예들을 구현하기 위한 예시적인 아키텍처들 및 시스템들을 상세히 나타낸다. 일부 실시예들에서, 위에 설명된 하나 이상의 하드웨어 컴포넌트들 및/또는 명령어들은 아래에 상세히 설명되는 바와 같이 에뮬레이트되거나, 소프트웨어 모듈들로서 구현된다.
위에 상세히 설명된 명령어(들)의 실시예들은 아래에 상세히 설명되는 "일반 벡터 친화적 명령어 포맷"으로 구현될 수 있다. 다른 실시예들에서, 이러한 포맷이 활용되지 않고 다른 명령어 포맷이 사용되지만, 기입 마스크 레지스터들, 다양한 데이터 변환들(스위즐링, 브로드캐스트 등), 어드레싱 등의 이하의 설명은 위의 명령어(들)의 실시예들의 설명에 일반적으로 적용가능하다. 추가적으로, 예시적인 시스템들, 아키텍처들, 및 파이프라인들이 아래에 상세하게 설명된다. 위의 명령어(들)의 실시예들은 그러한 시스템들, 아키텍처들, 및 파이프라인들상에서 실행될 수 있지만, 이러한 상세 설명된 것들에만 한정되지는 않는다.
명령어 세트는 하나 이상의 명령어 포맷을 포함할 수 있다. 주어진 명령어 포맷은, 무엇보다도, 수행될 연산(예를 들어, 오피코드) 및 해당 연산이 그에 대해 수행될 피연산자(들)를 특정하기 위한 다양한 필드들(예를 들어, 비트들의 수, 비트들의 로케이션) 및/또는 다른 데이터 필드(들)(예를 들어, 마스크)를 포함할 수 있다. 일부 명령어 포맷들은 명령어 템플릿들(또는 서브포맷들)의 정의를 통해 추가로 세분된다. 예를 들어, 주어진 명령어 포맷의 명령어 템플릿들은 명령어 포맷의 필드의 상이한 서브세트들을 갖도록 정의될 수 있고(포함된 필드들은 전형적으로 동일 순서에 있지만, 적어도 일부는 더 적은 필드들이 포함되기 때문에 상이한 비트 위치들을 가짐) 및/또는 상이하게 해석되는 주어진 필드를 갖도록 정의될 수 있다. 따라서, ISA의 각각의 명령어는 주어진 명령어 포맷을 이용하여(및 정의된 경우, 그 명령어 포맷의 명령어 템플릿들 중 주어진 템플릿에서) 표현되고, 연산 및 피연산자들을 특정하기 위한 필드들을 포함한다. 예를 들어, 예시적인 ADD 명령어는 특정 오피코드(opcode) 및 해당 오피코드를 특정하는 오피코드 필드 및 피연산자들(소스1/목적지 및 소스2)을 선택하기 위한 피연산자 필드들을 포함하는 명령어 포맷을 갖고; 및 명령어 스트림에서의 이 ADD 명령어의 발생은 특정 피연산자들을 선택하는 피연산자 필드들에서 특정 내용을 가질 것이다. AVX(Advanced Vector Extensions)(AVX1 및 AVX2)라고 지칭되고 VEX(Vector Extensions) 코딩 스킴을 이용하는 SIMD 확장 세트가 발표 및/또는 공표되었다(예를 들어, Intel® 64 and IA-32 Architectures Software Developer's Manual, September 2014를 참조하고; Intel® Advanced Vector Extensions Programming Reference, October 2014를 참조하라).
예시적인 명령어 포맷들
본 명세서에 설명되는 명령어(들)는 상이한 포맷들로 구현될 수 있다. 추가적으로, 예시적인 시스템들, 아키텍처들, 및 파이프라인들이 아래에 상세하게 설명된다. 명령어(들)의 실시예들은 그러한 시스템들, 아키텍처들, 및 파이프라인들상에서 실행될 수 있지만, 이러한 상세 설명된 것들에만 한정되지는 않는다.
일반적 벡터 친화적 명령어 포맷
벡터 친화적 명령어 포맷은 벡터 명령어들에 적합한 명령어 포맷이다(예를 들어, 벡터 연산들에 특정적인 특정 필드들이 존재함). 벡터 및 스칼라 연산들 양자 모두가 벡터 친화적 명령어 포맷을 통해 지원되는 실시예들이 설명되지만, 대안적인 실시예들은 벡터 친화적 명령어 포맷의 벡터 연산들만을 사용한다.
도 6a 및 도 6b는 본 개시내용의 실시예들에 따른 일반적 벡터 친화적 명령어 포맷 및 이것의 명령어 템플릿들을 예시하는 블록도들이다. 도 6a는 본 개시내용의 실시예들에 따른 일반적 벡터 친화형 명령어 포맷(generic vector friendly instruction format) 및 이것의 클래스 A 명령어 템플릿들을 예시하는 블록도인 한편; 도 6b는 본 개시내용의 실시예들에 따른 일반적 벡터 친화적 명령어 포맷 및 이것의 클래스 B 명령어 템플릿들을 예시하는 블록도이다. 구체적으로는, 클래스 A 및 클래스 B 명령어 템플릿들이 그에 대해 정의되는 일반적 벡터 친화적 명령어 포맷(600)이 있는데, 이들 둘 모두는 메모리 액세스 없음(605) 명령어 템플릿들 및 메모리 액세스(620) 명령어 템플릿들을 포함한다. 벡터 친화적 명령어 포맷의 맥락에서의 일반적(generic)이라는 용어는 임의의 특정 명령어 세트에 얽매이지 않는 명령어 포맷을 지칭한다.
벡터 친화적 명령어 포맷이 이하: 32 비트(4 바이트) 또는 64 비트(8 바이트) 데이터 성분 폭들(크기들)을 가진 64 바이트 벡터 피연산자 길이(또는 크기)(및 따라서, 64 바이트 벡터는 16 더블워드 크기 요소 또는 대안적으로 8 쿼드워드 크기 요소로 구성된다); 16 비트(2 바이트) 또는 8 비트(1 바이트) 데이터 성분 폭들(또는 크기들)을 가진 64 바이트 벡터 피연산자 길이(또는 크기); 32 비트(4 바이트), 64 비트(8 바이트), 16 비트(2 바이트), 또는 8 비트(1 바이트) 데이터 성분 폭들(또는 크기들)을 가진 32 바이트 벡터 피연산자 길이(또는 크기); 및 32 비트(4 바이트), 64 비트(8 바이트), 16 비트(2 바이트), 또는 8 비트(1 바이트) 데이터 성분 폭들(또는 크기들)을 가진 16 바이트 벡터 피연산자 길이(또는 크기)를 지원하는 본 개시내용의 실시예들이 설명될 것이지만; 대안적 실시예들은 더 크거나, 더 작거나 또는 상이한 데이터 성분 폭들(예를 들어, 128 비트(16 바이트) 데이터 성분 폭들)을 가진 더 크거나, 더 작거나 및/또는 상이한 벡터 피연산자 크기들(예를 들어, 256 바이트 벡터 피연산자들)을 지원할 수 있다.
도 6a에서의 클래스 A 명령어 템플릿들은: 1) 메모리 액세스 없음(605) 명령어 템플릿들 내에 메모리 액세스 없음, 풀 라운드 제어형 연산(610) 명령어 템플릿 및 메모리 액세스 없음, 데이터 변환형 연산(615) 명령어 템플릿이 보여지고; 및 2) 메모리 액세스(620) 명령어 템플릿들 내에 메모리 액세스, 일시적(625) 명령어 템플릿 및 메모리 액세스, 비일시적(630) 명령어 템플릿이 보여진 것을 포함한다. 도 6b에서의 클래스 B 명령어 템플릿들은: 1) 메모리 액세스 없음(605) 명령어 템플릿들 내에 메모리 액세스 없음, 기입 마스크 제어, 부분 라운드 제어형 연산(612) 명령어 템플릿 및 메모리 액세스 없음, 기입 마스크 제어, vsize형 연산(617) 명령어 템플릿이 보여지고; 및 2) 메모리 액세스(620) 명령어 템플릿들 내에 메모리 액세스, 기입 마스크 제어(627) 명령어 템플릿이 보여지는 것을 포함한다.
일반적 벡터 친화적 명령어 포맷(600)은 도 6a 및 도 6b에 예시된 순서로 아래에 열거되는 다음의 필드들을 포함한다.
포맷 필드(640) - 이 필드 내의 특정 값(명령어 포맷 식별자 값)은 벡터 친화적 명령어 포맷, 및 따라서 명령어 스트림들에서 벡터 친화적 명령어 포맷에서의 명령어들의 발생들을 고유하게 식별한다. 이와 같이, 이 필드는 이것이 일반적 벡터 친화적 명령어 포맷만을 갖는 명령어 세트에 대해 필요하지 않다는 점에서 선택적이다.
베이스 연산 필드(642) - 그 내용은 상이한 베이스 연산들을 구별한다.
레지스터 인덱스 필드(644) - 이것의 내용은, 직접적으로 또는 어드레스 발생을 통해, 이들이 레지스터들에 있든지 메모리에 있든지 간에, 소스 및 목적지 피연산자들의 위치들을 지정한다. 이들은 PxQ(예를 들어, 32x512, 16x128, 32x1024, 64x1024) 레지스터 파일로부터 N개의 레지스터를 선택하기에 충분한 비트 수를 포함한다. 일 실시예에서 N은 최대 3개의 소스 및 1개의 목적지 레지스터일 수 있지만, 대안적인 실시예들은 더 많거나 더 적은 소스들 및 목적지 레지스터들을 지원할 수 있다(예를 들어, 이러한 소스들 중 하나가 또한 목적지의 역할을 하는 경우에 최대 2개의 소스까지 지원할 수 있고, 이러한 소스들 중 하나가 또한 목적지의 역할을 하는 경우에 최대 3개의 소스를 지원할 수 있고, 최대 2개의 소스 및 1개의 목적지까지를 지원할 수 있다).
수정자 필드(646) - 이것의 내용은 그렇게 하지 않는 것들로부터 메모리 액세스를 지정하는 일반적 벡터 명령어 포맷에서의 명령어들의 발생들을 구별한다; 즉, 메모리 액세스 없음(605) 명령어 템플릿들과 메모리 액세스(620) 명령어 템플릿들 간에서. 메모리 액세스 연산들은 (일부 경우에서 레지스터들 내의 값들을 사용하여 소스 및/또는 목적지 어드레스들을 지정하는) 메모리 계층구조에 대해 판독 및/또는 기입하는 반면에, 메모리 액세스 없음 연산들은 그렇게 하지 않는다(예를 들어, 소스 및 목적지들이 레지스터들임). 일 실시예에서, 이 필드는 메모리 어드레스 계산들을 수행하는 3가지 상이한 방식 사이에서 또한 선택하지만, 대안적인 실시예들은 메모리 어드레스 계산들을 수행하는 더 많거나, 더 적거나 또는 상이한 방식들을 지원할 수 있다.
증강 연산 필드(augmentation operation field)(650) - 이것의 내용은 다양한 상이한 연산들 중 어느 것이 베이스 연산에 부가하여 실행되어야 하는지를 구별해 준다. 이 필드는 정황에 고유하다. 본 개시내용의 일 실시예에서, 이 필드는 클래스 필드(668), 알파 필드(652), 및 베타 필드(654)로 분할된다. 증강 연산 필드(650)는 연산들의 공통 그룹들이 2, 3, 또는 4개의 명령어보다는 단일 명령어에서 수행될 수 있게 한다.
스케일링 필드(660) - 이것의 내용은 메모리 어드레스 생성을 위한(예를 들어, 2scale * index + base를 이용하는 어드레스 생성을 위한) 인덱스 필드의 내용의 스케일링(scaling)을 허용한다.
변위 필드(662A) - 이것의 내용은 메모리 어드레스 생성(예를 들어, 2scale*index + base + displacement를 이용하는 어드레스 생성을 위한)의 일부로서 이용된다.
변위 인자 필드(662B)(변위 인자 필드(662B)에 직접 걸친 변위 필드(662A)의 병치(juxtaposition)는 어느 하나 또는 다른 것이 이용되는 것을 나타냄을 유의하라) - 이것의 내용은 어드레스 발생의 일부로서 사용된다; 이것은 메모리 액세스의 크기(N)에 의해 스케일링될 변위 인자를 지정한다 - 여기서 N은 메모리 액세스에서의 바이트들의 수이다(예를 들어, 2scale*index + base + scaled displacement를 사용하는 어드레스 발생에 대해). 잉여 하위 비트들(redundant low-order bits)은 무시되고, 따라서 변위 인자 필드의 내용은 유효 어드레스를 계산하는데 이용될 최종 변위를 생성하기 위해서 메모리 피연산자 총 크기(N)로 곱해진다. N의 값은 풀 오피코드 필드(674)(본 명세서에서 나중에 설명됨) 및 데이터 조작 필드(654C)에 기초하여 실행 시간에 프로세서 하드웨어에 의해 결정된다. 변위 필드(662A) 및 변위 인자 필드(662B)는 이들이 메모리 액세스 없음(605) 명령어 템플릿들에 대해 사용되지 않고 및/또는 상이한 실시예들이 둘 중 하나만을 구현하거나 어느 것도 구현하지 않는다는 점에서 선택적이다.
데이터 성분 폭 필드(664) - 이것의 내용은 다수의 데이터 성분 폭 중 어느 것이 사용될 것인지를 구별한다(일부 실시예들에서 모든 명령어들에 대해; 다른 실시예들에서 명령어들 중 일부만에 대해). 이 필드는, 이것이 단 하나의 데이터 성분 폭만이 지원되고 및/또는 데이터 성분 폭들이 오피코드들의 일부 양태를 이용하여 지원되는 경우에 필요하지 않다는 점에서 선택적이다.
기입 마스크 필드(670) - 이것의 내용은, 데이터 성분 위치당 기초로, 목적지 벡터 피연산자에서의 그 데이터 성분 위치가 베이스 연산 및 증강 연산의 결과를 반영하는지를 제어한다. 클래스 A 명령어 템플릿들은 병합-기입마스킹(merging-writemasking)을 지원하는 반면에, 클래스 B 명령어 템플릿들은 병합-기입마스킹 및 제로화-기입마스킹(zeroing-writemasking) 양쪽 모두를 지원한다. 병합할 때에, 벡터 마스크들은 목적지에서의 임의의 성분들의 세트가 (베이스 연산 및 증강 연산에 의해 지정되는) 임의의 연산의 실행 동안 업데이트들로부터 보호될 수 있게 해주고; 다른 일 실시예에서는, 대응하는 마스크 비트가 0을 갖는 경우에 목적지의 각각의 성분의 오래된 값을 보존한다. 이에 반해, 제로화할 때에, 벡터 마스크들은 목적지에서의 임의의 성분들의 세트가 (베이스 연산 및 증강 연산에 의해 지정되는) 임의의 연산의 실행 동안 제로로 될 수 있게 하고; 일 실시예에서는, 목적지의 성분은 대응하는 마스크 비트가 0 값을 가질 때에 0으로 설정된다. 이러한 기능성의 서브세트는 수행되는 연산의 벡터 길이를 제어하는 능력이다(즉, 성분들의 범위(span)는 첫 번째 것으로부터 마지막 것까지 수정됨); 그러나, 수정되는 요소들이 연속적인 것은 필요하지 않다. 따라서, 기입 마스크 필드(670)는 로드, 저장, 산술, 논리 등을 포함하는 부분 벡터 연산들을 허용한다. 기입 마스크 필드(670)의 내용이 사용될 기입 마스크를 포함하는 다수의 기입 마스크 레지스터들 중 하나를 선택하는 (그리고 따라서 기입 마스크 필드(670)의 내용이 수행될 해당 마스킹을 간접적으로 식별하는) 개시내용의 실시예들이 설명되지만, 대안 실시예들은 그 대신에 또는 추가적으로 마스크 기입 필드(670)의 내용이 수행될 마스킹을 직접적으로 특정하는 것을 허용한다.
즉치 필드(672) - 이것의 내용은 즉치의 스펙(specification)을 허용한다. 이 필드는, 이것이 즉치를 지원하지 않는 일반적 벡터 친화적 포맷의 구현에 존재하지 않으며, 즉치를 이용하지 않는 명령어들에 존재하지 않는다는 점에서 선택적이다.
클래스 필드(668) - 이것의 내용은 명령어들의 상이한 클래스들 간을 구별한다. 도 6a 및 도 6b를 참조하면, 이 필드의 내용은 클래스 A 명령어들과 클래스 B 명령어들 사이에서 선택한다. 도 6a 및 도 6b에서, 필드에 특정 값이 존재하는 것을 나타내기 위해 라운딩된 코너 정사각형들이 이용된다(예를 들어, 도 6a-b에서 제각기 클래스 필드(668)에 대한 클래스 A(668A) 및 클래스 B(668B)).
클래스 A의 명령어 템플릿들
클래스 A의 메모리 액세스 없음(605) 명령어 템플릿들의 경우에, 알파 필드(652)는 RS 필드(652A)로서 해석되고, 이것의 내용은 상이한 증강 연산 타입들 중 어느 것이 실행되어야 하는지를 구별해주는 한편[예컨대, 라운드(652A.1) 및 데이터 변환(652A.2)은 제각기 메모리 액세스 없음, 라운드형 연산(610) 및 메모리 액세스 없음, 데이터 변환형 연산(615) 명령어 템플릿들에 대해 지정됨], 베타 필드(654)는 지정된 유형의 연산들 중 어느 것이 실행되어야 하는지를 구별해준다. 메모리 액세스 없음(605) 명령어 템플릿들에서, 스케일링 필드(660), 변위 필드(662A), 및 변위 스케일링 필드(662B)는 존재하지 않는다.
메모리 액세스 없음 명령어 템플릿들 - 풀 라운드 제어형 연산
메모리 액세스 없음 풀 라운드 제어형 연산(610) 명령어 템플릿에서, 베타 필드(654)는 라운드 제어 필드(654A)로서 해석되고, 그것의 내용(들)은 정적 라운딩을 제공한다. 본 개시내용의 설명된 실시예들에서 라운드 제어 필드(654A)는 SAE(suppress all floating point exceptions) 필드(656) 및 라운드 연산 제어 필드(658)를 포함하지만, 대안적인 실시예들은 이들 개념들 양쪽 모두를 동일한 필드에 인코딩하거나, 또는 이들 개념들/필드들 중 어느 한쪽만을 가질 수 있다(예를 들어, 라운드 연산 제어 필드(658)만을 가질 수 있다).
SAE 필드(656) - 이것의 내용은 예외 이벤트 보고를 디스에이블할 것인지 여부를 구별해 준다; SAE 필드(656)의 내용이 억제가 인에이블링되는 것을 표시할 때, 주어진 명령어는 어떠한 종류의 부동 소수점 예외 플래그도 보고하지 않고, 어떠한 부동 소수점 예외 핸들러도 일으키지 않는다.
라운드 연산 제어 필드(658) - 이것의 내용은 라운딩 연산들의 그룹 중 어느 것을 수행할지를 구별한다(예를 들어, 라운드-업(Round-up), 라운드-다운(Round-down), 제로를 향한 라운드(Round-towards-zero) 및 최근접치로의 라운드(Round-to-nearest)). 따라서, 라운드 연산 제어 필드(658)는 명령어별로 라운딩 모드의 변경을 허용한다. 프로세서가 라운딩 모드들을 지정하기 위한 제어 레지스터를 포함하는 본 개시내용의 일 실시예에서, 라운드 연산 제어 필드(650)의 내용은 그 레지스터 값을 오버라이드한다.
메모리 액세스 없음 명령어 템플릿들 - 데이터 변환형 연산
메모리 액세스 없음 데이터 변환형 연산(615) 명령어 템플릿에서, 베타 필드(654)는 데이터 변환 필드(654B)로서 해석되고, 이것의 내용은 다수의 데이터 변환 중 어느 것이 실행되어야 하는지를 구별해 준다(예컨대, 데이터 변환 없음, 스위즐링(swizzle), 브로드캐스트).
클래스 A의 메모리 액세스(620) 명령어 템플릿의 경우에, 알파 필드(652)는 축출 힌트 필드(eviction hint field)(652B)로서 해석되고, 그것의 내용은 축출 힌트들 중 어느 것이 이용되어야 하는지를 구분하는 반면에(도 6a에서, 메모리 액세스, 일시적(625) 명령어 템플릿 및 메모리 액세스, 비 일시적(630) 명령어 템플릿에 대해 일시적(652B.1) 및 비 일시적(652B.2)가 제각기 지정됨), 베타 필드(654)는 데이터 조작 필드(654C)로서 해석되고, 그것의 내용은 (프리미티브(primitives)로도 알려진) 다수의 데이터 조작 연산들 중 어느 연산이 수행되어야 하는지를 구분한다(예를 들어, 조작 없음; 브로드캐스트; 소스의 업 컨버전; 및 목적지의 다운 컨버전). 메모리 액세스(620) 명령어 템플릿들은 스케일링 필드(660), 및 선택적으로 변위 필드(662A) 또는 변위 스케일링 필드(662B)를 포함한다.
벡터 메모리 명령어들은 변환 지원에 의해 메모리로부터의 벡터 로드들 및 메모리로의 벡터 스토어들을 수행한다. 정규 벡터 명령어들에서와 같이, 벡터 메모리 명령어들은 데이터 성분당 방식으로 메모리로부터/로 데이터를 전달하고, 실제로 전달되는 성분들은 기입 마스크로서 선택되는 벡터 마스크의 내용에 의해 지시된다.
메모리 액세스 명령어 템플릿들 - 일시적
일시적 데이터는 캐싱으로부터 이익을 얻기에 충분할 만큼 빨리 재사용될 가능성이 있는 데이터이다. 그러나 이것은 힌트이고, 상이한 프로세서들은 힌트를 완전히 무시하는 것을 포함하여 상이한 방식으로 그것을 구현할 수 있다.
메모리 액세스 명령어 템플릿들 - 비일시적
비일시적 데이터는 제1 레벨 캐시 내의 캐싱으로부터 이익을 얻기에 충분할 만큼 빨리 재사용될 가능성이 없는 데이터이고, 축출에 대한 우선순위가 주어져야 한다. 그러나 이것은 힌트이고, 상이한 프로세서들은 힌트를 완전히 무시하는 것을 포함하여 상이한 방식으로 그것을 구현할 수 있다.
클래스 B의 명령어 템플릿들
클래스 B의 명령어 템플릿들의 경우에, 알파 필드(652)는 기입 마스크 제어(Z) 필드(652C)로서 해석되고, 이것의 내용은 기입 마스크 필드(670)에 의해 제어되는 기입 마스킹이 병합이어야 하는지 제로화이어야 하는지를 구별해 준다.
클래스 B의 메모리 액세스 없음(605) 명령어 템플릿들의 경우에, 베타 필드(654)의 일부는 RL 필드(657A)로서 해석되고, 이것의 내용은 상이한 증강 연산 타입들 중 어느 것이 실행되어야 하는지를 구별해주는 한편[예컨대, 라운드(657A.1) 및 벡터 길이(VSIZE)(657A.2)는 제각기 메모리 액세스 없음, 기입 마스크 제어, 부분 라운드 제어형 연산(612) 명령어 템플릿 및 메모리 액세스 없음, 기입 마스크 제어, VSIZE형 연산(617) 명령어 템플릿에 대해 지정됨], 베타 필드(654)의 나머지는 특정된 타입의 연산들 중 어느 것이 실행되어야 하는지를 구별해 준다. 메모리 액세스 없음(605) 명령어 템플릿들에서, 스케일링 필드(660), 변위 필드(662A), 및 변위 스케일링 필드(662B)는 존재하지 않는다.
메모리 액세스 없음, 기입 마스크 제어, 부분 라운드 제어형 연산(610) 명령어 템플릿에서, 베타 필드(654)의 나머지는 라운드 연산 필드(659A)로서 해석되고, 예외 이벤트 보고는 디스에이블된다(주어진 명령어는 어떠한 종류의 부동 소수점 예외 플래그도 보고하지 않고, 어떠한 부동 소수점 예외 핸들러도 일으키지 않는다).
라운드 연산 제어 필드(659A)는 - 라운드 연산 제어 필드(658)처럼, 이것의 내용은 한 그룹의 라운드 연산들 중 어느 것을 실행할지를 구별해 준다(예컨대, 라운드 업(Round-up), 라운드 다운(Round-down), 제로를 향한 라운드(Round-towards-zero) 및 최근접치로의 라운드(Round-to-nearest)). 따라서, 라운드 연산 제어 필드(659A)는 명령어별로 라운딩 모드의 변경을 허용한다. 프로세서가 라운딩 모드들을 지정하기 위한 제어 레지스터를 포함하는 본 개시내용의 일 실시예에서, 라운드 연산 제어 필드(650)의 내용은 그 레지스터 값을 오버라이드한다.
메모리 액세스 없음, 기입 마스크 제어, VSIZE형 연산(617) 명령어 템플릿에서, 베타 필드(654)의 나머지는 벡터 길이 필드(659B)로서 해석되고, 이것의 내용은 다수의 데이터 벡터 길이 중 어느 것이 실행되어야 하는지를 구별해 준다(예를 들어, 128, 256, 또는 512 바이트).
클래스 B의 메모리 액세스(620) 명령어 템플릿의 경우에, 베타 필드(654)의 일부는 브로드캐스트 필드(657B)로서 해석되고, 이것의 내용은 브로드캐스트 타입 데이터 조작 연산이 실행되어야 하는지의 여부를 구별해 주는 한편, 베타 필드(654)의 나머지는 벡터 길이 필드(659B)로서 해석된다. 메모리 액세스(620) 명령어 템플릿들은 스케일링 필드(660), 및 선택적으로 변위 필드(662A) 또는 변위 스케일링 필드(662B)를 포함한다.
일반적 벡터 친화적 명령어 포맷(600)에 대하여, 풀 오피코드 필드(674)는 포맷 필드(640), 베이스 연산 필드(642), 및 데이터 성분 폭 필드(664)를 포함하는 것으로 도시되어 있다. 풀 오피코드 필드(674)가 이들 필드 모두를 포함하는 일 실시예가 도시되어 있지만, 풀 오피코드 필드(674)는 이들 필드 전부를 지원하지 않는 실시예들에서 이들 필드 전부보다 적은 것을 포함한다. 풀 오피코드 필드(674)는 연산 코드(operation code, opcode)를 제공한다.
증강 연산 필드(650), 데이터 성분 폭 필드(664), 및 기입 마스크 필드(670)는 이들의 특징이 일반적 벡터 친화적 명령어 포맷으로 명령어별로 지정되도록 허용한다.
기입 마스크 필드와 데이터 요소 폭 필드의 조합은, 이들이 마스크로 하여금 상이한 데이터 성분 폭들에 기초하여 적용되는 것을 허용한다는 점에서 타입화된 명령어들(typed instructions)을 생성한다.
클래스 A 및 클래스 B 내에서 발견되는 다양한 명령어 템플릿들은 상이한 상황들에서 이롭다. 본 개시내용의 일부 실시예들에서, 상이한 프로세서들 또는 프로세서 내의 상이한 코어들은 클래스 A만을, 클래스 B만을, 또는 양자의 클래스를 지원할 수 있다. 예를 들어, 범용 컴퓨팅에 대해 의도된 고성능 범용 비순차적 코어는 클래스 B만을 지원할 수 있고, 주로 그래픽 및/또는 과학(처리량) 컴퓨팅에 대해 의도된 코어는 클래스 A만을 지원할 수 있고, 양쪽 모두를 위해 의도된 코어는 양쪽 모두를 지원할 수 있다(물론, 양쪽 모두의 클래스로부터의 명령어들 및 템플릿들의 어떤 혼합을 갖지만 양쪽 모두의 클래스로부터의 명령어들 및 템플릿들 전부를 갖지는 않는 코어도 본 개시내용의 범위 내에 있다). 또한, 단일 프로세서가 다중 코어를 포함할 수 있는데, 이들 모두는 동일한 클래스를 지원하거나 또는 상이한 코어들이 상이한 클래스를 지원한다. 예를 들어, 별개의 그래픽 및 범용 코어들을 갖는 프로세서에서, 주로 그래픽 및/또는 과학 컴퓨팅에 대해 의도된 그래픽 코어들 중 하나는 클래스 A만을 지원할 수 있는 반면에, 범용 코어들 중 하나 이상은, 클래스 B만을 지원하는, 범용 컴퓨팅에 대해 의도된 비순차적 실행 및 레지스터 리네이밍을 갖는 고성능 범용 코어들일 수 있다. 별개의 그래픽 코어를 갖지 않는 또 다른 프로세서는 클래스 A 및 클래스 B 양쪽 모두를 지원하는 하나 이상의 범용 순차적 또는 비순차적 코어를 포함할 수 있다. 물론, 하나의 클래스로부터의 특징들은 본 개시내용의 상이한 실시예들에 있어서 다른 클래스에서 또한 구현될 수 있다. 고급 언어로 작성된 프로그램들은: 1) 실행을 위해 타겟 프로세서에 의해 지원되는 클래스(들)의 명령어들만을 갖는 형태; 또는 2) 모든 클래스의 명령어들의 상이한 조합들을 이용하여 작성된 대안 루틴들을 갖고 또한 코드를 현재 실행하고 있는 프로세서에 의해 지원되는 명령어들에 기초하여 실행될 루틴들을 선택하는 제어 흐름 코드를 갖는 형태를 포함하여 다양하고 상이한 실행가능 형태들로 될 것이다(예를 들어, 단지 시간 컴파일링되거나 정적으로 컴파일링될 것이다).
예시적인 특정 벡터 친화적 명령어 포맷
도 7은 본 개시내용의 실시예들에 따른 예시적인 특정 벡터 친화적 명령어 포맷을 예시하는 블록도이다. 도 7은 필드들의 로케이션, 크기, 해석, 및 순서뿐만 아니라, 이들 필드들의 일부에 대한 값들을 지정한다는 점에서 특정적인 특정 벡터 친화적 명령어 포맷(700)을 도시한다. 특정 벡터 친화적 명령어 포맷(700)은 x86 명령어 세트를 확장하는 데 이용될 수 있고, 따라서 필드들 중 일부는 기존의 x86 명령어 세트 및 그의 확장(예를 들어, AVX)에서 이용된 것들과 유사하거나 동일하다. 이 포맷은 확장들을 갖는 기존의 x86 명령어 세트의 프리픽스 인코딩 필드, 실제 오피코드 바이트 필드(real opcode byte field), MOD R/M 필드, SIB 필드, 변위 필드, 및 즉치 필드들과 일관되게 유지된다. 도 7로부터의 필드들이 매핑되는 도 6의 필드들이 예시되어 있다.
본 개시내용의 실시예들은 예시의 목적으로 일반적 벡터 친화적 명령어 포맷(600)의 맥락에서 특정 벡터 친화적 명령어 포맷(700)을 참조하여 설명되지만, 본 발명은 청구되는 경우를 제외하고는 특정 벡터 친화적 명령어 포맷(700)에 제한되지는 않는다는 것을 이해해야 한다. 예를 들어, 일반적 벡터 친화적 명령어 포맷(600)은 다양한 필드에 대해 다양한 가능한 사이즈를 고려하는 반면, 특정 벡터 친화적 명령어 포맷(700)은 특정 사이즈들의 필드들을 가지는 것으로 도시되어 있다. 특정의 예로서, 데이터 성분 폭 필드(664)가 특정 벡터 친화적 명령어 포맷(700)에서 1 비트 필드로서 예시되어 있지만, 본 개시내용은 이것에만 제한되지 않는다[즉, 일반적 벡터 친화적 명령어 포맷(600)은 데이터 성분 폭 필드(664)의 다른 사이즈들을 고려한다].
일반적 벡터 친화적 명령어 포맷(600)은 도 7a에 예시된 순서로 아래에 열거되는 다음의 필드들을 포함한다.
EVEX 프리픽스(바이트 0-3)(702) - 4 바이트 형태로 인코딩된다.
포맷 필드(640)(EVEX 바이트 0, 비트 [7:0]) - 제1 바이트(EVEX 바이트 0)는 포맷 필드(640)이고, 이것은 0x62(본 개시내용의 일 실시예에서 벡터 친화적 명령어 포맷을 구별하기 위해 이용되는 고유값)를 포함한다.
제2 내지 제4 바이트들(EVEX 바이트 1-3)는 특정 능력을 제공하는 다수의 비트 필드를 포함한다.
REX 필드(705)(EVEX 바이트 1, 비트[7-5])는 EVEX.R 비트 필드(EVEX 바이트 1, 비트[7] - R), EVEX.X 비트 필드(EVEX 바이트 1, 비트[6] - X), 및 657BEX 바이트 1, 비트[5] - B)로 구성된다. EVEX.R, EVEX.X, 및 EVEX.B 비트 필드들이 대응하는 VEX 비트 필드들과 동일 기능을 제공하고 1의 보수 형태를 이용하여 인코딩되는데, 즉, ZMM0은 1111B로서 인코딩되고, ZMM15는 0000B로서 인코딩된다. 명령어들의 다른 필드들은 관련 기술분야에 공지된 바와 같이 레지스터 인덱스들의 하위 3 비트를 인코딩하여(rrr, xxx, 및 bbb), EVEX.R, EVEX.X 및 EVEX.B를 추가함으로써 Rrrr, Xxxx, 및 Bbbb가 형성될 수 있도록 한다.
REX' 필드(610) - 이것은 REX' 필드(610)의 제1 부분이고, 확장된 32 레지스터 세트의 상위 16 또는 하위 16 중 어느 하나를 인코딩하는 데 사용되는 EVEX.R' 비트 필드(EVEX 바이트 1, 비트[4]-R')이다. 본 개시내용의 일 실시예에서, 이 비트는, 아래에 표시되는 바와 같은 다른 것들과 함께, (잘 알려진 x86 32 비트 모드에서) BOUND 명령어와 구별하기 위해 비트 반전된 포맷으로 저장되고, 그것의 실제 오피코드 바이트는 62이지만, (후술되는) MOD R/M 필드에서 MOD 필드에서의 11의 값을 수락하지 않으며; 본 개시내용의 대안적인 실시예들은 반전된 포맷으로 이것 및 아래의 다른 표시된 비트들을 저장하지 않는다. 하위 16개의 레지스터를 인코딩하기 위해 1의 값이 이용된다. 다시 말해서, R'Rrrr는 EVEX.R', EVEX.R, 및 다른 필드들로부터의 다른 RRR를 조합시킴으로써 형성된다.
오피코드 맵 필드(715)(EVEX 바이트 1, 비트 [3:0] - mmmm) - 이것의 내용은 암시적인 선두 오피코드 바이트(implied leading opcode byte)(0F, 0F 38 또는 0F 3)를 인코딩한다.
데이터 성분 폭 필드(664)(EVEX 바이트 2, 비트[7] - W)는 표기 EVEX.W에 의해 표현된다. EVEX.W는 데이터형(32 비트 데이터 성분들 또는 64 비트 데이터 성분들)의 그래뉼래리티(크기)를 정의하는 데 사용된다.
EVEX.vvvv(720)(EVEX 바이트 2, 비트들[6:3]-vvvv) - EVEX.vvvv의 역할은 하기를 포함할 수 있다: 1) EVEX.vvvv는 반전된(1의 보수) 형태로 지정된 제1 소스 레지스터 피연산자를 인코딩하고, 2개 이상의 소스 피연산자를 갖는 명령어들에 대해 유효하고; 2) EVEX.vvvv는 특정한 벡터 시프트들을 위해 1의 보수 형태로 지정된 목적지 레지스터 피연산자를 인코딩하거나; 또는 3) EVEX.vvvv는 어떤 피연산자도 인코딩하지 않고, 필드는 예약되고 1111b를 포함해야 한다. 따라서, EVEX.vvvv 필드(720)는 반전된(1의 보수) 형태로 저장되는 제1 소스 레지스터 지정자의 하위 4 비트를 인코딩한다. 명령어에 의존하여, 추가의 상이한 EVEX 비트 필드가 지정자 크기를 32개의 레지스터로 확장하기 위해 이용된다.
EVEX.U (668) 클래스 필드(EVEX 바이트 2, 비트 [2]-U) - EVEX.U=0인 경우, 이는 클래스 A 또는 EVEX.U0을 나타내고; EVEX.U=1인 경우, 이는 클래스 B 또는 EVEX.U1을 나타낸다.
프리픽스 인코딩 필드(725)(EVEX 바이트 2, 비트 [1:0]-pp)는 베이스 연산 필드에 대한 부가 비트들을 제공한다. EVEX 프리픽스 포맷의 레거시 SSE 명령어들에 대한 지원을 제공하는 것에 더하여, 이것은 또한 SIMD 프리픽스를 간소화하는 이득을 갖는다(SIMD 프리픽스를 표현하기 위해 바이트를 요구하는 것이 아니라, EVEX 프리픽스는 2 비트만을 요구함). 일 실시예에서, 레거시 포맷 및 EVEX 프리픽스 포맷 양자에서 SIMD 프리픽스(66H, F2H, F3H)를 이용하는 레거시 SSE 명령어들을 지원하기 위해, 이들 레거시 SIMD 프리픽스는 SIMD 프리픽스 인코딩 필드에 인코딩되고; 런타임에서 디코더의 PLA에 제공되기 전에 레거시 SIMD 프리픽스로 확장된다(그래서, PLA는 수정 없이 레거시와 이들 레거시 명령어의 EVEX 포맷 양자를 실행할 수 있다). 더 새로운 명령어들이 오피코드 확장으로서 직접적으로 EVEX 프리픽스 인코딩 필드의 내용을 이용할 수 있지만, 특정 실시예들은 일관성을 위해 유사한 방식으로 확장되고, 오히려 상이한 의미들이 이들 레거시 SIMD 프리픽스들에 의해 지정되는 것을 허용한다. 대안적인 실시예는 2 비트 SIMD 프리픽스 인코딩들을 지원하도록 PLA를 재설계할 수 있고, 따라서 확장을 요구하지 않는다.
알파 필드(652)(EVEX 바이트 3, 비트[7] - EH; 또한, EVEX.EH, EVEX.rs, EVEX.RL, EVEX.write 마스크 제어, 및 EVEX.N 으로 알려진 바와 같이; 또한 α로 예시된 바와 같이) - 이전에 설명된 바와 같이, 이 필드는 맥락 특정적이다.
베타 필드(654)(EVEX 바이트 3, 비트 [6:4]-SSS, EVEX.s2-0, EVEX.r2-0, EVEX.rr1, EVEX.LL0, EVEX.LLB라고도 알려짐; 또한 βββ로 예시됨) - 앞서 설명된 바와 같이, 이 필드는 맥락 특정적이다.
REX' 필드(610) - 이것은 REX' 필드의 나머지이고, 확장된 32 레지스터 세트의 상위 16 또는 하위 16 중 어느 하나를 인코딩하는 데 사용될 수 있는 EVEX.V' 비트 필드(EVEX 바이트 3, 비트[3] - V')이다. 이 비트는 비트 반전된 포맷으로 저장된다. 하위 16개의 레지스터를 인코딩하기 위해 1의 값이 이용된다. 다시 말해서, V'VVVV는 EVEX.V', EVEX.vvvv를 조합함으로써 형성된다.
기입 마스크 필드(670)(EVEX 바이트 3, 비트 [2:0]-kkk) -이것의 내용은 앞서 설명된 바와 같이 기입 마스크 레지스터들에서의 레지스터의 인덱스를 지정한다. 본 개시내용의 일 실시예에서, 특정 값 EVEX.kkk=000은 특정 명령어에 대해 어떤 기입 마스크도 이용되지 않음을 암시하는 특정한 거동을 갖는다(이것은 모든 것들에 하드와이어드된 기입 마스크 또는 마스킹 하드웨어를 바이패스하는 하드웨어의 이용을 포함하는 각종 방식들로 구현될 수 있음).
실제 오피코드 필드(730)(바이트 4)는 또한 오피코드 바이트로서 알려진다. 오피코드의 일부는 이 필드에서 지정된다.
MOD R/M 필드(740)(바이트 5)는 MOD 필드(742), Reg 필드(744), 및 R/M 필드(746)를 포함한다. 전술한 바와 같이, MOD 필드(742)의 내용은 메모리 액세스와 메모리 액세스 없음 연산들 사이를 구별한다. Reg 필드(744)의 역할은 두 가지 상황으로 요약될 수 있다: 목적지 레지스터 피연산자 또는 소스 레지스터 피연산자 중 어느 하나를 인코딩하거나, 또는 오피코드 확장으로서 취급되고 및 임의의 명령어 피연산자를 인코딩하는 데 사용되지 않는다. R/M 필드(746)의 역할은 다음을 포함할 수 있다: 메모리 어드레스를 참조하는 명령어 피연산자를 인코딩하는 것, 또는 목적지 레지스터 피연산자 또는 소스 레지스터 피연산자를 인코딩하는 것.
SIB(Scale, Index, Base) 바이트(바이트 6) - 전술한 바와 같이, 스케일링 필드(650)의 내용은 메모리 어드레스 생성을 위해 사용된다. SIB.xxx(754) 및 SIB.bbb(756) - 이들 필드들의 내용들은 레지스터 인덱스들 Xxxx 및 Bbbb에 대하여 앞서 언급되었다.
변위 필드(662A)(바이트들 7-10) - MOD 필드(742)가 10을 포함할 때, 바이트들 7-10은 변위 필드(662A)이고, 이것은 레거시 32 비트 변위(disp32)와 동일하게 작용하고 바이트 그래뉼래리티(byte granularity)로 작업한다.
변위 인자 필드(662B)(바이트 7) - MOD 필드(742)가 01을 포함할 때, 바이트 7은 변위 인자 필드(662B)이다. 이 필드의 위치는 바이트 그래뉼리래티로 작업하는 레거시 x86 명령어 세트 8 비트 변위(disp8)의 위치와 동일하다. disp8이 부호 확장되기(sign extended) 때문에, 이것은 단지 -128과 127 바이트 오프셋들 사이를 어드레싱할 수 있고; 64 바이트 캐시 라인들에 관하여, disp8은 4개의 실제 유용한 값인 -128, -64, 0, 64로만 설정될 수 있는 8 비트를 이용하며; 더 큰 범위가 종종 필요하기 때문에, disp32가 이용된다; 그러나, disp32는 4 바이트를 요구한다. disp8 및 disp32와는 대조적으로, 변위 인자 필드(662B)는 disp8의 재해석이고; 변위 인자 필드(662B)를 이용할 때, 변위 인자 필드의 내용과 메모리 피연산자 액세스의 크기(N)를 곱한 것에 의해 실제 변위가 결정된다. 이러한 타입의 변위는 disp8*N으로 지칭된다. 이것은 평균 명령어 길이를 감소시킨다(단일 바이트가 그 변위에 사용되지만 훨씬 더 큰 범위를 갖는다). 이러한 압축된 변위는, 유효 변위가 메모리 액세스의 그래뉼래리티의 배수이고, 그에 따라 어드레스 오프셋의 잉여 하위 비트들이 인코딩될 필요가 없다는 가정에 기초한다. 다시 말해, 변위 인자 필드(662B)는 레거시 x86 명령어 세트 8 비트 변위를 대체한다. 따라서, 변위 인자 필드(662B)는 disp8이 disp8*N으로 오버로드된다는 것만 제외하고 x86 명령어 세트 8 비트 변위와 동일한 방식으로 인코딩된다(그래서 ModRM/SIB 인코딩 규칙들에서 어떠한 것도 변하지 않는다). 다시 말하면, 인코딩 규칙들 또는 인코딩 길이들에서 어떤 변경도 존재하지 않지만, (바이트당 어드레스 오프셋(byte-wise address offset)을 획득하기 위해 메모리 피연산자의 크기에 의해 변위를 스케일링할 필요가 있는) 하드웨어에 의한 변위 값의 해석에서만 변경이 존재한다. 즉치 필드(672)는 앞서 기술한 바와 같이 연산한다.
풀 오피코드 필드
도 7b는 본 개시내용의 일 실시예에 따른 풀 오피코드 필드(674)를 구성하는 특정 벡터 친화적 명령어 포맷(700)의 필드들을 예시하는 블록도이다. 구체적으로는, 풀 오피코드 필드(674)는 포맷 필드(640), 베이스 연산 필드(642), 및 데이터 성분 폭(W) 필드(664)를 포함한다. 베이스 연산 필드(642)는 프리픽스 인코딩 필드(725), 오피코드 맵 필드(715), 및 실제 오피코드 필드(730)를 포함한다.
레지스터 인덱스 필드
도 7c는 본 개시내용의 일 실시예에 따른 레지스터 인덱스 필드(644)를 구성하는 특정 벡터 친화적 명령어 포맷(700)의 필드들을 예시하는 블록도이다. 구체적으로, 레지스터 인덱스 필드(644)는 REX 필드(705), REX' 필드(710), MODR/M.reg 필드(744), MODR/M.r/m 필드(746), VVVV 필드(720), xxx 필드(754), 및 bbb 필드(756)를 포함한다.
증강 연산 필드
도 7d는 본 개시내용의 일 실시예에 따른 증강 연산 필드(650)를 구성하는 특정 벡터 친화적 명령어 포맷(700)의 필드들을 예시하는 블록도이다. 클래스(U) 필드(668)가 0을 포함할 때, 이것은 EVEX.U0(클래스 A 668A)을 나타내고(signify); 이것이 1을 포함할 때, 이는 EVEX.U1(클래스 B 668B)을 나타낸다. U= 0이고 MOD 필드(742)가 11을 포함할 때(메모리 액세스 없음 연산을 나타냄), 알파 필드(652)(EVEX 바이트 3, 비트[7] - EH)는 rs 필드(652A)로서 해석된다. rs 필드(652A)가 1을 포함할 때(라운드 652A.1), 베타 필드(654)(EVEX 바이트3, 비트 [6:4] - SSS)는 라운드 제어 필드(654A)로서 해석된다. 라운드 제어 필드(654A)는 1 비트 SAE 필드(656) 및 2 비트 라운드 연산 필드(658)를 포함한다. rs 필드(652A)가 0을 포함할 때(데이터 변환 652A.2), 베타 필드(654)(EVEX 바이트 3, 비트들 [6:4]-SSS)는 3 비트 데이터 변환 필드(654B)로서 해석된다. U= 0이고 MOD 필드(742)가 00, 01, 또는 10을 포함할 때(메모리 액세스 연산을 나타냄), 알파 필드(652)(EVEX 바이트 3, 비트[7] - EH)는 축출 힌트(EH) 필드(652B)로서 해석되고, 베타 필드(654)(EVEX 바이트 3, 비트들[6:4]-SSS)는 3 비트 데이터 조작 필드(654C)로서 해석된다.
U= 1일 때, 알파 필드(652)(EVEX 바이트 3, 비트[7] - EH)는 기입 마스크 제어(Z) 필드(652C)로서 해석된다. U=1이고 MOD 필드(742)가 11을 포함할 때(메모리 액세스 없음 연산을 나타냄), 베타 필드(654)(EVEX 바이트 3, 비트[4] - S0)의 일부는 RL 필드(657A)로서 해석된다; 이것이 1(라운드 657A.1)을 포함할 때, 베타 필드(654)의 나머지(EVEX 바이트 3, 비트 [6-5]-S2-1)가 라운드 연산 필드(659A)로서 해석되는 한편, RL(657A) 필드가 0(VSIZE 657.A2)을 포함할 때, 베타 필드(654)의 나머지(EVEX 바이트 3, 비트 [6-5]-S2-1)는 벡터 길이 필드(659B)(EVEX 바이트 3, 비트 [6-5]- L1-0)로서 해석된다. U=1이고 MOD 필드(742)가 00, 01, 또는 10을 포함하면(메모리 액세스 연산을 나타냄), 베타 필드(654)(EVEX 바이트 3, 비트 [6:4] - SSS)는 벡터 길이 필드(659B)(EVEX 바이트 3, 비트 [6-5]-L1-0) 및 브로드캐스트 필드(657B)(EVEX 바이트 3, 비트[4] - B)로서 해석된다.
예시적인 레지스터 아키텍처
도 8은 본 개시내용의 일 실시예에 따른 레지스터 아키텍처(800)의 블록도이다. 예시된 실시예에서, 512 비트 폭을 갖는 32 벡터 레지스터들(810)이 있다; 이들 레지스터는 zmm0 내지 zmm31로서 참조된다. 하위 16개의 zmm 레지스터의 하위 256 비트는 레지스터들 ymm0-16상에 오버레이된다. 하위 16개의 zmm 레지스터의 하위 128 비트(ymm 레지스터들의 하위 128 비트)는 레지스터들 xmm0-15상에 오버레이된다. 특정 벡터 친화적 명령어 포맷(700)은 아래 표에 예시된 바와 같이 이들 오버레이된 레지스터 파일에 대해 연산한다.
다시 말하면, 벡터 길이 필드(659B)는 최대 길이와 하나 이상의 다른 더 짧은 길이 중에서 선택하고, 여기서 각각의 그런 더 짧은 길이는 선행하는 길이의 1/2 길이이며; 벡터 길이 필드(659B)를 갖지 않은 명령어 템플릿들은 최대 벡터 길이에 대해 연산한다. 또한, 일 실시예에서, 특정 벡터 친화적 명령어 포맷(700)의 클래스 B 명령어 템플릿들은 패킹된 또는 스칼라 단일/배정도 부동 소수점 데이터 및 패킹된 또는 스칼라 정수 데이터에 대해 연산한다. 스칼라 연산들은 zmm/ymm/xmm 레지스터 내의 최하위 데이터 성분 위치에 대해 수행되는 연산들이고; 상위 데이터 성분 위치들은 실시예에 의존하여 명령어 이전에 이들이 있었던 것과 동일하게 남겨지거나 또는 제로로 된다. 기입 마스크 레지스터들(815) - 예시된 실시예에서, 각각 64 비트 크기인 8개의 기입 마스크 레지스터(k0 내지 k7)가 존재한다. 대안적인 실시예에서, 기입 마스크 레지스터들(815)은 16 비트 크기이다. 이전에 설명된 바와 같이, 본 개시내용의 일 실시예에서, 벡터 마스크 레지스터 k0은 기입 마스크로서 이용될 수 없고; 통상적으로 k0을 나타내는 인코딩이 기입 마스크에 대해 이용될 때, 이것은 0xFFFF의 하드와이어드 기입 마스크(hardwired write mask)를 선택하여, 해당 명령어에 대한 기입 마스킹을 효과적으로 디스에이블한다.
범용 레지스터들(825) - 예시된 실시예에서, 메모리 피연산자들을 어드레싱하기 위해 기존의 x86 어드레싱 모드들과 함께 사용되는 16개의 64 비트 범용 레지스터가 존재한다. 이들 레지스터는 RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, 및 R8 내지 R15라는 이름들로 참조된다.
MMX 패킹된 정수 플랫 레지스터 파일(850)이 그 상에서 에일리어싱(aliasing)되는 스칼라 부동 소수점 스택 레지스터 파일(x87 스택)(845) - 예시된 실시예에서, x87 스택은 x87 명령어 세트 확장을 사용하여 32/64/80 비트 부동 소수점 데이터에 대해 스칼라 부동 소수점 연산들을 실행하는데 사용되는 8 성분 스택인 한편; MMX 레지스터들은 64 비트 패킹된 정수 데이터에 대한 연산들을 실행할 뿐만 아니라 MMX 레지스터와 XMM 레지스터 사이에 실행되는 몇몇 연산들에 대해 피연산자들을 보유하는 데에 사용된다.
본 개시내용의 대안적인 실시예들은 더 넓거나 더 좁은 레지스터들을 이용할 수 있다. 부가적으로, 본 개시내용의 대안적인 실시예들은 더 많거나, 더 적거나 또는 상이한 레지스터 파일들 및 레지스터들을 이용할 수 있다.
예시적인 코어 아키텍처, 프로세서, 및 컴퓨터 아키텍처
프로세서 코어들은 상이한 방식들로, 상이한 목적들을 위해, 그리고 상이한 프로세서들에서 구현될 수 있다. 예를 들어, 이러한 코어들의 구현들은 1) 범용 컴퓨팅을 위해 의도된 범용 순차적 코어; 2) 범용 컴퓨팅을 위해 의도된 고성능 범용 비순차적 코어; 3) 주로 그래픽 및/또는 과학(처리량) 컴퓨팅을 위해 의도된 특수 목적 코어를 포함할 수 있다. 상이한 프로세서들의 구현들은 다음을 포함할 수 있다: 1) 범용 컴퓨팅을 위해 의도된 하나 이상의 범용 순차적 코어 및/또는 범용 컴퓨팅을 위해 의도된 하나 이상의 범용 비순차적 코어를 포함하는 CPU; 및 2) 주로 그래픽 및/또는 과학(처리량)을 위해 의도된 하나 이상의 특수 목적 코어를 포함하는 코프로세서. 그러한 상이한 프로세서들은 상이한 컴퓨터 시스템 아키텍처들로 인도하는데, 이것은: 1) CPU와는 별개의 칩상의 코프로세서; 2) CPU와 동일한 패키지에서 별개의 다이상의 코프로세서; 3) CPU와 동일한 다이상의 코프로세서(이 경우에, 그러한 프로세서는 때때로 통합된 그래픽 및/또는 과학(처리량) 로직, 또는 특수 목적 코어들과 같은 특수 목적 로직이라고 지칭된다); 4) 동일한 다이상에 설명된 CPU(때때로 애플리케이션 코어(들) 또는 애플리케이션 프로세서(들)로 지칭됨), 앞서 설명된 코프로세서, 및 추가 기능성을 포함할 수 있는 SoC(system on a chip)을 포함할 수 있다. 예시적인 코어 아키텍처들이 다음에 설명되고, 이어서 예시적인 프로세서들 및 컴퓨터 아키텍처들이 설명된다.
예시적인 코어 아키텍처들
순차적 및 비순차적 코어 블록도
도 9a는 본 개시내용의 실시예들에 따른 예시적인 순차적 파이프라인 및 예시적인 레지스터 리네이밍, 비순차적 발행/실행 파이프라인의 둘 모두를 예시하는 블록도이다. 도 9b는 본 개시내용의 실시예들에 따른 프로세서에 포함되는 순차적 아키텍처 코어와 예시적인 레지스터 리네이밍, 비순차적 발행/실행 아키텍처 코어의 예시적인 실시예 양쪽 모두를 예시하는 블록도이다. 도 9a 및 도 9b의 실선 박스들은 순차적 파이프라인 및 순차적 코어를 예시하는 한편, 점선 박스들의 선택적 추가는 레지스터 리네이밍, 비순차적 발행/실행 파이프라인 및 코어를 예시한다. 순차적 양태가 비순차적 양태의 서브세트라는 점을 고려하여, 비순차적 양태가 설명될 것이다.
도 9a에서, 프로세서 파이프라인(900)은 페치 스테이지(902), 길이 디코드 스테이지(904), 디코드 스테이지(906), 할당 스테이지(908), 리네이밍 스테이지(910), 스케줄링(디스패치 또는 발행으로도 알려짐) 스테이지(912), 레지스터 판독/메모리 판독 스테이지(914), 실행 스테이지(916), 라이트백/메모리 기입 스테이지(918), 예외 핸들링 스테이지(922), 및 커밋 스테이지(924)를 포함한다.
도 9b는 실행 엔진 유닛(950)에 결합된 프론트 엔드 유닛(930)을 포함하는 프로세서 코어(990)를 도시하고, 이들 양자는 메모리 유닛(970)에 결합된다. 코어(990)는 RISC(reduced instruction set computing) 코어, CISC(complex instruction set computing) 코어, VLIW(very long instruction word) 코어, 또는 하이브리드 또는 대안의 코어 타입일 수 있다. 또 다른 옵션으로서, 코어(990)는 예를 들어, 네트워크 또는 통신 코어, 압축 엔진, 코프로세서 코어, 범용 컴퓨팅 그래픽 프로세싱 유닛(general purpose computing graphics processing unit: GPGPU) 코어, 그래픽 코어, 또는 그와 유사한 것과 같은 특수 목적 코어일 수 있다.
프론트 엔드 유닛(930)은 명령어 캐시 유닛(934)에 결합된 분기 예측 유닛(932)을 포함하고, 이 명령어 캐시 유닛은 명령어 TLB(translation lookaside buffer)(936)에 결합되고, 이 명령어 TLB는 명령어 페치 유닛(938)에 결합되고, 이 명령어 페치 유닛은 디코딩 유닛(940)에 결합된다. 디코딩 유닛(940)(또는 디코더)은 명령어들을 디코딩할 수 있으며, 최초 명령어들로부터 디코딩되거나, 또는 그렇지 않으면 이들을 반영하거나, 또는 이들로부터 유도되는, 하나 이상의 마이크로 연산들, 마이크로코드 엔트리 포인트들, 마이크로 명령어들, 다른 명령어들, 또는 다른 제어 신호들을 출력으로서 발생할 수 있다. 디코딩 유닛(940)은 다양한 상이한 메커니즘들을 이용하여 구현될 수 있다. 적합한 메커니즘들의 예들은 룩업 테이블들, 하드웨어 구현들, 프로그래머블 로직 어레이들(PLA들), 마이크로코드 판독 전용 메모리들(ROM들) 등을 포함하지만, 이들로만 제한되지는 않는다. 일 실시예에서, 코어(990)는 (예를 들어, 디코딩 유닛(940)에서 또는 다른 경우에는 프론트 엔드 유닛(930) 내에) 특정 매크로 명령어들에 대한 마이크로코드를 저장하는 마이크로코드 ROM 또는 다른 매체를 포함한다. 디코딩 유닛(940)은 실행 엔진 유닛(950)에서의 리네임/할당기 유닛(952)에 결합된다.
실행 엔진 유닛(950)은 리타이어먼트 유닛(954) 및 하나 이상의 스케줄러 유닛(들)(956)의 세트에 결합되는 리네임/할당기 유닛(952)을 포함한다. 스케줄러 유닛(들)(956)은 예약 스테이션들, 중앙 명령어 윈도우 등을 포함하는 임의의 수의 상이한 스케줄러들을 나타낸다. 스케줄러 유닛(들)(956)은 물리적 레지스터 파일(들) 유닛(들)(958)에 결합된다. 물리적 레지스터 파일(들) 유닛들(958) 각각은 하나 이상의 물리적 레지스터 파일들을 나타내고, 이들 중 상이한 것들은 스칼라 정수, 스칼라 부동 소수점, 패킹된 정수, 패킹된 부동 소수점, 벡터 정수, 벡터 부동 소수점, 상태(예를 들어, 실행될 다음 명령어의 어드레스인 명령어 포인터) 등과 같은 하나 이상의 상이한 데이터 타입을 저장한다. 일 실시예에서, 물리적 레지스터 파일(들) 유닛(958)은 벡터 레지스터 유닛, 기입 마스크 레지스터 유닛, 및 스칼라 레지스터 유닛을 포함한다. 이 레지스터 유닛들은 아키텍처 벡터 레지스터들, 벡터 마스크 레지스터들, 및 범용 레지스터들을 제공할 수 있다. 물리적 레지스터 파일(들) 유닛(들)(958)은 레지스터 리네이밍 및 비순차적 실행이 (예를 들어, 리오더 버퍼(들) 및 리타이어먼트 레지스터 파일(들)을 이용하여; 장래 파일(들), 이력 버퍼(들), 및 리타이어먼트 레지스터 파일(들)을 이용하여; 레지스터 맵들 및 레지스터들의 풀을 이용하는 등으로) 구현될 수 있는 다양한 방식을 예시하기 위해 리타이어먼트 유닛(954)에 의해 오버랩된다. 리타이어먼트 유닛(954) 및 물리적 레지스터 파일(들) 유닛(들)(958)은 실행 클러스터(들)(960)에 결합된다. 실행 클러스터(들)(960)는 하나 이상의 실행 유닛들(962)의 세트 및 하나 이상의 메모리 액세스 유닛들(964)의 세트를 포함한다. 실행 유닛들(962)은 다양한 타입의 데이터(예를 들어, 스칼라 부동 소수점, 패킹된 정수, 패킹된 부동 소수점, 벡터 정수, 벡터 부동 소수점)에 대해 다양한 연산들(예를 들어, 시프트, 덧셈, 뺄셈, 곱셈)을 수행할 수 있다. 일부 실시예들이 특정 기능들이나 기능들의 세트들에 전용되는 다수의 실행 유닛을 포함할 수 있지만, 다른 실시예들은 하나의 실행 유닛만을, 또는 모두가 모든 기능들을 수행하는 다중 실행 유닛을 포함할 수 있다. 스케줄러 유닛(들)(956), 물리적 레지스터 파일(들) 유닛(들)(958), 및 실행 클러스터(들)(960)는 가능하게는 복수인 것으로 도시되는데, 그 이유는 특정 실시예들은 특정 타입들의 데이터/연산들에 대해 개별 파이프라인들(예를 들어, 스칼라 정수 파이프라인, 스칼라 부동 소수점/패킹된 정수/패킹된 부동 소수점/벡터 정수/벡터 부동 소수점 파이프라인, 및/또는 각각이 자신의 스케줄러 유닛, 물리적 레지스터 파일(들) 유닛, 및/또는 실행 클러스터를 갖는 메모리 액세스 파이프라인 - 개별 메모리 액세스 파이프라인의 경우에, 이러한 파이프라인의 실행 클러스터만이 메모리 액세스 유닛(들)(964)을 갖는 특정 실시예들이 구현됨)을 생성할 수 있기 때문이다. 별개의 파이프라인들이 사용되는 경우, 이 파이프라인들 중 하나 이상은 비순차적 발행/실행일 수 있고 나머지는 순차적일 수 있다는 점도 이해해야 한다.
메모리 액세스 유닛들(964)의 세트는 메모리 유닛(970)에 결합되고, 이 메모리 유닛은 레벨 2(L2) 캐시 유닛(976)에 결합되는 데이터 캐시 유닛(974)에 결합되는 데이터 TLB 유닛(972)을 포함한다. 하나의 예시적인 실시예에서, 메모리 액세스 유닛들(964)은 로드 유닛(load unit), 어드레스 저장 유닛(store address unit) 및 데이터 저장 유닛(store data unit)을 포함할 수 있으며, 이들 각각은 메모리 유닛(970)에서의 데이터 TLB 유닛(972)에 결합된다. 명령어 캐시 유닛(934)은 메모리 유닛(970)에서의 레벨 2(L2) 캐시 유닛(976)에 또한 결합된다. L2 캐시 유닛(976)은 하나 이상의 다른 레벨의 캐시에 및 최종적으로 메인 메모리에 결합된다.
예를 들어, 예시적인 레지스터 리네이밍, 비순차적 발행/실행 코어 아키텍처는 다음과 같이 파이프라인(900)을 구현할 수 있다: 1) 명령어 페치(938)가 페치 및 길이 디코딩 스테이지들(902 및 904)를 수행한다; 2) 디코딩 유닛(940)이 디코딩 스테이지(906)을 수행한다; 3) 리네임/할당기 유닛(952)이 할당 스테이지(908) 및 리네이밍 스테이지(910)를 수행한다; 4) 스케줄러 유닛(들)(956)이 스케줄링 스테이지(912)를 수행한다; 5) 물리적 레지스터 파일(들) 유닛(들)(958) 및 메모리 유닛(970)이 레지스터 판독/메모리 판독 스테이지(914)를 수행한다; 실행 클러스터(960)가 실행 스테이지(916)를 수행한다; 6) 메모리 유닛(970) 및 물리적 레지스터 파일(들) 유닛(들)(958)이 라이트백/메모리 기입 스테이지(918)을 수행한다; 7) 다양한 유닛들이 예외 핸들링 스테이지(922)에 수반될 수 있다; 및 8) 리타이어먼트 유닛(954) 및 물리적 레지스터 파일(들) 유닛(들)(958)이 커밋 스테이지(924)를 수행한다.
코어(990)는 본 명세서에 설명된 명령어(들)을 포함하여, 하나 이상의 명령어 세트(예를 들어, 새로운 버전이 추가된 일부 확장을 갖는 x86 명령어 세트); 캘리포니아, 서니베일의 MIPS Technologies사의 MIPS 명령어 세트; 캘리포니아, 서니베일의 ARM Holdings의 (NEON과 같은 선택적 추가적 확장을 갖는) ARM 명령어 세트를 지원할 수 있다. 일 실시예에서, 코어(990)는 패킹된 데이터 명령어 세트 확장(예를 들어, AVX1, AVX2)을 지원하는 로직을 포함하며, 그에 의해 많은 멀티미디어 애플리케이션들에 의해 사용되는 연산들이 패킹된 데이터를 사용하여 수행되는 것을 허용한다.
코어가 (연산들 또는 스레드들의 2개 이상의 병렬 세트를 실행하는) 멀티스레딩을 지원할 수 있고, 또한 시간 슬라이싱된 멀티스레딩, 동시 멀티스레딩(이 경우 단일 물리적 코어가 물리적 코어가 동시에 멀티스레딩하는 각각의 스레드들에게 논리적 코어를 제공함), 또는 이들의 조합(예를 들어, Intel® Hyperthreading technology에서와 같은 시간 슬라이싱된 페칭 및 디코딩 및 그 후의 동시 멀티스레딩)을 포함하는 다양한 방식으로 그렇게 할 수 있음을 이해해야 한다.
레지스터 리네이밍이 비순차적 실행의 맥락에서 설명되었지만, 레지스터 리네이밍은 순차적 아키텍처에서 사용될 수 있다는 점을 이해해야 한다. 프로세서의 예시된 실시예가 또한 개별적인 명령어 및 데이터 캐시 유닛들(934/974) 및 공유 L2 캐시 유닛(976)을 포함하고 있지만, 대안적 실시예들은, 예를 들어 레벨 1(L1) 내부 캐시, 또는 다중 레벨의 내부 캐시와 같은, 명령어들 및 데이터 둘 다에 대한 단일의 내부 캐시를 가질 수 있다. 일부 실시예들에서, 시스템은 내부 캐시와, 코어 및/또는 프로세서에 대해 외부에 있는 외부 캐시의 조합을 포함할 수 있다. 대안적으로, 모든 캐시는 코어 및/또는 프로세서에 대해 외부에 있을 수 있다.
구체적인 예시적 순차적 코어 아키텍처
도 10a 및 도 10b는 더 특정적이고 예시적인 순차적 코어 아키텍처의 블록도를 예시하는데, 이 코어는 칩 내의 (동일 타입 및/또는 상이한 타입들의 다른 코어들을 포함하는) 여러 개의 로직 블록들 중 하나일 것이다. 로직 블록들은 애플리케이션에 의존하여, 일부 고정된 기능 로직, 메모리 I/O 인터페이스들, 및 다른 필요한 I/O 로직을 갖는 고 대역폭 인터커넥트 네트워크(예를 들어, 링 네트워크)를 통해 통신한다.
도 10a는 본 개시내용의 실시예들에 따라, 단일 프로세서 코어를, 온-다이 인터커넥트 네트워크(1002)로의 그의 접속 및 레벨 2(L2) 캐시의 그의 로컬 서브세트(1004)과 함께 나타낸 블록도이다. 일 실시예에서, 명령어 디코더(1000)는 패킹된 데이터 명령어 세트 확장을 갖는 x86 명령어 세트를 지원한다. L1 캐시(1006)는 캐시 메모리의 스칼라 및 벡터 유닛들로의 저 대기시간 액세스들을 허용한다. (설계를 단순화하기 위해) 일 실시예에서 스칼라 유닛(1008) 및 벡터 유닛(1010)이 별개의 레지스터 세트들(제각기, 스칼라 레지스터들(1012) 및 벡터 레지스터들(1014))을 이용하고, 이들 사이에서 전달되는 데이터는 메모리에 기입된 다음, 레벨 1(L1) 캐시(1006)로부터 되돌려 판독되지만, 본 개시내용의 대안적인 실시예들은 상이한 접근법을 이용할 수 있다(예를 들어, 단일의 레지스터 세트를 이용하거나, 또는 기입 및 되돌려 판독되지 않고 2개의 레지스터 파일 사이에서 데이터가 전달되는 것을 허용하는 통신 경로를 포함함).
L2 캐시의 로컬 서브세트(1004)는, 프로세서 코어 당 하나씩 별개의 로컬 서브세트들로 분할되는 글로벌 L2 캐시의 일부이다. 각각의 프로세서 코어는 L2 캐시의 그 자신의 로컬 서브세트(1004)에 대한 직접 액세스 경로를 갖는다. 프로세서 코어에 의해 판독되는 데이터는 그 L2 캐시 서브세트(1004)에 저장되며, 다른 프로세서 코어들이 그들 자신의 로컬 L2 캐시 서브세트들에 액세스하는 것과 병렬로 빠르게 액세스될 수 있다. 프로세서 코어에 의해 기입된 데이터는 그 자신의 L2 캐시 서브세트(1004)에 저장되고, 필요한 경우 다른 서브세트들로부터 플러싱된다. 링 네트워크는 공유 데이터에 대한 일관성을 보장한다. 링 네트워크는 양방향성이어서, 프로세서 코어들, L2 캐시들 및 다른 로직 블록들과 같은 에이전트들이 칩 내에서 서로 통신하는 것을 허용한다. 각각의 링 데이터 경로는 방향당 1012 비트 폭이다.
도 10b는 본 개시내용의 실시예들에 따른 도 10a의 프로세서 코어의 일부의 확대도이다. 도 10b는 L1 캐시(1004)의 L1 데이터 캐시(1006A) 부분은 물론, 벡터 유닛(1010) 및 벡터 레지스터들(1014)에 관한 더 상세한 사항을 포함한다. 구체적으로, 벡터 유닛(1010)은 정수, 단정도 부동 소수점, 및 배정도 부동 소수점 명령어들 중 하나 이상을 실행하는 16-폭(16-wide) 벡터 처리 유닛(VPU)(16-폭 ALU(1028)를 참조)이다. VPU는 스위즐링 유닛(swizzle unit)(1020)을 이용하는 레지스터 입력들의 스위즐링, 수치 변환 유닛들(1022A-B)을 이용하는 수치 변환, 및 메모리 입력에 대한 복제 유닛(1024)을 이용하는 복제를 지원한다. 기입 마스크 레지스터들(1026)은 결과적인 벡터 기입들(resulting vector writes)을 서술(predicating)하는 것을 허용한다.
도 11은 본 개시내용의 실시예들에 따라, 둘 이상의 코어를 가질 수 있고, 통합 메모리 제어기를 가질 수 있고, 통합 그래픽을 가질 수 있는 프로세서(1100)의 블록도이다. 도 11의 실선 박스들은 단일 코어(1102A), 시스템 에이전트(1110), 하나 이상의 버스 제어기 유닛(1116)의 세트를 갖는 프로세서(1100)를 도시하는 한편, 점선 박스의 선택적 부가는 다중 코어(1102A-N), 시스템 에이전트 유닛(1110)에서의 하나 이상의 통합 메모리 제어기 유닛(Integrated memory controller unit)(들)(1114)의 세트, 및 특수 목적 로직(1108)을 갖는 대안의 프로세서(1100)를 예시한다.
따라서, 프로세서(1100)의 상이한 구현은 다음을 포함할 수 있다: 1) 통합된 그래픽 및/또는 과학(처리량) 로직(이것은 하나 이상의 코어를 포함할 수 있음)인 특수 목적 로직(1108)을 구비한 CPU, 및 하나 이상의 범용 코어들(예를 들어, 범용 순차적 코어들, 범용 비순차적 코어들, 이 둘의 조합)인 코어들(1102A-N); 2) 그래픽 및/또는 과학(스루풋)을 위해 주로 의도된 수많은 수의 특수 목적 코어들인 코어들(1102A-N)을 구비한 코프로세서; 및 3) 수많은 범용 순차적 코어들인 코어들(1102A-N)을 구비한 코프로세서. 따라서, 프로세서(1100)는 범용 프로세서와, 예를 들어 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU(general purpose graphics processing unit), 고 처리량 MIC(many integrated core) 코프로세서(30개 이상의 코어를 포함함), 임베디드 프로세서와 같은 코프로세서 또는 특수 목적 프로세서, 또는 그와 유사한 것일 수 있다. 프로세서는 하나 이상의 칩상에 구현될 수 있다. 프로세서(1100)는, 예를 들어 BiCMOS, CMOS 또는 NMOS와 같은 다수의 공정 기술 중 임의의 것을 사용하여 하나 이상의 기판상에 구현될 수 있고/있거나 그 일부일 수 있다.
메모리 계층구조는, 코어들 내의 하나 이상의 레벨의 캐시, 하나 이상의 공유 캐시 유닛(1106)의 세트, 및 통합 메모리 제어기 유닛(1114)의 세트에 결합된 외부 메모리(도시되지 않음)를 포함한다. 공유 캐시 유닛들(1106)의 세트는 레벨 2(L2), 레벨 3(L3), 레벨 4(L4) 또는 다른 레벨 캐시와 같은 하나 이상의 중간 레벨 캐시, 최종 레벨 캐시(last level cache, LLC), 및/또는 이들의 조합을 포함할 수 있다. 일 실시예에서는 링 기반 인터커넥트 유닛(1112)이 통합 그래픽 로직(1108), 공유 캐시 유닛들(1106)의 세트, 및 시스템 에이전트 유닛(1110)/통합 메모리 제어기 유닛(들)(1114)을 상호접속하지만, 대안 실시예들은 이러한 유닛들을 상호접속하는 임의 수의 공지된 기술들을 이용할 수 있다. 일 실시예에서, 하나 이상의 캐시 유닛들(1106)과 코어들(1102-A-N) 사이에 일관성(coherency)이 유지된다.
일부 실시예들에서, 코어들(1102A-N) 중 하나 이상은 멀티스레딩이 가능하다. 시스템 에이전트(1110)는 코어들(1102A-N)을 조정 및 동작시키는 그런 컴포넌트들을 포함한다. 시스템 에이전트 유닛(1110)은, 예를 들어 전력 제어 유닛(PCU)(power control unit) 및 디스플레이 유닛을 포함할 수 있다. PCU는, 코어들(1102A-N) 및 통합 그래픽 로직(1108)의 전력 상태를 조절하기 위해 필요한 로직 및 컴포넌트들일 수 있거나 이들을 포함할 수 있다. 디스플레이 유닛은 하나 이상의 외부 접속된 디스플레이들을 구동하기 위한 것이다.
코어들(1102A-N)은 아키텍처 명령어 세트의 관점에서 동종 또는 이종일 수 있는데; 즉, 코어들(1102A-N) 중 둘 이상은 동일 명령어 세트를 실행할 수 있는 반면, 다른 코어들은 해당 명령어 세트의 서브세트만을 또는 상이한 명령어 세트만을 실행할 수 있다.
예시적인 컴퓨터 아키텍처들
도 12 내지 도 15는 예시적인 컴퓨터 아키텍처들의 블록도들이다. 랩톱들, 데스크톱들, 핸드헬드 PC들, 퍼스널 디지털 어시스턴트들, 엔지니어링 워크스테이션들, 서버들, 네트워크 디바이스들, 네트워크 허브들, 스위치들, 임베디드 프로세서들, DSP들(digital signal processors), 그래픽 디바이스들, 비디오 게임 디바이스들, 셋톱박스들, 마이크로 제어기들, 휴대 전화들, 휴대용 미디어 플레이어들, 핸드헬드 디바이스들, 및 다양한 다른 전자 디바이스들에 대해 본 기술분야에 알려진 다른 시스템 설계들 및 구성들도 적합하다. 일반적으로, 본 명세서에 개시되는 바와 같은 프로세서 및/또는 다른 실행 로직을 통합할 수 있는 매우 다양한 시스템들 또는 전자 디바이스들이 일반적으로 적합하다.
이제 도 12를 참조하면, 본 개시내용의 일 실시예에 따른 시스템(1200)의 블록도가 도시되어 있다. 시스템(1200)은 제어기 허브(1220)에 결합되는 하나 이상의 프로세서(1210, 1215)를 포함할 수 있다. 일 실시예에서, 제어기 허브(1220)는 그래픽 메모리 제어기 허브(GMCH)(1290) 및 입력/출력 허브(IOH)(1250)(이는 별개의 칩들상에 있을 수 있음)를 포함하고; GMCH(1290)는 메모리(1240) 및 코프로세서(1245)가 그에 결합되는 메모리 및 그래픽 제어기들을 포함하고; IOH(1250)는 GMCH(1290)에 입력/출력(I/O) 디바이스들(1260)을 결합한다. 대안적으로, 메모리 및 그래픽 제어기들 중 하나 또는 양자 모두는 (본 명세서에 설명된 바와 같이) 프로세서 내에 통합되고, 메모리(1240) 및 코프로세서(1245)는 프로세서(1210), 및 IOH(1250)와 단일 칩 내에 있는 제어기 허브(1220)에 직접 결합된다.
부가적인 프로세서들(1215)의 선택적 속성은 도 12에서 파선들로 표시되어 있다. 각각의 프로세서(1210, 1215)는 본 명세서에 설명된 처리 코어들 중 하나 이상을 포함할 수 있고, 프로세서(1100)의 일부 버전일 수 있다.
메모리(1240)는 예를 들어, DRAM(dynamic random access memory), PCM(phase change memory), 또는 이 둘의 조합일 수 있다. 적어도 하나의 실시예에서, 제어기 허브(1220)는 프론트사이드 버스(FSB)와 같은 멀티 드롭 버스, QPI(QuickPath Interconnect)와 같은 포인트-투-포인트 인터페이스, 또는 유사한 접속(1295)을 통해 프로세서(들)(1210, 1215)와 통신한다.
일 실시예에서, 코프로세서(1245)는, 예를 들어 고 처리량 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 임베디드 프로세서 등과 같은 특수 목적 프로세서이다. 일 실시예에서, 제어기 허브(1220)는 통합 그래픽 가속기를 포함할 수 있다.
아키텍처, 마이크로아키텍처, 열, 전력 소비 특성, 및 그와 유사한 것을 포함하여 이점에 대한 여러 기준들의 관점에서 물리적인 리소스들(1210, 1215) 간에 다양한 차이가 있을 수 있다.
일 실시예에서, 프로세서(1210)는 일반 타입의 데이터 처리 동작들을 제어하는 명령어들을 실행한다. 명령어들 내에는 코프로세서 명령어들이 임베디드될 수 있다. 프로세서(1210)는 이러한 코프로세서 명령어들을 부속된 코프로세서(1245)에 의해 실행되어야 하는 타입의 것으로 인식한다. 그에 따라서, 프로세서(1210)는 이러한 코프로세서 명령어들(또는 코프로세서 명령어들을 나타내는 제어 신호들)을 코프로세서 버스 또는 다른 인터커넥트상에서 코프로세서(1245)에 발행한다. 코프로세서(들)(1245)는 수신된 코프로세서 명령어들을 접수하고 실행한다.
이제 도 13을 참조하면, 본 개시내용의 실시예에 따른 제1의 더 구체적인 예시적인 시스템(1300)의 블록도가 도시되어 있다. 도 13에 도시된 바와 같이, 멀티 프로세서 시스템(1300)은 포인트-투-포인트 인터커넥트 시스템이고, 포인트-투-포인트 인터커넥트(1350)를 통해 결합된 제1 프로세서(1370) 및 제2 프로세서(1380)를 포함한다. 프로세서들(1370 및 1380) 각각은 프로세서(1100)의 일부 버전일 수 있다. 본 개시내용의 일 실시예에서, 프로세서들(1370 및 1380)은 제각기 프로세서들(1210 및 1215)인 한편, 코프로세서(1338)는 코프로세서(1245)이다. 또 다른 실시예에서, 프로세서(1370 및 1380)는 제각기 프로세서(1210), 코프로세서(1245)이다.
프로세서들(1370 및 1380)은 제각기 IMC(integrated memory controller) 유닛들(1372 및 1382)을 포함하는 것으로 도시되어 있다. 프로세서(1370)는 또한 그의 버스 제어기 유닛들의 일부로서 포인트-투-포인트(P-P) 인터페이스들(1376, 1378)을 포함하며; 유사하게 제2 프로세서(1380)는 P-P 인터페이스들(1386, 1388)을 포함한다. 프로세서들(1370, 1380)은 P-P 인터페이스 회로들(1378, 1388)을 이용하여 포인트-투-포인트(P-P) 인터페이스(1350)를 통해 정보를 교환할 수 있다. 도 13에 도시된 바와 같이, IMC들(1372 및 1382)은 프로세서들을, 제각기 프로세서에 국지적으로 부속된 메인 메모리의 일부일 수 있는, 제각기 메모리들, 즉, 메모리(1332) 및 메모리(1334)에 결합한다.
프로세서들(1370, 1380)은 각각 포인트-투-포인트 인터페이스 회로들(1376, 1394, 1386, 1398)을 이용하여 개별 P-P 인터페이스들(1352, 1354)을 통해 칩셋(1390)과 정보를 교환할 수 있다. 칩셋(1390)은 선택적으로 고성능 인터페이스(1339)를 통해 코프로세서(1338)와 정보를 교환할 수 있다. 일 실시예에서, 코프로세서(1338)는, 예를 들어 고 처리량 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 임베디드 프로세서 등과 같은 특수 목적 프로세서이다.
공유 캐시(도시되지 않음)는 어느 한 프로세서에 포함되거나, 양자 모두의 프로세서의 외부이지만 여전히 P-P 인터커넥트를 통해 프로세서들과 접속될 수 있어서, 프로세서가 저 전력 모드에 놓이는 경우 어느 한쪽 또는 양자 모두의 프로세서의 로컬 캐시 정보가 공유 캐시에 저장될 수 있도록 한다.
칩셋(1390)은 인터페이스(1396)를 통해 제1 버스(1316)에 결합될 수 있다. 일 실시예에서, 제1 버스(1316)는 PCI(Peripheral Component Interconnect) 버스이거나, 또는 PCI Express 버스 또는 또 다른 제3 세대 I/O 인터커넥트 버스와 같은 버스일 수 있지만, 본 개시내용의 범위는 이에 제한되지는 않는다.
도 13에 도시된 바와 같이, 제1 버스(1316)를 제2 버스(1320)에 결합하는 버스 브리지(1318)와 함께, 다양한 I/O 디바이스들(1314)이 제1 버스(1316)에 결합될 수 있다. 일 실시예에서, 코프로세서, 고 처리량 MIC 프로세서, GPGPU, (예를 들어, 그래픽 가속기 또는 DSP(digital signal processing) 유닛과 같은) 가속기, 필드 프로그래머블 게이트 어레이, 또는 임의의 다른 프로세서와 같은 하나 이상의 부가적인 프로세서(들)(1315)가 제1 버스(1316)에 결합된다. 일 실시예에서, 제2 버스(1320)는 LPC(low pin count) 버스일 수 있다. 일 실시예에서, 예를 들어 키보드 및/또는 마우스(1322), 통신 디바이스들(1327), 및 명령어들/코드 및 데이터(1330)를 포함할 수 있는 디스크 드라이브나 다른 대용량 저장 디바이스와 같은 스토리지 유닛(1328)을 포함하는 다양한 디바이스들이 제2 버스(1320)에 결합될 수 있다. 또한, 오디오 I/O(1324)가 제2 버스(1320)에 결합될 수 있다. 다른 아키텍처들도 가능하다는 점에 유의한다. 예를 들어, 도 13의 포인트-투-포인트 아키텍처 대신에, 시스템은 멀티드롭 버스 또는 다른 그러한 아키텍처를 구현할 수 있다.
이제 도 14를 참조하면, 본 개시내용의 실시예에 따른 제2의 더 구체적인 예시적인 시스템(1400)의 블록도가 도시되어 있다. 도 13 및 도 14에서의 유사한 요소들은 유사한 참조 번호들을 지니고, 도 13의 특정 양태들은 도 14의 다른 양태들을 모호하게 하는 것을 회피하기 위해 도 14로부터 생략되었다.
도 14는 프로세서들(1370, 1380)이 통합 메모리 및 I/O 제어 로직("CL")(1372 및 1382)을 제각기 포함할 수 있다는 것을 예시한다. 따라서, CL(1372, 1382)은 통합 메모리 제어기 유닛들을 포함하고, I/O 제어 로직을 포함한다. 도 14는 메모리들(1332, 1334)이 CL(1372, 1382)에 결합될 뿐만아니라 I/O 디바이스들(1414)도 제어 로직(1372, 1382)에 결합되는 것을 예시한다. 레거시 I/O 디바이스들(1415)이 칩셋(1390)에 결합된다.
이제 도 15를 참조하면, 본 개시내용의 실시예에 따른 SoC(1500)의 블록도가 도시된다. 도 11에서의 유사한 요소들은 유사한 참조 번호들을 지닌다. 또한, 파선 박스들은 더 진보된 SoC들에 대한 선택적인 특징들이다. 도 15에서, 인터커넥트 유닛(들)(1502)은 다음에 결합된다: 하나 이상의 코어들(202A-N)의 세트 및 공유 캐시 유닛(들)(1106)을 포함하는 애플리케이션 프로세서(1510); 시스템 에이전트 유닛(1110); 버스 제어기 유닛(들)(1116); 통합 메모리 제어기 유닛(들)(1114); 통합 그래픽 로직, 이미지 프로세서, 오디오 프로세서, 및 비디오 프로세서를 포함할 수 있는 하나 이상의 코프로세서(1520)의 세트; SRAM(static random access memory) 유닛(1530); DMA(direct memory access) 유닛(1532); 하나 이상의 외부 디스플레이에 결합하기 위한 디스플레이 유닛(1540). 일 실시예에서, 코프로세서(들)(1520)는 특수 목적 프로세서, 예를 들어 네트워크 또는 통신 프로세서, 압축 엔진, GPGPU, 고 처리량 MIC 프로세서, 임베디드 프로세서, 또는 그와 유사한 것을 포함한다.
본 명세서에 개시된 메커니즘들의 실시예들은 하드웨어, 소프트웨어, 펌웨어, 또는 이러한 구현 접근법들의 조합으로 구현될 수 있다. 본 개시내용의 실시예들은 적어도 하나의 프로세서, 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 요소들을 포함함), 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함하는 프로그래머블 시스템들상에서 실행되는 컴퓨터 프로그램들 또는 프로그램 코드로서 구현될 수 있다.
도 13에 예시된 코드(1330)와 같은 프로그램 코드는 본 명세서에 설명된 기능들을 수행하고 출력 정보를 생성하기 위해 입력 명령어들에 적용될 수 있다. 출력 정보는 공지된 방식으로 하나 이상의 출력 디바이스에 적용될 수 있다. 이 응용 목적을 위해, 처리 시스템은, 예를 들어; 디지털 신호 프로세서(DSP), 마이크로컨트롤러, ASIC(application specific integrated circuit), 또는 마이크로프로세서와 같은 프로세서를 갖는 임의의 시스템을 포함한다.
프로그램 코드는 처리 시스템과 통신하기 위해 고급 절차형 또는 객체 지향형 프로그래밍 언어로 구현될 수 있다. 프로그램 코드는 또한 원할 경우 어셈블리어 또는 기계어로 구현될 수 있다. 사실상, 본 명세서에 설명된 메커니즘들은 임의의 특정 프로그래밍 언어로 범위가 한정되지는 않는다. 임의의 경우에, 이 언어는 컴파일링된 또는 인터프리팅된 언어일 수 있다.
적어도 하나의 실시예의 하나 이상의 양태는 머신에 의해 판독될 때에 이 머신으로 하여금 본 명세서에 설명된 기술들을 수행하기 위한 로직을 제작하게 하는, 프로세서 내의 다양한 로직을 나타내는 머신 판독 가능 매체상에 저장된 대표적인 명령어들에 의해 구현될 수 있다. "IP 코어들"로 알려진 이러한 표현들은 유형의(tangible) 머신 판독 가능 매체에 저장될 수 있고 다양한 고객 또는 제조 설비에 공급되어 실제로 로직 또는 프로세서를 만드는 제조 기계들에 로드된다.
이러한 머신 판독가능 저장 매체는 하드 디스크와, 플로피 디스크, 광 디스크, CD-ROM(compact disk read-only memory), CD-RW(compact disk rewritable) 및 광자기 디스크를 포함하는 임의의 다른 타입의 디스크와, DRAM(dynamic random access memory), SRAM(static random access memory), EPROM(erasable programmable read-only memory), 플래시 메모리, EEPROM(electrically erasable programmable read-only memory)과 같은 RAM(random access memory)과, ROM(read-only memory), PCM(phase change memory)을 포함하는 반도체 디바이스, 자기 또는 광 카드, 또는 전자 명령어들을 저장하는 데 적합한 임의의 다른 타입의 매체와 같은 스토리지 매체를 포함하는, 머신 또는 디바이스에 의해 제조 또는 형성되는 물품들의 비일시적, 유형의(tangible) 구성들을 포함할 수 있지만, 이들로 제한되지는 않는다.
그에 따라서, 본 개시내용의 실시예들은, 명령어들을 포함하거나 또는 본 명세서에 설명된 구조들, 회로들, 장치들, 프로세서들 및/또는 시스템 특징들을 정의하는 HDL(Hardware Description Language)과 같은 설계 데이터를 포함하는 비일시적인 유형의 머신 판독가능 매체를 또한 포함한다. 이러한 실시예들은 프로그램 제품들로서 또한 지칭될 수 있다.
에뮬레이션(바이너리 변환, 코드 모핑 등을 포함함)
일부 경우에, 명령어 변환기가 소스 명령어 세트로부터 타겟 명령어 세트로 명령어를 변환하는 데 사용될 수 있다. 예를 들어, 명령어 변환기는 명령어를 코어에 의해 처리될 하나 이상의 다른 명령어로(예를 들어, 정적 바이너리 변환, 동적 편집(dynamic compilation)을 포함하는 동적 바이너리 변환을 이용하여) 번역하거나, 모핑하거나, 에뮬레이트하거나, 또는 달리 변환할 수 있다. 명령어 변환기는 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 조합으로 구현될 수 있다. 명령어 변환기는 온 프로세서(on processor), 오프 프로세서(off processor), 또는 부분 온 및 부분 오프 프로세서(part on and part off processor)일 수 있다.
도 16은 본 개시내용의 실시예들에 따라 소스 명령어 세트에서의 바이너리 명령어들을 타겟 명령어 세트에서의 바이너리 명령어들로 변환하는 소프트웨어 명령어 변환기의 사용을 대조하는 블록도이다. 예시된 실시예에서, 명령어 변환기는 소프트웨어 명령어 변환기이지만, 대안적으로 명령어 변환기는 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 다양한 조합으로 구현될 수 있다. 도 16은 적어도 하나의 x86 명령어 세트 코어를 갖는 프로세서(1616)에 의해 네이티브로(natively) 실행될 수 있는 x86 이진 코드(1606)를 생성하기 위해 고급 언어(1602)로 된 프로그램이 x86 컴파일러(1604)를 이용하여 컴파일링될 수 있다는 것을 도시한다. 적어도 하나의 x86 명령어 세트 코어를 갖는 프로세서(1616)는, 적어도 하나의 x86 명령어 세트 코어를 갖는 인텔 프로세서와 실질적으로 동일한 결과를 달성하기 위해서, (1) 인텔 x86 명령어 세트 코어의 명령어 세트의 상당부 또는 (2) 적어도 하나의 x86 명령어 세트 코어를 갖는 인텔 프로세서상에서 실행되도록 되어 있는 오브젝트 코드 버전의 애플리케이션들 또는 다른 소프트웨어를 양립 가능하게 실행하거나 또는 다른 방식으로 처리함으로써, 적어도 하나의 x86 명령어 세트 코어를 갖는 인텔 프로세서와 실질적으로 동일한 기능을 수행할 수 있는 임의의 프로세서를 나타낸다. x86 컴파일러(1604)는, 추가 연계 처리(linkage processing)를 수반하거나 수반하지 않고서 적어도 하나의 x86 명령어 세트 코어를 갖는 프로세서(1616)상에서 실행될 수 있는 x86 이진 코드(1606)(예를 들어, 오브젝트 코드)를 발생하도록 동작할 수 있는 컴파일러를 나타낸다. 이와 유사하게, 도 16은 적어도 하나의 x86 명령어 세트 코어가 없는 프로세서(1614)(예컨대, 미국 캘리포니아주 서니베일 소재의 MIPS Technologies의 MIPS 명령어 세트를 실행하는 및/또는 미국 캘리포니아주 서니베일 소재의 ARM Holdings의 ARM 명령어 세트를 실행하는 코어들을 갖는 프로세서)에 의해 네이티브로 실행될 수 있는 대안의 명령어 세트 이진 코드(1610)를 생성하기 위해 고급 언어(1602)로 된 프로그램이 대안의 명령어 세트 컴파일러(1608)를 사용하여 컴파일링될 수 있다는 것을 도시한다. 명령어 변환기(1612)는 x86 이진 코드(1606)를 x86 명령어 세트 코어를 구비하지 않은 프로세서(1614)에 의해 네이티브로 실행될 수 있는 코드로 변환하는 데 사용된다. 이 변환된 코드는 대안적 명령어 세트 이진 코드(1610)와 동일할 가능성이 별로 없지만 - 그 이유는 이것을 할 수 있는 명령어 변환기를 만들기가 어렵기 때문임 -; 변환된 코드는 일반 연산을 달성할 것이고 대안적 명령어 세트로부터의 명령어들로 구성될 것이다. 따라서, 명령어 변환기(1612)는, 에뮬레이션, 시뮬레이션 또는 임의의 다른 프로세스를 통해, x86 명령어 세트 프로세서 또는 코어를 갖지 않는 프로세서 또는 기타 전자 디바이스가 x86 이진 코드(1606)를 실행할 수 있게 해 주는 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다.
본 명세서의 임의의 실시예에서 사용되는 바와 같이, 용어 "로직"은 전술한 동작들 중 임의의 것을 수행하도록 구성되는 앱, 소프트웨어, 펌웨어 및/또는 회로를 지칭할 수 있다. 소프트웨어는 비일시적 컴퓨터 판독가능 저장 매체상에 기록되는 소프트웨어 패키지, 코드, 명령어들, 명령어 세트들, 및/또는 데이터로서 구현될 수 있다. 펌웨어는 메모리 디바이스들에서 하드 코딩된(예를 들어, 비휘발성) 코드, 명령어들 또는 명령어 세트들 및/또는 데이터로서 구현될 수 있다.
"회로"는, 본 명세서의 임의의 실시예에서 사용되는 바로는, 예를 들어, 단독으로 또는 임의의 조합으로, 하드와이어드 회로, 프로그래머블 회로, 상태 머신 회로, 로직 및/또는 프로그래머블 회로에 의해 실행되는 명령어들을 저장하는 펌웨어를 포함할 수 있다. 회로는 집적 회로 칩과 같은 집적 회로로서 구현될 수 있다. 일부 실시예들에서, 회로는 본 명세서에 설명된 기능에 대응하는 코드 및/또는 명령어 세트들(예를 들어, 소프트웨어, 펌웨어 등)을 실행하는 프로세서(110)에 의해 적어도 부분적으로 형성될 수 있고, 따라서 본 명세서에 설명된 동작들 중 하나 이상을 수행하도록 범용 프로세서를 특정 목적 프로세싱 환경으로 변환한다. 일부 실시예들에서, 메모리 제어기 회로 또는 다른 시스템들의 다양한 컴포넌트들 및 회로는 SoC(system-on-a-chip) 아키텍처에서 조합될 수 있다.
본 명세서에 설명된 동작들의 실시예들은 하나 이상의 프로세서에 의해 실행될 때 방법들을 수행하는 명령어들이 저장되어 있는 컴퓨터 판독가능 저장 디바이스에서 구현될 수 있다. 프로세서는, 예를 들어, 처리 유닛 및/또는 프로그래머블 회로를 포함할 수 있다. 저장 디바이스는, 예를 들어, 플로피 디스크, 광학 디스크, CD-ROM(compact disk read-only memory), CD-RW(compact disk rewrittable), 및 광자기 디스크를 포함하는 임의 타입의 디스크, ROM(read-only memory), 동적 및 정적 RAM과 같은 RAM(random access memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), 플래시 메모리와 같은 반도체 디바이스, 자기 또는 광학 카드, 또는 전자적 명령어를 저장하기에 적합한 임의 타입의 저장 디바이스와 같은 임의 타입의 유형의(tangible) 비일시적 저장 디바이스를 포함하는 머신 판독가능 저장 디바이스를 포함할 수 있다.
일부 실시예들에서, 하드웨어 기술 언어(hardware description language, HDL)는 본 명세서에 설명된 다양한 로직 및/또는 회로에 대한 회로 및/또는 로직 구현(들)을 특정하기 위해 사용될 수 있다. 예를 들어, 일 실시예에서, 하드웨어 기술 언어는 본 명세서에 설명된 하나 이상의 회로 및/또는 로직의 반도체 제조를 가능하게 할 수 있는 초고속 집적 회로들(VHSIC) 하드웨어 기술 언어(VHDL)를 준수하거나 그와 호환될 수 있다. VHDL은 IEEE 표준 1076-1987, IEEE 표준 1076.2, IEEE1076.1, VHDL-2006의 IEEE 드래프트 3.0, VHDL-2008의 IEEE 드래프트 4.0, 및/또는 IEEE VHDL 표준들 및/또는 다른 하드웨어 기술 표준들의 다른 버전들을 준수하거나 이와 호환될 수 있다.
일부 실시예들에서, Verilog HDL이 본 명세서에 설명된 다양한 로직 및/또는 회로에 대한 회로 및/또는 로직 구현(들)을 특정하기 위해 사용될 수 있다. 예를 들어, 일 실시예에서, HDL은 IEEE 표준 62530-2011: SystemVerilog - Unified Hardware Design, Specification, 및 Verification Language, 2011년 7월 7일; IEEE Std 1800TM-2012: IEEE Standard for SystemVerilog-Unified Hardware Design, Specification, 및 Verification Language, 2013년 2월 21일 공개됨; IEEE 표준 1364-2005: IEEE Standard for Verilog Hardware Description Language, 2006년 4월 18일, 및/또는 Verilog HDL 및/또는 SystemVerilog 표준들의 다른 버전들을 준수하거나 이와 호환될 수 있다.
예들
본 개시내용의 예들은, 이하 논의되는 바와 같이, 스타일러스 사용에 대한 사용자 의도의 예측 검출과 관련된 방법, 디바이스, 장치, 또는 시스템과 같은 주제를 포함한다.
예 1. 이 예에 따르면, 장치가 제공된다. 장치는 제1 전도성 버스를 통해 제1 메모리 회로에 대한 판독 및/또는 기입 액세스를 제어하는 제1 메모리 제어기 회로; 제2 전도성 버스를 통해 제2 메모리 회로에 대한 판독 및/또는 기입 액세스를 제어하는 제2 메모리 제어기 회로; 제1 메모리 제어기 회로 및 제2 메모리 제어기 회로에 결합된 전력 제어 회로 - 전력 제어 회로는 제2 전도성 버스를 통한 제2 메모리 제어기 회로에 의한 제2 메모리 회로로부터의 데이터를 제1 전도성 버스를 통한 제1 메모리 제어기 회로에 의한 제1 메모리 회로로 전송하고, 전력 제어 회로는 제2 메모리 회로로부터 제1 메모리 회로로의 데이터의 전송 이후에 제2 메모리 회로를 파워 다운함 - 를 포함한다. 본 명세서에서 사용되는 바와 같이, 전도성 버스는 FSB(frontside bus)와 같은 멀티 드롭 버스(multi-drop bus); QPI(QuickPath Interconnect)와 같은 포인트-투-포인트 인터페이스; 또는 유사한 접속들을 포함할 수 있다.
예 2. 이 예는 예 1의 요소들을 포함하고, 제1 메모리 제어기 회로는 제1 복수의 메모리 제어기를 포함하고, 제1 메모리 회로는 제1 복수의 메모리 패키지를 포함하고, 제1 전도성 버스는 제1 복수의 메모리 제어기를 제1 복수의 메모리 패키지에 결합시키기 위한 제1 복수의 채널을 포함하고; 제2 메모리 제어기 회로는 제2 복수의 메모리 제어기를 포함하고, 제2 메모리 회로는 제2 복수의 메모리 패키지를 포함하고, 제2 전도성 버스는 제2 복수의 메모리 제어기를 제2 복수의 메모리 패키지에 결합시키기 위한 제2 복수의 채널을 포함한다.
예 3. 이 예는 예 2의 요소들을 포함하고, 제1 복수의 메모리 제어기는 제1 하나 이상의 메모리 제어기를 포함하고, 제1 복수의 채널은 제1 하나 이상의 채널을 포함하고, 제2 복수의 메모리 제어기는 제2 하나 이상의 메모리 제어기를 포함하고, 제2 복수의 채널은 제2 하나 이상의 채널을 포함하고, 전력 제어 회로는 제2 하나 이상의 메모리 제어기 및 제2 복수의 메모리 패키지를 파워 다운함으로써 제2 메모리 회로를 파워 다운한다.
예 4. 이 예는 예 1의 요소들을 포함하고, 운영 체제를 실행하는 프로세서 코어를 더 포함하고, 운영 체제는 제1 메모리 회로의 및 제2 메모리 회로의 데이터의 적어도 절반을 영구 저장 디바이스에서의 하나 이상의 파일에 전송하고, 운영 체제는 제1 메모리 회로의 및 제2 메모리 회로의 데이터의 나머지 페이지들을 제1 메모리 회로 및 제2 메모리 회로 내의 연속적인 메모리 페이지들의 그룹으로 이동시킨다.
예 5. 이 예는 예 4의 요소들을 포함하고, 제1 메모리 회로의 및 제2 메모리 회로의 데이터의 나머지 페이지들을 제1 메모리 회로 및 제2 메모리 회로 내의 연속적 메모리 페이지들의 그룹에 복사하는 것은 제1 메모리 회로 내의 메모리의 비어 있는 페이지들 및 제2 메모리 회로 내의 메모리의 점유된 페이지들을 야기한다.
예 6. 이 예는 예 5의 요소들을 포함하고, 제2 메모리 회로로부터 제1 메모리 회로로 데이터를 전송하는 것은: 제2 메모리 회로 내의 메모리의 점유된 페이지들의 데이터를 제1 메모리 회로 내의 메모리의 비어 있는 페이지들 내의 위치들에 전송하는 것을 포함한다.
예 7. 이 예는 예 5의 요소들을 포함하고, 제2 메모리 회로로부터 제1 메모리 회로로 데이터를 전송하는 것은: 제2 메모리 회로 내의 메모리의 DRAM(dynamic random-access memory) 페이지들을 제1 메모리 회로 내의 메모리의 DRAM 페이지들에 전송하는 것을 포함한다.
예 8. 이 예는 예 1의 요소들을 포함하고, 제2 메모리 회로가 파워 다운되는 동안, 전력 제어 회로는 새로운 트래픽이 제2 메모리 회로 내의 위치들에 매핑되는 경우 새로운 트래픽을 제1 메모리 회로 내의 위치들에 라우팅한다.
예 9. 이 예는 예 1의 요소들을 포함하고, 전력 제어 회로는 제2 메모리 회로를 파워 업하기 위한 커맨드의 수신에 응답하여 제2 메모리 회로를 파워 업하고, 전력 제어 회로는 전송된 데이터를 제1 메모리 회로로부터 제2 메모리 회로로 반환한다.
예 10. 이 예는 예 1의 요소들을 포함하고, 제2 메모리 회로를 파워 다운하는 것은 제2 전도성 버스를 통한 제2 메모리 회로로의 클록 신호 송신을 중지하는 것; 제2 메모리 회로에 대한 전력을 제거하는 것; 제2 메모리 회로에 대한 자동화된 셀프-리프레시 동작들을 디스에이블하는 것; 또는 제2 메모리 제어기 회로에 전력을 적어도 부분적으로 제거하는 것 중 하나 이상을 포함한다.
예 11. 이 예는 예 1의 요소들을 포함하고, 전력 제어 회로가 제2 메모리 회로를 파워 다운하는 것은 제1 메모리 회로와 제2 메모리 회로의 조합의 적어도 절반을 파워 다운하는 것을 포함한다.
예 12. 이 예는 예 1의 요소들을 포함하고, 전력 제어 회로는 전력 제어 레지스터의 구성 비트들에 응답하여 제2 메모리 회로로부터 제1 메모리 회로로 데이터를 전송한다.
예 13. 이 예는 예 11의 요소들을 포함하고, 전력 제어 레지스터는 프로세서에 의해 실행되는 운영 체제에 의해 액세스 가능하다.
예 14. 이 예에 따르면, 방법이 제공된다. 이 방법은, 전력 제어 회로에 의해, 제2 채널들을 통해 제2 메모리 회로로부터 제1 채널들을 통해 제1 메모리 회로에 데이터를 전송하라는 명령어를 수신하는 단계; 제1 메모리 회로에 저장되고 그리고 제2 메모리 회로에 저장된 데이터의 적어도 절반을 영구 스토리지에서의 하나 이상의 파일에 전송하는 단계 - 전송되지 않은 데이터는 나머지 데이터임 -; 제1 메모리 회로 중의 및 제2 메모리 회로 중의 연속적인 페이지들의 그룹에 나머지 데이터를 복사하여 제2 메모리 회로에서의 점유된 메모리 페이지들 및 제1 메모리 회로에서의 비어 있는 메모리 페이지들을 제공하는 단계; 제2 메모리 회로에서의 점유된 메모리 페이지들로부터 제1 메모리 회로에서의 비어 있는 메모리 페이지들에서의 메모리 위치들에 데이터를 전송하는 단계; 및 제2 메모리 회로에 인가되는 전력을 감소시키는 단계를 포함한다.
예 15. 이 예는 예 14의 요소들을 포함하고, 제2 메모리 회로에 인가되는 전력을 감소시키는 단계는 제2 채널들을 통한 제2 메모리 회로로의 클록 신호 송신을 중지하는 것; 제2 메모리 회로에 대한 전력을 제거하는 것; 제2 메모리 회로에 대한 자동화된 셀프-리프레시 동작들을 디스에이블하는 단계; 또는 제2 메모리 제어기 회로에 대한 전력을 적어도 부분적으로 제거하는 단계 중 하나 이상을 포함한다.
예 16. 이 예는 예 14의 요소들을 포함하고, 제2 메모리 회로를 파워 업하라는 커맨드의 수신에 응답하여, 제2 메모리 회로에 전력을 재인가하는 단계; 제1 메모리 회로로부터 제2 메모리 회로로, 제2 메모리 회로로부터 제1 메모리 회로로 전송된 데이터를 복사하는 단계를 더 포함한다.
예 17. 이 예는 예 14의 요소들을 포함하고, 전력 제어 회로에 의해, 제2 채널들을 통해 제2 메모리 회로로부터 제1 채널들을 통해 제1 메모리 회로에 데이터를 전송하라는 명령어를 수신하는 단계는: 제1 메모리 회로 및 제2 메모리 회로에 대한 구성 설정들을 저장하는 전력 제어 레지스터로부터 비트들을 판독하는 단계를 포함한다.
예 18. 이 예에 따르면, 시스템이 제공된다. 시스템은 프로세서; 적어도 하나의 제1 채널을 통해 제1 복수의 메모리 패키지에 대한 그리고 적어도 하나의 제2 채널을 통해 제2 복수의 메모리 패키지에 대한 판독 및/또는 기입 액세스를 제어하는 적어도 하나의 메모리 제어기; 및 적어도 하나의 메모리 제어기에 결합된 전력 제어 회로 - 전력 제어 회로는 제2 복수의 메모리 패키지로부터 제1 복수의 메모리 패키지로 데이터를 전송하고, 전력 제어 회로는 적어도 하나의 제1 채널 및 적어도 하나의 제2 채널의 적어도 절반을 파워 다운하고, 전력 제어 회로는 제2 복수의 메모리 패키지로부터 제1 복수의 메모리 패키지로의 데이터의 전송 후에 제2 복수의 메모리 패키지를 파워 다운함 - 를 포함한다.
예 19. 이 예는 예 18의 요소들을 포함하고, 프로세서의 전력 특징들을 제어하기 위한 시스템 에이전트 회로 - 시스템 에이전트 회로는 전력 제어 회로를 포함함 -; 프로세서를 시스템 에이전트 회로에 및 적어도 하나의 메모리 제어기에 결합하는 인터커넥트 회로를 더 포함한다.
예 20. 이 예는 예 18의 요소들을 포함하고, 전력 제어 회로는 제1 복수의 메모리 패키지의 및 제2 복수의 메모리 패키지의 데이터의 페이지들의 적어도 절반을 영구 저장 디바이스에서의 하나 이상의 파일에 전송하고, 전력 제어 회로는 제1 복수의 메모리 패키지의 및 제2 복수의 메모리 패키지의 데이터의 나머지 페이지들을 제1 메모리 패키지들 및 제2 메모리 패키지들 내의 연속 메모리 페이지들의 그룹에 복사한다.
예 21. 이 예는 예 20의 요소들을 포함하고, 연속적인 메모리 페이지들의 그룹은 메모리 페이지들의 복수의 세그먼트를 포함한다.
예 22. 이 예는 예 20의 요소들을 포함하고, 제1 복수의 메모리 패키지들의 및 제2 복수의 메모리 패키지들의 데이터의 나머지 페이지들을 제1 복수의 메모리 패키지들 및 제2 복수의 메모리 패키지들 내의 연속적인 메모리 페이지들의 그룹에 복사하는 것은 제1 복수의 메모리 패키지들 내의 메모리의 비어 있는 페이지들 및 제2 복수의 메모리 패키지들 내의 메모리의 점유된 페이지들을 야기한다.
예 23. 이 예는 예 22의 요소들을 포함하고, 제2 복수의 메모리 모듈로부터 제1 복수의 메모리 모듈로 데이터를 전송하는 것은: 제2 복수의 메모리 패키지 내의 메모리의 점유된 페이지들의 데이터를 제1 복수의 메모리 패키지 내의 메모리의 비어 있는 페이지들 내의 메모리 위치들로 전송하는 것을 포함한다.
예 24. 이 예는 예 18의 요소들을 포함하고, 제2 복수의 메모리 패키지가 파워 다운되는 동안, 전력 제어 회로는 새로운 트래픽이 제2 복수의 메모리 패키지 내의 위치들에 매핑되는 경우 새로운 트래픽을 제1 복수의 메모리 패키지 내의 위치들에 라우팅한다.
예 25. 이 예는 예 18의 요소들을 포함하고, 전력 제어 회로는 제2 복수의 메모리 패키지를 파워 업하라는 커맨드의 수신에 응답하여 제2 복수의 메모리 패키지를 파워 업하고, 전력 제어 회로는 제1 복수의 메모리 패키지로부터 제2 복수의 메모리 패키지로 전송된 데이터를 반환한다.
예 26. 이 예에 따르면, 하나 이상의 프로세서에 의해 실행되는 경우, 예 14 내지 예 17 중 어느 하나의 방법을 수행하는 명령어들을 저장하는 컴퓨터 판독가능 디바이스가 제공된다.
예 27. 이 예에 따르면, 예 14 내지 예 17 중 어느 하나의 방법을 수행하는 수단을 포함하는 디바이스가 제공된다.
본 명세서에서 채택되는 용어들 및 표현들은 제한이 아닌 설명의 용어들로서 사용되고, 이러한 용어들 및 표현들의 사용에 있어서, 도시되고 설명된 특징들(또는 그 일부들)의 임의의 등가물들을 배제하려는 의도는 없으며, 다양한 수정들이 청구항들의 범위 내에서 가능하다는 것이 인식된다. 따라서, 청구항들은 이러한 모든 등가물들을 커버하도록 의도된다.
다양한 특징들, 양태들, 및 실시예들이 본 명세서에 설명되었다. 본 기술분야의 통상의 기술자에 의해 이해되는 바와 같이, 특징들, 양태들, 및 실시예들은 서로의 조합뿐만 아니라 변형 및 수정을 받아들일 수 있다. 따라서, 본 개시내용은 이러한 조합들, 변형들, 및 수정들을 포괄하는 것으로 간주되어야 한다.
Claims (25)
- 장치로서:
제1 전도성 버스를 통해 제1 메모리 회로에 대한 판독 및/또는 기입 액세스를 제어하는 제1 메모리 제어기 회로;
제2 전도성 버스를 통해 제2 메모리 회로에 대한 판독 및/또는 기입 액세스를 제어하는 제2 메모리 제어기 회로; 및
상기 제1 메모리 제어기 회로 및 상기 제2 메모리 제어기 회로에 결합된 전력 제어 회로 - 상기 전력 제어 회로는 상기 제2 전도성 버스를 통한 상기 제2 메모리 제어기 회로에 의한 상기 제2 메모리 회로로부터의 데이터를 상기 제1 전도성 버스를 통한 상기 제1 메모리 제어기 회로에 의한 상기 제1 메모리 회로로 전송하고, 상기 전력 제어 회로는 상기 제2 메모리 회로로부터 상기 제1 메모리 회로로의 데이터의 전송 이후에 상기 제2 메모리 회로를 파워 다운함 - 를 포함하는 장치. - 제1항에 있어서,
상기 제1 메모리 제어기 회로는 제1 복수의 메모리 제어기를 포함하고, 상기 제1 메모리 회로는 제1 복수의 메모리 패키지를 포함하고, 상기 제1 전도성 버스는 상기 제1 복수의 메모리 제어기를 상기 제1 복수의 메모리 패키지에 결합시키기 위한 제1 복수의 채널을 포함하고;
상기 제2 메모리 제어기 회로는 제2 복수의 메모리 제어기를 포함하고, 상기 제2 메모리 회로는 제2 복수의 메모리 패키지를 포함하고, 상기 제2 전도성 버스는 상기 제2 복수의 메모리 제어기를 상기 제2 복수의 메모리 패키지에 결합시키기 위한 제2 복수의 채널을 포함하는 장치. - 제2항에 있어서,
상기 전력 제어 회로는 상기 제2 복수의 메모리 제어기 및 상기 제2 복수의 메모리 패키지를 파워 다운함으로써 상기 제2 메모리 회로를 파워 다운하는 장치. - 제1항 내지 제3항 중 어느 한 항에 있어서,
운영 체제를 실행하는 프로세서 코어를 추가로 포함하고, 상기 운영 체제는 상기 제1 메모리 회로의 및 상기 제2 메모리 회로의 데이터의 페이지들의 적어도 절반을 영구 저장 디바이스에서의 하나 이상의 파일에 전송하고, 상기 운영 체제는 상기 제1 메모리 회로의 및 상기 제2 메모리 회로의 데이터의 나머지 페이지들을 상기 제1 메모리 회로 및 상기 제2 메모리 회로 내의 연속적인 메모리 페이지들의 그룹으로 이동시키는 장치. - 제4항에 있어서,
상기 제1 메모리 회로의 및 상기 제2 메모리 회로의 데이터의 나머지 페이지들을 상기 제1 메모리 회로 및 상기 제2 메모리 회로 내의 연속적 메모리 페이지들의 그룹에 이동시키는 것은 상기 제1 메모리 회로 내의 메모리의 비어 있는 페이지들 및 상기 제2 메모리 회로 내의 메모리의 점유된 페이지들을 야기하는 장치. - 제5항에 있어서,
상기 제2 메모리 회로로부터 상기 제1 메모리 회로로 데이터를 전송하는 것은:
상기 제2 메모리 회로 내의 메모리의 점유된 페이지들의 데이터를 상기 제1 메모리 회로 내의 메모리의 비어 있는 페이지들 내의 위치들에 전송하는 것을 포함하는 장치. - 제5항에 있어서,
상기 제2 메모리 회로로부터 상기 제1 메모리 회로로 데이터를 전송하는 것은:
상기 제2 메모리 회로 내의 메모리의 DRAM(dynamic random-access memory) 페이지들을 상기 제1 메모리 회로 내의 메모리의 DRAM 페이지들에 전송하는 것을 포함하는 장치. - 제1항 내지 제3항 중 어느 한 항에 있어서,
상기 제2 메모리 회로가 파워 다운되는 동안, 상기 전력 제어 회로는 새로운 트래픽이 상기 제2 메모리 회로 내의 위치들에 매핑되는 경우 상기 새로운 트래픽을 상기 제1 메모리 회로 내의 위치들에 라우팅하는 장치. - 제1항 내지 제3항 중 어느 한 항에 있어서,
상기 전력 제어 회로는 상기 제2 메모리 회로를 파워 업하기 위한 커맨드의 수신에 응답하여 상기 제2 메모리 회로를 파워 업하고, 상기 전력 제어 회로는 상기 전송된 데이터를 상기 제1 메모리 회로로부터 상기 제2 메모리 회로로 반환하는 장치. - 제1항 내지 제3항 중 어느 한 항에 있어서,
상기 제2 메모리 회로를 파워 다운하는 것은:
상기 제2 전도성 버스를 통한 상기 제2 메모리 회로로의 클록 신호 송신을 중지하는 것;
상기 제2 메모리 회로에 대한 전력을 제거하는 것;
상기 제2 메모리 회로에 대한 자동화된 셀프-리프레시 동작들을 디스에이블하는 것; 또는
상기 제2 메모리 제어기 회로에 대한 전력을 적어도 부분적으로 제거하는 것 중 하나 이상을 포함하는 장치. - 제1항 내지 제3항 중 어느 한 항에 있어서,
상기 전력 제어 회로가 상기 제2 메모리 회로를 파워 다운하는 것은 상기 제1 메모리 회로와 상기 제2 메모리 회로의 조합의 적어도 절반을 파워 다운하는 것을 포함하는 장치. - 제1항 내지 제3항 중 어느 한 항에 있어서,
상기 전력 제어 회로는 전력 제어 레지스터의 구성 비트들에 응답하여 상기 제2 메모리 회로로부터 상기 제1 메모리 회로로 데이터를 전송하는 장치. - 제12항에 있어서,
상기 전력 제어 레지스터는 프로세서에 의해 실행되는 운영 체제에 의해 액세스 가능한 장치. - 방법으로서:
전력 제어 회로에 의해, 제2 채널들을 통해 제2 메모리 회로로부터 제1 채널들을 통해 제1 메모리 회로에 데이터를 전송하라는 명령어를 수신하는 단계;
메모리 제어 회로에 의해, 상기 제1 메모리 회로에 저장되고 그리고 상기 제2 메모리 회로에 저장된 데이터의 적어도 절반을 영구 스토리지에서의 하나 이상의 파일에 전송하는 단계 - 전송되지 않은 데이터는 나머지 데이터임 -;
상기 메모리 제어 회로에 의해, 상기 제1 메모리 회로 중의 및 상기 제2 메모리 회로 중의 연속적인 페이지들의 그룹에 상기 나머지 데이터를 복사하여 상기 제2 메모리 회로에서의 점유된 메모리 페이지들 및 상기 제1 메모리 회로에서의 비어 있는 메모리 페이지들을 제공하는 단계;
상기 메모리 제어 회로에 의해, 상기 제2 메모리 회로에서의 점유된 메모리 페이지들로부터 상기 제1 메모리 회로에서의 비어 있는 메모리 페이지들에서의 메모리 위치들에 데이터를 전송하는 단계; 및
상기 전력 제어 회로에 의해, 상기 제2 메모리 회로에 인가되는 전력을 감소시키는 단계를 포함하는 방법. - 제14항에 있어서,
상기 제2 메모리 회로에 인가되는 전력을 감소시키는 단계는:
상기 전력 제어 회로에 의해, 상기 제2 채널들을 통한 상기 제2 메모리 회로로의 클록 신호 송신을 중지하는 단계;
상기 전력 제어 회로에 의해, 상기 제2 메모리 회로에 대한 전력을 제거하는 단계;
상기 전력 제어 회로에 의해, 상기 제2 메모리 회로에 대한 자동화된 셀프-리프레시 동작들을 디스에이블하는 단계; 또는
상기 전력 제어 회로에 의해, 상기 제2 메모리 제어기 회로에 대한 전력을 적어도 부분적으로 제거하는 단계 중 하나 이상을 포함하는 방법. - 제14항에 있어서,
상기 전력 제어 회로에 의해, 상기 제2 메모리 회로를 파워 업하라는 커맨드의 수신에 응답하여, 상기 제2 메모리 회로에 전력을 재인가하는 단계; 및
상기 메모리 제어 회로에의해, 상기 제1 메모리 회로로부터 상기 제2 메모리 회로로, 상기 제2 메모리 회로로부터 상기 제1 메모리 회로로 전송된 데이터를 복사하는 단계를 추가로 포함하는 방법. - 제14항에 있어서,
상기 제2 채널들을 통해 상기 제2 메모리 회로로부터 상기 제1 채널들을 통해 상기 제1 메모리 회로에 데이터를 전송하라는 명령어를 수신하는 단계는:
상기 전력 제어 회로에 의해, 상기 제1 메모리 회로 및 상기 제2 메모리 회로에 대한 구성 설정들을 저장하는 전력 제어 레지스터로부터 비트들을 판독하는 단계를 포함하는 방법. - 시스템으로서:
제2 채널들을 통해 제2 메모리 회로로부터 제1 채널들을 통해 제1 메모리 회로에 데이터를 전송하라는 명령어를 수신하기 위한 수단;
상기 제1 메모리 회로에 저장되고 그리고 상기 제2 메모리 회로에 저장된 데이터의 적어도 절반을 영구 스토리지에서의 하나 이상의 파일에 전송하기 위한 수단 - 전송되지 않은 데이터는 나머지 데이터임 -;
상기 제1 메모리 회로 중의 및 상기 제2 메모리 회로 중의 연속적인 페이지들의 그룹에 상기 나머지 데이터를 복사하여 상기 제2 메모리 회로에서의 점유된 메모리 페이지들 및 상기 제1 메모리 회로에서의 비어 있는 메모리 페이지들을 제공하기 위한 수단;
상기 제2 메모리 회로에서의 점유된 메모리 페이지들로부터 상기 제1 메모리 회로에서의 비어 있는 메모리 페이지들에서의 메모리 위치들에 데이터를 전송하기 위한 수단; 및
상기 제2 메모리 회로에 인가되는 전력을 감소시키기 위한 수단을 포함하는 시스템. - 제18항에 있어서,
상기 제2 메모리 회로에 인가되는 전력을 감소시키기 위한 수단은:
상기 제2 채널들을 통한 상기 제2 메모리 회로로의 클록 신호 송신을 중지하기 위한 수단;
상기 제2 메모리 회로에 대한 전력을 제거하기 위한 수단;
상기 제2 메모리 회로에 대한 자동화된 셀프-리프레시 동작들을 디스에이블하기 위한 수단; 또는
상기 제2 메모리 제어기 회로에 대한 전력을 적어도 부분적으로 제거하기 위한 수단 중 하나 이상을 포함하는 시스템. - 제18항에 있어서,
상기 제2 메모리 회로를 파워 업하라는 커맨드의 수신에 응답하여, 상기 제2 메모리 회로에 전력을 재인가하기 위한 수단; 및
상기 제1 메모리 회로로부터 상기 제2 메모리 회로로, 상기 제2 메모리 회로로부터 상기 제1 메모리 회로로 전송된 데이터를 복사하기 위한 수단을 추가로 포함하는 시스템. - 제18항에 있어서,
상기 제2 채널들을 통해 상기 제2 메모리 회로로부터 상기 제1 채널들을 통해 상기 제1 메모리 회로에 데이터를 전송하라는 명령어를 수신하기 위한 수단은:
전력 제어 회로에 의해, 상기 제1 메모리 회로 및 상기 제2 메모리 회로에 대한 구성 설정들을 저장하는 전력 제어 레지스터로부터 비트들을 판독하기 위한 수단을 포함하는 시스템. - 데이터를 전송하기 위한 시스템으로서, 상기 시스템은 제14항 내지 제17항 중 어느 한 항의 방법을 수행하도록 구성되는 시스템.
- 제14항 내지 제17항 중 어느 한 항의 방법을 수행하도록 구성된 칩셋.
- 컴퓨팅 디바이스상에서 실행되는 것에 응답하여, 상기 컴퓨팅 디바이스로 하여금 제14항 내지 제17항 중 어느 한 항에 따른 방법을 수행하도록 야기하는 복수의 명령어를 포함하는 적어도 하나의 머신 판독가능 매체.
- 데이터를 전송하도록 구성된 디바이스로서, 상기 디바이스는 제14항 내지 제17항 중 어느 한 항의 방법을 수행하도록 구성된 디바이스.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/024,637 | 2018-06-29 | ||
US16/024,637 US10877693B2 (en) | 2018-06-29 | 2018-06-29 | Architecture for dynamic transformation of memory configuration |
PCT/US2019/034737 WO2020005457A1 (en) | 2018-06-29 | 2019-05-30 | Architecture for dynamic transformation of memory configuration |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210016325A true KR20210016325A (ko) | 2021-02-15 |
Family
ID=65230240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207026986A KR20210016325A (ko) | 2018-06-29 | 2019-05-30 | 메모리 구성의 동적 변환을 위한 아키텍처 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10877693B2 (ko) |
JP (1) | JP7374116B2 (ko) |
KR (1) | KR20210016325A (ko) |
CN (1) | CN111886575A (ko) |
BR (1) | BR112020019651A2 (ko) |
DE (1) | DE112019002389T5 (ko) |
WO (1) | WO2020005457A1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10877693B2 (en) * | 2018-06-29 | 2020-12-29 | Intel Corporation | Architecture for dynamic transformation of memory configuration |
US10580481B1 (en) * | 2019-01-14 | 2020-03-03 | University Of Virginia Patent Foundation | Methods, circuits, systems, and articles of manufacture for state machine interconnect architecture using embedded DRAM |
US10770431B1 (en) * | 2019-02-27 | 2020-09-08 | Western Digital Technologies, Inc. | Memory die layouts for failure protection in SSDs |
US11669901B2 (en) | 2019-07-12 | 2023-06-06 | Core Scientific Operating Company | Communication network for gaming rewards |
US11068292B2 (en) * | 2019-08-27 | 2021-07-20 | Core Scientific, Inc. | Computing system translation to promote efficiency |
US11449346B2 (en) * | 2019-12-18 | 2022-09-20 | Advanced Micro Devices, Inc. | System and method for providing system level sleep state power savings |
US11487447B2 (en) | 2020-08-28 | 2022-11-01 | Advanced Micro Devices, Inc. | Hardware-software collaborative address mapping scheme for efficient processing-in-memory systems |
US11513691B2 (en) * | 2021-01-09 | 2022-11-29 | Western Digital Technologies, Inc. | Systems and methods for power and performance improvement through dynamic parallel data transfer between device and host |
GB2604153A (en) * | 2021-02-26 | 2022-08-31 | Advanced Risc Mach Ltd | Data Processors |
US20230275597A1 (en) * | 2021-11-08 | 2023-08-31 | Ambiq Micro, Inc. | Low power and wide dynamic range analog-to-digital converter |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6240496B1 (en) * | 1989-11-24 | 2001-05-29 | Hyundai Electronics America | Architecture and configuring method for a computer expansion board |
WO1993018461A1 (en) * | 1992-03-09 | 1993-09-16 | Auspex Systems, Inc. | High-performance non-volatile ram protected write cache accelerator system |
US6154821A (en) | 1998-03-10 | 2000-11-28 | Rambus Inc. | Method and apparatus for initializing dynamic random access memory (DRAM) devices by levelizing a read domain |
JP2001093275A (ja) | 1999-09-20 | 2001-04-06 | Mitsubishi Electric Corp | 半導体集積回路装置 |
US6418510B1 (en) * | 2000-09-14 | 2002-07-09 | International Business Machines Corporation | Cooperative cache and rotational positioning optimization (RPO) scheme for a direct access storage device (DASD) |
US7269709B2 (en) * | 2002-05-15 | 2007-09-11 | Broadcom Corporation | Memory controller configurable to allow bandwidth/latency tradeoff |
US7218566B1 (en) | 2005-04-28 | 2007-05-15 | Network Applicance, Inc. | Power management of memory via wake/sleep cycles |
US7590796B2 (en) | 2006-07-31 | 2009-09-15 | Metaram, Inc. | System and method for power management in memory systems |
US20080005516A1 (en) * | 2006-06-30 | 2008-01-03 | Meinschein Robert J | Memory power management through high-speed intra-memory data transfer and dynamic memory address remapping |
US20080133654A1 (en) * | 2006-12-01 | 2008-06-05 | Chei-Yol Kim | Network block device using network asynchronous i/o |
US20080307240A1 (en) * | 2007-06-08 | 2008-12-11 | Texas Instruments Incorporated | Power management electronic circuits, systems, and methods and processes of manufacture |
JP2009163394A (ja) | 2007-12-28 | 2009-07-23 | Panasonic Corp | メモリ管理装置およびメモリ管理方法 |
US8275930B2 (en) * | 2008-12-04 | 2012-09-25 | Hitachi, Ltd. | Storage system having volatile memory and non-volatile memory |
US8365020B2 (en) * | 2010-03-18 | 2013-01-29 | Red Hat Israel, Ltd. | Mechanism for saving crash dump files of a virtual machine on a designated disk |
US9842068B2 (en) * | 2010-04-14 | 2017-12-12 | Qualcomm Incorporated | Methods of bus arbitration for low power memory access |
US8589730B2 (en) * | 2010-08-31 | 2013-11-19 | Apple Inc. | Handling errors during device bootup from a non-volatile memory |
CN101950261B (zh) * | 2010-09-09 | 2013-12-04 | 中兴通讯股份有限公司 | 数据存储与鉴权并行的处理方法和终端 |
KR20140001980A (ko) | 2011-01-11 | 2014-01-07 | 바스프 에스이 | 폴리이소부텐 숙신산 에스테르 기재의 히드로겔 |
US8874680B1 (en) * | 2011-11-03 | 2014-10-28 | Netapp, Inc. | Interconnect delivery process |
KR101915073B1 (ko) * | 2011-12-20 | 2018-11-06 | 인텔 코포레이션 | 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단 |
JP5894044B2 (ja) | 2012-09-14 | 2016-03-23 | レノボ・シンガポール・プライベート・リミテッド | ハイブリッド・ディスク・ドライブにデータを記憶する方法および携帯式コンピュータ |
US9652376B2 (en) * | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
WO2015047326A1 (en) * | 2013-09-27 | 2015-04-02 | Hewlett-Packard Development Company, L.P. | Data management on memory modules |
US9304937B2 (en) * | 2013-10-23 | 2016-04-05 | Netapp Inc. | Atomic write operations for storage devices |
US9459810B2 (en) * | 2013-12-30 | 2016-10-04 | Sandisk Technologies Llc | Storage module and method for configuring command attributes |
US9727439B2 (en) * | 2014-05-28 | 2017-08-08 | Vmware, Inc. | Tracking application deployment errors via cloud logs |
US9563382B2 (en) * | 2014-06-05 | 2017-02-07 | Sandisk Technologies Llc | Methods, systems, and computer readable media for providing flexible host memory buffer |
US9836108B2 (en) * | 2014-09-10 | 2017-12-05 | Toshiba Memory Corporation | Memory system and controller |
US20160094339A1 (en) * | 2014-09-30 | 2016-03-31 | Sandisk Technologies Inc. | Scrambling schemes for scrambling and descrambling data |
US9740617B2 (en) * | 2014-12-23 | 2017-08-22 | Intel Corporation | Hardware apparatuses and methods to control cache line coherence |
JP2017027458A (ja) | 2015-07-24 | 2017-02-02 | 京セラドキュメントソリューションズ株式会社 | メモリー制御装置及びこれを備えた画像形成装置 |
US20170125070A1 (en) * | 2015-10-29 | 2017-05-04 | Sandisk Technologies Inc. | System and method for hibernation using a delta generator engine |
US20170206031A1 (en) * | 2016-01-15 | 2017-07-20 | Samsung Electronics Co., Ltd. | Fine grain level memory power consumption control mechanism |
JP2017138853A (ja) | 2016-02-04 | 2017-08-10 | 株式会社東芝 | 情報処理装置およびプログラム |
US9996477B2 (en) * | 2016-09-14 | 2018-06-12 | Western Digital Technologies, Inc. | Asynchronous drive telemetry data notification |
US10243560B2 (en) * | 2017-08-11 | 2019-03-26 | Seagate Technology Llc | Maintaining slew rate while loading flash memory dies |
US10685121B2 (en) * | 2017-10-17 | 2020-06-16 | Quanta Computer Inc. | Secure environment examination |
TWI645289B (zh) * | 2017-10-31 | 2018-12-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體操作方法 |
US10877693B2 (en) * | 2018-06-29 | 2020-12-29 | Intel Corporation | Architecture for dynamic transformation of memory configuration |
-
2018
- 2018-06-29 US US16/024,637 patent/US10877693B2/en active Active
-
2019
- 2019-05-30 KR KR1020207026986A patent/KR20210016325A/ko not_active Application Discontinuation
- 2019-05-30 BR BR112020019651-7A patent/BR112020019651A2/pt unknown
- 2019-05-30 DE DE112019002389.6T patent/DE112019002389T5/de active Pending
- 2019-05-30 WO PCT/US2019/034737 patent/WO2020005457A1/en active Application Filing
- 2019-05-30 CN CN201980020644.8A patent/CN111886575A/zh active Pending
- 2019-05-30 JP JP2020551928A patent/JP7374116B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
US20190042157A1 (en) | 2019-02-07 |
JP7374116B2 (ja) | 2023-11-06 |
US10877693B2 (en) | 2020-12-29 |
JP2021528712A (ja) | 2021-10-21 |
WO2020005457A1 (en) | 2020-01-02 |
BR112020019651A2 (pt) | 2021-01-05 |
CN111886575A (zh) | 2020-11-03 |
DE112019002389T5 (de) | 2021-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7374116B2 (ja) | メモリ構成の動的変換のためのアーキテクチャ | |
EP3588281B1 (en) | Apparatus and method for a tensor permutation engine | |
KR101748538B1 (ko) | 벡터 인덱싱 메모리 액세스 플러스 산술 및/또는 논리 연산 프로세서들, 방법들, 시스템들 및 명령어들 | |
CN107250993B (zh) | 向量缓存行写回处理器、方法、系统和指令 | |
US10963256B2 (en) | Systems and methods for performing instructions to transform matrices into row-interleaved format | |
CN108595348B (zh) | 无局部性提示的向量存储器访问处理器、方法、系统和指令 | |
US10203910B2 (en) | Hardware apparatuses and methods for distributed durable and atomic transactions in non-volatile memory | |
KR102463858B1 (ko) | 벡터 인덱스 로드 및 저장을 위한 방법 및 장치 | |
EP3588306A1 (en) | Hardware-assisted paging mechanisms | |
TWI830927B (zh) | 用於處理器非回寫能力的設備、方法、及非暫時性機器可讀取媒體 | |
US11681611B2 (en) | Reservation architecture for overcommitted memory | |
US20220206975A1 (en) | Circuitry and methods for low-latency page decompression and compression acceleration | |
EP3757767B1 (en) | Asynchronous cache flush engine to manage platform coherent and memory side caches | |
US20220100513A1 (en) | Apparatuses, methods, and systems for instructions for loading data and padding into a tile of a matrix operations accelerator | |
US20200409847A1 (en) | Apparatuses, methods, and systems for selective linear address masking based on processor privilege level and control register bits | |
CN111767081A (zh) | 用于加速存储处理的装置、方法和系统 | |
US20240320161A1 (en) | Apparatuses, methods, and systems for a device translation lookaside buffer pre-translation instruction and extensions to input/output memory management unit protocols | |
EP3716079B1 (en) | Memory management apparatus and method for managing different page tables for different privilege levels | |
TWI697836B (zh) | 處理包括高功率及標準指令之指令集的方法與處理器 | |
US11580031B2 (en) | Hardware for split data translation lookaside buffers | |
EP3798824A1 (en) | Apparatus and method for store pairing with reduced hardware requirements | |
US9898408B2 (en) | Sharing aware snoop filter apparatus and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal |