KR100368166B1 - 컴퓨터 처리 시스템에서 스택 레퍼런스를 변경하는 방법 - Google Patents

컴퓨터 처리 시스템에서 스택 레퍼런스를 변경하는 방법 Download PDF

Info

Publication number
KR100368166B1
KR100368166B1 KR10-2001-0003766A KR20010003766A KR100368166B1 KR 100368166 B1 KR100368166 B1 KR 100368166B1 KR 20010003766 A KR20010003766 A KR 20010003766A KR 100368166 B1 KR100368166 B1 KR 100368166B1
Authority
KR
South Korea
Prior art keywords
stack
memory
register
location
instruction
Prior art date
Application number
KR10-2001-0003766A
Other languages
English (en)
Other versions
KR20010078088A (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 KR20010078088A publication Critical patent/KR20010078088A/ko
Application granted granted Critical
Publication of KR100368166B1 publication Critical patent/KR100368166B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • G06F9/30134Register stacks; shift 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/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
    • 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/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
    • 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/3858Result writeback, i.e. updating the architectural state or memory

Abstract

본 발명의 하나의 특징은 컴퓨터 처리 시스템에서 스택 위치의 메모리 레퍼런스를 변경하는 방법에 관한 것이다. 이 방법은 구성적으로 형성된 스택 액세스 방법을 사용하는 스택 레퍼런스를 검출하는 단계 및 그 스택 레퍼런스를 처리기내부 레지스터의 레퍼런스로 대체하는 단계를 포함한다. 그 구성적으로 형성된 스택 액세스 방법은 스택 포인터, 프레임 포인터, 및 인자(argument) 포인터중 하나를 사용하는 메모리 액세스를 포함한다. 또한, 구성적으로 형성된 스택 액세스 방법은 푸시, 팝 및 기타의 스택 조작 동작을 포함한다.

Description

컴퓨터 처리 시스템에서 스택 레퍼런스를 변경하는 방법{METHODS FOR RENAMING STACK REFERENCES IN A COMPUTER PROCESSING SYSTEM}
본 발명은 컴퓨터 처리 시스템 및 특히 스택 레퍼런스를 컴퓨터 처리 시스템에서 변경하는 방법에 관한 것이다.
메모리는 컴퓨터 처리 시스템에서 정보의 기억 장소로서 역할을 한다. 도 1은 종래 기술에 따라 컴퓨터 프로그램의 메모리(100)의 전형적인 레이아웃을 예시하는 블록도이다. 그 레이아웃은 프로그램 텍스트 영역(104), 프로그램 데이터 영역(106), 힙(108), 및 프로그램 스택(110)을 포함하는 구획된 메모리 영역으로 구성된다. 프로그램 텍스트 영역(104)이 사용되어 프로그램 텍스트(즉, 컴퓨터 명령)를 기억한다. 프로그램 데이터 영역(106)이 사용되어 (정적 데이터 레퍼런스용) 프로그램 데이터를 기억한다. 힙(108)이 동적으로 할당된 객체용으로 사용되고 프로그램 스택(110)이 기능-로컬 변수용으로 사용된다.
도시했듯이, 메모리(100)는 다른 데이터 형태를 구획된 메모리 영역에 기억한다. 다음의 다른 메카니즘이 사용되어 상기 메모리를 액세스한다. 즉,
1. 프로그램 텍스트 영역(104)은 프로그램 및 가능하게는 프로그램 상수의 작동을 설명하는 컴퓨터 명령을 기억한다. 프로그램 텍스트 영역(104)은 보통 판독 전용이고 프로그램 카운터를 사용해서 액세스된다.
2. 프로그램 데이터 영역(106)은 정적 데이터 레퍼런스, 예를 들어, 전체 프로그램 변수를 갖는다. 프로그램 데이터 영역(106)은 전체 데이터 포인터 또는 내용 데이터 구조의 테이블을 사용해서 액세스된다.
3. 힙(108)은 동적으로 할당된 객체를 갖고 처리기 레지스터에서 유지된 포인터를 사용해서 액세스된다.
4. 프로그램 스택(110)은 기능-로컬 변수를 보통 갖고 스택 포인터(SP), 프레임 포인터(FP) 또는 인자 포인터(AP) 등의 특정 목적용 레지스터를 사용해서 액세스된다.
보통, 모든 프로그램 메모리는 레지스터에서 기억되는 포인터를 사용해서 액세스된다. 그러나, 상기 설명된 액세스 메카니즘이 전형적인 프로그램의 각 영역용으로 사용된다.
일반적으로, 처리기는 메모리로부터 정보를 액세스하고, 그 처리기상에서 계산을 수행하고, 그 결과를 메모리로 기억한다. 유감스럽게도, 메모리 액세스는 많은 비용을 들게 한다. 다음에는 그 비용에 대해 설명한다.
메모리 액세스 동작이 처음 검출되었을 때, 액세스되는 어드레스가 결정되야된다.
처리기가 다른 메모리 동작에 대해 판독 동작을 재정렬(reorder)하길 원하고, 판독 어드레스가 재정렬될 때의 시간에 다르다는 것으로 결정될 수 없다면, 그후에 메모리 어드레스 모호성에 대한 확인을 수행할 필요가 있다.
부가해서, 기억 동작이 처리기 상태를 변형하기 때문에, 그들은 정렬해서 수행되어야한다. 그로 인해, 다수의 수명 한계를 동일한 메모리 위치로 배정할 때 동작을 연속화함에 의해 이루어질 수 있는 처리기 성능이 더 감소된다. 그러므로, 다수의 종속값이 동일한 메모리 어드레스로 배정될 때, 수퍼스케일 처리기에 수행될 수 있는 재정렬도에는 통상적으로 제한이 가해진다.
더구나, 로드 및 기억 동작은 통상적으로 캐시에 액세스되어야 한다. 그러나, 캐시에 액세스하는 것은 처리기 레지스터에 액세스하는 것과 비교해서 느리므로, 컴퓨터 처리 시스템의 메모리 계층에서 더 높은 레벨을 나타낸다.
프로그램을 프로그래머에 의해 기록하는 방법에서 다수의 메모리 레퍼런스를연속화하는 효과가 발생된다. 그러나, 프로그램을 그 소스 레벨 표시로부터 실제 머신으로 변환하는 방법으로부터 메모리 레퍼런스의 연속화 효과가 발생된다. 그 경우에, 레퍼런스가 프로그램 스택에 만들어진다.
프로그램 스택은 기능들의 로컬 변수값을 포함하는 기록인 스택 프레임뿐만 아니라 기능들간에 통과된 파라미터를 기억한다. 스택 위치를 자주 재사용하면서, 다른 기능들은 동일한 어드레스를 갖는 메모리 위치를 사용해서 관련안된 객체를 기억한다.
C 프로그래밍 언어에 기록된 다음의 코드 예를 생각해보자:
상기 코드가 인텔 x86 머신 코드로 변환될 때, 다음의 명령이 발생된다.
상기 코드가 메모리에서 처리기 스택을 유지하는 비효율성의 몇가지 예를 예시한다:
1. 레지스터값(ES1 및 EBX)은 스택상에서 명령 11 및 12로 기억되고 명령 23 및 24로 복원된다. 상기 값은 처리기내부 레지스터에서 유지된다.
2. 호출 기능에 의해 스택상으로 푸시되는 파라미터(a 및 b)는 스택으로부터 처리기 레지스터로 판독되야하고, 그후 스택상에 기능 mult3 및 inc 각각으로 기억된다.
3. 기능 mult3 및 inc 각각에 대한 파라미터(a 및 b)는 동일한 스택 위치에 기억되어, 기능 inc로부터의 동작은 기능 mult3에 대한 명령과 동시에 스케쥴될 수 없다. 이러한 연속화는 필수적인 것은 아니다.
메모리 위치의 재사용 및 스택 포인터의 조작으로 인한 스택 레퍼런스의 연속화 효과는 "The Limits of Instruction Level Parallelism in SPEC95 Applications", International Conference on Architectural Support for Programming Languages and Operating System(ASPLOS-VIII) Workshop on Interaction between Compilers and Computer Architectures(INTERACT-3), 1998년 10월에 Postiff 등에 의해 설명되고, 또한, 상기 연속화 효과를 결정함에 의해 이루어질 수 있는 성능 개선을 설명한다.
이전의 메모리 변경은 일반적인 메모리 레퍼런스의 변경을 토대로 하고, 멀티프로세서 효과를 무시하는 경향이 있음을 알 수 있다. 상기 종래 기술의 일부 방법을 현재 설명한다.
메모리 변경은 데이터 종속성 예측을 통상적으로 포함한다. 어드레스의 계산없이 데이터 종속성을 동적으로 예측하는 메카니즘은 "Streamlining Inter-operation Memory Communication via Data Dependence Prediction", Proceedings of 30th Annual International Symposium on Microarchitecture Research Triangle Park, NC, 1997년 12월에 A. Moshovos and G. Sohi에 의해 설명된다. 예측 종속성은 필요로 하는 데 왜냐하면 로드 및 기억 동작의 어드레스가 결정되지 않을 수 있기 때문이다. 예측의 정확성을 위해, 상기 메모리 동작이 결국 실행될 필요가 있다. 종속성을 예측하는 비슷한 방법이 "Improving the Accuracy and Performance of Memory Communication Through Renaming", Proceedings of 30th Annual International Syposium on Microarchitecture Research Triangle Park, NC, 1997년 12월에 G.Tyson 및 T. Austin에 의해 설명된다. 메모리에 대한 액세스를 처리기내부 레지스터로 촉진시키는 일반적인 기술이 Moshovos Sohi 및 Tyson Austin에 의해 개발되었다. 그것에는 상당히 복잡한 하드웨어가 필요로 한다. 더구나, 예측이 사용되어, 명령의 실제 디코딩에서는 정확지 않으며 수리에는 비용이 많이 든다. 메모리 동작 및 메모리 변경의 비정렬된 실행을 지원하는 어드레스 결정 버퍼는 "ARB: A Hardware Mechanism for Dynamic Reordering of Memory References", IEEE Transactions on Computers, Vol. 45, No.5, 1996년 5월에 M.Franklin 및 G.Sohi에 의해 설명된다. 단점으로는 그 버퍼가 비싸고, 필요한 하드웨어가 복잡하고, 그 버퍼는 멀티프로세서 시스템 및 그것의 일관성 요건을 고려하지 않는다.
1999년 6월 8일에 발간된 "Superscalar Microprocessor Having Combined Register and Memory Renaming Circuits, System, and Methods"을 명칭으로 하는 미국 특허 제 5,911,057호의 개시는 본 출원에서 참고 문헌으로 되고, 메모리 및 레지스터 오퍼랜드를 일정한 방식으로 변경하는 구조를 설명한다. "스누핑" 메모리 요청을 토대로 메모리 밀착성이 이루어진다. 상기 방법이 멀티프로세서 계산 시스템에서 메모리 동작의 정렬된 실행에 충분하게 되는 동안, 멀티프로세서 시스템의 비정렬된 동작이 부정확한 결과를 발생시킬수 있다. 1998년 11월 17일에 발간되었고 "Out of order Superscalar Microprocessor with a Renaming Device that Maps Instruction from Memory to Registors" 를 명칭으로 하는 미국 특허 제 5,838,941호는 메모리 레퍼런스의 심벌 변경을 설명하고, 그 개시는 본원에서 참고 문헌으로 된다. 본 발명은 모든 형태의 등가성으로 처리하고, 연관된 어래이의 룩업을 필요로 하므로 표현 및 명칭간의 등가성을 확정한다. 그로 인해 잠재적으로 사이클 시간에 심하게 영향을 미치는 복잡한 구조를 갖게 된다.
그러므로, 스택 레퍼런스로부터 발생하는 연속화 효과를 제거하는 방법을 갖는 것이 매우 바람직하고 매우 유리하다. 그 방법이 멀티프로세서 시스템에서 적용가능하다면 더 바람직하고 유리하다.
종래 기술의 상기 언급된 문제뿐만 아니라 다른 관련된 문제는 컴퓨터 처리 시스템에서 스택 레퍼런스를 변경하는 방법인 본 발명에 의해 해결된다.
본 발명의 제1 특징에 따라, 컴퓨터 처리 시스템에서 스택 위치의 메모리 레퍼런스를 변경하는 방법이 구비된다. 그 방법은 구성적으로 형성된 스택 액세스 방법을 사용하는 스택 레퍼런스를 검출하는 단계 및 그 스택 레퍼런스를 처리기내부 레지스터의 레퍼런스로 대체하는 단계를 포함한다.
본 발명의 제2 특징에 따라, 이 방법은 컴퓨터 처리 시스템의 처리기내부 레지스터 및 메인 메모리간에 구성된 상태를 동기화하는 단계를 포함한다.
본 발명의 제3 특징에 따라, 이 방법은 기록 스택 레퍼런스인 모든 스택 레퍼런스에 대해 정렬된 기록 동작을 삽입하는 단계를 더 구비한다.
본 발명의 제4 특징에 따라, 이 방법은 구성적으로 형성된 스택 액세스 방법을 사용하지 않는 스택 레퍼런스에 대해 일관성-유지 동작을 수행하는 단계를 포함한다.
본 발명의 제5 특징에 따라, 일관성-유지 동작을 수행하는 단계는 값을 설정된 프로세서내 레지스터로부터 스택 영역을 참조로 하고 구성적으로 형성된 스택 액세스 방법을 사용하지 않는 로드 동작으로 우회하는 단계를 포함한다.
본 발명의 제6 특징에 따라, 구성적으로 형성된 스택 액세스 방법은 스택 포인터, 프레임 포인터, 및 인자 포인터중 하나를 사용하는 메모리 액세스를 포함한다.
본 발명의 제7 특징에 따라, 구성적으로 형성된 스택 액세스 방법은 푸시, 팝 및 기타의 스택 조작 동작을 포함한다.
본 발명의 제8 특징에 따라, 컴퓨터 처리 시스템에서 스택 위치의 메모리 레퍼런스를 변경하는 방법이 구비된다. 이 방법은 로드 명령이 스택 위치에 액세스하는 구성적으로 형성된 레지스터를 사용해서 로컬 스택의 위치를 참조하는 지를 결정하는 단계를 포함한다. 로드 명령이 구성적으로 형성된 레지스터를 사용해서 그 위치를 참조할 때, 변경 레지스터가 로컬 스택내의 레퍼런스된 위치로 존재하는 지가 결정된다. 변경 레지스터가 존재할 때, 그 위치에 대한 레퍼런스는 변경 레지스터의 레퍼런스로 대체된다.
본 발명의 상기 및 다른 특징, 특성 및 장점은 첨부 도면과 관련시켜서 설명되는 양호한 실시예의 상세한 설명으로부터 명백해진다.
도 1은 종래 기술에 따른 컴퓨터 프로그램의 전형적인 메모리 레이아웃의 예시도.
도 2는 본 발명의 실시예에 따른 단일 명령의 초기 처리를 수행하는 방법을 예시하는 흐름도.
도 3은 본 발명의 실시예에 따른 로드 동작 처리를 예시하는 흐름도.
도 4는 본 발명의 다른 실시예에 따른 로드 동작 처리를 예시하는 흐름도.
도 5는 본 발명의 실시예에 따른 기억 동작 처리를 예시하는 흐름도.
도 6은 본 발명을 적용시킨 수퍼스케일 비정렬된(out-of-order) 처리기를 예시하는 블록도.
본 발명은 컴퓨터 처리 시스템에서 스택 레퍼런스를 변경하는 방법에 관한 것이다. 본 발명에 따라, 스택 레퍼런스는 처리기내부 레지스터로 변경된다. 빈번한 변경 기회를 스택 레퍼런스로 집중시킴에 의해, 변경 구조는 변경 메모리 레퍼런스에 대한 종래 기술의 방식보다 더 효율적으로 실행될 수 있다.
다음 2개의 특성으로부터 그 효율성이 발생된다. 제 1특성으로 명칭을 결정하기 쉽게 하는 데, 왜냐하면 처리기 스택의 레퍼런스가 스택 및 프레임 포인터 등의 제한된 어드레싱 레지스터수를 사용하기 때문이다. 그로 인해, 다른 일반 목적용 레지스터를 사용하는 메모리 위치의 변경에서 야기될 수 있는 모호성이 감소된다. 다른 레지스터를 사용하는 액세스가 가능한 동안에, 그들은 매우 드물어서 간단히 모호성을 없애는 기술을 사용해서 처리된다.
제 2특성에서, 멀티프로세서 시스템에서 일관성-유지 동작을 수행할 필요성은 상당히 감소되는 데, 왜냐하면 스택 레퍼런스가 로컬 처리로부터만 보통 참조된다. 또한, 다른 처리기로부터의 레퍼런스가 가능하나, 그들은 드물기 때문에, 그들은 간단한 기술을 사용해서 결정된다.
처리기 레지스터의 스택 레퍼런스를 변경함에 의해, 스택 레퍼런스는 레퍼런스의 재정렬 등의 처리기 레지스터에 통상적으로 인가된 다수의 최적화로 수정될 수 있어서, 비-종속성 및 기록 동작의 추론적 실행을 결정하도록 변경한다.
본 발명의 확실한 이해를 용이하게 하기위해, 본원에서 사용된 용어의 정의는 다음과 같다. 로드 명령은 로드된 값을 토대로 메모리-판독 액세스 및 (선택적인) 계산을 수행하는 명령을 말한다. 그러므로, 로드 명령은 메모리 위치로부터 데이터를 오퍼랜스로서 사용하는 예를 들어, 논리, 산술 및 다른 명령을 포함한다. 기억 명령은 메모리 기록-액세스 및 선택적으로 계산을 수행하는 명령을 말한다. 비정렬된 실행은 명령의 순차 스트림에서의 동작이 재정렬되는 기술이어서, 나중에나타나는 동작에서 필요한 리소스가 없다면, 나중에 나타나는 동작이 먼저 실행된다. 그러므로, 비정렬된 명령은 명령 순차의 원래 위치로부터 명령 시퀀스의 이전 위치로 명령을 이동함에 의해 정적으로 또는 동적으로 발생된다.
다음의 설명 및 대응하는 예는 2개의 명령을 토대로 설정되고(다른 명령이 없다면), 그 2개의 명령중 제 1명령은 정렬된 명령으로 불리우는 제 2의 논리적으로 선행하는 명령전에 비정렬로 실행된다. 그러므로, 다른 명령이 없다면, 명칭 '정렬'은 논리적으로 선행하는 정렬된 명령 및 제 1의 '비정렬된' 명령간의 순차 관계만을 말한다. 상기 2개의 명령(즉, 정렬된 및 비정렬된 로드 명령)이 제 3의 명령 등과 정렬된 또는 비정렬된 관계로 될 수 있다.
본 발명의 일반적인 설명은 독자에게 본 발명의 개념을 소개하기위한 것이다. 결과적으로, 본 발명의 각 특징을 더 상세하게 설명한다.
본 발명은 메모리 스택 레퍼런스만을 변경함에 의해(변경하는 모든 메모리 레퍼런스에 대비하여) 메모리 변경의 발생을 단순화한다. 그 방법은 적어도 다음과 같은 이유로 장점을 갖게 된다. 즉,
1. 스택 레퍼런스의 연속 효과로 인한 성능 저하가 변환 과정에 의해 인위적으로 발생되고 프로그램에서는 이루어지지 않는다.
2. 스택 레퍼런스를 간단히 변경함에 의해 상당한 성능 이득이 이루어진다.
3. 스택 액세스의 "명칭"은 결정하기 쉬운데 왜냐하면 스택 및 프레임 포인터가 양호하게-형성된다는 의미를 갖기 때문이다(메모리의 위치에 포인트할 수 있었던 다른 레지스터와 달리).
4. 스택 레퍼런스가 하나의 과정 및 단일 처리기로 보통 국부적으로 되고, 스택 또는 프레임 포인터를 통해 이루어지기 때문에, 멀티프로세서 일관성의 중요성이 감소된다.
5. 명칭 등가성을 검출하는 것이 쉬운데 왜냐하면 스택에 대한 레퍼런스가 스택 또는 프레임 포인터를 통해서만 이루어지기 때문이다(프레임 포인터가 스택 포인터로부터 양호하게 정의된 거리에 있다).
메모리에 대한 다른 레퍼런스들간의 일관성은 스택 레퍼런스가 로컬 처리기 스택에만 및 스택 포인터(SP), 프레임 포인터(FP) 및 선택적 인자 포인터 (AP) 등의 스택을 관리하기위해 특히 지정된 레지스터를 통해서만 존재하는 것을 고찰함에 의해 결정된다.
하나의 처리기의 스택 영역에 대한 레퍼런스가 상기 특히 지정된 스택-관리 레지스터를 제외한 수단에 의해 일관성을 유지하는 동작을 수행하게 된다. 그 레퍼런스는 쉽게 검출될 수 있다. 예를 들어, 범용 레지스터(예를 들어, SP, FP 및 AP 등의 스택 레지스터를 제외한 레지스터)에 의한 로컬 처리기 스택에 대한 액세스는 그 스택을 포함하는 페이지 테이블 엔트리를 태그함에 의해 및 메모리 유닛의 상태를 표시함에 의해 검출될 수 있다. 그후에, 처리기는 하드웨어의 그 상황을 처리하거나 예외(exception)를 증가시키고 예외 핸들러의 상태를 결정할 수 있다. 다른 예로서, 멀티프로세싱 시스템에서, 다른 처리기의 스택으로의 액세스는 엔트리를 TLB(translation lookaside buffer)에서 사용할 수 없게 되어 예외를 갖게 되고 소프트웨어의 상태를 처리함에 의해 또는 그 스택을 원격 처리기에 기억하도록 페이지를 사용하는 것을 TLB에서 표시함에 의해 검출될 수 있다.
도 2는 본 발명의 실시예에 따른 단일 명령의 초기 처리를 수행하는 방법을 예시하는 흐름도이다.
명령이 프로그램 메모리(100)로부터 페치된다(단계 210). 그런후, 그 페치된 명령이 메모리 동작인지(즉, 그 페치된 명령이 메모리(100)를 참조하는 지)를 결정한다 (단계 212). 그렇다면, 메모리 동작이 본 발명에 따라 처리된다(단계 214). 특정한 처리 단계는 판독 액세스용 메모리를 참조하는 명령에 대해서는 도 3 및 4에서 상세히 도시되고, 기록 액세스용 메모리를 참조하는 명령에 대해서는 도 5에 도시된다.
그 페치된 명령이 메모리 동작이 아니라면, 처리기 레지스터의 레퍼런스가 변경된다(단계 216). 단계 216은 선택적이고 바란다면 생략될 수 있다. 그후에, 명령이 이송용 이송 테이블에서 실행 유닛중 하나로 입력되고(단계 218), 그 방법이 종료된다.
도 3은 본 발명의 실시예에 따른 로드 동작 처리(예를 들어, 도 2의 단계 214)를 예시하는 흐름도이다. 일반적으로, 변경 레지스터가 메모리 판독 레퍼런스용으로 있다면, 메모리 판독 레퍼런스는 변경 레지스터의 레퍼런스로 대체된다. 그렇치 않으면, 메모리에 기억된 스택 위치으로부터의 로드를 수행한다.
도 3의 방법에 따라, 로드 명령이 스택 포인터(SP) 또는 프레임 포인터(FP)를 사용해서 로컬 스택내의 위치를 참조하는 지가 결정된다(단계 310). 어떤 구조에서는, 단계 310에서 로드 명령이 DEC VAX 구조내의 인자 포인터(AP) 등의 스택위치에 액세스하기위해 사용된 추가의 포인터를 참조하는 지가 선택적으로 결정될 수 있다. 로드 명령이 SP, FP 또는 AP 레지스터를 명백히 참조할 필요는 없으나, 적어도 하나의 그 포인터를 불명료하게 참조하는 푸시 또는 팝 (예를 들어, 인텔 x86 구조내에서 찾을 수 있듯이) 등의 명령일 수 있다.
로드 명령이 스택 포인터(SP) 또는 프레임 포인터(FP)를 사용해서 로컬 스택내의 위치를 참조하면, 이 방법은 단계 320로 진행한다. 그렇치 않으면, 로드 명령이 다른 레지스터를 사용해서 스택내의 위치를 참조하는 지를 결정한다(단계 314). 로컬 스택 위치에만 관계되는, 단계 310에서 이루어진 결정과 달리, 단계 314에서 이루어진 결정은 로컬 또는 원격 스택 위치 모두를 포함한다.
단계 314는 디코드, 어드레스 발생 또는 메모리 어드레스 단계동안 수행될 수 있다. 본 발명의 실시예에 따라, 단계 314의 실행은 스택 레퍼런스를 포함하는 스택(110)(도 1 참조)내의 페이지의 TLB 엔트리를 마크하는 것을 포함한다.
로드 명령이 다른 레지스터를 사용해서 스택내의 위치를 참조하지 않으면, 정상 로드 동작(즉, 메인 메모리 또는 캐시로부터의 로드 동작)이 수행된 후 그 방법이 종료된다(단계 316). 그러나, 로드 명령이 다른 레지스터를 사용해서 스택내의 위치를 참조하지 않으면, 일관성-유지 메카니즘은 실행되어 스택 영역으로부터 로드 동작을 수행한다(단계 318). 일관성 유지 메카니즘은 하드웨어, 소프트웨어 또는 그 결합된 것에서 실행될 수 있다. 일관성 유지 메카니즘의 실시예는 하기에서 상세히 설명된다.
단계 320에서, 변경 레지스터가 로컬 스택내의 레퍼런스된 위치에 존재하는지를 결정한다. 스택 포인터로부터 거리 100을 갖는 메모리 레퍼런스용 심벌 어드레스인 "(SP)+100"를 사용하거나 레퍼런스된 위치의 어드레스를 실제로 계산함에 의해 단계 320는 수행된다.
변경 레지스터가 로컬 스택내의 레퍼런스된 위치에 있다면, 스택 위치의 레퍼런스가 변경 레지스터의 레퍼런스로 대체되고 그 방법은 종료된다(단계 322). 그러나, 변경 레지스터가 로컬 스택내의 레퍼런스된 위치에 대해 없다면, 정상 로드 명령(즉, 메인 메모리 또는 캐시로부터의 로드 명령)을 명령 스트림에 삽입하고 그 방법이 종료된다(단계 324).
메모리 변경을 스택 레퍼런스로 제한하는 것은 메모리 변경용의 상기 종래 기술 방식에 대한 해상도를 간단히 처리하는 장점을 갖는다. 그러므로, "Streamlining Inter-operation Memory Communication via Data Dependence Prediction"을 명칭으로한 상기 참조 논문에서 A. Moshovos and G. Sohi에 의해 사용된 바와 같은 데이터 종속성 예측과 달리, 실제 종속성은 명령을 디코드함에 의해 결정될 수 있다.
또한, 다른 심벌 변경 기술 방식과는 달리, 스택 레퍼런스의 심벌 변경은 복잡한 논리를 필요로 하지 않아서 1998년 11월 17일에 발간되었고 "Out of order Superscalar Microprocessor with a Renaming Device that Maps Instruction from Memory to Registors" 를 명칭으로 하는 미국 특허 제 5,838,941호에서 설명된 것과 같은 등가성을 결정하고, 그 개시는 본원에서 참고 문헌으로 된다. 본 발명의 방식에 대해, 모든 레퍼런스들은 서로 쉽게 결정할 수 있는 오프세트로 있는 스택레지스터중 하나를 통해 있다.
도 3의 방법에서 스택 포인터값이 변화함에 따라(서브루틴 호출상에서) 레퍼런스의 조절이 필요로 함을 알 수 있다. 그러나, 그 조절이 당업자에 의해 쉽게 이루어진다.
절대 어드레스를 사용하는 것이 또한 단순화되는 데, 왜냐하면 스택 포인터 및 프레임 포인터의 값들이 좀처럼 결정 및 변경되기에 쉽지 않기 때문이다. 특히, 상기 레지스터에 대한 변화는 간단한 산술이어서, 스택 레퍼런스 변경 논리에서 변경용만으로 사용되는 새도우된(shadowed) 스택 포인터로써 추측해서 수행될 수 있다.
도 4는 본 발명의 다른 실시예에 따른 로드 동작 처리(도 2의 단계 214)를 예시하는 흐름도이다. 일반적으로, 변경 레지스터가 스택 위치용이면, 메모리 레퍼런스가 변경 레지스터의 레퍼런스에 의해 대체된다. 그렇치 않으면, 새로운 변경 레지스터가 할당되고, 값을 스택으로부터 변경 레지스터로 로드하는 명령이 명령 스트림으로 삽입되고 메모리 위치에 대한 원래의 레퍼런스가 새롭게 할당된 변경 레지스터의 레퍼런스로 대체된다.
도 4의 방법에 따라, 로드 명령이 스택 포인터(SP) 또는 프레임 포인터(FP)를 사용해서 로컬 스택내의 위치를 참조하는 지가 결정된다(단계 410). 어떤 구조에서는, 단계 410에서 로드 명령이 DEC VAX 구조내의 인자 포인터(AP) 등의 스택 위치에 액세스하기위해 사용된 추가의 포인터를 참조하는 지가 선택적으로 결정될 수 있다. 로드 명령이 SP, FP 또는 AP 레지스터를 확실히 참조할 할 필요는 없으나, 적어도 하나의 그 포인터를 불확실하게 참조하는 푸시 또는 팝 (예를 들어, 인텔 x86 구조에 있는) 등의 명령일 수 있다.
로드 명령이 스택 포인터(SP) 또는 프레임 포인터(FP)를 사용해서 국부 스택내의 위치를 참조하면, 그 방법은 단계 420로 진행한다. 그렇치 않으면, 로드 명령이 다른 레지스터를 사용해서 스택내의 위치를 참조하는 지를 결정한다(단계 414). 단계 414는 디코드, 어드레스 발생 또는 메모리 어드레스 단계동안 수행될 수 있다. 본 발명의 실시예에 따라, 단계 414의 실행은 스택 레퍼런스를 포함하는 스택 메모리 영역(도 1 참조)에서 페이지의 TLB 엔트리를 마크하는 것을 포함한다.
로드 명령이 다른 레지스터를 사용해서 스택내의 위치를 참조하지 않으면, 정상 로드 동작(즉, 메인 메모리 또는 캐시로부터의 로드 동작)이 수행된 후 그 방법이 종료된다(단계 416). 그러나, 로드 명령이 다른 레지스터를 사용해서 스택내의 위치를 참고하지 않으면, 일관성-유지 메카니즘은 실행되어 스택 영역으로부터 로드 동작을 수행한다(단계 418). 일관성 유지 메카니즘은 하드웨어, 소프트웨어 또는 그 결합된 것에서 실행될 수 있다. 일관성 유지 메카니즘의 실시예는 하기에서 상세히 설명된다.
단계 420에서, 변경 레지스터가 레퍼런스된 위치로 존재하는 지를 결정한다. 상기 테스트가 스택 포인터로부터 거리 100을 갖는 메모리 레퍼런스용 심벌 어드레스인 "(SP)+100"를 사용하거나 레퍼런스된 위치의 어드레스를 실제로 계산함에 의해 수행된다. 메모리 변경을 스택 레퍼런스로 제한하는 것은 도 3에 대해 상기 설명한 장점을 갖는다.
사용되는 변경 기술에 무관하게, 변경 레지스터가 레퍼런스된 위치로 존재한다면, 스택 위치의 레퍼런스가 변경 레지스터의 레퍼런스로 대체되고 그 방법은 종료된다(단계 422). 그러나, 변경 레지스터가 레퍼런스된 위치로 존재하지 않는 다면, 변경 레지스터가 로드 동작에 의해 레퍼런스된 스택 위치용으로 할당된다(단계 424). 그후에, 값을 처리기로부터 새롭게 할당된 변경 레지스터로 로드하는 명령 스트림에 로드 명령을 삽입하고(단계 426), 그 방법이 단계 422로 복귀한다.
도 5는 본 발명의 실시예에 따른 기억 동작 처리(예를 들어, 도 6의 유닛(620))를 예시하는 흐름도이다.
기억 명령이 스택 포인터(SP) 또는 프레임 포인터(FP)를 사용해서 로컬 스택내의 위치를 참조하는 지가 결정된다(단계 510). 어떤 구조에서는, 단계 510에서 기억 명령이 DEC VAX 구조내의 인자 포인터(AP) 등의 스택 위치에 액세스하기위해 사용된 추가의 포인터를 참조하는 지가 선택적으로 결정될 수 있다. 기억 명령이 SP, FP 또는 AP 레지스터를 확실히 참조할 필요는 없으나, 적어도 하나의 그 포인터를 불확실하게 참조하는 푸시 또는 팝 (예를 들어, 인텔 x86 구조에 있는) 등의 명령일 수 있다.
기억 명령이 스택 포인터(SP) 또는 프레임 포인터(FP)를 사용해서 로컬 스택내의 위치를 참조하면, 그 방법은 단계 520로 진행한다. 그렇치 않으면, 기억 명령이 다른 레지스터를 사용해서 스택내의 위치를 참조하는 지를 결정한다(단계 514). 로컬 스택 위치에만 관계되는, 단계 510에서 이루어진 결정과 달리, 단계 514에서 이루어진 결정은 로컬 또는 원격 스택 위치 모두를 포함한다. 단계 514는 디코드,어드레스 발생 또는 메모리 어드레스 단계동안 수행될 수 있다. 본 발명의 실시예에 따라, 단계 514의 실행은 스택 레퍼런스를 포함하는 스택 메모리 영역(도 1 참조)에서 페이지의 TLB 엔트리를 마크하는 것을 포함한다.
기억 명령이 다른 레지스터를 사용해서 스택내의 위치를 참조하지 않으면, 정상 기억 동작(즉, 메인 메모리 또는 캐시로부터의 기억 동작)이 수행된 후 그 방법이 종료된다(단계 516). 그러나, 그 명령이 다른 레지스터를 사용해서 스택내의 위치를 참조하면, 일관성-유지 메카니즘은 실행되어 스택 영역으로 기억 동작을 수행한다(단계 518). 일관성 유지 메카니즘은 하드웨어, 소프트웨어 또는 그 결합된 것에서 실행될 수 있다. 일관성 유지 메카니즘의 실시예는 하기에서 상세히 설명된다.
단계 520에서, 새로운 변경 레지스터가 기억 동작에 의해 레퍼런스된 스택 위치로 할당된다. 변경 레지스터는 스택 포인터로부터 거리 100을 갖는 메모리 레퍼런스용 심벌 어드레스인 "(SP)+100"를 사용하거나 어드레스를 실제로 계산함에 의해 명명될 수 있다. 메모리 변경을 스택 레퍼런스로 제한하는 것은 도 3에 대해 상기 설명한 바와 같은 장점을 갖는다.
메모리 레퍼런스가 새롭게 할당된 변경 레지스터의 레퍼런스로 대체된다(단계 522). 값을 변경 레지스터로부터 메모리로 기억하는 명령이 명령 스트림으로 삽입되고(단계 524), 방법이 종료된다. 단계 524가 선택적이어서, 바란다면 생략될 수 있음을 알 수 있다.
명령을 동적으로 예정되게 할 수 있는 처리기(비정렬된 발생 처리기)의 종래의 실행은 다음의 특성을 포함한다. 즉,
1. 명령들간에 종속성을 검출할 능력을 포함하는 명령을 비정렬로 발생하는 메카니즘은 명령에 의해 사용된 레지스터를 변경하고, 명령에 의해 사용된 리소스의 유효성을 검출한다.
2. 명령이 (비정렬로) 실행될 때, 명령의 효과를 반영하는 처리기의 비정렬된 상태를 유지하는 메카니즘.
3. 명령을 프로그램 순서대로 제거하고, 동시에 정렬된 상태를 제거되는 명령의 효과로써 갱신하는 메카니즘.
4. 정렬된 상태를 갱신함이 없이 명령을 프로그램 순서대로 제거하고(제거되는 명령의 결과를 효과적으로 취소하는), 제거되는 명령에서 개시하는 프로그램의 정렬된 실행을 재개하는(비정렬된 상태에 있는 모든 결과를 취소하는 것을 의미하는) 메카니즘.
제거되는 명령의 결과가 올바를 때, 상기 리스트로부터의 메카니즘 3이 사용되어 명령을 제거한다. 대안적으로, 제거되는 명령의 실행 또는 어떤 외부 이벤트로부터 발생하는 비정상 상태가 있을 때마다 메카니즘 4가 사용된다.
도 6은 본 발명을 적용하는 종래의 컴퓨터 처리 시스템(예를 들어, 수퍼스케일 처리기를 포함하는)의 기능적 블록 다이어그램이다. 도 6의 시스템은 상기 리스트된 메카니즘을 사용해서 메모리 동작의 재정렬을 지원하나 프로그램 스택 레퍼런스를 비정렬로 변경 및 실행하는 능력을 배제한다. 이 시스템은 메모리 서브시스템 (601); 데이터 캐시(602); 명령 캐시(604); 및 처리기 유닛(600)으로 구성된다. 처리기 유닛(600)은 명령 큐(603); 로드 및 기억 동작을 수행하는 다수의 메모리 유닛(MUs)(605); 인티저, 논리 및 플로팅 포인트 동작을 수행하는 다수의 기능 유닛(FUs)(607); 분기 유닛(BU)(609); 레지스터 파일(611); 레지스터 맵 테이블 (620); 프리(free)-레지스터 큐(622); 이송 테이블(624); 제거 큐(626); 및 정렬 맵 테이블(628)을 포함한다. 상기와 같은 구성은 마이크로아키텍쳐에 관한 제 26차 연례 국제 심포지움의 회보(pp. 202-13, 1993년 12월) "Register Renaming and Dynamic Speculation: An Alternative Approach"를 명칭으로 해서 M. Moudgill, K. pingali,및 S. Vassiliadis에 의한 논문에서 설명된 것으로 토대로 한다.
도 6에 도시된 처리기에서, 명령이 분기 유닛(609)의 제어하에서 명령 캐시 (604)로부터(또는, 그 명령이 명령 캐시(604)에 있지 않을 때, 메모리 서브시스템 (601)으로부터) 페치되어, 명령 큐(603)에 위치되고, 연속해서 명령 큐(603)로부터 이송된다. 오퍼랜드를 지정하는 명령에 의해 사용되는 레지스터 명칭이 레지스터 맵 테이블(620)의 내용에 따라 변경되어, 구성된 레지스터 명칭에서 물리적인 레지스터로 현재의 맵핑을 지정한다. 결과에 대한 수신지를 지정하는 명령에 의해 사용되는 그 구성된 레지스터 명칭은 프리-레지스터 큐(622)로부터 인출된 물리적인 레지스터로 배정되어, 처리기에 의해 현재 사용되지 않는 물리적인 레지스터의 명칭을 포함한다. 레지스터 맵 테이블(620)은 명령에 의해 지정되는 그 구성된 수신지 레지스터 명칭에 물리적인 레지스터를 배정함으로써 갱신된다. 변경된 모든 그 레지스터를 갖는 명령이 이송 테이블(624)에서 위치된다. 명령은 그 어드레스 및 그 물리적으로 구성된 레지스터 명칭을 포함하는, 프로그램 순서대로 제거 큐(626)에또한 위치된다. 그 명령에 의해 사용되는 모든 리소스가 사용가능할 때(물리적인 레지스터가 예측된 오퍼랜드에 배정되고, 기능 유닛이 프리(free)이다), 명령은 이송 테이블 (624)로부터 이송된다. 명령에 의해 사용되는 오퍼랜드가 범용 레지스터(GPRs), 플로팅-포인트 레지스터(EPRs) 및 상태 레지스터(CRs)를 포함하는 레지스터 파일(611)로부터 판독된다. 명령이 대응하는 메모리 유닛(605), 기능 유닛(607) 또는 분기 유닛(609)에서 잠재적으로 비정렬로 실행된다. 실행 완료시, 명령으로부터의 결과가 레지스터 파일(611)에 위치된다. 실행 완료하는 명령에 의해 세트되는 물리적인 레지스터용으로 대기하는 이송 테이블(624)에서의 명령이 통지된다. 제거 큐(626)가 실행을 완료하는, 예외를 발생시키는 지를 포함하는 명령에 통지된다. 완료된 명령이 제거 큐(626)로부터 프로그램 순서대로(큐의 헤드로부터) 제거된다. 제거 시간에, 명령에 의해 예외가 발생하지 않으면, 그후에 정렬 맵 테이블 (628)이 갱신되어, 구성된 레지스터 명칭이 제거되는 명령으로부터의 결과를 포함하는 레지스터 파일(611)에서의 물리적인 레지스터를 가르키고, 정렬 맵 테이블(628)로부터의 이전의 레지스터 명칭이 프리-레지스터 큐(622)로 복귀된다.
다른 한편으로, 명령이 예외를 발생키시키면, 그후에 프로그램 제어는 제거 큐(626)로부터 제거되는 명령의 어드레스로 세트된다. 또한, 제거 큐(626)가 클리어되어(플러쉬되어), 모든 제거안된 명령을 취소한다. 또한, 레지스터 맵 테이블 (620)은 정렬 맵 테이블(628)의 내용으로 세트되고, 정렬 맵 테이블(628)에 없는 레지스터가 프리-레지스터 큐(622)에 부가된다.
상기 구성 요소에 부가해서, 수퍼스케일 처리기는 분기-이력 테이블 등의 다른 구성 요소를 포함하여 분기의 결과를 예측한다.
본 발명에 따라, 선행하는 로드 명령에 대한 로드 명령의 재정렬을 지원하는 종래의 수퍼스케일 처리기(도 6에 도시된)는 다음의 것으로 확대된다. 즉,
A. 로드 및 기억 동작(CISC 명령 세트에서 통상적으로 발견되는 바와 같이, 스택 또는 프레임 포인터를 사용해서 메모리를 참조하는 명확한 로드 또는 기억 동작, 또는 다른 동작)을 검출하는 제1 메카니즘.
B. 로드 또는 기억 동작을 내부 레지스터의 레퍼런스로 변환하는 제2 메카니즘.
C. 다른 로드 명령(스택 및 프레임 포인터를 통해 메모리를 처리하지 못하는)이 처리기 스택을 참조하는 지를 검출하고, 값을 명령에 제공하는 제3 메카니즘.
D. 다른 처리기의 스택 영역의 메모리 레퍼런스를 검출하고, 그 값을 검색하는 제4 메카니즘.
또한, 상기 메카니즘 4는 확장되어 변경 레지스터에 현재 기억된 모든 스택 레퍼런스를 처리기 메모리로 끌어낸다. 도 5의 단계 524에서 메모리 기록 명령이 명령 스트림으로 들어가서 모든 스택 레퍼런스를 처리기 메모리에 정렬해서 기록하면, 그것은 특히 간단하다.
본 발명에 의해 제공된 메카니즘은 다음과 같이 도 6에 도시된 종래의 비정렬 처리기에서 사용가능한 메카니즘과 연관시켜서 사용된다. 메모리 동작을 검출하는 제 1메카니즘은 레지스터 맵 테이블(620)에서 실행된다. 메모리 동작이 스택 레퍼런스를 참조하면, 그것은 제 2메카니즘을 사용해서 변경 레지스터의 레퍼런스로 변환된다. 스택 레퍼런스용 변경 레지스터는 범용 레지스터용으로 사용되는 것과 공유하거나, 그들은 구획된 처리기 리소스로서 실행될 수 있다.
제 3 및 4메카니즘은 메모리 유닛(605) 및 하이브리드 구조를 따르는 시스템 소프트웨어에서 실행된다.
범용 레지스터를 토대로한 메모리 액세스 및 로컬 스택 레퍼런스간의 간섭 검출용 제 3메카니즘이 처리기 스택을 참조해서 TLB 엔트리를 마킹함에 의해 수행된다. 본 실시예에서, 범용 레지스터를 사용하는 그 페이지의 레퍼런스에 의해 처리기는 모든 추측 상태를 제거하고 동작을 정렬해서 수행한다. 본 실시예에 따라, 스택 레퍼런스의 정렬된 값은 프로그램 순서대로 삽입되는 기억 명령에 의해 처리기 메모리에 기억된다(도 5의 단계 524). 그후에, 처리는 현재의 명령을 따르는 명령으로써 계속된다.
제 4메카니즘은 원격 처리기내부의 프로그램 스택으로서 사용되는 메모리 위치용 페이지 변환을 로딩하지 않음에 의해 실행된다. 결과적으로, 원격 처리기상에서 스택 위치의 레퍼런스는 예외를 증가시키고, 게다가 시스템 소프트웨어가 원격 처리기의 스택 영역으로부터의 메모리 판독 요청을 그 처리기와 동기시킬 수 있다.
본 발명의 실시예에 따라, 이 실시예는 요청을 원격 처리기상에서 실행하는 운용 체계 커널(kernel)로 보냄에 의해 소프트웨어에서 수행된다. 본 발명의 다른 실시예에 따라, 상기 요청 및 일관성을 유지하는 데 필요한 동작이 하드웨어에서 수행된다.
도 3,4 및 5의 단계 318, 418 및 518의 일관성 유지 메카니즘이 간단한 설명된다. 정렬된 기억 동작이 로드 동작을 대응하는 어드레스로부터 수행함에 의해 수행된다(도 5의 선택적인 단계 524에서). 정렬된 기억 동작이 스택 레퍼런스에 대해 수행되지 않으면, 일관성 유지 메카니즘의 실행은 모든 스택 변경 레지스터를 그 대응하는 스택 위치로 끌어낸다. 그것은 구별된 메카니즘으로써 또는 모든 비정렬된 동작을 제거하고 메모리의 모든 스택 변경 위치에 대해 확장되었던 도 6의 메카니즘 4를 작동함에 의해 실행된다. 다른 실시예에서, 로컬 처리기 스택의 로드 레퍼런스는 변경 레지스터로부터 또한 직접 우회된다.
다수의 값이 존재하면, 현재의 로드 동작전에 기록된 최종값이 도 3 및 4의 단계 318 및 418에서 검색되야한다. 그것을 행하는 하나의 방법은 현재의 로드 동작을 따르는 모든 명령을 제거한다.
기억 동작용 일관성 메카니즘은 도 6의 메카니즘 4를 작동함에 의해 모든 비정렬된 상태를 제거하는 단계를 포함할 수 있다. 메카니즘 4가 모든 비정렬된 동작을 제거하고 메모리의 모든 스택 변경 위치로 확장될 수 있다. 실행을 재개시할 때, 변형된 값이 도 3의 단계 316 또는 도 4의 단계 426에 의해 메모리에서 로드된다.
스택 로드 및 기억 동작이 다른 크기의 데이터 형태라면, 특별한 주의가 기울여져야한다. 로드 동작이 기억 동작에 의해 제공된 데이터 비트의 서브세트라면, 그것들은 간단한 방법으로 추출될 수 있다. 로드 동작으로 불리우는 데이터가 하나 이상의 스택 변경 레지스터 및 가능하게는 처리기 메인 메모리에 상주하고 있다면,더 복잡한 데이터 모음(gathering)을 필요로 한다.
본 발명의 일실시예에 따라, 적어도 모든 오버랩핑 레지스터는 메인 메모리로 기록되고 메모리 판독 동작이 수행된다. 도 5의 단계 524에서 메모리 기록 명령이 모든 스택 레퍼런스를 처리기 메모리에 정렬해서 기록하는 명령 스트림으로 입력되면, 메모리 판독 동작이 특히 간단하다.
본 발명의 다른 실시예에 따라, 처리기는 모든 추측 상태를 제거하고, 모든 스택 레퍼런스를 메모리로 끌어내고, 메모리 로드 동작을 정렬해서 수행한다. 다시, 도 5의 단계 524에서 메모리 기록 명령이 모든 스택 레퍼런스를 처리기 메모리에 정렬해서 기록하도록 명령 스트림으로 입력되면, 메모리 로드 동작이 특히 간단하다.
처리기 변경 메카니즘이 변경 레지스터를 다 써 버릴때, 계속중인 명령에서 레퍼런스를 갖지 않는 변경 레지스터는 복원될 수 있고 그 내용은 처리기 메모리에 기록된다. 그것에서 정렬된 기억이 도 5의 단계 524에서 삽입되지 않으면 변경 레지스터에 의해 기억된 값이 메모리에 기록되야한다.
최적화된 실시예에서, 예측기(predictor)는 도 4의 단계 424 및 도 5의 단계 520에서 그 스택 레퍼런스를 처리기 레지스터로 변경하도록 결정하기위해 사용되어 스택 레퍼런스에 할당된 레지스터수를 감소시킨다. 처리기 레지스터에 할당되지 않은 스택 레퍼런스는 로드 및 기억 명령을 메인 메모리로 사용함에 의해 수행된다.
본 발명의 일실시예에 따라, 변경 레지스터가 처리기 레지스터 및 스택 레퍼런스 변경용으로 공유될 수 있다. 본 발명의 다른 실시예에 따라, 그들은 분리된리소스이다.
최적화된 실시예에 따라, 스택 레퍼런스의 변경이 복제 동작의 제거와 결합되어, 임계 경로를 감소시킨다.
일실시예에 따라, 스택 레퍼런스는 "스택 포인터값+거리"의 심벌 명칭을 사용해서 명명된다. 이 경우에, 스택 포인터 내용이 변화될 때 명칭의 동기가 필요로 된다. 또한, 프레임 포인터 및 스택 포인터간의 거리가 사용되어 FP-상대적인 레퍼런스를 SP-상대적인 레퍼런스로 변환한다.
다른 실시예에 따라, 어드레스(예를 들어, 유효, 가상 또는 물리적인)가 사용되어 스택 포인터를 변경한다. 최적화된 실시예에서, 스택 포인터(및 선택적으로 프레임 포인터, 인자 포인터 등)는 변경 유닛에서 새도우되고, 페치되는 명령 스트림과 동기해서 추측 조절된다. 그것은 레지스터 파일에 필요한 메모리 포트수를 감소시키고 변경동안 더 공격적인 추측을 가능하게 한다.
일실시예에 따라, 로컬 스택에 액세스하는 일관성-유지 동작은 각 변경된 스택 레퍼런스를 어드레스 정보와 관련시킴에 의해 및 요청된 데이터가 변경 레지스터 또는 실제 메모리 위치에 있는 지를 결정하도록 변경된 스택 레퍼런스의 룩업을 수행함에 의해 하드웨어에서 실행된다. 다른 실시예에 따라, 그 실시예는 소프트웨어만을 사용해서 실행되고, 즉, 범용 레지스터를 사용하는 스택 영역의 레퍼런스는 예외를 야기시키고, 소프트웨어는 그 변경된 값을 현재의 요청에 동기화한다.
실시예가 첨부 도면을 참고로 본원에서 설명되었지만, 본 시스템 및 방법이그 실시예로 제한되지 않으며, 각종의 다른 변화 및 변형이 본 발명의 범위 또는 정신에서 벗어남이 없이 당업자에 의해 이루어진다. 그 변화 및 변형 모두는 첨부된 청구항에 의해 한정했듯이 본 발명의 범위내에서 포함되게 된다.

Claims (39)

  1. 컴퓨터 처리 시스템에서 스택 위치의 메모리 레퍼런스를 변경하는 방법으로서,
    구조적으로 형성된 스택 액세스 방법을 사용하는 스택 레퍼런스를 검출하는 단계와;
    상기 스택 레퍼런스를 처리기내부 레지스터의 레퍼런스로 대체하는 단계를 구비하는 것인
    컴퓨터 처리 시스템에서 스택 위치의 메모리 레퍼런스를 변경하는 방법.
  2. 제1항에 있어서, 컴퓨터 처리 시스템의 처리기내부 레지스터 및 메인 메모리간에 구성된 상태를 동기화하는 단계를 더 구비하는 것인 방법.
  3. 제2항에 있어서, 상기 동기화 단계는 기록 스택 레퍼런스인 모든 스택 레퍼런스에 대해 정렬된 기록 동작을 삽입하는 단계를 구비하는 것인 방법.
  4. 제1항에 있어서, 구조적으로 형성된 스택 액세스 방법을 사용하지 않는 스택 레퍼런스에 대해 일관성 유지 동작을 수행하는 단계를 더 구비하는 것인 방법.
  5. 제4항에 있어서, 일관성 유지 동작을 수행하는 상기 단계가 설정된 처리기내부 레지스터로부터 스택 영역을 참조로 하고 구조적으로 형성된 스택 액세스 방법을 사용하지 않는 로드 동작으로 값을 우회하는 단계를 구비하는 것인 방법.
  6. 제4항에 있어서, 컴퓨터 처리 시스템의 처리기내부 레지스터 및 메인 메모리간에 구성된 상태를 동기화하는 단계를 더 구비하고, 일관성 유지 동작을 수행하는 상기 단계는 상기 동기화 단계를 수행할 때 메인 메모리로부터의 스택 레퍼런스용 정렬된 값을 복구하는 단계를 구비하는 것인 방법.
  7. 제6항에 있어서, 상기 스택 레퍼런스가 기록 스택 레퍼런스일 때, 상기 정렬된 값이 상기 스택 레퍼런스에 대응하는 명령을 포함하는 명령 스트림으로 삽입되는 정렬된 기록 동작에 의해 메인 메모리로 기록되는 것인 방법.
  8. 제6항에 있어서, 구조적으로 형성된 스택 액세스 방법을 사용하지 않는 로드 동작에 응답해서 정렬된 값을 메인 메모리로 기록하는 단계를 더 구비하는 것인 방법.
  9. 제4항에 있어서, 일관성 유지 동작을 수행하는 상기 단계가,
    상기 시스템에서 처리기의 모든 비정렬된 상태를 제거하는 단계와;
    컴퓨터 처리 시스템의 처리기내부 레지스터 및 메인 메모리간에 구성된 상태를 동기화하는 단계와;
    기억 동작이 구조적으로 형성된 스택 액세스 방법을 사용하지 않는 것으로 수행된 후 실행을 재개시하는 단계를 구비하는 것인 방법.
  10. 제1항에 있어서, 상기 구조적으로 형성된 스택 액세스 방법이 스택 포인터, 프레임 포인터 및 인자 포인터중 적어도 하나를 사용하는 메모리 액세스를 구비하는 것인 방법.
  11. 제1항에 있어서, 상기 구조적으로 형성된 스택 액세스 방법이 푸시, 팝 및 다른 스택 조작 동작을 구비하는 것인 방법.
  12. 컴퓨터 처리 시스템에서 스택 위치의 메모리 레퍼런스를 변경하는 방법으로서,
    로드 명령이 스택 위치에 액세스하는 구조적으로 형성된 레지스터를 사용해서 로컬 스택의 위치를 참조하는 지를 결정하는 단계와;
    상기 로드 명령이 구조적으로 형성된 레지스터를 사용해서 그 위치를 참조할 때, 변경 레지스터가 로컬 스택의 레퍼런스된 위치에 있는 지를 결정하는 단계와;
    변경 레지스터가 있을 때, 위치 레퍼런스를 변경 레지스터의 레퍼런스로 대체하는 단계를 구비하는 것인
    컴퓨터 처리 시스템에서 스택 위치의 메모리 레퍼런스를 변경하는 방법.
  13. 제12항에 있어서, 상기 구조적으로 형성된 레지스터가 스택 위치에 액세스하는 포인터에 대응하는 것인 방법.
  14. 제13항에 있어서, 상기 스택 위치에 액세스하는 상기 포인터가 스택 포인터, 프레임 포인터 및 인자 포인터중 하나인 것인 방법.
  15. 제12항에 있어서, 상기 구조적으로 형성된 스택 액세스 방법이 푸시, 팝 및 다른 스택 조작 동작을 구비하는 것인 방법.
  16. 제12항에 있어서, 상기 변경 레지스터가 존재하는 지를 결정하는 상기 단계가 그 위치의 심벌 어드레스 및 실제 어드레스중 하나를 계산하는 단계를 구비하는 것인 방법.
  17. 제12항에 있어서, 상기 변경 레지스터가 존재하는 지를 결정하는 상기 단계가 디코드, 어드레스 발생 및 메모리 액세스 단계중 하나동안 수행되는 것인 방법.
  18. 제12항에 있어서, 상기 변경 레지스터가 없을 때, 이 시스템의 메인 메모리 및 캐시중 하나로부터 로드 명령을 수행하는 단계를 더 구비하는 것인 방법.
  19. 제12항에 있어서, 상기 로드 명령이 구조적으로 형성된 레지스터를 사용해서위치를 참조하지 않을 때, 로드 명령이 다른 레지스터를 사용해서 로컬 스택을 포함하는 어떤 스택의 위치를 참조하는 지를 결정하는 단계를 더 구비하는 것인 방법.
  20. 제19항에 있어서, 상기 로드 명령이 그 나머지 레지스터를 사용해서 위치를 참조할 때, 상기 로드 명령이 그 나머지 레지스터를 사용해서 위치를 참조하는 지를 결정하는 상기 단계가 스택 레퍼런스를 포함하는 로컬 스택내의 페이지의 변환 조견 버퍼(TLB) 엔트리를 마크하는 단계를 구비하는 것인 방법.
  21. 제19항에 있어서, 상기 로드 명령이 그 나머지 레지스터를 사용해서 위치를 참조하지 않을 때, 이 시스템의 메인 메모리 및 캐시중 하나로부터 로드 명령을 수행하는 단계를 더 구비하는 것인 방법.
  22. 제19항에 있어서, 상기 로드 명령이 그 나머지 레지스터를 사용해서 위치를 참조할 때, 스택 영역으로부터의 로드 명령을 수행하도록 일관성 유지 메카니즘을 실행하는 단계를 더 구비하는 것인 방법.
  23. 제12항에 있어서, 상기 변경 레지스터가 없을 때, 변경 레지스터를 위치에 대해 할당하는 단계를 더 구비하는 것인 방법.
  24. 제23항에 있어서, 상기 변경 레지스터를 할당할 때, 상기 시스템의 처리기로부터 할당된 변경 레지스터로 위치를 로드하도록 로드 명령을 포함하는 명령 스트림으로 동작을 삽입하는 단계를 더 구비하는 것인 방법.
  25. 제24항에 있어서, 상기 동작을 삽입할 때 레퍼런스에 의해 위치 레퍼런스를 할당된 변경 레지스터로 대체하는 단계를 더 구비하는 것인 방법.
  26. 컴퓨터 처리 시스템에서 스택 위치의 메모리 레퍼런스를 변경하는 방법으로서,
    기억 명령이 스택 위치에 액세스하는 구조적으로 형성된 레지스터를 사용해서 로컬 스택내의 위치를 참조하는 지를 결정하는 단계와;
    기억 명령이 구조적으로 형성된 레지스터를 사용해서 위치를 참조할 때, 변경 레지스터를 그 위치에 할당하는 단계와;
    위치 레퍼런스를 변경 레지스터의 레퍼런스로 대체하는 단계를 구비하는 것인
    컴퓨터 처리 시스템에서 스택 위치의 메모리 레퍼런스를 변경하는 방법.
  27. 제26항에 있어서, 위치 레퍼런스를 변경 레지스터의 레퍼런스로 대체할 때, 상기 시스템의 변경 레지스터에서 메인 메모리로 위치를 기억하도록 기억 명령을 포함하는 명령 스트림으로 동작을 삽입하는 단계를 더 구비하는 것인 방법.
  28. 제26항에 있어서, 상기 기억 명령이 구조적으로 형성된 레지스터를 사용해서 위치를 참조하지 않을 때, 기억 명령이 다른 레지스터를 사용해서 로컬 스택을 포함하는 어떤 스택내의 위치를 참조로 하는 지를 결정하는 단계를 더 구비하는 것인 방법.
  29. 제28항에 있어서, 상기 기억 명령이 그 나머지 레지스터를 사용해서 위치를 참조하지 않을 때, 시스템의 메인 메모리 및 캐시중 하나로부터 기억 명령을 수행하는 단계를 더 구비하는 것인 방법.
  30. 제28항에 있어서, 상기 기억 명령이 그 나머지 레지스터를 사용해서 위치를 참조할 때, 기억 명령을 스택 영역으로 수행하도록 일관성 유지 메카니즘을 실행하는 단계를 더 구비하는 것인 방법.
  31. 컴퓨터 처리 시스템에서 스택 위치의 메모리 레퍼런스를 변경하는 방법 단계를 수행하도록 머신에 의해 실행가능한 명령 프로그램을 명백하게 구체화하여 판독가능한 프로그램 기억 장치로서,
    구조적으로 형성된 액세스 방법을 사용하는 스택 레퍼런스를 검출하는 단계와;
    스택 레퍼런스를 처리기내부 레지스터의 레퍼런스로써 대체하는 단계를 구비하는 것인
    프로그램 기억 장치.
  32. 제31항에 있어서, 컴퓨터 처리 시스템의 처리기내부 레지스터 및 메인 메모리간에 구성된 상태를 동기화하는 단계를 더 구비하는 것인 프로그램 기억 장치.
  33. 제32항에 있어서, 상기 동기화 단계는 기록 스택 레퍼런스인 모든 스택 레퍼런스에 대해 정렬된 기록 동작을 삽입하는 단계를 구비하는 것인 프로그램 기억 장치.
  34. 제31항에 있어서, 구조적으로 형성된 스택 액세스 방법을 사용하지 않는 스택 레퍼런스에 대해 일관성 유지 동작을 수행하는 단계를 더 구비하는 것인 프로그램 기억 장치.
  35. 제34항에 있어서, 일관성 유지 동작을 수행하는 상기 단계가 설정된 처리기내부 레지스터로부터 스택 영역을 참조로 하고 구조적으로 형성된 스택 액세스 방법을 사용하지 않는 로드 동작으로 값을 우회하는 단계를 구비하는 것인 프로그램 기억 장치.
  36. 제34항에 있어서, 컴퓨터 처리 시스템의 처리기내부 레지스터 및 메인 메모리간에 구성된 상태를 동기화하는 단계를 더 구비하고, 일관성 유지 메카니즘을 수행하는 상기 단계는 상기 동기화 단계를 수행할 때 메인 메모리로부터의 스택 레퍼런스에 대해 정렬된 더값을 복구하는 단계를 구비하는 것인 프로그램 기억 장치.
  37. 제36항에 있어서, 상기 스택 레퍼런스가 기록 스택 레퍼런스일 때, 상기 정렬된 값이 스택 레퍼런스에 대응하는 명령을 포함하는 명령 스트림으로 삽입된 정렬된 기록 동작에 의해 메인 메모리로 기록되는 것인 프로그램 기억 장치.
  38. 제36항에 있어서, 구조적으로 형성된 스택액세스 방법을 사용하지 않는 로드 동작에 응답해서 정렬된 값을 메인 메모리로 기록하는 단계를 더 구비하는 것인 프로그램 기억 장치.
  39. 제34항에 있어서, 일관성 유지 동작을 수행하는 상기 단계가,
    시스템에서 처리기의 모든 비정렬 상태를 제거하는 단계와;
    컴퓨터 처리 시스템의 처리기내부 레지스터 및 메인 메모리간에 구성된 상태를 동기화하는 단계와;
    기억 동작이 구조적으로 형성된 스택 액세스 방법을 사용하지 않는 것으로 수행된 후 실행을 재개시하는 단계를 구비하는 것인 방법.
KR10-2001-0003766A 2000-01-27 2001-01-26 컴퓨터 처리 시스템에서 스택 레퍼런스를 변경하는 방법 KR100368166B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/492,544 US7085914B1 (en) 2000-01-27 2000-01-27 Methods for renaming stack references to processor registers
US09/492,544 2000-01-27

Publications (2)

Publication Number Publication Date
KR20010078088A KR20010078088A (ko) 2001-08-20
KR100368166B1 true KR100368166B1 (ko) 2003-01-24

Family

ID=23956687

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0003766A KR100368166B1 (ko) 2000-01-27 2001-01-26 컴퓨터 처리 시스템에서 스택 레퍼런스를 변경하는 방법

Country Status (5)

Country Link
US (1) US7085914B1 (ko)
JP (1) JP3564072B2 (ko)
KR (1) KR100368166B1 (ko)
CA (1) CA2328559C (ko)
TW (1) TW494300B (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070061551A1 (en) * 2005-09-13 2007-03-15 Freescale Semiconductor, Inc. Computer Processor Architecture Comprising Operand Stack and Addressable Registers
US7508396B2 (en) 2005-09-28 2009-03-24 Silicon Integrated Systems Corp. Register-collecting mechanism, method for performing the same and pixel processing system employing the same
US8392687B2 (en) * 2009-01-21 2013-03-05 Micron Technology, Inc. Solid state memory formatting
JP5583514B2 (ja) 2010-08-11 2014-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーション バイナリコードを最適化するコンパイル方法、及びそのコンパイラシステム、並びにコンピュータ・プログラム
US10185561B2 (en) 2015-07-09 2019-01-22 Centipede Semi Ltd. Processor with efficient memory access
US9575897B2 (en) 2015-07-09 2017-02-21 Centipede Semi Ltd. Processor with efficient processing of recurring load instructions from nearby memory addresses
US10552164B2 (en) 2017-04-18 2020-02-04 International Business Machines Corporation Sharing snapshots between restoration and recovery
US10545766B2 (en) 2017-04-18 2020-01-28 International Business Machines Corporation Register restoration using transactional memory register snapshots
US10649785B2 (en) 2017-04-18 2020-05-12 International Business Machines Corporation Tracking changes to memory via check and recovery
US10838733B2 (en) 2017-04-18 2020-11-17 International Business Machines Corporation Register context restoration based on rename register recovery
US10564977B2 (en) 2017-04-18 2020-02-18 International Business Machines Corporation Selective register allocation
US10572265B2 (en) 2017-04-18 2020-02-25 International Business Machines Corporation Selecting register restoration or register reloading
US10963261B2 (en) 2017-04-18 2021-03-30 International Business Machines Corporation Sharing snapshots across save requests
US10540184B2 (en) 2017-04-18 2020-01-21 International Business Machines Corporation Coalescing store instructions for restoration
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
US11010192B2 (en) 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
US10782979B2 (en) 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
US10489382B2 (en) 2017-04-18 2019-11-26 International Business Machines Corporation Register restoration invalidation based on a context switch
US10620955B2 (en) * 2017-09-19 2020-04-14 International Business Machines Corporation Predicting a table of contents pointer value responsive to branching to a subroutine
US20190163492A1 (en) * 2017-11-28 2019-05-30 International Business Machines Corporation Employing a stack accelerator for stack-type accesses

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3737871A (en) * 1971-07-28 1973-06-05 Hewlett Packard Co Stack register renamer
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
JPH07302200A (ja) * 1994-04-28 1995-11-14 Hewlett Packard Co <Hp> 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。
US5911057A (en) 1995-12-19 1999-06-08 Texas Instruments Incorporated Superscalar microprocessor having combined register and memory renaming circuits, systems, and methods
US5832205A (en) 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US5926832A (en) * 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
US5953741A (en) * 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US5838941A (en) 1996-12-30 1998-11-17 Intel Corporation Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers
US5872990A (en) 1997-01-07 1999-02-16 International Business Machines Corporation Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment

Also Published As

Publication number Publication date
CA2328559A1 (en) 2001-07-27
JP2001229022A (ja) 2001-08-24
KR20010078088A (ko) 2001-08-20
CA2328559C (en) 2009-02-24
JP3564072B2 (ja) 2004-09-08
US7085914B1 (en) 2006-08-01
TW494300B (en) 2002-07-11

Similar Documents

Publication Publication Date Title
KR100368166B1 (ko) 컴퓨터 처리 시스템에서 스택 레퍼런스를 변경하는 방법
KR100402185B1 (ko) 컴퓨터 처리 시스템에서 순서화된 시퀀스의 명령어를실행하는 방법 및 장치
US5517657A (en) Segment register file read and write pipeline
US7065750B2 (en) Method and apparatus for preserving precise exceptions in binary translated code
JP3753743B2 (ja) 先進のプロセッサにおけるメモリ・データ・エリアシング方法および装置
US9311084B2 (en) RDA checkpoint optimization
KR100334479B1 (ko) 컴퓨터 처리 시스템에서 로드 동작의 순서 변경 방법 및 장치
US7363467B2 (en) Dependence-chain processing using trace descriptors having dependency descriptors
US5758051A (en) Method and apparatus for reordering memory operations in a processor
KR100463810B1 (ko) 어드레스되는 구성요소의 물리적 특성에 관한 추측 실패를 검출하는 마이크로프로세서용 메모리 제어기
US9575754B2 (en) Zero cycle move
US20060200801A1 (en) Java Virtual Machine hardware for RISC and CISC processors
US20130086367A1 (en) Tracking operand liveliness information in a computer system and performance function based on the liveliness information
CN106796528B (zh) 用于选择包括指令序列的指令的系统和方法
CN106716363B (zh) 使用转换后备缓冲器来实现指令集不可知的运行时架构
KR100443759B1 (ko) 개선된 마이크로프로세서
CN107077371B (zh) 用于不可知的运行时架构的系统、微处理器和计算机系统
US6378062B1 (en) Method and apparatus for performing a store operation
US6240506B1 (en) Expanding instructions with variable-length operands to a fixed length
US7168076B2 (en) Facilitating efficient join operations between a head thread and a speculative thread
WO2013101144A1 (en) Overlapping atomic regions in a processor
US6381691B1 (en) Method and apparatus for reordering memory operations along multiple execution paths in a processor
CN107077370B (zh) 执行及时优化器用于执行来自访客镜像的代码的系统转换器
US6460067B1 (en) Using time stamps to improve efficiency in marking fields within objects
KR20010053623A (ko) 명령들의 철회시 물리적인 레지스터들을 선택적으로자유롭게 사용하도록 구성된 프로세서

Legal Events

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

Payment date: 20101210

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee