KR20140099255A - 레지스터 리네이밍 데이터 처리장치 및 레지스터 리네이밍 실행방법 - Google Patents
레지스터 리네이밍 데이터 처리장치 및 레지스터 리네이밍 실행방법 Download PDFInfo
- Publication number
- KR20140099255A KR20140099255A KR1020147014901A KR20147014901A KR20140099255A KR 20140099255 A KR20140099255 A KR 20140099255A KR 1020147014901 A KR1020147014901 A KR 1020147014901A KR 20147014901 A KR20147014901 A KR 20147014901A KR 20140099255 A KR20140099255 A KR 20140099255A
- Authority
- KR
- South Korea
- Prior art keywords
- tag
- data processing
- registers
- register
- physical
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 197
- 238000000034 method Methods 0.000 title claims abstract description 51
- 230000004044 response Effects 0.000 claims abstract description 10
- 238000013507 mapping Methods 0.000 claims description 31
- 230000000694 effects Effects 0.000 claims description 10
- 230000008859 change Effects 0.000 claims description 2
- 238000006243 chemical reaction Methods 0.000 abstract description 7
- 230000006870 function Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000005764 inhibitory process Effects 0.000 description 3
- 230000001629 suppression Effects 0.000 description 3
- 230000007123 defense Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000035772 mutation Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000012360 testing method Methods 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
- G06F21/755—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2123—Dummy operation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
데이터 처리장치 및 방법을 제공한다. 프로세서는 논리 레지스터를 참조하는 데이터 처리 명령어에 응답하여 데이터 처리 연산을 행한다. 일 세트의 물리 레지스터는, 데이터 처리 연산된 데이터 값들을 기억한다. 태그 스토리지는, 상기 논리 레지스터 중 하나를 나타내는 태그값을 물리 레지스터마다 기억한다. 상기 프로세서는 상기 태그 스토리지를 참조하여 데이터 처리 연산을 행한다. 태그값 교환기는, 상기 프로세서가, 2개의 물리 레지스터 중 하나의 선택이 2개의 논리 레지스터 중 상기 데이터 처리 연산의 결과에 영향을 미치지 않는 것에 매핑되는 2개의 논리 레지스터를 참조하는 소정의 명령어를 실행할 때, 상기 태그 스토리지에 있는 2개의 태그값을 교환하는 태그 전환을 행한다. 상기 태그값 교환기는, 상기 2개의 논리 레지스터를 나타내는 상기 태그값들에 대해 상기 태그 전환을 행한다.
Description
본 발명은, 레지스터 리네이밍을 실행하는 데이터 처리장치에 관한 것이다.
프로그램 모델(즉, 논리) 레지스터를 참조하는 데이터 처리 명령어를 실행하는 데이터 처리장치를 제공하는 것이 알려져 있고, 그 데이터 처리장치 자체는 데이터 처리 연산된 데이터 값들을 일 세트의 물리 레지스터에 기억한다. 상기 프로그램 모델 레지스터와 상기 물리 레지스터 사이에서 고정된 매핑을 유지하는 것보다는, 상기 프로그램 모델 레지스터와 상기 물리 레지스터간의 상기 매핑이 변화되어 갱신되는 레지스터 리네이밍으로서 알려진 기술을 실행하는 것이 알려져 있다.
상기 레지스터 리네이밍은, 예를 들면, 일 시퀀스내에서 데이터 처리 명령어가 동시에 또는 적어도 비순서로 실행되고나서 그 레지스터 리네이밍 기술이 다른 버전의 주어진 프로그램 모델 레지스터를 유지하는데 사용될 때, 데이터 처리 명령어의 실행시에 병행할 수 있을 정도로, 우세한 성능 관련 목적을 위해 행해지기도 함으로써, 그들의 데이터 처리 명령어는 데이터 장애를 일으키지 않고 동시에 또는 비순서 방식으로 실행되어도 된다. 레지스터 리네이밍이 일으킬 수 있는 성능 이점의 관점에서 이롭지만, 그 러한 레지스터 리네이밍을 일어나게 하는 데이터 처리장치에 설치되어야 하는 추가의 하드웨어는 비용 및 복잡함이 생기는 것으로 인해 단점이 된다. 이러한 단점은, 상대적으로 적은 저비용, 특별히 제한된 저전력 소자에서 레지스터 리네이밍 기술을 사용할 기회를 만든다.
또한, 레지스터 리네이밍은, 시큐리티 감지 소자의 맥락에서 귀중한 기술로서 알려져 있는데, 그 이유는, 이 기술이, 예를 들면, 상기 소자의 소비전력의 미세 단위(fine-grained)의 관찰에 의해, 또는 상기 소자의 연산에 관한 효과를 관찰하기 위해서 값들을 특별한 레지스터에 도입하려고 하는 침입성 기술에 의해, 공격자가 상기 데이터 처리장치의 내부 연산의 정보를 외부적으로 보다 얻기 어렵게 하는 방식이기 때문이다. 레지스터 리네이밍의 이점이 상기 시큐리티 감지소자에 적용될 수 있게 하는 것이 바람직하지만, 이러한 소자는, 소형, 저비용, 저전력소자로서 구성되는 경우도 있으므로, 전형적인 레지스터 리네이밍 기술에 관한 추가의 구조적 요구사항은 이 상황에서는 레지스터 리네이밍 기술을 적용할 기회를 일반적으로 제한하고 있다. 예를 들면, 공지된 많은 레지스터 리네이밍 기술은, 물리 레지스터의 수를 프로그램 모델 레지스터의 수를 초과하여 그들의 레지스터 리네이밍 기술을 조작 가능하게 하므로, 임의의 특별한 소자의 설계의 경우는, 레지스터 리네이밍을 사용하지 않았을 경우 필요로 하는 것보다 레지스터 리네이밍을 지원하는데 보다 많은 물리 레지스터를 필요로 할 것이다. 소형 소자, 이를테면 소형의 시큐어 마이크로프로세서에 있어서, 물리 레지스터를 포함하는 레지스터 파일의 사이즈는 중요하고, 그 결과 필요한 레지스터 파일의 사이즈의 증가는 이러한 소자들내에서 레지스터 리네이밍 기술을 많이 이용하는데 방해하는 경우도 있다.
2002년 특수용 시스템, 아키텍처, 및 프로세서(ASAP'02)에 관한 IEEE국제회의 회보, Irwin, Page 및 Smart에 의한 논문 "Instruction Stream Mutation for Non-Deterministic Processors"에는, 차분전력 분석(DPA) 시큐리티 공격에 대해 보호하는데 사용될 수 있는 여러 가지 기술이 기재되어 있고, 그 기술 중의 하나는, "생존성 테이블"을 사용하여 레지스터 리네이밍을 제어하는 레지스터 리네이밍 기술(레지스터 리매핑으로서 조항을 말함)을 포함한다. 본 기술에서는, 물리 레지스터의 수가 프로그램 모델 레지스터의 수를 초과할 필요가 없지만, 상기 생존성 테이블을 유지하는데 필요한 정보를 생성하기 위해서 명령어 흐름에 별도의 명령어는 가산해야 한다. 따라서, 이러한 해결방법은, 상기 소자에 관해 실행하는 코드에 대해 변형이 필요하고, 이들 추가의 명령어를 실행할 필요성으로 인해 성능에 상당한 영향을 줄 것이다.
특히 소형, 저비용, 저전력 소자의 경우에, 많은 레지스터 리네이밍 기술에 관한 추가의 하드웨어 요구사항을 경감하는 데이터 처리장치에 레지스터 리네이밍의 이점이 적용되게 하는 개선된 기술을 제공하는 것이 바람직할 것이다.
본 발명의 제 1 국면에서 본 데이터 처리장치는,
프로그램 모델 레지스터를 참조하는 데이터 처리 명령어에 응답하여 데이터 처리 연산을 행하도록 구성된 프로세서 유닛;
상기 데이터 처리 연산된 데이터 값을 기억하도록 구성된 일 세트의 물리 레지스터;
상기 프로그램 모델 레지스터 중 하나를 나타내는 태그값을 물리 레지스터마다 기억하도록 구성된 태그 기억 유닛-상기 프로세서 유닛은 상기 데이터 처리 연산을 행하기 위해서 상기 태그 기억 유닛을 참조하도록 구성되고, 상기 태그 기억 유닛은 상기 프로그램 모델 레지스터와 상기 물리 레지스터 사이에서 1대1 매핑을 제공함-; 및
태그 전환을 행하여 상기 태그 기억 유닛에서 2개의 태그값을 교환하도록 구성된 태그값 교환기를 구비하고,
상기 태그값 교환기는, 상기 프로세서 유닛이 소정의 데이터 처리 명령어를 실행할 때 상기 태그 전환을 행하도록 구성되고,
상기 소정의 데이터 처리 명령어는, 2개의 물리 레지스터 중 한쪽의 선택이 상기 2개의 프로그램 모델 레지스터 중 상기 데이터 처리 연산의 결과에 영향을 미치지 않는 것에 매핑되는, 2개의 프로그램 모델 레지스터를 참조하고,
상기 태그값 교환기는 상기 2개의 프로그램 모델 레지스터를 나타내는 상기 태그값에 대해 상기 태그 전환을 행하도록 구성된다.
데이터 처리장치는, 데이터 처리 명령어에 응답하여 데이터 처리 연산을 행하는 처리 유닛을 갖는다. 이들 데이터 처리 명령어가 레지스터라고 하는 경우, 그 명령어는, 프로그램 모델 레지스터, 즉 논리적 또는 가상적 세트의 레지스터의 관점에서 기록된다. 데이터 처리장치는, 데이터 처리 연산에 의해 작동된 데이터 값이 물리적으로 기억된 일 세트의 물리 레지스터를 갖는다. 상기 세트의 물리 레지스터에 관한 태그 기억 유닛은, 물리 레지스터마다, 프로그램 모델 레지스터가 그 물리 레지스터에 매핑하는 것을 나타내는(마찬가지로, 물리 레지스터가 어느 프로그램 모델 레지스터에 매핑하는 것을 나타내는) 태그값을 기억한다. 모델 레지스터와 물리 레지스터 사이에서는 1대1 매핑을 한다.
데이터 처리장치는, 상기 태그 기억 유닛에 있는 2개의 태그값을 교환하도록, 즉, 2개의 프로그램 모델 레지스터/물리 모델 레지스터 쌍 사이에서 상기 매핑을 전환하도록 구성된 태그값 교환기를 더 구비한다. 상기 태그값 교환기는, 상기 프로세서 유닛이 특별한 종류의 데이터 처리 명령어를 실행할 때 그 태그 전환을 행하고, 이때의 데이터 처리 명령어는, 데이터 처리 장치가 실행할 수 있는 완전한 세트의 데이터 처리 명령어의 서브세트를 형성하는 하나(또는 그 이상)의 데이터 처리 명령어다. 구체적으로는, 상기 태그값 교환기가 이 태그 전환을 행하는 상기 소정의 데이터 처리 명령어란, 데이터 처리 명령어가 2개의 프로그램 모델 레지스터를 참조하고 2개의 물리 레지스터로부터 그들 2개의 프로그램 모델 레지스터에 매핑하는 선택이 데이터 처리 연산의 결과에 영향을 미치지 않는다는 점에서 볼 때 임의적인지를 판정할 수 있는 명령어다. 데이터 처리장치가 물리 레지스터 X, Y에 매핑될 프로그램 모델 레지스터A, B를 참조하는 경우의 예를 들기 위해서, 데이터 처리 명령어는 "소정의 데이터 처리 명령어"이다, 즉, 태그값 교환기는, 상기 매핑 A-X/B-Y 또는 상기 매핑 A-Y/B-X를 사용하는 경우 데이터 처리 연산의 결과에 영향을 미치지 않는다고 판정하면, 그 명령어가 실행될 때 태그 전환을 행할 것이다. 이 경우에는, 상기 소정의 데이터 처리 명령어에서 참조한 2개의 프로그램 모델 레지스터에 대해 상기 태그 전환을 행한다.
상기 물리 레지스터에 관한 태그 기억 유닛은, 프로그램 모델 레지스터와 물리 레지스터 사이에서 1대1 매핑을 제공하기 때문에 특히 간단하다. 따라서, 여기서는, 이를테면 "생존성 테이블"이나 "프리(free) 테이블"의 사용에 의해 레지스터의 상태를 추적하는 것에 관한 복잡함을 피한다. 또한,
프로그램 모델 레지스터와 물리 레지스터간의 1대1 매핑은, 상기 세트의 물리 레지스터는, 물리 레지스터의 수가 프로그램 모델 레지스터의 수를 초과하는 경우 (일반적으로 종래의 레지스터 리네이밍 기술과 관련된) 경우보다 적다는 것을 의미한다. 이는, 소형 시큐어 마이크로프로세서일 경우에 특히 이롭다.
그럼에도 불구하고, 특히 시큐리티 감지 소자의 맥락에서 일으키는 개선된 방어로 인해 일부의 레지스터 리네이밍을 행할 수 있는 이점은, 그런데도 다양한 레지스터 리네이밍을 실행할 수 있는 특별한 종류의 데이터 처리 명령어, 즉 상기 태그 기억 유닛에 있는 2개의 태그값을 간단히 교환하는 상술한 "태그 전환"의 식별에 의해 이루어졌다. 본 발명의 발명자에 의해 실현한 것은, 이러한 연산은, 2개의 프로그램 모델 레지스터를 참조하며, 그들 2개의 프로그램 모델 레지스터 중, 데이터 처리 연산에 의해 행해지고 있는 데이터 처리 연산의 결과에 영향을 미치지 않는 것에 물리 레지스터를 매핑하는 선택을 행하는, 데이터 처리 명령어에 대해 행해질 수 있었다는 것이다. 따라서, 이러한 데이터 처리 명령어에 대해서, 상기 태그값 교환기는 이 태그 전환을 행함으로써, 일부의 레지스터 리네이밍을 행하므로, 이 데이터 처리장치에 의해 실행되고 있는 데이터 처리 연산의 난독화를 개선한다.
일 실시예에서, 상기 소정의 데이터 처리 명령어의 실행은, 상기 2개의 프로그램 모델 레지스터 중 하나에 대해 기록동작을 포함하고,
상기 프로세서 유닛은, 상기 태그값 교환기가 상기 태그 전환을 행하는 동일 처리 사이클에서 상기 기록동작을 행하도록 구성되고,
상기 프로세서 유닛은, 상기 태그 전환 후에 상기 2개의 프로그램 모델 레지스터 중 상기 하나에 대해 매핑되는 타겟 물리 레지스터에 대해 상기 기록동작을 행하도록 구성된다.
이에 따라, 본 실시예에서, 상기 프로세서 유닛은, 상기 태그 전환이 발생하는 동일 처리 사이클에서 상기 소정의 데이터 처리 명령어의 기록동작을 행한다. 상기 태그 전환이 동시에 발생한다는 것을 알고 있기 때문에, 상기 프로세서 유닛은, 상기 태그 전환 후에 생기게 될 상기 프로그램 모델 레지스터의 물리 레지스터에의 매핑에 대해 상기 소정의 데이터 처리 명령어의 일부를 구성하는 상기 기록동작을 실행한다. 상기 소정의 데이터 처리 명령어의 기록동작이 실행되는 방식의 변형에 의해, 태그 전환이 실행되는 중에도 불구하고 프로그램 모델 레지스터와 물리 레지스터의 내용간의 관련성이 유지될 수 있다. 이는, 상기 태그 전환이 실행되는 소정의 데이터 처리 명령어 모두에 대해서는 불필요할 수도 있지만, 일부의 명령어, 예를 들면, 연속적인 메모리 어드레스의 내용을 연속적인 프로그램 모델 레지스터에 관한 연속적인 물리 레지스터에 로드하는 로드(load) 다중 명령어에 대해서, 이것은, 제1 동작을 위한 태그 전환이 역으로 다음 동작을 위한 태그 전환을 방해하지 않는 경우에, 그 연속적인 연산이 조정방식으로 실행될 수 있기 때문에, 바람직하다.
2개의 프로그램 모델 레지스터에 2개의 물리 레지스터를 매핑하는 선택이 상기 데이터 처리 연산의 결과에 영향을 미치지 않는 이유는 많을 수도 있지만, 일 실시예에서, 상기 소정의 데이터 처리 명령어의 실행에 의해 상기 2개의 프로그램 모델 레지스터에 매핑된 상기 2개의 물리 레지스터에 기억되는 값이 같게 된다. 따라서, 그 2개의 물리 레지스터에 동일한 값이 기억되어 있었기 때문에, 프로그램 모델 레지스터가 어느 물리 레지스터를 가리키는지에는 상관없다. 그 동일한 값이 2개의 물리 레지스터에 기억되는 것이 종료하는 이유는 많을 수도 있지만, 일 실시예에서, 상기 상기 소정의 데이터 처리 명령어는, 상기 2개의 물리 레지스터 중 첫 번째에 기억된 값을, 물론 상기 2개의 물리 레지스터에 기억되는 값이 동일하게 되는 상기 2개의 물리 레지스터 중 두 번째에 복사하도록 구성된다.
일 실시예에서, 상기 소정의 데이터 처리 명령어의 실행에 의해, 상기 2개의 프로그램 모델 레지스터에 매핑된 상기 2개의 물리 레지스터 각각에 기억되는 값이 새롭게 되고, 그 새로운 값은 상기 2개의 물리 레지스터 각각에 기억된 이전의 값에 독립적이다. 새로운 값이 상기 2개의 물리 레지스터 각각에 기억되고 있는 사실은, 상기 2개의 프로그램 모델 레지스터와 상기 2개의 물리 레지스터간에 매핑을 자유롭게 선택할 수 있다는 의미인데, 그 이유는 양쪽의 물리 레지스터의 오래된 내용이 간단히 겹쳐써지기 때문이다.
상기 2개의 물리 레지스터 각각에 기억되는 새로운 값은 여러 가지의 이유로 일어날 수 있었지만, 일 실시예에서, 상기 소정의 데이터 처리 명령어는 메모리에 기억된 적어도 하나의 값을 상기 2개의 물리 레지스터에 복사하도록 구성된다. 일 실시예에서, 상기 소정의 데이터 처리 명령어는, 메모리에 기억된 2개의 값을 상기 2개의 물리 레지스터에 복사하도록 구성된다. 메모리로부터 하나의 값이 물리 레지스터 양쪽에 기억되거나 2개의 값이 상기 2개의 물리 레지스터에 기억되는지의 여부, 즉 새로운 값이 물리 레지스터 양쪽에 기억되고 있다는 사실은, 매핑이 제한되지 않고 선택된다는 것을 의미한다.
본 기술은, 상기 소정의 데이터 처리 명령어에서 2개의 프로그램 모델 레지스터만을 참조하는 경우에 한정되지 않는다는 것을 알아야 하고, 일부의 실시예에서, 상기 소정의 데이터 처리 명령어는, 물리 레지스터 중 복수의 선택이 복수의 프로그램 모델 레지스터 중 상기 데이터 처리 연산의 결과에 영향을 미치지 않는 것에 매핑되는, 복수의 프로그램 모델 레지스터를 참조하고, 이때, 상기 복수는 2이상이다.
소정의 데이터 처리 명령어는, 단일 데이터 처리 사이클에서 실행될 수 있다는 점에서 비교적 간단할 수 있지만, 일부의 소정의 데이터 처리 명령어는 보다 복잡해지고 수 데이터 처리 사이클에 걸쳐 실행하기도 한다. 이러한 일 실시예에서, 상기 프로세서 유닛은 연속적인 데이터 처리 사이클에 걸쳐 상기 소정의 데이터 처리 명령어를 실행하도록 구성되고, 상기 태그값 교환기는 현재의 데이터 처리 사이클과 다음의 데이터 처리 사이클에서 각각 작동되는 상기 2개의 물리 레지스터를 위해 기억된 태그값에 대해 상기 태그 전환을 행하도록 구성된다. 따라서, 데이터 처리장치는, 이 데이터 처리 사이클과 다음 데이터 처리 사이클에서 이들 2개의 물리 레지스터가 작동되므로 데이터 장애가 일어날 위험없이 그 2개의 물리 레지스터와 관련하여 기억된 태그값에 대한 태그 전환을 행할 수 있다는 것이 공지되어 있다는 사실을 이용할 수 있다. 따라서, 상기 연속적인 데이터 처리 사이클에서 실행된 동작은, 실행되고 있는 태그 전환의 관점에서 링크될 수 있다. 이것은, 예를 들면, 단일의 기록동작과 태그 전환만이 임의의 주어진 데이터 처리 사이클에서 실행될 수 있을 때 이롭다.
일부의 실시예에서, 상기 태그값 교환기는, 상기 태그 기억 유닛에 있는 상기 2개의 태그값에 대해 상기 태그 전환을 행하도록 구성되고, 상기 2개의 태그값은 동일한 물리 레지스터를 위해 기억된다. 달리 말하면, 태그값과 물리 레지스터간에 1대1로 매핑을 하면, 이것은, 전환되는 상기 "2개의" 태그값이 실제로는 같은 값이다는 것을 의미한다. 이렇게 상기 태그 전환을 동일한 물리 레지스터에 대해 기억된 태그값에, 즉 동일한 태그값에 적용하는 것은 결국 영향을 미치지 않는다는 것을 알지만, 이 추가의 "더미" 레지스터 리네이밍 동작은, 데이터 처리장치에 초래하는 추가의 레벨의 난독화 때문에 이롭기도 하다.
상기 태그값 교환기는 상기와 같은 소정의 데이터 처리 명령어가 마주칠 때마다 상기 태그 전환을 행하도록 구성되지만, 일부의 실시예에서, 상기 데이터 처리장치는, 상기 태그값 교환기에 의해 상기 태그 전환의 성능을 선택적으로 억제하도록 구성된다. 시큐리티 감지 소자의 경우에는, 상기 태그 전환, 즉 레지스터 리네이밍 동작을 선택적으로 억제할 수 있는 능력은, 이것이 일어나는 리네이밍 프로세서에 관한 난독화에 대한 추가의 제어 때문에 이로울 수 있다.
상기 태그 전환의 선택적 억제는, 내부 자극이나 외부 자극에 따라 다양한 방식으로 제어되기도 하지만, 일 실시예에서, 상기 데이터 처리장치는 동적으로 상기 태그값 교환기에 의해 상기 태그 전환의 성능을 선택적으로 억제하도록 구성된다. 예를 들면, 상기 태그 전환은, 특정 기간마다, 특정한 작동모드 등에서 특정한 조건하에서 간단히 오프로 될 수 있었다. 따라서, 데이터 처리장치가 데이터 처리 연산을 실행하고 있는 상태에서 일이 진행되는 대로 상기 태그 전환의 성능의 선택된 억제를 허용함으로써, 시간의 경과에 따른 상기 소자의 소비전력을 감시하려고 하는 공격에 대해 추가의 레벨의 방어가 가능하게 된다.
일 실시예에서, 상기 데이터 처리장치는, 상기 태그값 교환기에 의해 랜덤하게(예를 들면, 의사랜덤하게) 상기와 같이 태그 전환의 성능을 선택적으로 억제하도록 구성된다. 그 억제를 위해 상기 랜덤하게 하는 것은, 통계적 관찰에 근거하여 실행된 것처럼 상기 데이터 처리연산에 대한 정보를 얻으려고 하는 공격에 대한 추가의 레벨의 방어 때문에 시큐리티 관점에서 본 기술을 이용하는 상기 소자의 맥락에서 특히 이롭다. 상기 억제의 랜덤화 근거는 상기 통계적 관찰을 중지시킨다.
또한, 상기 소정의 데이터 처리 명령어에서 특별한 종류의 레지스터를 참고할 때 상기 태그 전환의 성능을 억제하는 것도 바람직할 수 있다. 예를 들면, 일 실시예에서, 상기 데이터 처리장치는, 프로그램 카운터 레지스터를 포함하는 상기 태그값 교환기에 의해 상기 태그 전환의 성능을 선택적으로 억제하도록 구성된다. 다른 실시예에서, 상기 데이터 처리장치는, 스택 포인터 레지스터를 포함하는 상기 태그값 교환기에 의해 상기 태그 전환의 성능을 선택적으로 억제하도록 구성된다. 일부의 실시예에 의해 태그 전환은 프로그램 카운터나 스택 포인터 레지스터에 대해 일어날 수도 있지만, 이들 종류의 레지스터에 대한 태그 전환의 억제는, 상기 데이터 처리장치에 대해 구조적으로 간단하게 할 수 있다.
본 발명의 제 2 국면에서 본 데이터 처리장치는,
프로그램 모델 레지스터 수단을 참조하는 데이터 처리 명령어에 응답하여 데이터 처리 연산을 행하는 프로세서 수단;
상기 데이터 처리 연산된 데이터 값을 기억하는 물리 레지스터 수단;
상기 프로그램 모델 레지스터 수단 중 하나를 나타내는 태그값을 물리 레지스터 수단마다 기억하는 태그 기억 수단-상기 프로세서 수단은 상기 데이터 처리 연산을 행하기 위해서 상기 태그 기억 수단을 참조하고, 상기 태그 기억 수단은 상기 프로그램 모델 레지스터 수단과 상기 물리 레지스터 수단 사이에서 1대1 매핑을 제공함-; 및
태그 전환을 행하여 상기 태그 기억 수단에서 2개의 태그값을 교환하는 태그값 교환수단을 구비하고,
상기 태그값 교환수단은, 상기 프로세서 수단이 소정의 데이터 처리 명령어를 실행할 때 상기 태그 전환을 행하고,
상기 소정의 데이터 처리 명령어는, 2개의 물리 레지스터 중 한쪽의 선택이 상기 2개의 프로그램 모델 레지스터 중 상기 데이터 처리 연산의 결과에 영향을 미치지 않는 것에 매핑되는, 2개의 프로그램 모델 레지스터를 참조하고,
상기 태그값 교환수단은 상기 2개의 프로그램 모델 레지스터를 나타내는 상기 태그값에 대해 상기 태그 전환을 행한다.
본 발명의 제 3 국면에서 본 데이터 처리방법은,
프로그램 모델 레지스터를 참조하는 데이터 처리 명령어에 응답하여 데이터 처리 연산을 행하는 단계;
상기 데이터 처리 연산된 일 세트의 물리 레지스터에 데이터 값을 기억하는 단계;
하나의 태그 기억 유닛에서, 상기 프로그램 모델 레지스터 중 하나를 나타내는 태그값을 물리 레지스터마다 기억하고, 상기 데이터 처리 연산을 행하기 위해서 상기 태그 기억 유닛을 참조하고, 상기 태그 기억 유닛에서 상기 프로그램 모델 레지스터와 상기 물리 레지스터 사이에서 1대1 매핑을 제공하는 단계; 및
태그 전환을 행하여 상기 태그 기억 유닛에서 2개의 태그값을 교환하는 단계를 포함하고,
상기 태그 전환은, 소정의 데이터 처리 명령어를 실행할 때 행해지고,
상기 소정의 데이터 처리 명령어는, 2개의 물리 레지스터 중 한쪽의 선택이 상기 2개의 프로그램 모델 레지스터 중 상기 데이터 처리 연산의 결과에 영향을 미치지 않는 것에 매핑되는, 2개의 프로그램 모델 레지스터를 참조하고,
상기 태그 전환은, 상기 2개의 프로그램 모델 레지스터를 나타내는 상기 태그값에 대해 행해진다.
본 발명에 대해서, 아래의 첨부도면에 나타낸 것과 같은 본 발명의 실시예들을 참조하여 예시로만 더욱 설명하겠다:
도 1은 일 실시예에 따라 데이터 처리장치와 메모리를 개략적으로 나타낸 것이고,
도 2a는 일 실시예에서 상기 태그 기억 유닛의 내용의 초기화를 실행하는 모양을 하드웨어 기술 언어로 나타낸 것이고,
도 2b는 일 실시예에서 상기 태그 기억 유닛의 룩업(lookup) 과정을 실행하는 모양을 하드웨어 기술 언어로 개략적으로 나타낸 것이고,
도 3a 및 3b는 일 실시예에서 ADD 명령어와 MOV 명령어를 각각 구현하는 모양을 하드웨어 기술 언어로 개략적으로 나타낸 것이고,
도 4는 일 실시예에서 MOV명령어를 구현하도록 구성될 수 있는 구조적 성분의 일부를 개략적으로 나타낸 것이고,
도 5는 일 실시예에서 MOV명령어의 일례의 구현의 보다 상세한 내용을 개략적으로 나타낸 것이고,
도 6a는 일 실시예에서 태그 전환이 억제되는 경우의 2개의 특수한 형태의 레지스터의 하드웨어 설명언어의 예들로 개략적으로 나타낸 것이고,
도 6b는 일 실시예에서 LDM 명령어를 구현하는 하드웨어 기술 언어로 개략적으로 나타낸 것이고,
도 7a, 7b 및 7c는 일 실시예에서 일부의 특징을 구현하는데 사용되는 하드웨어 기술 언어의 예를 개략적으로 나타낸 것이고,
도 8은 일 실시예에서 취해진 일련의 단계를 개략적으로 나타낸 것이다.
도 1은 일 실시예에 따라 데이터 처리장치와 메모리를 개략적으로 나타낸 것이고,
도 2a는 일 실시예에서 상기 태그 기억 유닛의 내용의 초기화를 실행하는 모양을 하드웨어 기술 언어로 나타낸 것이고,
도 2b는 일 실시예에서 상기 태그 기억 유닛의 룩업(lookup) 과정을 실행하는 모양을 하드웨어 기술 언어로 개략적으로 나타낸 것이고,
도 3a 및 3b는 일 실시예에서 ADD 명령어와 MOV 명령어를 각각 구현하는 모양을 하드웨어 기술 언어로 개략적으로 나타낸 것이고,
도 4는 일 실시예에서 MOV명령어를 구현하도록 구성될 수 있는 구조적 성분의 일부를 개략적으로 나타낸 것이고,
도 5는 일 실시예에서 MOV명령어의 일례의 구현의 보다 상세한 내용을 개략적으로 나타낸 것이고,
도 6a는 일 실시예에서 태그 전환이 억제되는 경우의 2개의 특수한 형태의 레지스터의 하드웨어 설명언어의 예들로 개략적으로 나타낸 것이고,
도 6b는 일 실시예에서 LDM 명령어를 구현하는 하드웨어 기술 언어로 개략적으로 나타낸 것이고,
도 7a, 7b 및 7c는 일 실시예에서 일부의 특징을 구현하는데 사용되는 하드웨어 기술 언어의 예를 개략적으로 나타낸 것이고,
도 8은 일 실시예에서 취해진 일련의 단계를 개략적으로 나타낸 것이다.
도 1은 일 실시예에 따라 데이터 처리장치를 개략적으로 나타낸 것이다. 여기서, 데이터 처리장치(10)는 여기서 제시된 기술을 기재하기에 충분한 비교적 하이레벨 개요의 관점에서만 제시되었고, 당업자는 일반적으로 구현되는 상기와 같은 데이터 처리장치의 많은 다른 부품을 잘 알고 있지만, 설명 및 기재의 명료함을 기하기 위해서 여기서는 생략된다는 것을 알 것이다. 데이터 처리장치(10)는, 프로세서 유닛(12)을 구비하고, 이 유닛은 연속적인 데이터 처리 명령어에 응답하여 데이터 처리 연산을 행하도록 구성된다. 이들 데이터 처리 명령어는, 데이터 처리장치(10)가 로드 스토어 유닛(LSU)(16)에 의해 액세스하는 메모리(14)에 기억되는 것이 일반적이다. 상기 프로세서 유닛(12)은, 일 세트의 물리 레지스터(18)에 보유된 데이터값을 액세스(판독 및 기억)함으로써 데이터 처리 명령어에 응답하여 데이터 처리 연산을 실행한다. 상기 프로세서 유닛(12)은 그 물리 레지스터를 직접 참조하지 않고, 오히려 가상의 세트의 프로그램 모델 레지스터를 참조한다. 상기 데이터 처리 명령어는, 이들 프로그램 모델 레지스터를 참조하여 기록된다. 상기 물리 레지스터와 상기 프로그램 모델 레지스터간의 관련성은, 상기 프로그램 모델 레지스터 중 하나를 나타내는 각 물리 레지스터에 관한 태그값을 보유하는 태그 기억 유닛(20)의 내용에 의해 규정되어 있다. 상기 물리 레지스터와 상기 프로그램 모델 레지스터 사이에서의 매핑은 1대1이다, 즉 각 물리 레지스터를 하나의 프로그램 모델 레지스터에서만 참조하고, 각 프로그램 모델 레지스터는 하나의 물리 레지스터만을 참조한다. 상기 프로그램 모델 레지스터와 물리 레지스터간의 변환은, 상기 태그 기억 유닛(20)에서 룩업동작을 행하여 물리 레지스터가 주어진 프로그램 모델 레지스터와 관련되어 있는지를 판정하는 룩업 유닛(22)에 의해 상기 프로세서 유닛(12)에 대해 관리된다. 따라서, 프로세서 유닛(12)은, 프로그램 모델 레지스터를 나타내는 값을 상기 룩업 유닛(22)에 전달하고나서, 그 프로그램 모델 레지스터에 어떤 물리 레지스터가 대응하는지를 (예를 들면, 인덱스에 의해) 나타낼 수 있다. 이하, 도 2b를 참조하여 그 룩업 과정을 보다 상세히 설명한다. 그 후, 상기 프로세서 유닛(12)은, 현재 액세스하기를 원하는 프로그램 모델 레지스터에 대응하는 적절한 물리 레지스터로부터 판독하거나 이 물리 레지스터에 기록할 수 있다.
또한, 데이터 처리장치(10)는, 태그 전환을 행하여 태그 기억 유닛(20)에 있는 2개의 태그값을 교환하도록 구성된 태그 교환 유닛(24)("태그 값 교환기")을 구비한다. 상기 태그 교환기(24)는, 제어 유닛(26)의 제어하에서, 이 태그 전환이 일어나야 하는 때와 이에 대한 태그값을 판정하도록 작동된다. 특히, 상기 제어 유닛(26)은, 상기 태그 교환 유닛(24)에 대해 상기 프로세서 유닛(12)이 특별한 종류의 데이터 처리 명령어를 실행할 때 상기 태그 전환의 실행을 지시한다. 상기 제어 유닛(26)에 대한 이 특별한 종류의 데이터 처리 명령어의 식별은, LSU(16)에서 제어 유닛(26)까지의 경로로 도 1에 개략적으로 도시되어 있지만, 이러한 정보는, 다수의 소스로부터, 예를 들면 로드된 명령어를 상기 LSU로부터 수신하여 데이터 처리장치내에서 사용하기 위한 적절한 제어신호로 디코딩하는 디코드 유닛으로부터 나올 수 있다는 것을 알 것이다. 태그 전환을 실행하는 데이터 처리 명령어는, 2개의 프로그램 모델 레지스터를 참조하고, 2개의 프로그램 모델 레지스터 중 상기 데이터 처리장치의 데이터 처리 연산의 결과에 영향을 미치지 않는 것에 2개의 물리 레지스터를 매핑하는 선택을 행하는 것이라고 인식되고 있는, 명령어들이다. 이들 명령어의 예들에 대해서는 아래에서 보다 상세히 설명하겠다.
추가로, 상기 제어 유닛(26)은, 상기 특별한 종류의 데이터 처리 명령어 중 하나가 프로세서 유닛(12)에 의해 실행되고 있는 경우에도 상기 태그값 교환기(24)에 의해 태그 전환의 성능을 억제할 수 있다. 이러한 태그 전환의 성능에 대한 제어는 시큐리티 감지 데이터 처리장치의 경우에는 특히 이로운데, 그 이유는, 데이터 처리장치에 추가의 제어 파라미터를 주는 것에 의해 그 전력신호가 변경될 수 있고 그 물리 레지스터(18)의 사용이 더욱 위장될 수 있다. 상기 제어 유닛(26)은, 예를 들어, 데이터 처리장치가 본 기술에서 제공한 개선된 시큐리티를 필요로 하지 않는 특정한 모드의 동작에 있을 때 여러 가지의 방식으로 상기 태그 전환의 성능을 억제할 수 있다. 데이터 처리장치(10)는, 인에이블 신호를 상기 태그 교환 유닛(24)에 제공하도록 구성되어 그 인에이블 신호가 제공되는 경우에만 상기 태그 전환을 행하는 의사 난수 발생기(28)를 더 구비할 수 있다. 따라서, 상기 태그 전환은, 본 기술을 적용한 소정의 형태의 데이터 처리 명령어가 프로세서 유닛(12)에 의해 실행될 때 상기 태그 유닛(20)에 의사 랜덤하게 적용되어도 된다. 이는, 데이터 처리장치에서 실행하고 있는 데이터 처리 연산을 위장하는데 더욱 도움이 된다.
상기 프로그램 모델 레지스터와 상기 물리 레지스터간의 매핑은 1대1이다. 이러한 설정을 초기화하기 위해서, 도 2a에서 하드웨어 기술 언어의 관점에서 도시된 INITIALIZE 함수로 나타낸 것과 같은 과정을 실행하여도 된다. 이 함수에 의해 각 엔트리의 인덱스(0부터 물리 레지스터NUM_REGS의 수까지)에 직접 대응한 태그 유닛(20)의 내용으로 된다.
룩업 유닛(22)에서 실행한 룩업과정은, 도 2b에 하드웨어 기술 언어의 관점에서 도시된 상기 함수 LOOKUP에 의해 나타내어져 있다. 이 함수는, 상기 매핑된 물리 레지스터가 보여진 프로그램 모델 레지스터의 이름(즉, 수)RegName를 전달받는다. 이 함수는 태그 유닛(20)의 인덱스들에 의해 순환하고 RegName이 발견되는 인덱스에 복귀한다. 따라서, 상기 프로세서 유닛(12)은, LOOKUP함수에 의해 상기 프로그램 모델 레지스터를 참조하여 상기 물리 레지스터(18)의 내용에 관한 데이터 처리 연산을 행할 수 있다.
도 3a는 태그 전환이 행해진 데이터 처리 명령어들 중 하나가 아닌 데이터 처리 명령어의 구현에 상기 LOOKUP함수가 포함되는 모양을 나타낸다. 본 예시에서는, ADD 명령어를 생각해본다. 본 설명에서, 주어진 명령어의 예는 영국 캠브리지 ARM사에서 제공한 ARM 명령어 세트의 일부를 형성하지만, 본 발명은 이 명령어에 한정되지 않는다. 프로그램 모델 구문에서는 레지스터 Rd, Rn 및 Rm을 참조하고, 이때의 구문은 레지스터 Rn, Rm의 "내용"이 함께 가산되어 레지스터 Rd에 기억된 것이다. 따라서, 상기 LOOKUP함수를 사용하여 Rn 및 Rm을 태그 유닛(20)을 참조하여 주어진 물리 레지스터에 있는 대응한 인덱스들로 변환하고 나서, 물리 레지스터(18)를 액세스하는 함수REG[index]에서 사용한다. 이렇게 하여, 프로그램 모델 레지스터Rn에 대응한 물리 레지스터의 내용은, 프로그램 모델 레지스터Rm에 대응한 물리 레지스터의 내용에 가산되고, 이 합은 프로그램 모델 레지스터Rd에 대응한 물리 레지스터에 기억된다. 이 ADD 명령어의 구현에 있어서 프로그램 모델 레지스터와 물리 모델 레지스터 사이의 할당시에 융통성이 없으므로, 본 기술의 태그 전환이 적용되는 소정의 데이터 처리 명령어 중 하나를 형성하지 않는다. 이때, 이러한 명령어에 대해 어떠한 레지스터 리네이밍도 행하지 않는 것은, Rd에의 기록이, Rd에 의해 태깅 방식에서 새로운 할당을 거쳐 새로운 물리 레지스터에 할당되는 것이 일반적인 종래의 리네이밍 방식과 대조된다. 그러나, 새로운 물리 레지스터의 할당은, (저비용 저전력용 데이터 처리장치를 제공하는 목표로) 여기서는 행하지 않는 추가의 하드웨어와 복잡함을 필요로 한다.
이와 대조하여, 상기 태그 전환은, 하드웨어 기술 언어로 도 3b에 나타낸 것과 같이 MOV 명령어의 경우에 사용될 수 있다. 본 예시에서는, 프로그램 모델 레지스터Rn에 관한 물리 레지스터의 내용을, 상기 프로그램 모델 레지스터Rd에 관한 물리 레지스터에 복사한다. Rd와 Rn(또는 보다 정확하게는 그들의 대응한 물리 레지스터)가 이 연산을 완료한 후 동일한 값을 포함하기 때문에, 이 명령어는 본 태그 전환의 기술이 적용되는 소정의 데이터 처리 명령어 중 하나로서 식별된다. 따라서, 도 3b에 나타낸 MOV명령어의 구현(세 개의 라인 모두는 단일 사이클에서 완료한다)은, 프로그램 모델 레지스터Rn을 검색하여서 찾아진 물리 레지스터의 내용을, 프로그램 모델 레지스터Rd를 검색하여서 찾아진 물리 레지스터에 각각 복사한다. 동시에, Rn 및 Rd에 대응한 태그 유닛(20)에서의 엔트리들은, 상기 태그 교환 유닛(24)에 의해 전환된다. 이것은 이 명령어를 실행하였던 데이터 처리장치에 의해 행해지는 데이터 처리 연산의 결과에 인지할 수 있는 영향을 주지 못하지만, 그 태그의 스와핑은, 데이터 처리장치에 의해 데이터 처리 연산이 실행중인 것을 외부 공격자로부터 숨기려고 할 때 이롭다.
도 4는 도 3b에 대해 기재된 MOV 명령어의 단순한 "서킷 스타일(circuit-style)" 구현을 개략적으로 나타낸 것이다. 설명을 간략을 기하기 위해서, 2개의 물리 레지스터(40, 42)만이, 그들의 각각 연관된 태그 유닛 엔트리(44, 46)와 함께 도시되어 있다. 따라서, "1"과 "2"만을 말하기도 하는 이 간략화된 예시에서 프로그램 모델 레지스터가 참조할 수 있는 물리 레지스터 2개만이 가능하다. 소스 레지스터Rn은, 제1 또는 제2 레지스터(즉, 레지스터 40 또는 레지스터 42)가 상기 프로그램 모델 레지스터에 의해 매핑되는지의 여부를 판정하는 비교기(48,50)에 의해 태그 엔트리(44,46)의 내용과 비교된다. 상기 비교기(48, 50)의 출력은 (신호를 적절하게 포맷할 수 있는 일부의 종류의 변환 로직(52)을 거쳐) 멀티플렉서(54)에 조정 입력을 제공한다. 이렇게 하여 선택된 레지스터 40과 42 중 한쪽에 기억된 값은, 멀티플렉서(54)를 거쳐 처리 로직(56)에 전달된다. 이러한 MOV 명령어의 간단한 예시에서는, 상기 내용값을 간단히 복사중이고, 실제로 이 값에 대한 처리를 처리 로직(56)에서 행하는 것이 불필요하다. 그 후, 이 값은, 물리 레지스터(40,42)에 다시 전달된다. 레지스터 40과 42에의 기록 인에이블 신호는, 이 연산에 의해 기록될 레지스터 중 하나를 선택한다. 사기 프로그램 모델 수신지 레지스터Rd는, 비교기(58,60)에 의해 태그 엔트리(44,46)의 내용에 대해 비교되어 물리 레지스터(40,42)가 프로그램 모델 레지스터Rd에 대응하는지를 판정한다. 따라서, 상기 물리 레지스터40과 42 중 하나로부터 판독된 내용 값은 그에 따라서 물리 레지스터 40과 42 중 하나에 기록된다. 상기 MOV 명령어의 보다 일반적인 사용시에 판독된(즉, Rd=Rn) 동일한 물리 레지스터에 상기 내용 값이 기록되는 것이 논리적으로 가능하지만, 한쪽의 물리 레지스터(예를 들면, 40)의 내용은 다른 쪽의 물리 레지스터(예를 들면, 42)에 기록된다. 그러나, 시큐리티 감지 데이터 처리장치의 맥락에서, 물리 레지스터의 내용이 다시 자신에게 이동하는 것과 같은 더미 명령어의 사용은, 데이터 처리 연산을 숨기는 여러 가지 기술 중 일부가 실행중이기 때문에 실제로 일어나기도 한다.
도 5는 본 기술을 MOV 명령어에 적용하는 특정한 예를 개략적으로 나타낸 것이다. 여기서는, 프로그램 모델 레지스터R6에 의해 매핑된 물리 레지스터의 내용을, 상기 프로그램 모델 레지스터R4에 의해 매핑된 물리 레지스터에 기억된 값과 같게 해야 한다. 따라서, 도시된 하드웨어 기술 언어는, Rd=R6 및 Rn=R4인 경우 도 3b에 나타낸 것에 직접 대응한다. 도 5의 하부 절반은, 본 MOV 명령어의 실행 전과 후의 태그와 레지스터 엔트리들의 예시 세트의 내용을 나타낸다. 따라서, 도시된 예에서, MOV R6,R4는 REG[0]의 내용을 REG[2]에 복사시킨다. 따라서, Ox1234는 OxBEEF에 의해 겹쳐써진다. 추가로, 이 MOV명령어는, 2개의 물리 레지스터 중 어느 하나의 선택(즉, REG[0] 또는 REG[2])이, 이들 프로그램 모델 레지스터 중 데이터 처리 연산의 결과에 영향을 미치지 않는 것에 의해 매핑되는, 2개의 프로그램 모델 레지스터(즉, R6 및 R4)를 참조하기 때문에, 상기 태그값 교환기는 R6 및 R4에 대응한 태그 엔트리들을 스왑한다. 따라서, REG[0]에 있는 값은 그대로 이지만, R4에 관한 것으로부터 R6에 관한 것으로 리네임되고, R6을 대상으로 한 기록 값은 실제로 지금 R4에 매핑된 것에 놓여 있다. 따라서, 그 이후의 연산은 R6의 인덱스 0과 R4의 인덱스 2를 사용할 것이다.
원리상, 상술한 레지스터 리네이밍(즉, 태그 스와핑)은, 2개의 프로그램 모델 레지스터를 참조하고 2개의 물리 레지스터 중 어느 하나의 선택이 그 2개의 프로그램 모델 레지스터 중 비어 있는 것에 매핑되는, 임의의 명령어에 적용될 수 있지만, 도 6a는 프로그램 카운터를 보유하는 레지스터나 스택 포인터를 보유하는 레지스터 중 한쪽을 참조하는 경우에 상기 태그 전환이 억제되는 구현을 나타낸 것이다. 따라서, 도 6a의 첫 번째 예시에서는, 상기 Rn에 의해 매핑된 물리 레지스터의 내용을, 어떠한 태그 전환도 일어나지 않고 프로그램 카운터 레지스터에 복사하고, 도 6a의 두 번째 예시에서는, 스택 포인터를, 어떠한 태그 전환도 일어나지 않고 프로그램 모델 레지스터Rd에 의해 매핑된 물리 레지스터에 복사한다. 이들 특별한 레지스터의 태그 전환을 억제하는 것은, 프로그램 카운터와 스택 포인터가 데이터 처리장치의 연산 전체에 걸쳐 효과적으로 고정된 매핑을 가지므로 상기 데이터 처리장치의 구조적 특징으로 보다 쉽게 고정 배선될 수 있기 때문에 상기 데이터 처리장치의 구성을 간단하게 한다.
레지스터를 (MOV명령어의 경우 도 3b, 도 4 및 도 5에 대해 상술한 것처럼) 복제하는 경우와 아울러, 데이터 처리 명령어가 2개의 프로그램 모델 레지스터를 참조하고 2개의 물리 레지스터 중 어느 하나의 선택이 그들 2개의 프로그램 모델 레지스터 중 데이터 처리 연산의 결과에 영향을 미치지 않는 것에 매핑되는 그 밖의 경우도 존재한다. 이러한 일례는 도 6b에 나타낸 로드 다중(LDM) 명령어가 있다. 도 6b의 상기 LDM 명령어는, 타겟 레지스터Rt1, Rt2, Rt3에 메모리 값들이 복사된 것을 참조하는 시작 메모리 어드레스로서의 상기 프로그램 모델 레지스터Rn에 의해 매핑된 물리 레지스터의 내용을 사용한다. 이것은, Rt1에 복사되는 메모리 어드레스에서의 값Rn, Rt2에 복사되는 메모리 어드레스에서의 값 Rn+4, 및 Rt3에 복사되는 메모리 어드레스에서의 값 Rn+8로서 구현되는 것이 일반적이다. 세 개의 타겟 레지스터Rt1, Rt2, Rt3 모두의 새로운 값이 메모리로부터 그들에 기억된다는 사실에 의해, 대응한 3개의 물리 레지스터를 이들 3개의 프로그램 모델 레지스터에 매핑하는 방법의 선택은, 데이터 처리 연산의 결과에 영향을 미치지 않는다는 의미에서 임의적이다. 따라서, 여기서 인식한 것은, 참조되는 임의의 2개의 레지스터의 이미 로딩되어 있지 않았던 태그들이 교환되어도 된다는 것이다. 상기 태그 교환기는, 사이클마다 하나의 태그 전환을 행하도록 구성됨에 따라서, 참조된 임의의 2개의 레지스터 중 이미 로딩되어 있지 않았던 태그들은 사이클 단위로 교환되어도 된다. 도 6b에 나타낸 구현은, 상기 태그들과, 주어진 사이클에서 현재 로딩중인 레지스터 및 다음 사이클에서 로딩될 레지스터를 교환한다. 따라서, 이후의 사이클에서 Rt1, 그 다음에 Rt2, 그 다음에 Rt3를 로딩하는 대신에, 도 6b에 도시된 것처럼, 첫 번째 Rt1을 로딩하고, Rt2와 Rt1의 태그들을 스왑한다. 그리고, 다음 사이클에서는, Rt3을 로딩하고, Rt2와 Rt3의 태그들을 스왑한다. 마지막 사이클에서는 Rt3을 로딩한다. Rt3의 새로운 태그( 및 스토리지)가 Rt1의 과거의 태그( 및 스토리지)이고; Rt2의 새로운 태그( 및 스토리지)가 Rt3의 과거의 태그( 및 스토리지)이며; Rt1의 새로운 태그( 및 스토리지)가 Rt2의 과거의 태그( 및 스토리지)인 것이 순수한 효과다.
본 기술을 적용하는 수 사이클에 걸쳐 실행하는 또 다른 예의 명령어는, 롱(long) 곱셈 명령어가 있다. 상기 LDM 명령어를 참조하여 상술한 사이클당 태그 스왑핑의 동일 단계형 구현은, 상기 롱 곱셈 명령어에 적용될 수 있다.
상술한 것처럼, 사이클마다 하나의 태그 교환만을 필요로 하고, 이것은 도 7a에 나타낸 하드웨어 기술 언어에 의해 나타낸 것처럼 간단히 구현될 수 있고, 이때 alpha와 beta는 2개의 구조적 레지스터가 교환되게 하는 LOOKUP들이다.
물리 레지스터에의 기록은, 상기 참조한 프로그램 모델 레지스터Rd와 일치하는 태그 엔트리와 같은 인덱스를 갖는 물리 레지스터 REG에 기록될 값("값")을 기록하는 도 7b에 나타낸 것과 같은 하드웨어에 의해 구현될 수 있다. 반대로, 물리 레지스터에 대해 구현되는 판독 동작은, 스테이트먼트 "TAG[x]==Rn" 중 하나만이 TRUE로서 평가하는 경우의 도 7c에 나타낸 하드웨어를 거쳐 구현될 수 있고, 이것은 TAG[x] 엔트리가 Rn과 일치한 물리 레지스터 REG[x]의 내용을 출력 "값"으로서 발생하기 위해서 32비트 선택 마스크(즉, 32개의 연속적인 1)를 발생한다.
도 8은 일 실시예에서 들 수도 있는 일련의 단계를 개략적으로 나타낸 것이다. 단계100에서는, 상기 연속적인 데이터 처리 명령어에서 실행될 다음 명령어를, 데이터 처리장치내에서 디코딩한다. 단계102에서는, 프로그램 모델 레지스터와 물리 레지스터 사이에서 1대1로 매핑하고, 상기 명령어가 2개의 프로그램 모델 레지스터를 참조하지만 상기 2개의 물리 레지스터와 상기 2개의 프로그램 모델 레지스터 사이의 상기 태그 매핑이 데이터 처리 연산의 결과에 영향을 미치지 않는다는 본 문맥에서와 같이, 상기 명령어가 2개의 물리 레지스터에 대한 태그 매핑의 자유로운 선택을 허용하는 명령어의 서브세트 중 하나인지를 판정한다. 이 명령어가 그러한 명령어가 아닐 경우, 단계104에 진행되어 어떠한 리매핑도 행해지지 않고 정상적으로 상기 명령어를 실행하고 나서 다음 명령어를 디코딩하기 위해 단계100에 복귀한다. 그러나, 단계102에서 상기 디코딩된 명령어가, 상기 태그 매핑의 자유로운 선택을 허용하는 소정 세트의 데이터 처리 명령어 중 하나라고 판정되면, 단계106으로 진행된다. 여기서는, 의사 랜덤하게 포지티브 또는 네가티브 응답을 발생하는 데이터 처리장치내에서 의사 랜덤 소스를 참조한다. 이 경우에 상기 의사 랜덤 소스의 결과가 네가티브이면, 단계104로 복귀하여, 그 명령어가 어떠한 리매핑도 없이 정상적으로 실행된다. 그러나, 의사 랜덤 테스트의 결과가 포지티브이면, 단계108에 진행되어, 그 명령어를 실행하지만 현재의 프로그램 모델 레지스터의 미래의 물리 레지스터 매핑 타겟에의 기록하고, 단계110에서는 2개의 물리 레지스터를 매핑하는 태그값을 상기 태그 유닛에서 스왑한다. 그 후, 다음 명령어를 디코딩하기 위해서 단계100에 복귀한다. 이때, 여기서는 단계108과 단계110을 별도의 단계로서 설명하였지만, 이들 단계는 단일 처리 사이클에서 발생한다, 즉 효과적으로 동시에 일어난다.
이때, 현재의 프로그램 레지스터의 미래의 물리 레지스터 매핑 타겟에의 기록(단계108)은 일부의 명령어의 최적화된 구현에 있어서 빠뜨릴 수 있는 액션이다. 예를 들면, 도 5에 대해 상술한 MOV명령어를 구현하는 경우에, 상기 "현재의 프로그램 레지스터의 미래의 물리 레지스터 매핑 타겟에의 기록"은, OxBEEF를 REG[0](즉, R6의 미래의 물리 레지스터 매핑 타겟)에 기록하여서 구현될 수 있었다. 그렇지만, 이 물리 레지스터가 MOV명령어에 소스 내용을 제공한 것이 알려져 있으므로, 이 단계는, 최적화로서 빠뜨릴 수 있다. 이 경우에, 행해진 기록동작만이 OxBEEF의 REG[2]에의 기록이다(REG[LOOKUP(6)]<=REG[LOOKUP(4)]의 실현).
여기에서는 본 발명의 특정 실시예들을 설명하였지만, 본 발명은 이에 한정되지 않고, 본 발명의 범위내에서 여러 가지로 변경 및 추가하여도 된다는 것이 자명하다. 예를 들면, 본 발명의 범위를 벗어나지 않고, 이하의 종속항의 특징들과 독립항의 특징을 여러 가지로 조합할 수 있다.
Claims (17)
- 프로그램 모델 레지스터를 참조하는 데이터 처리 명령어에 응답하여 데이터 처리 연산을 행하도록 구성된 프로세서 유닛;
상기 데이터 처리 연산된 데이터 값을 기억하도록 구성된 일 세트의 물리 레지스터;
상기 프로그램 모델 레지스터 중 하나를 나타내는 태그값을 물리 레지스터마다 기억하도록 구성된 태그 기억 유닛-상기 프로세서 유닛은 상기 데이터 처리 연산을 행하기 위해서 상기 태그 기억 유닛을 참조하도록 구성되고, 상기 태그 기억 유닛은 상기 프로그램 모델 레지스터와 상기 물리 레지스터 사이에서 1대1 매핑을 제공함-; 및
태그 전환을 행하여 상기 태그 기억 유닛에서 2개의 태그값을 교환하도록 구성된 태그값 교환기를 구비하고,
상기 태그값 교환기는, 상기 프로세서 유닛이 소정의 데이터 처리 명령어를 실행할 때 상기 태그 전환을 행하도록 구성되고,
상기 소정의 데이터 처리 명령어는, 2개의 물리 레지스터 중 한쪽의 선택이 상기 2개의 프로그램 모델 레지스터 중 상기 데이터 처리 연산의 결과에 영향을 미치지 않는 것에 매핑되는, 2개의 프로그램 모델 레지스터를 참조하고,
상기 태그값 교환기는 상기 2개의 프로그램 모델 레지스터를 나타내는 상기 태그값에 대해 상기 태그 전환을 행하도록 구성된, 데이터 처리장치.
- 제 1 항에 있어서,
상기 소정의 데이터 처리 명령어의 실행은, 상기 2개의 프로그램 모델 레지스터 중 하나에 대해 기록동작을 포함하고,
상기 프로세서 유닛은, 상기 태그값 교환기가 상기 태그 전환을 행하는 동일 처리 사이클에서 상기 기록동작을 행하도록 구성되고,
상기 프로세서 유닛은, 상기 태그 전환 후에 상기 2개의 프로그램 모델 레지스터 중 상기 하나에 대해 매핑되는 타겟 물리 레지스터에 대해 상기 기록동작을 행하도록 구성된, 데이터 처리장치.
- 제 1 항 또는 제 2 항에 있어서,
상기 소정의 데이터 처리 명령어의 실행에 의해, 상기 2개의 프로그램 모델 레지스터에 매핑된 상기 2개의 물리 레지스터에 기억되는 값이 같게 되는, 데이터 처리장치.
- 제 3 항에 있어서,
상기 상기 소정의 데이터 처리 명령어는, 상기 2개의 물리 레지스터 중 첫 번째에 기억된 값을, 상기 2개의 물리 레지스터 중 두 번째에 복사하도록 구성된, 데이터 처리장치.
- 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 소정의 데이터 처리 명령어의 실행에 의해, 상기 2개의 프로그램 모델 레지스터에 매핑된 상기 2개의 물리 레지스터 각각에 기억되는 값이 새롭게 되고, 그 새로운 값은 상기 2개의 물리 레지스터 각각에 기억된 이전의 값에 독립적인, 데이터 처리장치.
- 제 5 항에 있어서,
상기 소정의 데이터 처리 명령어는, 메모리에 기억된 적어도 하나의 값을 상기 2개의 물리 레지스터에 복사하도록 구성된, 데이터 처리장치.
- 제 5 항에 있어서,
상기 소정의 데이터 처리 명령어는, 메모리에 기억된 2개의 값을 상기 2개의 물리 레지스터에 복사하도록 구성된, 데이터 처리장치.
- 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
상기 소정의 데이터 처리 명령어는, 물리 레지스터 중 복수의 선택이 복수의 프로그램 모델 레지스터 중 상기 데이터 처리 연산의 결과에 영향을 미치지 않는 것에 매핑되는, 복수의 프로그램 모델 레지스터를 참조하고, 상기 복수는 2이상인, 데이터 처리장치.
- 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
상기 프로세서 유닛은 연속적인 데이터 처리 사이클에 걸쳐 상기 소정의 데이터 처리 명령어를 실행하도록 구성되고, 상기 태그값 교환기는 현재의 데이터 처리 사이클과 다음의 데이터 처리 사이클에서 각각 작동되는 상기 2개의 물리 레지스터를 위해 기억된 태그값에 대해 상기 태그 전환을 행하도록 구성된, 데이터 처리장치.
- 제 1 항 내지 제 9 항 중 어느 한 항에 있어서,
상기 태그값 교환기는, 상기 태그 기억 유닛에 있는 상기 2개의 태그값에 대해 상기 태그 전환을 행하도록 구성되고, 상기 2개의 태그값은 동일한 물리 레지스터를 위해 기억된, 데이터 처리장치.
- 제 1 항 내지 제 10 항 중 어느 한 항에 있어서,
상기 데이터 처리장치는, 상기 태그값 교환기에 의해 상기 태그 전환의 성능을 선택적으로 억제하도록 구성된, 데이터 처리장치.
- 제 10 항에 있어서,
상기 데이터 처리장치는, 동적으로 상기 태그값 교환기에 의해 상기 태그 전환의 성능을 선택적으로 억제하도록 구성된, 데이터 처리장치.
- 제 10 항에 있어서,
상기 데이터 처리장치는, 상기 태그값 교환기에 의해 의사랜덤하게 상기 태그 전환의 성능을 선택적으로 억제하도록 구성된, 데이터 처리장치.
- 제 10 항에 있어서,
상기 데이터 처리장치는, 프로그램 카운터 레지스터를 포함하는 상기 태그값 교환기에 의해 상기 태그 전환의 성능을 선택적으로 억제하도록 구성된, 데이터 처리장치.
- 제 10 항에 있어서,
상기 데이터 처리장치는, 스택 포인터 레지스터를 포함하는 상기 태그값 교환기에 의해 상기 태그 전환의 성능을 선택적으로 억제하도록 구성된, 데이터 처리장치.
- 상기 데이터 처리 연산된 데이터 값을 기억하는 물리 레지스터 수단;
상기 프로그램 모델 레지스터 수단 중 하나를 나타내는 태그값을 물리 레지스터 수단마다 기억하는 태그 기억 수단-상기 프로세서 수단은 상기 데이터 처리 연산을 행하기 위해서 상기 태그 기억 수단을 참조하고, 상기 태그 기억 수단은 상기 프로그램 모델 레지스터 수단과 상기 물리 레지스터 수단 사이에서 1대1 매핑을 제공함-; 및
태그 전환을 행하여 상기 태그 기억 수단에서 2개의 태그값을 교환하는 태그값 교환수단을 구비하고,
상기 태그값 교환 수단은, 상기 프로세서 수단이 소정의 데이터 처리 명령어를 실행할 때 상기 태그 전환을 행하고,
상기 소정의 데이터 처리 명령어는, 2개의 물리 레지스터 중 한쪽의 선택이 상기 2개의 프로그램 모델 레지스터 중 상기 데이터 처리 연산의 결과에 영향을 미치지 않는 것에 매핑되는, 2개의 프로그램 모델 레지스터를 참조하고,
상기 태그값 교환수단은 상기 2개의 프로그램 모델 레지스터를 나타내는 상기 태그값에 대해 상기 태그 전환을 행하는, 데이터 처리장치.
- 프로그램 모델 레지스터를 참조하는 데이터 처리 명령어에 응답하여 데이터 처리 연산을 행하는 단계;
상기 데이터 처리 연산된 일 세트의 물리 레지스터에 데이터 값을 기억하는 단계;
하나의 태그 기억 유닛에서, 상기 프로그램 모델 레지스터 중 하나를 나타내는 태그값을 물리 레지스터마다 기억하고, 상기 데이터 처리 연산을 행하기 위해서 상기 태그 기억 유닛을 참조하고, 상기 태그 기억 유닛에서 상기 프로그램 모델 레지스터와 상기 물리 레지스터 사이에서 1대1 매핑을 제공하는 단계; 및
태그 전환을 행하여 상기 태그 기억 유닛에서 2개의 태그값을 교환하는 단계를 포함하고,
상기 태그 전환은, 소정의 데이터 처리 명령어를 실행할 때 행해지고,
상기 소정의 데이터 처리 명령어는, 2개의 물리 레지스터 중 한쪽의 선택이 상기 2개의 프로그램 모델 레지스터 중 상기 데이터 처리 연산의 결과에 영향을 미치지 않는 것에 매핑되는, 2개의 프로그램 모델 레지스터를 참조하고,
상기 태그 전환은, 상기 2개의 프로그램 모델 레지스터를 나타내는 상기 태그값에 대해 행해지는, 데이터 처리방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/309,739 US8914616B2 (en) | 2011-12-02 | 2011-12-02 | Exchanging physical to logical register mapping for obfuscation purpose when instruction of no operational impact is executed |
US13/309,739 | 2011-12-02 | ||
PCT/GB2012/052455 WO2013079911A1 (en) | 2011-12-02 | 2012-10-04 | A register renaming data processing apparatus and method for performing register renaming |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140099255A true KR20140099255A (ko) | 2014-08-11 |
KR102067413B1 KR102067413B1 (ko) | 2020-01-17 |
Family
ID=47073473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147014901A KR102067413B1 (ko) | 2011-12-02 | 2012-10-04 | 레지스터 리네이밍 데이터 처리장치 및 레지스터 리네이밍 실행방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8914616B2 (ko) |
EP (1) | EP2786518B1 (ko) |
KR (1) | KR102067413B1 (ko) |
CN (1) | CN103988462B (ko) |
WO (1) | WO2013079911A1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108140100B (zh) * | 2015-10-28 | 2021-10-08 | 赫尔实验室有限公司 | 维护对象的安全标签和引用计数的系统、方法和介质 |
US10789358B2 (en) | 2015-12-17 | 2020-09-29 | Cryptography Research, Inc. | Enhancements to improve side channel resistance |
CN110297662B (zh) * | 2019-07-04 | 2021-11-30 | 中昊芯英(杭州)科技有限公司 | 指令乱序执行的方法、处理器及电子设备 |
CN111221575A (zh) * | 2019-12-30 | 2020-06-02 | 核芯互联科技(青岛)有限公司 | 一种乱序高性能处理器的寄存器重命名方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6560671B1 (en) * | 2000-09-11 | 2003-05-06 | Intel Corporation | Method and apparatus for accelerating exchange or swap instructions using a register alias table (RAT) and content addressable memory (CAM) with logical register numbers as input addresses |
KR100977687B1 (ko) * | 2005-03-03 | 2010-08-24 | 퀄컴 인코포레이티드 | 기지의 프로세서 상태에 기초하여 cam 리네이밍레지스터 파일 내의 비교기를 선택적으로 인에이블링하는절전 방법 및 장치 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0495162A3 (en) | 1991-01-16 | 1994-05-18 | Ibm | Storage management |
DE69506623T2 (de) | 1994-06-03 | 1999-07-22 | Motorola, Inc., Schaumburg, Ill. | Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb |
US5694565A (en) | 1995-09-11 | 1997-12-02 | International Business Machines Corporation | Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions |
EP0851343B1 (en) * | 1996-12-31 | 2005-08-31 | Metaflow Technologies, Inc. | System for processing floating point operations |
WO2002054228A1 (en) | 2000-12-06 | 2002-07-11 | University Of Bristol | Register renaming |
GB2402759B (en) * | 2003-06-12 | 2005-12-21 | Advanced Risc Mach Ltd | Data processing apparatus and method for transferring data values between a register file and a memory |
US7295672B2 (en) | 2003-07-11 | 2007-11-13 | Sun Microsystems, Inc. | Method and apparatus for fast RC4-like encryption |
US8161453B2 (en) | 2004-11-16 | 2012-04-17 | Rabih Chrabieh | Method and apparatus for implementing task management of computer operations |
US20070192573A1 (en) * | 2006-02-16 | 2007-08-16 | Guillermo Savransky | Device, system and method of handling FXCH instructions |
US20120191956A1 (en) * | 2011-01-26 | 2012-07-26 | Advanced Micro Devices, Inc. | Processor having increased performance and energy saving via operand remapping |
-
2011
- 2011-12-02 US US13/309,739 patent/US8914616B2/en active Active
-
2012
- 2012-10-04 CN CN201280059375.4A patent/CN103988462B/zh active Active
- 2012-10-04 EP EP12777939.5A patent/EP2786518B1/en active Active
- 2012-10-04 WO PCT/GB2012/052455 patent/WO2013079911A1/en unknown
- 2012-10-04 KR KR1020147014901A patent/KR102067413B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6560671B1 (en) * | 2000-09-11 | 2003-05-06 | Intel Corporation | Method and apparatus for accelerating exchange or swap instructions using a register alias table (RAT) and content addressable memory (CAM) with logical register numbers as input addresses |
KR100977687B1 (ko) * | 2005-03-03 | 2010-08-24 | 퀄컴 인코포레이티드 | 기지의 프로세서 상태에 기초하여 cam 리네이밍레지스터 파일 내의 비교기를 선택적으로 인에이블링하는절전 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
WO2013079911A1 (en) | 2013-06-06 |
CN103988462B (zh) | 2017-03-08 |
EP2786518B1 (en) | 2018-11-21 |
EP2786518A1 (en) | 2014-10-08 |
US20130145129A1 (en) | 2013-06-06 |
CN103988462A (zh) | 2014-08-13 |
US8914616B2 (en) | 2014-12-16 |
KR102067413B1 (ko) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5778283B2 (ja) | データ処理装置のデバッグ処理 | |
KR101771825B1 (ko) | 사용자-레벨 스레딩을 위한 즉각적 컨텍스트 전환을 가능하게 하는 새로운 명령어 및 고효율적인 마이크로-아키텍처 | |
US20210357213A1 (en) | Hardware apparatuses and methods to switch shadow stack pointers | |
US20080307173A1 (en) | Efficient Encoding for Detecting Load Dependency on Store with Misalignment | |
US9201656B2 (en) | Data processing apparatus and method for performing register renaming for certain data processing operations without additional registers | |
KR20180033467A (ko) | 진보된 오퍼레이팅 시스템 지원을 갖는 프로세서 | |
WO2009117178A1 (en) | Qualification of conditional debug instructions based on address | |
JP7128206B2 (ja) | 機能の使用を管理するための装置および方法 | |
KR102067413B1 (ko) | 레지스터 리네이밍 데이터 처리장치 및 레지스터 리네이밍 실행방법 | |
US20110173613A1 (en) | Virtual Machine Control Structure Identification Decoder | |
JP5318197B2 (ja) | ホストデータ処理装置内におけるデバイスエミュレーションのサポート | |
JP7349437B2 (ja) | メモリ・アクセスにおける保護タグ・チェックの制御 | |
JP2010244327A (ja) | キャッシュシステム | |
US10572262B2 (en) | Register mapping of register specifiers to registers depending on a key value used for mapping at least two of the register specifiers | |
US7103756B2 (en) | Data processor with individually writable register subword locations | |
US20090228692A1 (en) | Load Register Instruction Short Circuiting Method | |
US7702881B2 (en) | Method and system for data transfers across different address spaces | |
JPH07120318B2 (ja) | アクセス及び欠陥論理信号を用いて主メモリユニットを保護する装置及び方法 | |
CN110895642B (zh) | 微处理器指令级随机验证方法和装置 | |
JP2007286990A (ja) | キャッシュメモリ装置及びそれに用いるキャッシュメモリ制御方法並びにそのプログラム | |
KR20200124243A (ko) | 처리회로 상에서 실행할 프로그램을 디버깅할 때 메타데이터를 액세스하는 방법 | |
US20070245117A1 (en) | Processor comprising an instruction set and registers for simplified opcode access | |
KR101538425B1 (ko) | 프로세서 및 프로세서에서의 명령 처리방법 | |
US9886276B2 (en) | System register access | |
JPH10133872A (ja) | 命令バッファを有するプロセッサ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |