KR20170067986A - 프로세서, 이를 포함하는 컴퓨팅 시스템 및 프로세서의 구동 방법 - Google Patents

프로세서, 이를 포함하는 컴퓨팅 시스템 및 프로세서의 구동 방법 Download PDF

Info

Publication number
KR20170067986A
KR20170067986A KR1020150174631A KR20150174631A KR20170067986A KR 20170067986 A KR20170067986 A KR 20170067986A KR 1020150174631 A KR1020150174631 A KR 1020150174631A KR 20150174631 A KR20150174631 A KR 20150174631A KR 20170067986 A KR20170067986 A KR 20170067986A
Authority
KR
South Korea
Prior art keywords
instruction
register
loop
unit
data
Prior art date
Application number
KR1020150174631A
Other languages
English (en)
Inventor
박준모
김주환
김민성
김윤지
김택현
선경일
심명보
유동훈
정혜연
홍성현
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020150174631A priority Critical patent/KR20170067986A/ko
Priority to US15/371,408 priority patent/US20170168829A1/en
Publication of KR20170067986A publication Critical patent/KR20170067986A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30069Instruction skipping instructions, e.g. SKIP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

프로세서, 이를 포함하는 컴퓨팅 시스템 및 프로세서의 구동 방법이 제공된다. 프로세서는, 제1 루프에서 인스트럭션의 실행 결과에 의해 제1 데이터를 저장하는 제1 구조 레지스터(architectural register), 복수의 물리 레지스터(physical register)를 포함하는 물리 레지스터 그룹으로, 상기 제1 구조 레지스터는 상기 복수의 물리 레지스터 중 어느 하나로 맵핑되는 물리 레지스터 그룹, 제n(n은 2 이상의 자연수) 루프에서 상기 인스트럭션의 실행 전, 상기 제1 데이터의 변경 여부 및 상기 제1 구조 레지스터가 맵핑되는 상기 물리 레지스터의 변경 여부를 판단하고, 상기 판단 결과에 따라 상기 제n 루프에서의 상기 인스트럭션의 실행 여부를 결정하는 제어 유닛을 포함한다.

Description

프로세서, 이를 포함하는 컴퓨팅 시스템 및 프로세서의 구동 방법{Processor, and computing method comprising the same and method for driving the processor}
본 발명은 프로세서, 이를 포함하는 컴퓨팅 시스템 및 프로세서의 구동 방법에 관한 것이다.
전자 기기의 휴대성 및 성능이 발달됨에 따라, 최근의 전자 기기의 파워 소모를 줄이고, 성능을 향상시키기 위한 시도가 연구되고 있다.
특히, 프로세서에서 프로그램 수행 시간의 대부분을 차지하는 루프의 수행 시간과 관련하여, 상대적으로 많은 사이클의 수행 시간을 요구하는 메모리의 액세스와 같은 인스트럭션의 수행 빈도 또는 수행 속도를 높인다면, 전체 루프의 수행 시간 또한 향상될 것이 기대된다.
따라서, 전체 루프의 수행 시간을 감소시키기 위하여, 더욱 빠른 속도의 하드웨어를 도입하는 것과 더불어, 인스트럭션의 수행 빈도를 최적화할 수 있는 기법이 연구되고 있다.
본 발명이 해결하고자 하는 기술적 과제는 루프 내 동일한 레지스터에 동일한 값을 저장하는 인스트럭션의 수행을 생략할 수 있는 프로세서를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 루프 내 동일한 레지스터에 동일한 값을 저장하는 인스트럭션의 수행을 생략할 수 있는 프로세서의 구동 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 프로세서는, 제1 루프에서 인스트럭션의 실행 결과에 의해 제1 데이터를 저장하는 제1 구조 레지스터(architectural register), 복수의 물리 레지스터(physical register)를 포함하는 물리 레지스터 그룹으로, 상기 제1 구조 레지스터는 상기 복수의 물리 레지스터 중 어느 하나로 맵핑되는 물리 레지스터 그룹, 제n(n은 2 이상의 자연수) 루프에서 상기 인스트럭션의 실행 전, 상기 제1 데이터의 변경 여부 및 상기 제1 구조 레지스터가 맵핑되는 상기 물리 레지스터의 변경 여부를 판단하고, 상기 판단 결과에 따라 상기 제n 루프에서의 상기 인스트럭션의 실행 여부를 결정하는 제어 유닛을 포함한다.
본 발명의 몇몇 실시예에서, 제2 데이터를 저장하는 제2 구조 레지스터 및 상기 제1 데이터가 저장된 영역을 포함하는 메모리를 더 포함하되,상기 인스트럭션은 상기 제2 데이터가 가리키는 상기 메모리의 주소값을 참조하여 상기 영역을 액세스할 수 있다.
본 발명의 몇몇 실시예에서, 상기 인스트럭션은 로드(load)를 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 제어 유닛에 인스트럭션 스트림을 제공하는 인스트럭션 캐쉬를 더 포함하되, 상기 제어 유닛은, 상기 인스트럭션 스트림에 포함된 오퍼랜드(operand)의 목적지 레지스터(destination register)가 상기 제2 구조 레지스터를 포함하는지를 판단할 수 있다.
본 발명의 몇몇 실시예에서, 상기 제어 유닛이 상기 목적지 레지스터가 상기 제2 구조 레지스터를 포함하는지를 판단하는 것은 상기 제1 루프에서 수행될 수 있다.
본 발명의 몇몇 실시예에서, 상기 제어 유닛은 리네임 유닛(rename unit)을 포함하되, 상기 리네임 유닛은 상기 제1 구조 레지스터를 상기 복수의 물리 레지스터 중 어느 하나로 맵핑할 수 있다.
본 발명의 몇몇 실시예에서, 상기 리네임 유닛은, 상기 제1 루프와 상기 제n 루프에서 상기 제1 구조 레지스터가 동일한 물리 레지스터로 맵핑되었는지를 판단할 수 있다.
본 발명의 몇몇 실시예에서, 상기 제어 유닛과 연결된 유효성 확인 유닛(validation check unit)을 더 포함하되, 상기 유효성 확인 유닛은 무시 플래그(ignore flag)를 포함하고, 상기 무시 플래그는, 상기 제1 데이터 및 상기 제1 구조 레지스터가 맵핑되는 상기 물리 레지스터의 변경 여부에 따라 변경되고, 상기 제어 유닛은 상기 무시 플래그의 값에 따라 상기 제n 루프에서의 상기 인스트럭션의 실행 여부를 결정할 수 있다.
본 발명의 몇몇 실시예에서, 상기 제1 데이터가 저장된 데이터 캐시를 더 포함하되, 상기 데이터 캐시는, 상기 제1 데이터가 변경된 경우에 상기 무시 플래그를 변경시킬 수 있다.
본 발명의 몇몇 실시예에서, 상기 인스트럭션은 무브(move) 인스트럭션을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 인스트럭션의 실행 전 상기 제1 데이터를 저장하는 제2 레지스터를 더 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 제어 유닛과 연결된 실행 유닛(execution unit)과, 리오더 버퍼(reorder buffer)를 더 포함하되, 상기 제어 유닛은, 상기 인스트럭션을 실행하도록 결정한 경우 실행 유닛에 상기 인스트럭션을 제공하고, 그렇지 않은 경우 상기 리오더 버퍼에 상기 인스트럭션의 실행이 완료됨을 제공할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 컴퓨팅 장치는 프로세서를 포함하되, 상기 프로세서는, 인스트럭션을 실행하는 실행 유닛, 제1 루프에서 인스트럭션의 실행 결과에 의해 제1 데이터를 저장하는 제1 구조 레지스터, 상기 제1 구조 레지스터를 복수의 물리 레지스터 중 어느 하나로 맵핑하는 리네임 유닛, 무시 플래그를 포함하는 유효성 확인 유닛으로, 상기 무시 플래그는 제n(n은 2 이상의 자연수) 루프에서 상기 인스트럭션을 실행하는지 여부를 표시하는 유효성 확인 유닛 및 상기 무시 플래그의 값에 따라 상기 제n 루프에서 상기 인스트럭션을 상기 실행 유닛에 제공하는지 여부를 결정하는 디스패치 유닛을 포함한다.
본 발명의 몇몇 실시예에서, 메모리를 더 포함하되, 상기 제1 데이터는 상기 메모리에서 로드되어 상기 제1 구조 레지스터로 저장되고, 상기 메모리에 저장된 상기 제1 데이터가 변경된 경우 상기 무시 플래그를 거짓으로 설정할 수 있다.
본 발명의 몇몇 실시예에서, 상기 리네임 유닛은, 상기 제1 구조 레지스터가 상기 제1 루프와 상기 제n 루프에서 동일한 물리 레지스터로 맵핑된 경우 상기 무시 플래그를 참으로 설정할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 프로세서 구동 방법은 제1 루프에서 제1 구조 레지스터를 물리 레지스터에 맵핑하고, 상기 제1 루프에서 인스트럭션을 실행하여, 제1 구조 레지스터에 제1 데이터를 저장하고, 제n(n은 2 이상의 자연수) 루프에서 상기 인스트럭션의 실행 전, 상기 제1 데이터의 변경 여부를 판단하고, 상기 제n 루프에서 상기 제1 구조 레지스터가 동일한 물리 레지스터에 맵핑?었는지 여부를 판단하고, 상기 제1 데이터의 변경 및 상기 제1 구조 레지스터의 맵핑 결과에 따라 상기 제n 루프에서 상기 인스트럭션을 실행한다.
본 발명의 몇몇 실시예에서, 상기 인스트럭션을 실행하기 전에, 상기 인스트럭션이 로드 또는 무브 인스트럭션인지 판단하는 것을 더 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 제n 루프에서 상기 인스트럭션을 실행하는 것은, 상기 제n루프에서 상기 인스트럭션을 실행하는 경우 상기 인스트럭션을 실행 유닛에 제공하고, 실행하지 않는 경우 리오더 버퍼에 상기 인스트럭션의 실행 완료를 기록하는 것을 포함할 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 프로세서의 블록도이다.
도 2a 내지 도 2b는 도 1의 프로세서의 동작을 설명하기 위한 도면들이다.
도 3는 본 발명의 다른 실시예에 따른 프로세서의 블록도이다.
도 4는 도 3의 프로세서의 동작을 도시한 순서도이다.
도 5a 내지 도 6은 도 3a의 프로세서의 동작을 설명하기 위한 도면들이다.
도 7은 본 발명의 실시예에 따른 프로세서를 포함하는 SoC 의 블록도이다.
도 8은 본 발명의 실시예에 따른 프로세서 및 SoC를 포함하는 전자 시스템의 블록도이다.
도 9 내지 도 11은 본 발명의 몇몇 실시예들에 따른 프로세서를 적용할 수 있는 예시적인 반도체 시스템들이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
소자(elements) 또는 층이 다른 소자 또는 층의 "위(on)" 또는 "상(on)"으로 지칭되는 것은 다른 소자 또는 층의 바로 위뿐만 아니라 중간에 다른 층 또는 다른 소자를 개재한 경우를 모두 포함한다. 반면, 소자가 "직접 위(directly on)" 또는 "바로 위"로 지칭되는 것은 중간에 다른 소자 또는 층을 개재하지 않은 것을 나타낸다.
공간적으로 상대적인 용어인 "아래(below)", "아래(beneath)", "하부(lower)", "위(above)", "상부(upper)" 등은 도면에 도시되어 있는 바와 같이 하나의 소자 또는 구성 요소들과 다른 소자 또는 구성 요소들과의 상관관계를 용이하게 기술하기 위해 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용시 또는 동작시 소자의 서로 다른 방향을 포함하는 용어로 이해되어야 한다. 예를 들면, 도면에 도시되어 있는 소자를 뒤집을 경우, 다른 소자의 "아래(below)" 또는 "아래(beneath)"로 기술된 소자는 다른 소자의 "위(above)"에 놓여질 수 있다. 따라서, 예시적인 용어인 "아래"는 아래와 위의 방향을 모두 포함할 수 있다. 소자는 다른 방향으로도 배향될 수 있고, 이에 따라 공간적으로 상대적인 용어들은 배향에 따라 해석될 수 있다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
도 1은 본 발명의 일 실시예에 따른 프로세서의 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 프로세서(1)는, 디코드 유닛(20), 제어 유닛(30), 유효성 확인 유닛(40), 실행 유닛(60) 및 리오더 버퍼(70), 제1 및 제2 구조 레지스터(r0, r1)를 포함하고, 메모리(50)와 연결될 수 있다.
디코드 유닛(20)은 메모리(50)로부터 인스트럭션을 제공받아, 이를 디코딩하여 제어 유닛(30)에 제공할 수 있다.
인스트럭션은 예를 들어, 연산의 종류를 나타내는 명령 코드(operational code; opcode)와, 처리될 데이터 또는 데이터가 저장된 주소를 지정하는 오퍼랜드(operand)를 포함할 수 있다.
따라서, 디코드 유닛(20)이 디코딩하여 제어 유닛에 제공하는 결과는, 프로세서(1)가 수행하여야할 연산의 종류와, 처리할 데이터 또는 이들의 지정된 주소를 포함할 수 있다.
도 1에서는 예시적으로, 디코드 유닛(20)으로부터 제공된 인스트럭션이, "제2 구조 레지스터(r1)에 저장된 값을 8 증가시킨 값에 해당하는 메모리 주소에 저장된 데이터를 제1 구조 레지스터(r0)에 로드하라."라는 의미를 포함하는 것을 도시하고 있다. 여기서, 오퍼랜드 중 로드 연산의 목적지가 되는 제1 구조 레지스터(r0)를 목적지 레지스터(destination register)로 정의할 수 있다.
디코드 유닛(20)은 인스트럭션을 마이크로옵(uop)의 형태로 분리하여 제어 유닛(30)에 제공할 수도 있다.
제어 유닛(30)은, 인스트럭션 실행의 결과에 따라 제1 및 제2 구조 레지스터(r0, r1)에 저장된 값이 제1 루프와 비교하였을 때 동일한 결과를 갖는지 여부에 따라 인스트럭션의 실행 여부를 결정할 수 있다. 제어 유닛(30)의 동작과 관련된 상세한 설명은 후술한다.
유효성 확인 유닛(40)은 제어 유닛(30)과 연결되고, 제어 유닛(30)의 제1 구조 레지스터(r0)의 변경 여부 및 인스트럭션의 수행 결과 제1 구조 레지스터(r0)에 저장되는 데이터의 변경 여부를 표시할 수 있다.
따라서, 제어 유닛(30)은 유효성 확인 유닛(40)에 포함된 무시 플래그(45)를 확인하여 제n(n은 2 이상의 자연수) 루프에서의 인스트럭션 수행 여부를 결정할 수 있다.
제1 및 제2 구조 레지스터(r0, r1)는 프로세서(1)가 실행한 인스트럭션의 실행 결과를 저장할 수 있다. 제1 및 제2 구조 레지스터(r0, r1)는 32비트 또는 64비트 레지스터를 포함할 수 있으나 본 발명이 이에 제한되는 것은 아니다.
본 발명의 일 실시예에 따른 프로세서와 관련된 설명에서, 제1 및 제2 구조 레지스터(r0, r1)가 정수형 데이터를 저장하는 것을 설명하나, 이 또한 예시에 불과할 수 있다. 제1 및 제2 구조 레지스터(r0, r1)는 예를 들어, 부동소수점(Floating Point) 데이터를 저장할 수도 있다.
본 발명의 몇몇 실시예 또는 이를 설명하는 도면에서, 프로세서(1, 2)에 포함된 구조 레지스터는 제1 및 제2 레지스터(r0, r1)로 제한되지 않는다. 즉, 설계 의도에 따라 구조 레지스터는 얼마든지 포함될 수 있다.
실행 유닛(60)은 제어 유닛으로부터 실행이 결정된 인스트럭션을 제공받고, 이를 실행할 수 있다. 실행 유닛(60)은 예를 들어, ALU(Arithmetic Logic Unit), 로드/스토어(load/store) 유닛, 또는 부동소수점(FPU, Floating Point Unit)을 포함할 수 있으나 본 발명이 이에 제한되는 것은 아니다. 즉, 디코드 유닛(20)이 디코딩한 인스트럭션을 실행하는데 필요한 부분이라면 얼마든지 실행 유닛(60)에 포함될 수 있다.
실행 유닛(60)은 제어 유닛(30)으로부터 제공된 인스트럭션을 순차적(In-order) 또는 비순차적(Out-Of-Order)으로 실행할 수 있다. 실행 유닛(60)은 인스트럭션의 실행이 완료되었다는 것을 리오더 버퍼(70)에 기록할 수 있다.
본 발명의 몇몇 실시예에서, 리오더 버퍼(70)는 실행 유닛(60) 뿐만 아니라 제어 유닛(30)으로부터 접근될 수 있다. 따라서 인스트럭션의 실행 없이 해당 인스트럭션의 실행 완료가 리오더 버퍼(70)에 기록될 수 있다.
메모리(50)는 디코드 유닛(20)에 제공될 인스트럭션 및 인스트럭션의 실행에 필요한 데이터를 저장할 수 있다. 메모리(50)는 복수의 포트를 통해 프로세서(1)와 연결될 수 있다.
메모리(50)는 캐시 구조를 가질 수 있다. 즉, 메모리(50)는 예를 들어, 프로세서와 연결된 L1 캐시 메모리를 포함할 수 있다.
도 2a 내지 도 2b는 도 1의 프로세서의 동작을 설명하기 위한 도면이다.
도 2a를 참조하면, 제1 루프에서 인스트럭션의 실행 결과 제1 및 제2 구조 레지스터(r0, r1)에 저장된 데이터와, 메모리(50)의 주소 및 해당 주소에 저장된 데이터를 예시적으로 도시하였다.
먼저, 제2 구조 레지스터(r1)에 0x11이 저장되어 있다. 따라서, "제2 구조 레지스터(r1)에 저장된 값을 8 증가시킨 값에 해당하는 메모리 주소"인 "0x19"를 참조하고, 메모리의 해당 주소에 저장된 값인 "0x2F"를 로드하여 목적지 레지스터인 제1 구조 레지스터(r0)에 저장하였다.
따라서 제1 루프의 실행 결과, 제1 및 제2 구조 레지스터(r0, r1)에는 각각 "0x2F" 및 "0x11"이 저장되어 있고, 메모리(50)의 "0x19" 주소에는 "0x2F"가 저장되어 있다.
도 2b를 참조하면, 제어 유닛(30)이 제n 루프에서의 제1 및 제2 구조 레지스터(r0, r1)와 메모리(50)의 실행 여부를 결정하는 동작이 도시되어 있다.
제n 루프에서, "ldr r0, [r1, #8]" 인스트럭션을 수행하기 전, 제1 구조 레지스터(r0) 및 제2 구조 레지스터(r1)는 각각 "0x2F"과 "0x11"의 데이터를 저장하고 있다. 이는 도 2a에서 설명한 제1 루프에서의 제1 및 제2 구조 레지스터(r0, r1)이 저장하고 있는 값과 같은 값을 저장하고 있는 것을 가정하고 있다.
또한, 메모리의 "0x19"주소의 저장 데이터는 "0x2F"로, 마찬가지로 제1 루프에서 해당 주소에 저장되었던 값과 변하지 않는 것을 알 수 있다.
이에 따라 제어 유닛(30)은 유효성 확인 유닛(40)에 포함된 무시 플래그(45)의 값을 트루(TRUE)로 설정할 수 있다.
무시 플래그(45)의 값이 트루(TRUE)로 설정됨에 따라, 제어 유닛(30)은 제1 및 제2 구조 레지스터(r0, r1)에 저장된 데이터와, 제2 구조 레지스터(r1)에 저장된 값이 가리키는 메모리 주소에 저장된 데이터의 값이 제1 루프와 동일한 것임을 판단할 수 있다. 따라서 제어 유닛(30)은 인스트럭션을 실행 유닛(60)에 전달하지 않고, 리오더 버퍼(70)에 전달하여 인스트럭션을 실행이 완료되었음을 제공할 수 있다.
이와 같이, 제1 루프에서 인스트럭션을 수행한 결과와, 제n 루프에서 인스트럭션을 수행할 경우 목적지 레지스터에 저장될 데이터의 종류가 동일한 경우가 존재할 수 있다. 이 경우 동일한 결과가 예상됨에도 동일한 인스트럭션을 실행하는 것은 프로그램의 실행 시간을 불필요하게 증가시킬 수 있다.
본 발명의 몇몇 실시예에 의한 프로세서는 인스트럭션 실행의 결과 동일한 값을 레지스터에 저장하는 것이 예상되는 경우에, 해당 인스트럭션을 실행 유닛(60)으로 전송하여 실행하는 대신에, 리오더 버퍼(70)에 해당 인스트럭션의 실행이 완료되었음을 전송할 수 있다.
따라서 본 발명의 실시예에 따른 프로세서(1)는 루프 내 중복된 인스트럭션을 실행하지 않고 실행 완료 여부를 리오더 버퍼(70)에 기록함으로써, 중복된 인스트럭션의 처리 시간을 감소시킬 수 있다.
또한 중복된 인스트럭션이 실행 유닛(60)에 의하여 실행되지 않으므로, 실행 유닛(60)이 소모하는 구동 전력을 감소시킬 수도 있다.
도 3은 본 발명의 다른 실시예에 따른 프로세서(2)를 도시한 블록도이다. 이하 앞서의 실시예와 중복된 부분은 생략하고 설명한다.
도 3을 참조하면, 프로세서(2)는 별도의 인스트럭션 캐시(65) 및 데이터 캐시(66)을 포함할 수 있다. 인스트럭션 캐시(65)는 메모리로부터 인스트럭션 스트림을 제공받고, 이를 페치 유닛(80)에 제공할 수 있다. 데이터 캐시(66)는 프로세서(2)와 메모리(51) 사이에 위치하여, 프로세서(2)의 메모리(51) 액세스에 따른 딜레이를 감소시킬 수 있다.
인스트럭션 캐시(65) 및 데이터 캐시(66)는 레벨 1 캐시 메모리일 수 있다.
페치 유닛(80)은 다음 사이클에 제공될 인스트럭션이 저장된 인스트럭션 캐시(65)에 접근하여 인스트럭션을 제공받을 수 있다. 또한 제공받은 인스트럭션을 디코드 유닛(21)에 제공할 수 있다.
페치 유닛(80)은 디코드 유닛(21)에 제공한 인스트럭션이 실행 유닛(60)에 의하여 실행이 완료되기 전에 다음 인스트럭션을 읽어들이는 프리페치(pre-fetch)를 수행할 수 있다.
도 3에서 설명하는 실시예에 따른 프로세서(2)의 제어 유닛(31)은, 리네임 유닛(35)과 디스패치 유닛(36)을 포함할 수 있다.
리네임 유닛(35)는 제1 구조 레지스터(r0)을 복수의 물리 레지스터(P0~Pn)을 포함하는 물리 레지스터 그룹(90) 중 어느 하나의 물리 레지스터로 매핑할 수 있다.
본 발명의 몇몇 실시예에 따른 프로세서의 인스트럭션 셋 구조(Instruction Set Architecture)는 제한된 개수의 구조 레지스터를 포함할 수 있다. 이에 따라 WAW(Write-After-Write) 또는 WAR(Wrte-After-Read) 의존성 문제가 발생할 수 있다. 리네임 유닛(35)은 서로 다른 인스트럭션에서 동일한 오퍼랜드로 표현된 동일한 구조 레지스터(r0, r1)를 물리 레지스터(P0~Pn) 중 어느 하나에 맵핑시켜 의존성 문제를 해결할 수 있다.
도 4는 도 3의 프로세서의 동작 방법을 설명한 순서도이다. 앞서의 실시예와 마찬가지로, 도 4에서 설명하는 프로세서의 동작 방법은 프로세서(2)가 제1 루프에서 "ldr r0, [r1, #8]" 인스트럭션을 실행하고, 제n 루프에서 다시 실행하는 것을 예시로 하였다.
도 4를 참조하면, 디코드 유닛(21)은 페치 유닛(80)으로부터 제공받은 인스트럭션을 디코드하면서, 인스트럭션이 로드 인스트럭션인지 여부를 판단한다(S100). 제공된 인스트럭션이 로드가 아닌 경우에는, 이를 실행 유닛(60)에 전달하여 정상적으로 실행한다.
로드 인스트럭션에 해당하는 경우, 인스트럭션의 오퍼랜드에 포함된 제2 레지스터(r1)가 저장하고 있는 값이 제1 루프에서 저장하고 있는 값에서 변경되었는지 여부를 판단한다(S110).
본 실시예에서 예시로 하는 로드 인스트럭션에 따르면, 제2 레지스터(r1)가 저장하는 값은 로드할 데이터가 존재하는 메모리 상의 주소를 의미할 수 있다. 따라서, 제2 레지스터(r1)에 저장된 데이터가 변경되었다면, 참조할 메모리 상의 주소 또한 변경된 것이므로, 중복된 연산이라고 보기 어렵다.
제2 레지스터(r1)에 저장된 데이터가 변경되었다면 유효성 확인 유닛(45)은 무시 플래그를 거짓으로 설정(S125)할 수 있다. 제어 유닛(31)이 거짓으로 설정된 무시 플래그를 확인하면, 해당 인스트럭션을 실행 유닛(60)에 전달하여 정상적으로 실행한다.
읽혀지는 레지스터의 값이 종전 루프와 동일하다면, 데이터가 기록될 레지스터가 종전 루프와 변하지 않는지(invariant) 여부를 판단한다(S120). 이는 다음의 도 5a 및 5b와 함께 좀더 자세하게 설명한다.
도 5a는 구조 레지스터들(r0, r1)이 물리 레지스터들(P0~P11)에 대응하는 예시적인 맵핑 테이블을 도시하였다. 도시된 것과 같이, 제1 구조 레지스터(r0)는 P0~P5의 물리 레지스터들에 맵핑될 수 있다.
즉, 리네임 유닛(31)은, 앞서 설명한 것과 같이 WAW 의존성 또는 WAR 의존성을 해결하기 위하여 구조 레지스터를 물리 레지스터들에 맵핑시킬 수 있다. 리네임 유닛(31)은 도 5a에 도시된 테이블에 기초하여 구조 레지스터들의 맵핑을 수행할 수 있다.
프로세서의 설계 및 구조적 제한에 따라, 프로세서(2)가 포함할 수 있는 물리 레지스터들의 수는 제한되어 있다. 그러므로 하나의 구조 레지스터가 맵핑될 수 있는 물리 레지스터 또한 제한될 수 있다. 본 실시예에서는 하나의 구조 레지스터에 6개의 물리 레지스터가 맵핑될 수 있다.
도 5b를 참조하면 CASE1에서, 제1 루프에서 제1 구조 레지스터(r0)이 맵핑된 물리 레지스터는 P1이다. 제2 루프에서도, 제1 구조 레지스터(r0)는 P1 물리 레지스터에 맵핑되었다. 결과적으로, 제1 루프에서 수행하였던 인스트럭션과 동일한 인스트럭션을 제2 루프에서 제1 구조 레지스터(r0)에 대하여 수행한다면, 제1 구조 레지스터(r0)이 맵핑된 P1 물리 레지스터의 값은 변하지 않고 동일하게 유지될 수 있다.
이 때, 제어 유닛(31)은 무시 플래그(45)를 참(TRUE)으로 설정하여, 해당 인스트럭션의 실행을 무시할 수 있음을 표시할 수 있다.
반면에, 도 5b의 CASE 2는 제1 루프와 제2 루프에서 제1 구조 레지스터(r0)가 맵핑된 물리 레지스터가 다른 경우를 나타낸다. 프로세서(2)가 인스트럭션을 수행하는 도중, 물리 레지스터의 수가 충분하지 않은 경우, 의존성 문제를 해결하지 못하고 동일한 인스트럭션의 대상이 되는 구조 레지스터를 서로 다른 물리 레지스터로 맵핑하는 상황이 발생할 수 있다.
이 경우, 동일한 물리 레지스터를 대상으로 인스트럭션이 실행되지만, 제1 루프와 제2 루프는 다른 물리 레지스터를 대상을 결과를 기록하여야 하기 때문에, 제2 루프에서의 인스트럭션의 실행을 무시할 수 없다. 따라서 제어 유닛(31)은 무시 플래그(45)를 거짓(FALSE)으로 설정한다.
다시 도 4를 참조하면, 데이터 캐시(66)에 저장된 제1 데이터가 변경되었는지, 즉 더티(dirty) 상태인지를 판단한다(S130).
본 발명에서 예시로 설명한 로드 인스트럭션에 따르면, 제1 루프의 실행 결과 제2 구조 레지스터(r1)의 주소값을 참조하여 메모리(51)로부터 데이터를 읽을 수 있다. 이 때, 메모리(51)에 저장되었던 데이터는 데이터 캐시(66)에 저장될 수 있다.
제1 루프 또는 제2 루프에서의 다른 인스트럭션의 실행 결과 메모리(51)에 저장된 데이터가 갱신되어 메모리(51)와 데이터 캐시(66)에 저장된 데이터가 서로 다를 수 있다. 이 경우 데이터 캐시(66)에 저장된 데이터를 메모리(51)에 저장된 데이터와 동일하게 갱신시켜주는 것이 필요하므로, 로드 인스트럭션은 무시될 수 없다. 그러므로 무시 플래그를 거짓으로 설정하여(S125), 해당 인스트럭션을 실행한다. 데이터 캐시(66)는 캐시 데이터의 더티 여부를 유효성 확인 유닛(41)에 제공하여 무시 플래그(45)를 변경시킬 수 있다.
상술한 조건의 판단 결과 무시 플래그가 참으로 여전히 유지된다면, 로드 인스트럭션을 실행 유닛(60)이 아닌 리오더 버퍼(70)에 전송(S140)하여, 로드 인스트럭션의 실행이 완료되었음을 기록할 수 있다. 따라서 중복된 인스트럭션의 실행을 방지함으로써 프로세서(2)의 실행 속도 및 소비 전력을 감소시킬 수 있다.
인스트럭션의 실행 또는 리오더 버퍼로의 전송이 완료된 후, 프로그램 카운터를 증가(S150)시키고, 인스트럭션의 종료 여부를 판단하여(S160) 전체 수행 과정을 반복 또는 종료할 수 있다.
도 6을 참조하면, 인스트럭션 캐시(65)는 도시된 테이블과 같은 형태의 인스트럭션 스트림을 제어 유닛(31)에 제공할 수 있다. 이 때, 제2 구조 레지스터(r1)의 값이 변경되었는지 여부는, 인스트럭션 스트림에 포함된 목적지 레지스터에 제2 구조 레지스터(r1)가 포함되었는지 여부를 확인함으로써 판단할 수 있다.
즉, 다른 인스트럭션의 목적지 레지스터로서 제2 구조 레지스터(r1)가 사용되었다면, 제2 루프에서의 제2 구조 레지스터(r1)의 값은 제1 루프와는 달라질 가능성이 존재한다. 따라서 제공되는 인스트럭션 스트림에서 목적지 레지스터로 제2 구조 레지스터(r1)가 포함되었는지 여부를 확인함으로써 제2 구조 레지스터(r1)의 값이 변경되었는지 여부를 확인할 수 있다. 또한 이러한 작업은 제1 루프의 완료 후 별도의 수행 시간을 필요로 하지 않고, 제1 루프에서 인스트럭션 스트림의 제공과 동시에 수행될 수 있다.
본 발명의 실시예에서 로드 명령어를 예를 들어 설명하였으나, 이는 무브(move) 명령어를 대상으로 동일한 작업을 수행할 수 있다.
예를 들어, "fmov r0, #2.000000"과 같은 명령어인 경우, 참조하는 데이터가 레지스터 또는 메모리에 저장된 값이 아닌 이미디어트(immediate) 값이므로, 메모리(51) 또는 제2 레지스터(r1)를 참조할 필요가 없다. 따라서 앞서의 수행 과정 중 제1 구조 레지스터(r0)가 동일한 물리 레지스터에 맵핑되었는지 여부를 확인하는 과정만이 필요할 수 있다.
한편, "vmov r0, f1"과 같이, 서로 다른 레지스터 간의 값을 이동하는 인스트럭션이 제공될 수 있다. 이 경우 종전 루프와 비교할 때 동일한 데이터가 f1 레지스터에 저장되었는지 여부와 제1 구조 레지스터(r0)가 동일한 물리 레지스터에 맵핑되었는지 여부를 확인하는 과정이 필요할 수 있다.
도 7은 본 발명의 실시예에 따른 프로세서를 포함하는 SoC 의 블록도이다.
도 7을 참조하면, SoC(1000)는 어플리케이션 프로세서(1001)와, DRAM(1060)을 포함할 수 있다.
어플리케이션 프로세서(1001)는 중앙처리부(1010), 멀티미디어 시스템(1020), 멀티레벨 연결 버스(1030), 메모리 시스템(1040), 주변 회로(1050)을 포함할 수 있다.
중앙처리부(1010)는 SoC(1000)의 구동에 필요한 연산을 수행할 수 있다. 본 발명의 몇몇 실시예에서, 중앙처리부(1010)는 복수의 코어를 포함하는 멀티 코어 환경으로 구성될 수 있다.
멀티미디어 시스템(1020)은, SoC시스템(1000)에서 각종 멀티미디어 기능을 수행하는데 이용될 수 있다. 이러한 멀티미디어 시스템(1020)은 3D 엔진(3D engine) 모듈, 비디오 코덱(video codec), 디스플레이 시스템(display system), 카메라 시스템(camera system), 포스트-프로세서(post -processor) 등을 포함할 수 있다.
멀티레벨 연결 버스(1030)는, 중앙처리부(1010), 멀티미디어 시스템(1020), 메모리 시스템(1040), 및 주변 회로(1050)가 서로 데이터 통신을 하는데 이용될 수 있다. 본 발명의 몇몇 실시예에서, 이러한 멀티레벨 연결 버스(1030)는 다층 구조를 가질 수 있다. 구체적으로, 이러한 멀티레벨 연결 버스(1030)의 예로는 다층 AHB(multi-layer Advanced High-performance Bus), 또는 다층 AXI(multi-layer Advanced eXtensible Interface)가 이용될 수 있으나, 본 발명이 이에 제한되는 것은 아니다.
메모리 시스템(1040)은, 어플리케이션 프로세서(1001)가 외부 메모리(예를 들어, DRAM(1060))에 연결되어 고속 동작하는데 필요한 환경을 제공할 수 있다. 본 발명의 몇몇 실시예에서, 메모리 시스템(1040)은 외부 메모리(예를 들어, DRAM(1060))를 컨트롤하기 위한 별도의 컨트롤러(예를 들어, DRAM 컨트롤러)를 포함할 수도 있다.
주변 회로(1050)는, SoC시스템(1000)이 외부 장치(예를 들어, 메인 보드)와 원활하게 접속되는데 필요한 환경을 제공할 수 있다. 이에 따라, 주변 회로(1050)는 SoC시스템(1000)에 접속되는 외부 장치가 호환 가능하도록 하는 다양한 인터페이스를 구비할 수 있다.
DRAM(1060)은 어플리케이션 프로세서(1001)가 동작하는데 필요한 동작 메모리로 기능할 수 있다. 본 발명의 몇몇 실시예에서, DRAM(1060)은, 도시된 것과 같이 어플리케이션 프로세서(1001)의 외부에 배치될 수 있다. 구체적으로, DRAM(1060)은 어플리케이션 프로세서(1001)와 PoP(Package on Package) 형태로 패키징될 수 있다.
이러한 SoC(1000)의 구성 요소 중 중앙처리부(1010)는 앞서 설명한 본 발명의 실시예에 따른 프로세서를 채용할 수 있다.
도 8은 본 발명의 실시예에 따른 프로세서 및 SoC를 포함하는 전자 시스템의 블록도이다.
도 8을 참조하면, 본 발명의 실시예에 따른 전자 시스템(1100)은 컨트롤러(1110), 입출력 장치(1120, I/O), 기억 장치(1130, memory device), 인터페이스(1140) 및 버스(1150, bus)를 포함할 수 있다. 컨트롤러(1110), 입출력 장치(1120), 기억 장치(1130) 및/또는 인터페이스(1140)는 버스(1150)를 통하여 서로 결합될 수 있다. 버스(1150)는 데이터들이 이동되는 통로(path)에 해당한다.
컨트롤러(1110)는 마이크로프로세서, 디지털 신호 프로세스, 마이크로컨트롤러, 및 이들과 유사한 기능을 수행할 수 있는 논리 소자들 중에서 적어도 하나를 포함할 수 있다. 입출력 장치(1120)는 키패드(keypad), 키보드 및 디스플레이 장치등을 포함할 수 있다. 기억 장치(1130)는 데이터 및/또는 명령어등을 저장할 수 있다. 인터페이스(1140)는 통신 네트워크로 데이터를 전송하거나 통신 네트워크로부터 데이터를 수신하는 기능을 수행할 수 있다. 인터페이스(1140)는 유선 또는 무선 형태일 수 있다. 예컨대, 인터페이스(1140)는 안테나 또는 유무선 트랜시버등을 포함할 수 있다.
도시하지 않았지만, 전자 시스템(1100)은 컨트롤러(1110)의 동작을 향상시키기 위한 동작 메모리로서, 고속의 디램 및/또는 에스램 등을 더 포함할 수도 있다.
또한, 앞서 설명한 본 발명의 실시예에 따른 프로세서는, 기억 장치(1130) 내에 제공되거나, 컨트롤러(1110), 입출력 장치(1120, I/O) 등의 일부로 제공될 수 있다.
전자 시스템(1100)은 개인 휴대용 정보 단말기(PDA, personal digital assistant) 포터블 컴퓨터(portable computer), 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 디지털 뮤직 플레이어(digital music player), 메모리 카드(memory card), 또는 정보를 무선환경에서 송신 및/또는 수신할 수 있는 모든 전자 제품에 적용될 수 있다.
도 9 내지 도 11은 본 발명의 몇몇 실시예들에 따른 프로세서를 적용할 수 있는 예시적인 반도체 시스템들이다.
도 9는 태블릿 PC(1200)을 도시한 도면이고, 도 10는 노트북(1300)을 도시한 도면이며, 도 11은 스마트폰(1400)을 도시한 것이다. 본 발명의 실시예에 따른 프로세서 중 적어도 하나는 이러한 태블릿 PC(1200), 노트북(1300), 스마트폰(1400) 등에 사용될 수 있다.
또한, 본 발명의 몇몇 실시예들에 따라 제조된 반도체 소자는, 예시하지 않는 다른 집적 회로 장치에도 적용될 수 있음은 당업자에게 자명하다.
즉, 이상에서는 본 실시예에 따른 반도체 시스템의 예로, 태블릿 PC(1200), 노트북(1300), 및 스마트폰(1400)만을 들었으나, 본 실시예에 따른 반도체 시스템의 예가 이에 제한되는 것은 아니다.
본 발명의 몇몇 실시예에서, 반도체 시스템은, 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 무선 전화기(wireless phone), 모바일 폰(mobile phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), 3차원 수상기(3-dimensional television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player) 등으로 구현될 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
1, 2: 프로세서 20, 21: 디코드 유닛
30, 31: 제어 유닛 40, 41: 유효성 확인 유닛

Claims (10)

  1. 제1 루프에서 인스트럭션의 실행 결과에 의해 제1 데이터를 저장하는 제1 구조 레지스터(architectural register);
    복수의 물리 레지스터(physical register)를 포함하는 물리 레지스터 그룹으로, 상기 제1 구조 레지스터는 상기 복수의 물리 레지스터 중 어느 하나로 맵핑되는 물리 레지스터 그룹;
    제n(n은 2 이상의 자연수) 루프에서 상기 인스트럭션의 실행 전, 상기 제1 데이터의 변경 여부 및 상기 제1 구조 레지스터가 맵핑되는 상기 물리 레지스터의 변경 여부를 판단하고, 상기 판단 결과에 따라 상기 제n 루프에서의 상기 인스트럭션의 실행 여부를 결정하는 제어 유닛을 포함하는 프로세서.
  2. 제 1항에 있어서,
    제2 데이터를 저장하는 제2 구조 레지스터; 및
    상기 제1 데이터가 저장된 영역을 포함하는 메모리를 더 포함하되,
    상기 인스트럭션은 상기 제2 데이터가 가리키는 상기 메모리의 주소값을 참조하여 상기 영역을 액세스하는 프로세서.
  3. 제 2항에 있어서,
    상기 인스트럭션은 로드(load)를 포함하는 프로세서.
  4. 제 2항에 있어서,
    상기 제어 유닛에 인스트럭션 스트림을 제공하는 인스트럭션 캐쉬를 더 포함하되,
    상기 제어 유닛은, 상기 인스트럭션 스트림에 포함된 오퍼랜드(operand)의 목적지 레지스터(destination register)가 상기 제2 구조 레지스터를 포함하는지를 판단하는 프로세서.
  5. 제 1항에 있어서,
    상기 제어 유닛은 리네임 유닛(rename unit)을 포함하되,
    상기 리네임 유닛은 상기 제1 구조 레지스터를 상기 복수의 물리 레지스터 중 어느 하나로 맵핑하는 프로세서.
  6. 제 5항에 있어서,
    상기 리네임 유닛은, 상기 제1 루프와 상기 제n 루프에서 상기 제1 구조 레지스터가 동일한 물리 레지스터로 맵핑되었는지를 판단하는 프로세서.
  7. 제 1항에 있어서,
    상기 제어 유닛과 연결된 유효성 확인 유닛(validation check unit)을 더 포함하되,
    상기 유효성 확인 유닛은 무시 플래그(ignore flag)를 포함하고,
    상기 무시 플래그는, 상기 제1 데이터 및 상기 제1 구조 레지스터가 맵핑되는 상기 물리 레지스터의 변경 여부에 따라 변경되고,
    상기 제어 유닛은 상기 무시 플래그의 값에 따라 상기 제n 루프에서의 상기 인스트럭션의 실행 여부를 결정하는 프로세서.
  8. 제 1항에 있어서,
    상기 제어 유닛과 연결된 실행 유닛(execution unit)과, 리오더 버퍼(reorder buffer)를 더 포함하되,
    상기 제어 유닛은, 상기 인스트럭션을 실행하도록 결정한 경우 실행 유닛에 상기 인스트럭션을 제공하고,
    그렇지 않은 경우 상기 리오더 버퍼에 상기 인스트럭션의 실행이 완료됨을 제공하는 프로세서.
  9. 프로세서를 포함하되,
    상기 프로세서는,
    인스트럭션을 실행하는 실행 유닛;
    제1 루프에서 인스트럭션의 실행 결과에 의해 제1 데이터를 저장하는 제1 구조 레지스터;
    상기 제1 구조 레지스터를 복수의 물리 레지스터 중 어느 하나로 맵핑하는 리네임 유닛;
    무시 플래그를 포함하는 유효성 확인 유닛으로, 상기 무시 플래그는 제n(n은 2 이상의 자연수) 루프에서 상기 인스트럭션을 실행하는지 여부를 표시하는 유효성 확인 유닛; 및
    상기 무시 플래그의 값에 따라 상기 제n 루프에서 상기 인스트럭션을 상기 실행 유닛에 제공하는지 여부를 결정하는 디스패치 유닛을 포함하는 컴퓨팅 장치.
  10. 제1 루프에서 제1 구조 레지스터를 물리 레지스터에 맵핑하고,
    상기 제1 루프에서 인스트럭션을 실행하여, 제1 구조 레지스터에 제1 데이터를 저장하고,
    제n(n은 2 이상의 자연수) 루프에서 상기 인스트럭션의 실행 전, 상기 제1 데이터의 변경 여부를 판단하고,
    상기 제n 루프에서 상기 제1 구조 레지스터가 동일한 물리 레지스터에 맵핑?었는지 여부를 판단하고,
    상기 제1 데이터의 변경 및 상기 제1 구조 레지스터의 맵핑 결과에 따라 상기 제n 루프에서 상기 인스트럭션을 실행하는 프로세서의 구동 방법.
KR1020150174631A 2015-12-09 2015-12-09 프로세서, 이를 포함하는 컴퓨팅 시스템 및 프로세서의 구동 방법 KR20170067986A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150174631A KR20170067986A (ko) 2015-12-09 2015-12-09 프로세서, 이를 포함하는 컴퓨팅 시스템 및 프로세서의 구동 방법
US15/371,408 US20170168829A1 (en) 2015-12-09 2016-12-07 Processor, computing system comprising the same and method for driving the processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150174631A KR20170067986A (ko) 2015-12-09 2015-12-09 프로세서, 이를 포함하는 컴퓨팅 시스템 및 프로세서의 구동 방법

Publications (1)

Publication Number Publication Date
KR20170067986A true KR20170067986A (ko) 2017-06-19

Family

ID=59020032

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150174631A KR20170067986A (ko) 2015-12-09 2015-12-09 프로세서, 이를 포함하는 컴퓨팅 시스템 및 프로세서의 구동 방법

Country Status (2)

Country Link
US (1) US20170168829A1 (ko)
KR (1) KR20170067986A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019066182A1 (ko) * 2017-09-29 2019-04-04 삼성전자(주) 디스플레이장치 및 그 제어방법

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845103A (en) * 1997-06-13 1998-12-01 Wisconsin Alumni Research Foundation Computer with dynamic instruction reuse
US6901504B2 (en) * 2002-01-22 2005-05-31 International Business Machines Corporation Result forwarding of either input operand to same operand input to reduce forwarding path
US7680989B2 (en) * 2005-08-17 2010-03-16 Sun Microsystems, Inc. Instruction set architecture employing conditional multistore synchronization
US9575754B2 (en) * 2012-04-16 2017-02-21 Apple Inc. Zero cycle move
US9471322B2 (en) * 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019066182A1 (ko) * 2017-09-29 2019-04-04 삼성전자(주) 디스플레이장치 및 그 제어방법
US11188333B2 (en) 2017-09-29 2021-11-30 Samsung Electronics Co., Ltd. Display device and control method thereof

Also Published As

Publication number Publication date
US20170168829A1 (en) 2017-06-15

Similar Documents

Publication Publication Date Title
US11853763B2 (en) Backward compatibility by restriction of hardware resources
US9015835B2 (en) Systems and methods for procedure return address verification
US10235219B2 (en) Backward compatibility by algorithm matching, disabling features, or throttling performance
US8639884B2 (en) Systems and methods for configuring load/store execution units
US7827390B2 (en) Microprocessor with private microcode RAM
US20060101427A1 (en) Handover between software and hardware accelarator
US11829763B2 (en) Early load execution via constant address and stride prediction
CN113836523A (zh) 用于在环转变期间保护栈的处理器扩展
CN104951296A (zh) 允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块
GB2514882A (en) Instruction emulation processors, methods, and systems
US9652242B2 (en) Apparatus for predicate calculation in processor instruction set
US9317285B2 (en) Instruction set architecture mode dependent sub-size access of register with associated status indication
US10678542B2 (en) Non-shifting reservation station
CN106575219B (zh) 针对用于处理运算的向量格式的指令和逻辑技术领域
US9626185B2 (en) IT instruction pre-decode
US10909035B2 (en) Processing memory accesses while supporting a zero size cache in a cache hierarchy
US10747539B1 (en) Scan-on-fill next fetch target prediction
US11422821B1 (en) Age tracking for independent pipelines
US11451241B2 (en) Setting values of portions of registers based on bit values
KR20170067986A (ko) 프로세서, 이를 포함하는 컴퓨팅 시스템 및 프로세서의 구동 방법
US10296338B2 (en) System, apparatus and method for low overhead control transfer to alternate address space in a processor
US20090063881A1 (en) Low-overhead/power-saving processor synchronization mechanism, and applications thereof
US20210089305A1 (en) Instruction executing method and apparatus
US20150178203A1 (en) Optimized write allocation for two-level memory
US10514925B1 (en) Load speculation recovery