KR101099302B1 - 현재 실행중이 아닌 명령 세트로부터 명령들을 프리로드하기 위한 시스템, 방법 및 소프트웨어 - Google Patents

현재 실행중이 아닌 명령 세트로부터 명령들을 프리로드하기 위한 시스템, 방법 및 소프트웨어 Download PDF

Info

Publication number
KR101099302B1
KR101099302B1 KR1020097021341A KR20097021341A KR101099302B1 KR 101099302 B1 KR101099302 B1 KR 101099302B1 KR 1020097021341 A KR1020097021341 A KR 1020097021341A KR 20097021341 A KR20097021341 A KR 20097021341A KR 101099302 B1 KR101099302 B1 KR 101099302B1
Authority
KR
South Korea
Prior art keywords
instruction
preload
instructions
instruction set
cache
Prior art date
Application number
KR1020097021341A
Other languages
English (en)
Other versions
KR20090122285A (ko
Inventor
토마스 앤드류 사토리우스
브라이언 마이클 스템펠
로드니 웨인 스미쓰
Original Assignee
콸콤 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 콸콤 인코포레이티드 filed Critical 콸콤 인코포레이티드
Publication of KR20090122285A publication Critical patent/KR20090122285A/ko
Application granted granted Critical
Publication of KR101099302B1 publication Critical patent/KR101099302B1/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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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
    • 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
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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 or look ahead
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • 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 or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

제 1 프로세서 명령 세트 동작 모드에서 실행되는 명령 프리로드 명령은 상이한 제 2 명령 세트에서 명령들을 정확하게 프리로드하도록 동작한다. 상기 명령들은 명령 세트 프리로드 표시자(ISPI)에 응답하여 제 2 명령 세트 인코딩에 따라 프리디코드된다. 다양한 실시예에서, ISPI는 프리로드 명령을 실행하기 전에 설정되거나, 프리로드 타겟 어드레스 또는 상기 프리로드 명령의 일부를 포함할 수 있다.

Description

현재 실행중이 아닌 명령 세트로부터 명령들을 프리로드하기 위한 시스템, 방법 및 소프트웨어{SYSTEM, METHOD AND SOFTWARE TO PRELOAD INSTRUCTIONS FROM AN INSTRUCTION SET OTHER THAN CURRENTLY EXECUTING}
본 발명은 일반적으로는 프로세서 분야에 관한 것이며, 보다 상세하게는 명령들을 프리로딩(pre-loading)하고 현재 실행중이 아닌 명령 세트가 아닌 명령 세트에 따라 프리로드된 명령들을 프리디코딩(pre-decoding)하는 시스템 및 방법에 관한 것이다.
마이크로프로세서들은 다양한 어플리케이션들에서 계산 작업을 수행한다. 소프트웨어 향상을 통한 신속한 동작 및/또는 증가된 작업성을 허용하는 향상된 프로세서 성능은 대개의 경우 바람직하다. RISC 구조와 같은 구조적 진보와 반도체 기술의 진보 모두를 이용함으로써, 많은 현대적 프로세서들은 DRAM 및 SRAM과 같은 메모리 칩들의 속도보다 더 빠른 클록 속도로 실행된다. 상대적으로 느린 메모리 액세스의 단점을 최소화하기 위하여, 이들 프로세서들은, 계층적 메모리 구조, 즉 데이터의 로컬 카피(copy)와 최근에 액세스되었거나 및/또는 가까운 미래에 (소프트웨어를 통해) 액세스할 것으로 프로세서가 예상하는 명령들을 저장하는 빠른, 온-칩(on-chip) 캐시 메모리들을 이용한다.
명령 캐시에 대하여 예상되는 로드(load)들의 일 예는 프로로드 명령(예를들어, ARM 명령 PLI)이다. 프리로드 명령은 실행에 앞서 명령들을 명령 캐시로 로드한다. 프로그래머는 타겟에 대하여 서브루틴 콜(subroutine call)과 같은 기지의 또는 예상되는 브랜치에 다소 앞서서 프리로드 명령을 코드에 삽입할 수 있다. 프리로드 명령은 타겟에서 명령들을 명령 캐시로 삽입하여, 브랜치가 실행될 때, 타겟에서의 명령들이 캐시내에서 즉각적인 실행을 위해 이용가능해 진다. 프리로드 명령에 응답하여 캐시로 로드될 명령들은 여기서 프리로드 명령들로 언급된다.
대부분의 현대적 프로세서들은 파이프라인 구조를 이용하며, 여기서는 순차적 명령들이 전체 프로세서 수율을 증가시키기 위하여 실행시 중첩된다. 파이프라인을 통한 원활한 실행을 유지하지 하는 것이 높은 수율을 달성하는데 중요하다. 기술분야에서 알려진 파이프라인 최적화 기술의 하나에는 프리디코딩 명령들이 있다. 명령들은 메모리로부터 판독될 때 검사되고, 부분적으로 디코딩되며, 상기 명령들에 대한 일부 정보 ― 프리디코드 정보로 알려져 있음 ― 가 관련 명령들과 함께 명령 캐시 내에 저장된다. 명령들이 캐시로부터 파이프라인으로 나중에 인출되는 경우에, 프리디코드 정보가 또한 인출되며 명령들을 완전히 디코딩하는 것을 지원하는데 이용된다. 프리디코드 정보는 예를들어 브랜치 및 플로팅-포인트(floating-point) 명령들을 식별하고 가변 길이 명령 세트 구조에서 명령의 길이 또는, 파이프라인에서 명령들을 실행하는데 유용한 다른 정보를 식별할 수 있다.
일부 현대적 프로세서들은 두개 이상의 명령 세트 인코딩들에 따라 명령들을 실행할 수 있다. 예를들어, 프로세서는 32-비트 원래(native) 명령 세트를 가질 수 있으며, 추가적으로 자바(Java) 바이트 코드들을 실행할 수 있는 능력을 포함할 수 있다. 다른 예로서, ARM 프로세서 구조의 몇개 버젼들은 ARM 명령 세트 동작 모드에서 32-비트 ARM 명령 인코딩들 실행하고, Thumb 명령 세트 동작 모드에서 16-비트 또는 32-비트 Thumb 명령 인코딩들을 실행한다. 프로그래머들은 관련 명령 세트 인코딩에 따라 명령들을 실행하기 전에 소프트웨어의 적절한 명령 세트 동작 모드를 명시적으로 선택한다.
통상의 프리디코더를 갖는 통상의 프로세서가 프리로드 명령을 실행하는 경우에, 프리로드된 명령들은 현재 명령 세트 동작 모드에 따라 프리디코드된다. 프로그래머가 현재 프로세서 명령 세트 동작 모드와 상이한 명령 세트에서 명령들을 프리로드하고자 하는 경우에 ― 예를들어 상이한 명령 세트에서 기록된 코드 섹션에 대한 브랜치를 예감하는 경우 ― 프로그래머는 프리로드 명령을 실행하기 전에 명령을 변경하여야만 한다.
예를들어, ARM 모드의 ARM 명령들을 실행하는 프로그램은 Thumb 모드로 변경되고 단지 Thumb 명령들만을 실행하는 코드 세그먼트로 분기(branch)될 수 있다. 옳은 프리디코딩을 갖는 Thumb 명령들을 프리로드하기 위해서, 프로그램은 현재 프로세서 명령 세트 동작 모드를 ARM으로부터 Thumb로 스위치하고, Thumb 코드의 타겟(target) 어드레스를 갖는 프리로드 명령을 실행하고, 그 다음, Thumb 코드 섹션으로 분기하기 전에, 남아있는 ARM 명령들을 실행하기 위하여 ARM 모드로 다시 스위칭되어야 한다.
프리로드 명령을 실행하는 Thumb 모드로 들어가지 못함에 의해 프리디코더가 ARM 명령 세트 인코딩들에 따라 프리로드된 Thumb 명령들을 부정확하게 프리디코드하는 것이 야기될 수 있다. 이것이 발생하면, 명령 캐시로부터 인출될 때, 프리디코드 명령은 필요없게 되고 Thumb 명령들은 재인출되어야 하고, 프리로드가 방지되는 것을 의미하는 지연이 일어나게 된다. 또한 태그(tag)의 일부로서 ARM/Thumb 비트를 갖는 명령 캐시에서, 재인출된 Thumb 명령들은 별도의 캐시 라인에 할당되며, Thumb 명령들은 부정확하게 프리로드될 것이며, 이는 ARM 명령들이 캐시 내에 존재하여, 캐시 공간을 낭비하고 따라서 캐시 적중율(hit rate)과 시스템 성능을 낮추기 때문이다.
많은 프로세서들에서, 단일 프리로드 명령을 실행하기 위해 현재 프로세서 명령 세트 동작 모드를 두 배로 스위칭하는데 관련된 오버헤드가 예상되는 명령 세트에서 명령들을 프리로딩하는 이점을 상쇄(overweigh)해 버릴 수 있다.
개시되고 주장되는 하나 이상의 실시예들에 따르면, 제 1 프로세서 명령 세트 동작 모드에서 실행되는 프리로드 명령은 상이한 제 2 명령 세트에서 명령들을 정확하게 프리로드하도록 동작한다. 상기 명령들은 명령 세트 프리로드 표시자(ISPI)에 응답하여 상기 제 2 명령 세트 인코딩에 따라 프리디코드된다. 다양한 실시예에서, ISPI는 프리로드 명령을 실행하기 전에 설정되거나, 프리로드 타겟 어드레스 또는 상기 프리로드 명령의 일부를 포함할 수 있다.
일 실시예는 명령들을 프리로딩(preloading)하는 방법에 관련된다. 다수의 명령 세트들 중 하나를 표시하는 명령 세트 프리로드 표시자가 설정된다. 명령 캐시로 명령들을 프리로드하도록 동작하는 명령이 실행된다. 상기 명령 세트 프리로드 표시자에 응답하여 상기 현재 명령 세트 모드가 아닌 명령 세트에 따라 상기 프리로드된 명령들이 프리디코드된다.
다른 실시예는 프로세서에 관련된다. 상기 프로세서는, 메모리 인터페이스와 명령들을 저장하도록 동작하는 명령 캐시를 포함한다. 상기 프로세서는 또한 상기 명령 캐시로부터 상기 명령들과 프리디코드 정보를 리트리브(retrieve)하고 프로세서 명령 세트 동작 모드에 따라 명령들을 실행하도록 동작하며 명령 세트 프리로드 표시자를 생성하도록 추가로 동작하는 명령 실행 유닛을 포함한다. 상기 프로세서는 상기 명령 캐시와 상기 메모리 인터페이스 사이에 삽입되고, 상기 명령 캐시로 명령들을 프리로드하도록 동작하는 명령의 실행 시, 상기 명령 세트 프리로드 표시자에 응답하여 현재 프로세서 명령 세트 동작 모드가 아닌 명령 세트에 따라 명령들을 프리디코드하도록 동작하는 프리디코더를 더 포함한다.
다른 실시예는 제 1 명령 세트에서 적어도 하나의 프리로드 명령을 저장하는 컴퓨터 판독가능 매체로서, 상기 명령은 프로세서가 명령 캐시로 명령들을 프리로드하도록 동작하며, 상기 프리로드된 명령들은 상이한 제 2 명령 세트에 따라 프리디코드되는, 컴퓨터 판독가능 매체에 관련된다.
도1은 현재 프로세서 명령 세트 모드가 아닌 명령 세트에 따라 프리로드된 명령들을 프리디코딩할 수 있는 프로세서의 기능적 블록도이다.
도2는 다수의 명령 세트들 중 하나에서 명령들을 프리로딩하는 방법의 흐름 도이다.
도1은 다수의 상이한 명령 세트 인코딩들에 따라 인코딩된 명령들을 실행하는 프로세서(110)의 기능적 블록도이다. 프로세서(110)는 현재 프로세서 명령 세트 모드가 아닌 명령 세트에 따라 프리로드된 명령들을 프리디코딩할 수 있다.
프로세서(110)는 파이프(pipe) 스테이지(stage)들에서 조직화된, 다수의 레지스터들 또는 래치(latch)들(116)과 산술 논리 유닛들(Arithmetic Logic Units, ALU)(미도시)과 같은 논리적 및 계산적 회로들을 포함하는 파이프라인(114)을 갖는 명령 실행 유닛(112)에서 명령들을 실행한다. 파이프라인은 제어 로직(118)에 따라 명령들을 실행한다. 파이프라인(114)은 도시된 바와 같이 수퍼스칼라(superscalar) 디자인일 수 있다. 범용 레지스터(General Purpose Register, GPR) 파일(120)은 메모리 계층의 상부를 포함하는 레지스터들을 제공한다. 명령 실행 유닛은 또한 예를들어 명령들이 디코딩되고 실행되는 다수의 명령 세트 인코딩들 중 하나를 정의하는 현재 프로세서 명령 세트 동작 모드를 표시하는 상태 레지스터(122)를 포함한다. 명령 실행 유닛(112)은 또한 명령들의 특성들을 추적하는 L2 처리 로직(124)과 L2 캐시 메모리(136) 또는 주 메모리(138)로부터 인출된 데이터를 포함한다.
파이프라인(114)은 메모리 어드레싱과 허가가 명령측 변환 색인 버퍼(Instruction-side Translation Lookaside Buffer, ITLB)(128)에 의해 관리되면서, 명령 캐시(126)로부터 명령들을 인출한다. 프리디코더(130)는 L2 캐시 (136)(또는 주 메모리(138))로부터 인출된 명령들을 프리디코드하고 명령들 및 프리디코드 정보를 명령 캐시(126) 내로 배치한다. 자세히 설명되는 바와 같이, 프리디코더(130)는 명령 실행 유닛(112)로부터의 명령 세트 프리로드 표시자(instuction set preload indicator, ISPI)에 응답하여, 현재 프로세서 명령 세트 동작 모드와 상이한 명령 세트에 따라 프리로드된 명령들을 프리디코드한다.
데이터는 메모리 어드레싱과 허가가 주(main) 변환 색인 버퍼(Translation Lookaside Buffer, TLB)(134)에 의해 관리되면서, 데이터 캐시(132)로부터 액세스된다. 다양한 실시예들에서, ITLB(128)은 TLB(134)의 일부의 캅피(copy)를 포함할 수 있다. 대안적으로, ITLB(128) 및 TLB(134)는 통합될 수 있다. 유사하게, 프로세서(110)의 다양한 실시예들에서, 명령 캐시(126) 및 데이터 캐시(132)는 단일화될 수 있다.
명령 캐시(126) 및 데이터 캐시(132)에서의 부적중(miss)들은, 도1의 실시예에서 통합되어 있는, 레벨(Level)-2(L2) 캐시 메모리(136)에 대한 액세스를 야기한다. L2 캐시(136)에서의 부적중은 메모리 인터페이스(142)의 제어하에, 시스템 버스(140)를 통한 주(오프-칩(off-chip)) 메모리(138)에 대한 액세스를 야기한다. 프로세서(110)는 주변 버스(150)를 통해 다양한 주변 장치들(146, 148)에 대한 액세스를 제어하는 입/출력(I/O) 인터페이스(144)를 포함할 수 있다. 이 기술분야에서 알려진 바와 같이, 프로세서(110)는 주변 장치(146, 148)에 의해 판독된 메모리(136), 또는 마그네틱 매체 또는 광 매체와 같은 컴퓨터 판독가능 매체로부터 리트리브(retrieve)된 명령들을 실행한다.
당업자는 수많은 다양한 프로세서(110)가 가능하다는 것을 인식할 수 있을 것이다. 예를들어, 프로세서(110)는 레벨-3(L3) 또는 추가 캐시를 포함할 수 있고, 및/또는 별도 L2 캐시(136)가 명령 및 데이터 캐시들(126, 132) 각각에 전용일 수 있다. 또한, 프로세서(110)에 도시된 하나 이상의 기능적 블록들은 특정 실시예에서 생략될 수 있다.
프로세서(110)는 예를들어 상태 레지스터(122)에 표시된 바와 같이, 현재 프로세서 명령 세트 모드에 따라 명령들을 실행한다. 상이한 명령 세트에서의 명령들의 옳은 프리디코딩을 갖는 프리로딩을 가능케하기 위하여, 명령 실행 유닛(112)은 명령 세트 프리로드 표시자(instruction set preload indicator, ISPI)를 생성하고, 프리로드 명령 실행시 ISPI를 프리디코더(130)에 제공한다. 프로세서(110)가 두 개의 명령 세트 인코딩들(예를들어, ARM 및 Thumb)을 지원하는 경우에, ISPI는 단일 비트를 포함할 수 있다. 프로세서(110)가 두 개 이상의 명령 세트 인코딩들을 지원하는 경우에, ISPI는 다중 비트 값을 포함할 수 있고, 각 명령 세트에 대한 별도의 플래그를 포함할 수 있거나, 또는 이 기술분야에서 잘 알려진 바와 같이, 2진 값에서 명령 세트 표시를 인코딩할 수 있다. ISPI는 다양한 방식으로 생성될 수 있다.
일 실시예에서, 프리로드 명령 타겟 어드레스들 중 하나 이상의 비사용 어드레스 비트들이 ISPI로서 인코딩된다. 프리로드 명령(예를들어 PLI)은 타겟 어드레스를 피연산자(operand)로 간주한다. 명령 어드레스는 예를들어, 태그, 세트 갯수, 및 캐시 라인 오프셋으로 분해될 수 있다. 예를들어, 32-비트 명령 가상 어드 레스 VA[31:0]에 대하여, 명령 캐시(126)의 CAM 구조에 저장된 태그들에 대해 비교되는 태그는 VA[31:11]을 포함할 수 있다. n-웨이(n-way) 세트 연상 캐시(associative cache)에서, 태그가 매칭되는 경우에 리턴된 n개 결과들 중에서 세트 갯수가 선택된다. 세트 갯수는 VA[10:5]를 포함할 수 있다. 오프셋, VA[4:0]이 명령 캐시(126)의 RAM 구조에 저장된 캐시 라인 내의 개별 명령들을 (프리디코드 정보와 함께) 어드레스한다.
프리로드 명령은 메모리의 고정 크기 블록을 각 캐시 라인에 로드한다. 모든 명령들이 동일한 길이를 가지면, 고정 갯수의 명령들이 캐시 라인에 로딩된다. 가변 길이 명령 세트에서, 또는 캐시 라인이 상이한 길이의 명령들을 갖는 상이한 명령 세트들에 따라 인코딩된 명령들을 포함하는 경우에, 캐시 라인 내의 명령들의 갯수는 명령들을 명령 캐시로 로딩할 때 알 수 없다. 그러나, 다른 경우에, 명령 캐시로 로딩될 데이터의 양이 알려지며, 따라서 프리로드 명령은 어드레스의 캐시 라인 오프셋 부분을 이용하지 않는다.
일 실시예에 따르면, 캐시 라인 오프셋, 예를들어 VA[4:0]이 명령 세트 프리로드 표시자(ISPI)를 인코딩하기 위해 이용된다. 특히, 프로세서(110)가 두 개의 명령 세트들로부터 명령들을 실행하는 실시예에서, ISPI는 최하위(least significant) 비트 VA[0]가 된다. 한 비제한적 예시로서, VA[0]=0은 ARM 명령들을 표시할 수 있고, VA[0]=1은 Thumb 명령들을 표시할 수 있다. 물론, 다른 ISPI 인코딩들이 가능하며, 프로세서(110)가 지원하는 명령 세트들의 형태 및 갯수에 의존한다.
ISPI는 어드레스가 결정되고 관련 프리로드 명령의 실행을 위한 준비에서 컴파일러 특정 GPR에 기록되는 경우에, 프리로드 타겟 어드레스의 캐시 라인 오프셋 부분에 인코딩된다. 프리로드 명령이 실행되는 경우에, 프리로드 명령은 특정 GPR 레지스터로부터 타겟 어드레스를 판독하고, 타겟 어드레스에서 데이터의 블록을 태그와 어드레스의 세트 갯수 부분들에 의해 결정된 캐시 라인으로 프리로드한다. 어드레스가 명령 캐시에서 적중(hit)하면, 프리로드 명령 실행이 완료된다. 어드레스가 명령 캐시에서 부적중(miss)하면, L2 처리 로직(124)과 같은 명령 실행 유닛(112) 내의 로직이 부적중 처리, L2 캐시(136)와 필요한 경우 명령들을 리트리브하기 위하여 주 메모리(138)를 액세스하는 것을 수행한다.
명령들을 갖는 데이터의 블록이 프리디코더(130)로 로드되는 경우에, L2 처리 로직(124)은 ISPI를 프리디코더(130)에 제시한다. ISPI에 응답하여, 프리디코더(130)는 프로세서(110)의 현재 명령 세트 동작 모드에 상관없이, 표시된 명령 세트에 따라 명령들을 프리디코드한다. 다음, 프리디코더(130)는 옳바른 프리디코드 정보와 함께 명령들을 명령 캐시(126)에 기록한다. 일 실시예에서, 프리디코더(130)는 프리로드 명령 실행의 표시를 수신하고 이러한 표시에 응답하여 (정상 명령 캐시 라인 인출들에 대한 ISPI를 무시하고) ISPI를 검사한다. 다른 실시예에서, L2 처리 로직(24)와 같은 명령 실행 유닛(112) 내의 로직이 ISPI를 프리로드 명령 실행의 지식(knowledge)과 결합하고, 현재 인출된 명령들이 프리디코드되어야 하는 명령들의 세트의 표시를 프리디코더(130)에 제시한다. 다른 경우에, 프리디코더(130)는 ISPI에 응답하여 특정 명령 세트에 따른 프리로드된 명령들을 프리디 코드한다.
일 실시예에서, 역방향 호환성(backward compatibility)을 제공하기 위하여, ISPI에 따라 프리로드된 명령들의 위에서 설명된 프리디코딩이 선택적으로 가능하다. 특히, 상호작용(interworking) 모드가 정의된다. 상호작용 모드는 상태 레지스터(122)에서 하나의 비트로 표시될 수 있다. 상호작용 모드가 가능한 경우에, 위에서 설명한 바와 같이, 프리로드된 명령들의 프리디코딩은 ISPI에 의존한다. 상호작용 모드가 불가능한 경우에, 명령들은 프리로드 명령이 실행되는 때에 활성이 되는 프로세서 명령 세트 모드에 따라 프리디코드된다.
일 실시예에서, 명령 세트 프리로드 표시자(ISPI)는 상태 레지스터(122)와 같은 레지스터 내의 하나 이상의 비트들을 포함한다. 일 실시예에서, 프리로드 명령의 실행 이전에 ISPI 비트들이 명시적으로 설정된다. 프리로드 명령의 실행 시, 프리디코더(130)는 상태 레지스터(122) 또는 다른 레지스터 내의 ISPI 비트들을 검사하고, (그 당시 활성인 프로세서 명령 세트 모드에 상관없이) ISPI 비트들에 의해 표시된 명령 세트 인코딩에 따라 프리로드된 명령들을 프리디코드한다. 다음, 명령들 및 프리디코드 정보가 명령 캐시(126)에 기록된다. 일 실시예에서, ISPI에 따라 프리로딩된 명령들의 프리디코딩이 위에서 설명된 바와 같이 상호작용 모드에 의해 선택적으로 가능하다. 일 실시예에서, ISPI 비트들은 상호작용 모드 표시자 비트에 의해 게이트(gate)될 수 있다.
일 실시예에서, 명령 세트 프리로드 표시자(ISPI)는 프리로드 명령의 op 코드에서 하나 이상의 비트들을 포함한다. 프리로드 명령 op 코드의 비트 필드는 ISPI에 대해 정의될 수 있으며, 컴파일러가 프로그래머의 명령들 또는 코드 내의 지령(directive)들에 따라 ISPI 비트 필드를 설정할 수 있다. 프리로드 명령의 실행시, ISPI 비트 필드가 예를들어 L2 처리 로직(124)에 의해, 프리디코더(130)에 제시되며, 프리디코더(130)은 표시된 명령 세트 인코딩에 따라 프리로드된 명령들을 프리디코드하다. 다음, 명령들 및 프리디코드 정보가 명령 캐시(126)에 기록된다.
일 실시예에서, 두개 이상의 별도 프리로드 명령들이 상이한 명령 세트들에서 명령들을 프리로딩하기 위해 정의된다. 비제한적 일 실시예로서, ARM 명령 세트가, 프리디코더(130)가 ARM 명령들과 같은 프리로드된 명령들을 프리디코딩하면서, 데이터를 명령 캐시(126)에 프리로드하는 통상의 프리로드 명령을 포함할 수 있다. 덧붙여서, ARM 명령 세트는, 프리디코더(130)가 Thumb 명령들과 같은 프리로드된 명령들을 프리디코딩하면서, 데이터를 명령 캐시(126)에 프리로드하는 별도의 대안적 명령 세트 프리로드 명령(예를들어 PLI2)을 또한 포함할 수 있다. 유사하게, Thumb 명령 세트는 Thumb 또는 ARM 명령 세트 인코딩들에 따라 프리디코드된 데이터를 프리로딩하기 위하여 별도의 프리로드 명령들을 포함할 수 있다. 이것은 프로그래머가 적절한 프리로드 명령을 암호로 이용함으로써 목적하는 명령 세트로부터 명령들을 명시적으로 프리로드하는 것을 가능하게 한다.
당업자는 위에서 설명한 실시예들이 상호 배타적이 아니라는 것을 인식할 수 있을 것이다. 예를들어, op 코드 또는 특별(unique) 프리로드 명령에서 ISPI 비트 필드를 갖는 프리로드 명령은, 특정 실시예에서, 상태 레지스터(122)와 같은 레지 스터에 ISPI를 래치(latch)함으로써, 또는 ISPI를 프리로드 타겟 주소 내의 하나 이상의 비사용 어드레스 비트들로 대치함으로써, ISPI를 프리디코더(130)에 제시할 수 있다. 일반적으로, 본 개시내용을 고려하면, 당업자는 주어진 어플리케이션에 대한 상이한 명령 세트들의 명령들을 프리로딩하기 위한 최적 솔루션을 확인할 수 있을 것이다.
도2는 명령들을 프리로딩하는 방법(200)을 도시한다. 상기 방법은 명령 세트 프리로드 표시자(ISPI)(블록(202))를 설정함에 의해 시작된다. ISPI는 프로세서(110)에 의해 지원되는 다수의 명령 세트들중 하나를 특별하게(uniquely) 식별한다. 다양한 실시예서, ISPI는 프리로드 명령 타겟 어드레스를 변경하거나, 상태 레지스터(122)와 같은 레지스터의 ISPI 비트들을 설정하거나, 프리로드 명령 op 코드의 ISPI 비트 필드를 설정하거나, 특별 프리로드 명령을 선택함에 의해 설정될 수 있다.
프리로드 명령이 현재 프로세서 명령 세트 모드에서 실행된다(블록(204)). 프리로드 명령은 프리로드된 명령들의 실행에 앞서 명령 캐시(126)로 명령들을 로드하도록 동작한다. 일 실시예에서, 프리로드된 명령들의 프리디코딩은 상호작용 모드에 의존한다. 상호작용 모드가 인에이블되지 않으면(블록(206)), 프리디코더(130)는 현재 명령 세트 모드에 따라 프리로드된 명령들을 프리디코드한다(블록(208)). 상호작용 모드가 인에블되고(블록(206)), ISPI가 현재 명령 세트 모드가 아닌 명령 세트를 표시하거나 식별하면(블록(210)), 프리디코더(130)는 ISPI에 의해 표시된 명령 세트에 따라 프리로드된 명령들을 프리디코드한다(블록(212)).
설명되고 주장된 하나 이상의 실시예들에 따르면, 프로그래머들은 프리로드된 명령들이 상이한 제 2 명령 세트에 따라 프리디코드되면서, 제 1 명령 세트로부터의 명령들을 실행하면서, 명령들을 명령 캐시(126)에 프리로드할 수 있다. 이러한 방식으로, 명령 세트들 간에 스위치되는 코드의 실행이, 그 명령 세트 내에 기록된 코드로 분기(branch)되기 전에 주어진 명령 세트 내의 명령들이 명령 캐시(126)에서 이용가능하도록 함에 의해 최적화될 수 있다. 명령 세트 프리로드 표시자(ISPI)의 프리디코더(130)에 대한 통신은 다양한 방식으로 구현될 수 있다.
본 발명이 특정 특징들, 양상들 및 그 실시예들과 관련하여 설명되었으나, 다양한 변경, 수정, 및 다른 실시예들이 본 발명의 광의의 범위에서 가능하다는 점은 당업자에게 자명할 것이며, 따라서 모든 변경, 수정, 및 실시예들은 본 발명의 범주 내에 있는 것으로 간주되어야 한다. 따라서, 본 발명은 설명된 모든 양상은 예시적인 것이며 제한적인 것으로 해석되어서는 안 되며 첨부된 청구범위 내의 의미 및 그 균등 범위 내의 모든 변화들이 청구범위 내에 포함되는 것으로 의도된다.

Claims (22)

  1. 명령들을 프리로딩(preloading)하는 방법으로서,
    다수의 명령 세트들 중 하나를 식별하는 명령 세트 프리로드 표시자를 설정하는(setting) 단계 ― 상기 명령 세트 프리로드 표시자(indicator)는 명령 실행 유닛에 의해 생성됨 ― ;
    현재 프로세서 명령 세트 동작 모드에 따라, 명령 캐시로 명령들을 프리로드하도록 동작하는 명령을 실행하는 단계;
    명령 캐시로 명령들을 프리로드하도록 동작하는 상기 명령을 실행하는 때에 상기 명령 세트 프리로드 표시자를 프리디코더에 제공하는 단계; 및
    상기 명령 실행 유닛에 의해 생성된 상기 명령 세트 프리로드 표시자에 응답하여 상기 현재 프로세서 명령 세트 동작 모드가 아닌 명령 세트 동작 모드에 따라 상기 프리로드된 명령들을 프리디코딩(predecoding)하는 단계를 포함하며,
    상기 명령 실행 유닛은 제 2 캐시 메모리로부터 패치된(fetched) 데이터 및 명령들의 특성(property)들을 추적(track)하도록 동작하는 프로세싱 로직을 포함하며, 상기 제 2 캐시 메모리는 상기 명령 캐시와 메모리 인터페이스 사이에 삽입되며, 상기 프리디코더는 상기 명령 캐시와 상기 제 2 캐시 메모리 사이에 삽입되며;
    상기 프리로드된 명령들은 상호작용 모드(interworking mode)에서 상기 현재 프로세서 명령 세트 동작 모드가 아닌 명령 세트 동작 모드에 따라 프리디코드되며, 그렇지 않은 경우는 상기 현재 프로세서 명령 세트 동작 모드에 따라 프리디코드되며, 상기 상호작용 모드는 상태 레지스터의 상호작용 모드 표시자 비트에 의해 표시되고 상기 명령 세트 프리로드 표시자의 하나 이상의 비트들은 상기 상호작용 모드 표시자 비트에 의해 게이트되는(gated),
    명령들을 프리로딩하는 방법.
  2. 제 1 항에 있어서,
    상기 명령 세트 프리로드 표시자는 명령들이 프리로드되는 캐시 라인의 어드레스의 하나 이상의 비트들을 포함하는, 명령들을 프리로딩하는 방법.
  3. 제 2 항에 있어서,
    상기 명령 세트 프리로드 표시자는 명령 캐시 라인 어드레스의 최하위 비트를 포함하는, 명령들을 프리로딩하는 방법.
  4. 제 1 항에 있어서,
    상기 명령 세트 프리로드 표시자는 상기 명령 캐시로 명령들을 프리로드하도록 동작하는 명령의 op 코드의 하나 이상의 비트들을 포함하는, 명령들을 프리로딩하는 방법.
  5. 제 1 항에 있어서,
    명령 캐시로 명령들을 프리로드하도록 동작하는 상기 명령은 프리로드된 명령들이 제 1 명령 세트와 상이한 제 2 명령 세트에 따라 프리디코드되도록 야기하는 제 1 명령 세트의 특별(unique) 프리로드 명령이며, 명령 세트 프리로드 표시자를 설정하는 상기 단계는 상기 특별 프리로드 명령을 선택하는 단계를 포함하는, 명령들을 프리로딩하는 방법.
  6. 제 1 항에 있어서,
    명령 세트 프리로드 표시자를 설정하는 상기 단계는 명령 캐시로 상기 명령들을 프리로드하도록 동작하는 상기 명령을 실행하기 전에 레지스터 내에 하나 이상의 비트들을 설정하는 단계를 포함하는, 명령들을 프리로딩하는 방법.
  7. 메모리 인터페이스;
    명령들과 프리디코드 정보를 저장하도록 동작하는 명령 캐시;
    상기 명령 캐시로부터 상기 명령들 리트리브(retrieve)하고, 현재 프로세서 명령 세트 동작 모드에 따라 상기 명령들을 실행하고, 명령 세트 프리로드 표시자를 생성하도록 동작하는 명령 실행 유닛; 및
    상기 명령 캐시와 상기 메모리 인터페이스 사이에 삽입되고, 상기 명령 캐시로 명령들을 프리로드하도록 동작하는 명령의 실행시에, 상기 명령 실행 유닛에 의해 프리디코더로 제공된 상기 명령 세트 프리로드 표시자에 응답하여 상기 현재 프로세서 명령 세트 동작 모드가 아닌 명령 세트 동작 모드에 따라 프리로드된 명령들을 프리디코드하도록 동작하는 프리디코더; 및
    상기 명령 캐시와 상기 메모리 인터페이스 사이에 삽입된 제 2 캐시 메모리를 포함하며, 상기 프리디코더는 상기 명령 캐시와 상기 제 2 캐시 메모리 사이에 삽입되며, 상기 명령 실행 유닛은 제 2 캐시 메모리로부터 패치된 데이터 및 명령들의 특성들을 추적하도록 동작하는 프로세싱 로직을 포함하며,
    상기 프리디코더는 상호작용 모드에서 상기 현재 프로세서 명령 세트 동작 모드가 아닌 명령 세트 동작 모드에 따라 상기 프리로드된 명령들을 프리디코드하도록 동작하며, 그렇지 않은 경우는 상기 현재 프로세서 명령 세트 동작 모드에 따라 상기 프리로드된 명령들을 프리디코드하도록 동작하며, 상기 상호작용 모드는 상태 레지스터의 상호작용 모드 표시자 비트에 의해 표시되고 상기 명령 세트 프리로드 표시자의 하나 이상의 비트들은 상기 상호작용 모드 표시자 비트에 의해 게이트되는(gated),
    프로세서.
  8. 제 7 항에 있어서,
    상기 명령 실행 유닛은 명령들이 프리로드되는 캐시 라인의 어드레스의 하나 이상의 비트들을 설정함에 의해 상기 명령 세트 프리로드 표시자를 생성하는, 프로세서.
  9. 제 8 항에 있어서,
    상기 명령 프리로드 캐시 라인 어드레스는 상기 명령들을 상기 명령 캐시로 프리로드하도록 동작하는 상기 명령의 연산자(operand)인, 프로세서.
  10. 제 9 항에 있어서,
    상기 명령 프리로드 캐시 라인 어드레스는 상기 명령 캐시로 상기 명령들을 프리로드하도록 동작하는 상기 명령에 의해 판독되는 컴파일러 특정 범용 레지스터로 기록되는, 프로세서.
  11. 제 7 항에 있어서,
    상기 명령 실행 유닛은 상기 명령 캐시로 상기 명령들을 프리로드하도록 동작하는 상기 명령의 op 코드의 하나 이상의 비트들에 응답하여 상기 명령 세트 프리로드 표시자를 생성하는, 프로세서.
  12. 제 7 항에 있어서,
    명령 캐시로 명령들을 프리로드하도록 동작하는 상기 명령은 상기 프리로드된 명령들이 미리 결정된 명령 세트에 따라 프리디코드되도록 야기하는 특별 프리로드 명령이며, 상기 명령 실행 유닛은 상기 특별 프리로드 명령을 실행함에 의해 상기 명령 세트 프리로드 표시자를 생성하는, 프로세서.
  13. 제 7 항에 있어서,
    레지스터를 더 포함하며,
    상기 명령 실행 유닛은 상기 레지스터 내에서 하나 이상의 미리 결정된 비트들을 설정함에 의해 상기 명령 세트 프리로드 표시자를 생성하는, 프로세서.
  14. 제 7 항에 있어서,
    상기 프리디코더는 프리로드 명령 실행의 표시(indication)를 수신하고 상기 프리로드 명령 실행의 표시에 응답하여 상기 명령 세트 프리로드 표시자를 검사(examine)하도록 동작하는, 프로세서.
  15. 제 7 항에 있어서,
    상기 프로세싱 로직은 명령들을 포함하는 데이터의 블록이 상기 프리디코더로 로드된 경우에 상기 명령 세트 프리로드 표시자를 상기 프리디코더로 제시(present)하도록 동작하는, 프로세서.
  16. 제 7 항에 있어서,
    상기 프로세싱 로직은 현재 패치된 명령들이 프리로드 명령 실행의 표시자와 상기 명령 세트 프리로드 표시자에 응답하여 프리디코드되는 명령 세트의 표시를 상기 프리디코더에 제시하도록 동작하는, 프로세서.
  17. 제 1 명령 세트의 적어도 프리로드 명령을 저장하는 컴퓨터 판독가능 매체로서,
    현재 프로세서 명령 세트 동작 모드에 따라 상기 프리로드 명령은 프로세서가 명령 캐시로 명령들을 프리로드하도록 동작하며, 프리로드된 명령들은 명령 실행 유닛에 의해 생성되고 상기 프리로드 명령의 실행시 상기 명령 실행 유닛에 의해 프리디코더로 제공되는 명령 세트 프리로드 표시자에 응답하여 상이한 제 2 명령 세트에 따라 프리디코드되며,
    상기 명령 실행 유닛은 제 2 캐시 메모리로부터 패치된 데이터 및 명령들의 특성들을 추적하도록 동작하는 프로세싱 로직을 포함하며, 상기 제 2 캐시 메모리는 상기 명령 캐시와 메모리 인터페이스 사이에 삽입되며, 상기 프리디코더는 상기 명령 캐시와 상기 제 2 캐시 메모리 사이에 삽입되며;
    상기 프리로드된 명령들은 상호작용 모드에서 상기 현재 프로세서 명령 세트 동작 모드가 아닌 명령 세트 동작 모드에 따라 프리디코드되며, 그렇지 않은 경우는 상기 현재 프로세서 명령 세트 동작 모드에 따라 프리디코드되며, 상기 상호작용 모드는 상태 레지스터의 상호작용 모드 표시자 비트에 의해 표시되고 상기 명령 세트 프리로드 표시자의 하나 이상의 비트들은 상기 상호작용 모드 표시자 비트에 의해 게이트되는(gated),
    컴퓨터 판독가능 매체.
  18. 제 17 항에 있어서,
    프리로드 명령 op 코드는 명령 세트 프리로드 표시자 비트 필드를 포함하고, 상기 명령 세트 프리로드 표시자는 상기 명령 실행 유닛의 상태 레지스터로 명령 세트 프리로드 표시자를 래칭함에 의해 상기 프리디코더에 제시되는, 컴퓨터 판독가능 매체.
  19. 제 17 항에 있어서,
    프리로드 명령 op 코드는 명령 세트 프리로드 표시자 비트 필드를 포함하고 상기 명령 세트 프리로드 표시자는 상기 명령 세트 프리로드 표시자를 프리로드 타겟 어드레스의 하나 이상의 비사용 어드레스 비트들로 대치(substitute)함에 의해 상기 프리디코더로 제시되는, 컴퓨터 판독가능 매체.
  20. 삭제
  21. 삭제
  22. 삭제
KR1020097021341A 2007-03-14 2008-03-14 현재 실행중이 아닌 명령 세트로부터 명령들을 프리로드하기 위한 시스템, 방법 및 소프트웨어 KR101099302B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/685,850 2007-03-14
US11/685,850 US7711927B2 (en) 2007-03-14 2007-03-14 System, method and software to preload instructions from an instruction set other than one currently executing

Publications (2)

Publication Number Publication Date
KR20090122285A KR20090122285A (ko) 2009-11-26
KR101099302B1 true KR101099302B1 (ko) 2011-12-26

Family

ID=39513417

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097021341A KR101099302B1 (ko) 2007-03-14 2008-03-14 현재 실행중이 아닌 명령 세트로부터 명령들을 프리로드하기 위한 시스템, 방법 및 소프트웨어

Country Status (6)

Country Link
US (2) US7711927B2 (ko)
EP (1) EP2137611B1 (ko)
JP (2) JP5528819B2 (ko)
KR (1) KR101099302B1 (ko)
CN (1) CN101627366B (ko)
WO (1) WO2008113007A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7769983B2 (en) 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
US7711927B2 (en) * 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
US8037286B2 (en) 2008-01-23 2011-10-11 Arm Limited Data processing apparatus and method for instruction pre-decoding
US9075622B2 (en) * 2008-01-23 2015-07-07 Arm Limited Reducing errors in pre-decode caches
US7917735B2 (en) 2008-01-23 2011-03-29 Arm Limited Data processing apparatus and method for pre-decoding instructions
US7925866B2 (en) 2008-01-23 2011-04-12 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
US8347067B2 (en) * 2008-01-23 2013-01-01 Arm Limited Instruction pre-decoding of multiple instruction sets
US7925867B2 (en) 2008-01-23 2011-04-12 Arm Limited Pre-decode checking for pre-decoded instructions that cross cache line boundaries
US7747839B2 (en) 2008-01-23 2010-06-29 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
GB2460280A (en) 2008-05-23 2009-11-25 Advanced Risc Mach Ltd Using a memory-abort register in the emulation of memory access operations
GB2484489A (en) * 2010-10-12 2012-04-18 Advanced Risc Mach Ltd Instruction decoder using an instruction set identifier to determine the decode rules to use.
JP5598554B2 (ja) * 2011-01-25 2014-10-01 富士通株式会社 システム、およびデータロード方法
US10055227B2 (en) * 2012-02-07 2018-08-21 Qualcomm Incorporated Using the least significant bits of a called function's address to switch processor modes
JP5840525B2 (ja) * 2012-02-16 2016-01-06 シャープ株式会社 情報処理装置
CN103823664B (zh) * 2012-11-19 2017-12-15 中兴通讯股份有限公司 一种二进制合一Boot程序及内核程序的设计方法
US20140244932A1 (en) * 2013-02-27 2014-08-28 Advanced Micro Devices, Inc. Method and apparatus for caching and indexing victim pre-decode information
US9348598B2 (en) 2013-04-23 2016-05-24 Arm Limited Data processing apparatus and method for pre-decoding instructions to be executed by processing circuitry
US10606596B2 (en) * 2013-07-15 2020-03-31 Texas Instruments Incorporated Cache preload operations using streaming engine
US9940242B2 (en) * 2014-11-17 2018-04-10 International Business Machines Corporation Techniques for identifying instructions for decode-time instruction optimization grouping in view of cache boundaries
US11275587B2 (en) * 2018-05-02 2022-03-15 Micron Technology, Inc. Static identifications in object-based memory access
US10761855B2 (en) 2018-05-02 2020-09-01 Micron Technology, Inc. Securing conditional speculative instruction execution

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030182535A1 (en) * 1999-01-11 2003-09-25 Tomohiko Kadowaki Processor apparatus and integrated circuit employing prefetching and predecoding
US20040133764A1 (en) 2003-01-03 2004-07-08 Intel Corporation Predecode apparatus, systems, and methods

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5129067A (en) 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
JPH0476626A (ja) * 1990-07-13 1992-03-11 Toshiba Corp マイクロコンピュータ
DE69327927T2 (de) 1992-08-31 2000-10-12 Sun Microsystems Inc Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten
DE69422780T2 (de) * 1993-11-05 2000-08-17 Intergraph Corp Superskalare Rechnerarchitektur mit Softwarescheduling
GB2290395B (en) * 1994-06-10 1997-05-28 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5638525A (en) 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5819056A (en) * 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
US5822559A (en) * 1996-01-02 1998-10-13 Advanced Micro Devices, Inc. Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions
US6085314A (en) * 1996-03-18 2000-07-04 Advnced Micro Devices, Inc. Central processing unit including APX and DSP cores and including selectable APX and DSP execution modes
JP2806359B2 (ja) * 1996-04-30 1998-09-30 日本電気株式会社 命令処理方法及び命令処理装置
US6002876A (en) 1996-09-27 1999-12-14 Texas Instruments Incorporated Maintaining code consistency among plural instruction sets via function naming convention
US6064219A (en) * 1997-02-05 2000-05-16 Tektronix, Inc. Modular test chip for multi chip module
US6081864A (en) * 1997-07-31 2000-06-27 Advanced Micro Devices, Inc. Dynamic configuration of a device under test
US6134650A (en) * 1997-12-12 2000-10-17 Advanced Micro Devices, Inc. Apparatus and method for predicting a first scanned instruction as microcode instruction prior to scanning predecode data
US6081884A (en) 1998-01-05 2000-06-27 Advanced Micro Devices, Inc. Embedding two different instruction sets within a single long instruction word using predecode bits
US6430674B1 (en) 1998-12-30 2002-08-06 Intel Corporation Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time
US6438700B1 (en) 1999-05-18 2002-08-20 Koninklijke Philips Electronics N.V. System and method to reduce power consumption in advanced RISC machine (ARM) based systems
JP2001142692A (ja) 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
US6446197B1 (en) * 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6449712B1 (en) * 1999-10-01 2002-09-10 Hitachi, Ltd. Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions
US6324643B1 (en) * 1999-10-01 2001-11-27 Hitachi, Ltd. Branch prediction and target instruction control for processor
US6654871B1 (en) 1999-11-09 2003-11-25 Motorola, Inc. Device and a method for performing stack operations in a processing system
GB2358261B (en) 2000-01-17 2004-06-09 Advanced Risc Mach Ltd Data processing with native and interpreted program instruction words
US6564208B1 (en) * 2000-02-24 2003-05-13 Inktomi Corporation Delivering non-default items in association with search results
US20020004897A1 (en) * 2000-07-05 2002-01-10 Min-Cheng Kao Data processing apparatus for executing multiple instruction sets
GB2367653B (en) 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
GB2367651B (en) 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
US6564298B2 (en) 2000-12-22 2003-05-13 Intel Corporation Front end system having multiple decoding modes
JP3644892B2 (ja) * 2001-01-22 2005-05-11 智原科技股▲ふん▼有限公司 複数組の命令組を実行するためのデータ処理装置
US7093108B2 (en) * 2001-02-01 2006-08-15 Arm Limited Apparatus and method for efficiently incorporating instruction set information with instruction addresses
US7356673B2 (en) 2001-04-30 2008-04-08 International Business Machines Corporation System and method including distributed instruction buffers for storing frequently executed instructions in predecoded form
GB2376100B (en) 2001-05-31 2005-03-09 Advanced Risc Mach Ltd Data processing using multiple instruction sets
GB2376097B (en) 2001-05-31 2005-04-06 Advanced Risc Mach Ltd Configuration control within data processing systems
US7017030B2 (en) 2002-02-20 2006-03-21 Arm Limited Prediction of instructions in a data processing apparatus
US6816962B2 (en) * 2002-02-25 2004-11-09 International Business Machines Corporation Re-encoding illegal OP codes into a single illegal OP code to accommodate the extra bits associated with pre-decoded instructions
US6978358B2 (en) 2002-04-02 2005-12-20 Arm Limited Executing stack-based instructions within a data processing apparatus arranged to apply operations to data items stored in registers
GB2390700B (en) * 2002-04-15 2006-03-15 Alphamosaic Ltd Narrow/wide cache
EP1387252B1 (en) * 2002-07-31 2019-02-13 Texas Instruments Incorporated Instruction prefix to indicate system commands
EP1387250B8 (en) * 2002-07-31 2012-02-29 Texas Instruments Inc. Processor that accomodates multiple instruction sets and multiple decode modes
JP4127495B2 (ja) 2002-09-05 2008-07-30 株式会社ルネサステクノロジ 情報処理装置
GB2393274B (en) 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
US20060149927A1 (en) 2002-11-26 2006-07-06 Eran Dagan Processor capable of multi-threaded execution of a plurality of instruction-sets
GB2403572B (en) 2002-12-12 2005-11-09 Advanced Risc Mach Ltd Instruction timing control within a data processing system
US7484075B2 (en) * 2002-12-16 2009-01-27 International Business Machines Corporation Method and apparatus for providing fast remote register access in a clustered VLIW processor using partitioned register files
US7080242B2 (en) 2002-12-19 2006-07-18 Hewlett-Packard Development Company, L.P. Instruction set reconciliation for heterogeneous symmetric-multiprocessor systems
GB2402757B (en) 2003-06-11 2005-11-02 Advanced Risc Mach Ltd Address offset generation within a data processing system
GB2402764B (en) * 2003-06-13 2006-02-22 Advanced Risc Mach Ltd Instruction encoding within a data processing apparatus having multiple instruction sets
US7707389B2 (en) * 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
US7441329B2 (en) * 2004-06-07 2008-10-28 Subtron Technology Co. Ltd. Fabrication process circuit board with embedded passive component
US7328332B2 (en) * 2004-08-30 2008-02-05 Texas Instruments Incorporated Branch prediction and other processor improvements using FIFO for bypassing certain processor pipeline stages
JP2006160200A (ja) * 2004-12-10 2006-06-22 Tkj Kk 乗員保護装置、乗員保護装置付車両
US7421568B2 (en) * 2005-03-04 2008-09-02 Qualcomm Incorporated Power saving methods and apparatus to selectively enable cache bits based on known processor state
US7234043B2 (en) 2005-03-07 2007-06-19 Arm Limited Decoding predication instructions within a superscaler data processing system
US7769983B2 (en) * 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
US7589406B2 (en) * 2005-06-27 2009-09-15 Micron Technology, Inc. Stacked semiconductor component
US7622309B2 (en) * 2005-06-28 2009-11-24 Freescale Semiconductor, Inc. Mechanical integrity evaluation of low-k devices with bump shear
US20070051949A1 (en) * 2005-09-06 2007-03-08 Peter Schneider Method and arrangment for testing a stacked die semiconductor device
US20070113055A1 (en) * 2005-11-15 2007-05-17 Dale Jason N Apparatus and method for improving single thread performance through speculative processing
US7353363B2 (en) * 2006-03-03 2008-04-01 Microsystems, Inc. Patchable and/or programmable decode using predecode selection
US7962725B2 (en) * 2006-05-04 2011-06-14 Qualcomm Incorporated Pre-decoding variable length instructions
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
US7711927B2 (en) 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
US7925866B2 (en) 2008-01-23 2011-04-12 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030182535A1 (en) * 1999-01-11 2003-09-25 Tomohiko Kadowaki Processor apparatus and integrated circuit employing prefetching and predecoding
US20040133764A1 (en) 2003-01-03 2004-07-08 Intel Corporation Predecode apparatus, systems, and methods

Also Published As

Publication number Publication date
JP5837126B2 (ja) 2015-12-24
EP2137611A1 (en) 2009-12-30
CN101627366B (zh) 2014-03-12
US8145883B2 (en) 2012-03-27
KR20090122285A (ko) 2009-11-26
CN101627366A (zh) 2010-01-13
US20080229069A1 (en) 2008-09-18
WO2008113007A1 (en) 2008-09-18
US7711927B2 (en) 2010-05-04
US20100169615A1 (en) 2010-07-01
EP2137611B1 (en) 2014-03-05
JP2014194783A (ja) 2014-10-09
JP5528819B2 (ja) 2014-06-25
JP2010521748A (ja) 2010-06-24

Similar Documents

Publication Publication Date Title
KR101099302B1 (ko) 현재 실행중이 아닌 명령 세트로부터 명령들을 프리로드하기 위한 시스템, 방법 및 소프트웨어
EP2018609B1 (en) Pre-decoding variable length instructions
US7676659B2 (en) System, method and software to preload instructions from a variable-length instruction set with proper pre-decoding
EP0848323B1 (en) Improvements in the branch prediction within a pipelined microprocessor
JP5231018B2 (ja) ページ内のプログラムカウンター相対アドレスまたは絶対アドレスの分岐命令のためのtlbの抑制
JP4585005B2 (ja) 分岐訂正によるプリデコードのエラー処理
US20090006803A1 (en) L2 Cache/Nest Address Translation
US7680985B2 (en) Method and apparatus for accessing a split cache directory
US20070028050A1 (en) Instruction cache having fixed number of variable length instructions
US7937530B2 (en) Method and apparatus for accessing a cache with an effective address
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
US20030204705A1 (en) Prediction of branch instructions in a data processing apparatus
CN113568663A (zh) 代码预取指令

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20141128

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150930

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161125

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 9