KR100264401B1 - 마이크로프로세서내의 메모리 종류 정보 처리 방법 및 장치 - Google Patents

마이크로프로세서내의 메모리 종류 정보 처리 방법 및 장치 Download PDF

Info

Publication number
KR100264401B1
KR100264401B1 KR1019970702101A KR19970702101A KR100264401B1 KR 100264401 B1 KR100264401 B1 KR 100264401B1 KR 1019970702101 A KR1019970702101 A KR 1019970702101A KR 19970702101 A KR19970702101 A KR 19970702101A KR 100264401 B1 KR100264401 B1 KR 100264401B1
Authority
KR
South Korea
Prior art keywords
memory
cache
load
write
type value
Prior art date
Application number
KR1019970702101A
Other languages
English (en)
Other versions
KR970706538A (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 KR970706538A publication Critical patent/KR970706538A/ko
Application granted granted Critical
Publication of KR100264401B1 publication Critical patent/KR100264401B1/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/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
    • 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
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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
    • 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/3824Operand accessing
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative 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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

소정의 범위의 메모리 위치가 포함되어 있는 메모리 종류를 나타내는 메모리 종류값은 마이크로프로세서(200-216)내에 정확하게 기억되어 있다. 로드 또는 기억과 같은 메모리 마이크로명령을 처리하기 전에, 이 메모리 마이크로명령에 의해 나타내어진 메모리의 위치에 대해 메모리 종류가 결정된다(214-216). 일단 메모리 종류가 알려지면 마이크로프로세서는 기록 쓰루 처리(220), 기록 백 처리(222), 기록 보호 처리(224), 제한된 캐시가능 처리(226), 캐시불가능 추측가능 기록 조합 처리(230) 또는 캐시불가능 처리(228)중 어느 한 처리에 따라 처리된다(218-230). 마이크로프로세서내에 메모리 종류 정보를 정확하게 제공함으로써 마이크로명령을 처리하는 프로토콜은 메모리 종류에 대해 효율적으로 제작될 수 있다. 하나의 예시적인 실시예에서, 상기 마이크로프로세서는 추측적 메모리 마이크로명령(202-204)
발생할 수 있는 배열 이탈 마이크로프로세서(200)이다.

Description

마이크로프로세서내의 메모리 종류 정보 처리 방법 및 장치{METHOD AND APPARATUS FOR PROCESSING MEMORY-TYPE INFORMATION WITHIN A MICROPROCESSOR}
일반적으로 멀티프로세서 컴퓨터 시스템의 상태는 각각 만족할 만한 로드 동작 및 기억 동작을 신속 처리하기 위해 외부 메모리로부터 데이타를 캐시하는 마이크로프로세서내의 데이타 캐시 유닛(DCU)을 이용하고 있다. 이 DCU는 상기 외부 메모리의 가장 최근에 액세스된 많은 부분들에 대한 대응하는 데이타 또는 명령, 및 물리적인 주소를 저장한다. 이러한 방법으로, 각각의 마이크로프로세서의 핵심 수행 유닛은 외부 메모리로부터 데이타 또는 명령이 검색될 때까지 반드시 대기하고 있을 필요는 없다. 데이타는 예컨대 32바이트 데이타를 각각 포함하고 있는 캐시 라인 유닛들의 DCU내에 저장되어 있다. 메모리로부터 데이타 유닛을 검색하기 위해서, "소유를 위한 판독"동작이 수행되며, 이때 데이타를 포함하고 있는 전체 캐시 라인이 검색되어 상기 DCU에 저장되게 된다. 소유를 위한 판독의 경우에, 데이타를 포함하고 있는 메모리 위치는 소유를 위한 판독을 수행하는 프로세서에 의해 소유됨에 따라 표시가 행해지게 된다. 다른 구현예에서, 캐시 라인은 외부 메모리로부터 동일한 데이타를 다른 프로세서가 액세스하지 못하도록 할 필요없이 상기 DCU내로 판독된다. 어떤 한 구현예에서, 상기 캐시 라인내의 복수 데이타 유닛중 한 유닛이 변경되면, 상기 캐시 라인은 일반적으로 버스트 모드 출력에 의해 상기 외부 메모리측으로 결국 기록되게 되며, 이때 상기 캐시 라인내의 데이타의 기본 주소가 전송되고 이어서 특정 데이타 유닛 열이 전송된다. 버스트 모드 출력은 단일의 캐시 라인내의 모든 데이타 유닛을 전송하는 매우 효율적인 방법을 제공한다. 또한, 버스트 모드는 소유를 위한 판독중에 상기 DCU측으로 데이타를 전송하는데 이용될 수도 있다.
다수의 다른 캐시 프로토콜이 캐시 데이타 처리를 위해 개발되어 왔다. "기록 쓰루(write-through)" 프로토콜에서, 상기 DCU내에서 변경된 데이타 유닛은 또한 부분기록을 사용하여 상기 외부 메모리측으로 바로 전송되며, 이때 변경된 데이타 유닛만이 전송되게 된다. 기록 쓰루 DCU를 이용하는 마이크로프로세서의 일예로는 인텔 80486 패밀리의 마이크로프로세서를 들 수 있다. 기록 쓰루 캐시 가능은 기록 데이타가 다른 디바이스 또는 프로세서에 의한 액세스를 위해 외부메모리측으로 즉시 전송된다는 이점을 가지고 있다. 예컨대, 기록 쓰루 캐시가능을 이용함으로써, 프레임 버퍼에의 그래픽 기록 동작은 디스플레이 디바이스의 즉각적인 디스플레이를 위해 프레임 버퍼측으로 바로 출력되게 된다. 하지만, 기록 쓰루 캐시 가능은 데이타 유닛이 상기 DCU내에서 변경될 때마다, 별개의 버스 작용이 부분기록 동작을 수행할 필요가 있으며, 이에따라 상당한 버스 트래픽이 유발된다는 단점을 가지고 있다.
종래의 또 다른 캐시 프로토콜, 즉 "기록 백" 프로토콜은 버스 트래픽의 양을 조절하는데 사용될 수 있다. 이 기록 백 캐시 프로토콜에서, DCU내에서 변경되는 데이타 유닛이 외부 메모리측으로 바로 전송되지 않는다. 오히려, 외부 데이타 기록이 정지상태로 유지된다. 결국, 어떤 변경된 데이타 유닛을 포함하고 있는 전체 캐시 라인은 버스트 모드에서 상기 외부 메모리측으로 기록된다. 기록 백 캐시 프로토콜은, 개별적인 데이타 기록 동작이 부분 기록을 통해 외부 메모리측으로 전송되지 않고 누적된 다음에 버스트 모드에서 전송되기 때문에, 버스 트래픽이 최소화된다는 이점을 가지고 있다. 하지만, 기록 백 캐시 프로토콜은 그래픽 기록 또는 입/출력 동작과 같이 바로 출력할 것을 요구하는 데이타 기록에는 부적합할 수 있다.
제3의 프로토콜, 즉 "기록 보호 " 프로토콜은 기록 요구를 수신할 필요가 없는 메모리 위치로부터 데이타를 캐시하는데 이용된다. 이 기록 보호 캐시 프로토콜에 있어서, 데이타 유닛은 메모리 로드 요구가 신속처리되도록 하기 위해 캐시된다. 하지만, 기록 모호 캐시라인내의 데이타 유닛에 대한 어떤 기록동작은 무시되거나 특별히 처리되게 된다.
따라서, 다수의 종래 캐시 프로토콜이 데이타 처리에 이용된다. 하지만, 일반적으로, 모든 형태의 데이타가 캐시가능한 것은 아니며, 지적한 바와같이, 모든 형태의 캐시가능 데이타가 각각의 캐시 프로토콜에 적합한 것은 아니다.
다음에는, DCU를 사용하는 현재 최근의 마이크로프로세서내에서 발생하는 여러 문제에 대해서 설명하고, 이러한 마이크로프로세서의 일부단점에 대해 요약한다. 도 1을 참조하면, 예시적인 종래 컴퓨터 시스템(10)이 블록도 형태로 도시되어 있다. 상기 시스템(100)은 시스템 버스(14)를 통해 RAM(16), I/O 유닛(18), ROM(20) 및 DMA 제어기(22)를 포함하고 있는 여러 외부 장치에 접속되어 있는 마이크로프로세서(12)를 포함하고 있다. 프레임버퍼(24), 및 CRT와 같은 그래픽 디스플레이 장치(26)도 또한 시스템 버스(14)를 통해 마이크로프로세서(12)에 접속되어 있다.
또한, 도 1에는 명령 폐치 및 발행 유닛(28), 주소 발생 유닛(AGU)(30), DCU(32), 트랜잭션 룩어사이드 버퍼(TLB)(34) 및 페이지 실패 조작기(PMH)(36)를 포함하고 있고, 이들 각각이 CPU 버스(38)를 따라 상호 접속되어 있는 마이크로프로세서(12)내의 여러 가지 주요 기능적 구성요소가 예시되어 있다. 버스 유닛(40)은 마이크로프로세서의 상기 구성요소와 외부장치간의 통신을 처리하기 위해 CPU 버스(38)와 시스템 버스(14)를 상호접속하고 있다.
마이크로프로세서에 대한 다수의 기타 다른 구성요소는 예시되어 있지 않다. 오히려, 관련 기능 구성요소만이 설명되어 있다.
마이크로프로세서(12)의 경우에, 명령발생유닛(28)은 메모리 로드 동작 또는 기록 동작, 또는 입력 동작 또는 출력 동작과 같은 메모리 명령을 발생한다. 명령 페치 및 발생 유닛(28)은 여기에서는 설명되지 않는 다수의 비메모리 관련 명령을 추가적으로 발생한다. AGU(30)는 상기 명령 페치 및 발생유닛(28)에 의해 발생된 명령의 주소를 산출한다. 이 주소는 예컨대 RAM(16) 또는 ROM(20)내의 물리적인 주소 또는 프레임 버퍼(24)내의 프레임 버퍼 주소에 또는 아마도 DMA 또는 I/O 주소에 대응될 수 있다. "실제" 동작 모드에서, AGU(30)는 메모리 명령에 대응하는 물리적인 주소를 발생한다. "보호" 동작 모드에서, AGU(30)는 물리적 주소에 대응하는 리니어(linear) 주소를 발생한다. 보호모드에서, 물리적 주소에 의해 특정된 외부 메모리 위치를 액세스하기 위해, 상기 리어어 주소가 물리적 주소로 먼저 변환된다. PMH(36)는 리어어 주소에 대응하는 물리적 주소를 결정하기 위해 페이지 테이블 검토를 수행한다. 물리적 주소로의 리니어주소의 변환을 신속처리하기 위해, TLB(34)는 다수의 가장 최근에 액세스된 메모리 페이지에 대한 물리적 주소/리니어 주소 변환의 캐시를 유지하게 된다.
실제 메모리 액세스는 메모리 액세스될 데이타가 DCU의 내부 캐시라인내에 포함되어 있는지를 먼저 결정하고 포함되어 있지 않으면 버스유닛(40)을 통해 외부 메모리 명령을 디스패치하는 DCU(32)에 의해 제어된다.
앞서 지적한 바와같이, 모든 형태의 데이타가 캐시가능한 것은 아니다. 또한, 모든 캐시가능 데이타가 상기 기록 백 캐시 프로토콜, 기록 쓰루 캐시 프로토콜 또는 기록 보호 캐시 프로토콜에 적합한 것은 아니다. 따라서, 액세스될 데이타의 종류에 관한 정보가 메모리 명령이 DCU(32)에 의해 처리될 수 있는지의 여부 또는 그 처리되는 방법에 대한 결정이 행해질 수 있기 전에 알려져야 한다. 예컨대, 그래픽 데이타 I/O 데이타는 일반적으로 기록 백 캐시에 부적절한 것으로 생각되는데, 이는 I/O 데이타가 바로 입력 또는 출력되는 것이 바람직하기 때문이다. 다른 예로서, ROM 데이타는 일반적으로 기록 백 캐시 또는 기록 쓰루 캐시에 부적합한 것으로 생각되는데, 이는 ROM 데이타가 캐시에 유지되어 있으면, ROM의 판독전용 특성과 비호환적인 방법으로 상기 ROM 데이타가 갱신 및 변경될 수 있기 때문이다. 캐시불가능한 것으로 생각되는 데이타의 또다른 종류는 "메모리 맵 I/O"이다. 액티브 메모리라고도 하는 메모리 맵 I/O는 입/출력 디바이스 또는 기타 다른 디바이스를 직접 제어하는데 사용되는 메모리 위치이다. 에컨대, 메모리 맵 I/O 위치에 대한 판독에 의해, 디스크 드라이브가 액티브되거나, 전체 컴퓨터 시스템이 재부팅될 수 있다. 따라서, 메모리 맵 I/O는 심지어 판독 동작 또는 로드 동작의 결과로서 부작용을 가지고 있을 수 있는 메모리를 나타낸다. 따라서, 특히 기록 백 프로토콜 또는 기록 보호 프로토콜의 경우에는 메모리 맵 I/O를 캐시하는 것은 부적합할 수 있다. 따라서, 상기 데이타를 액세스하는 메모리 명령이 적절히 처리될 수 있기 전에 데이타의 캐시가능성 또는 데이타에 적합한 캐시 프로토콜의 종류에 대한 결정이 필요해 질 수 있다.
메모리 명령에 좌우되는 메모리 위치가 캐시가능 데이타를 포함하고 있는지에 대해 결정하는 한가지 방법은 DCU에 대해 간단히 액세스를 시도하는 것이다. 상기 데이타가 SCU내에서 발견되면, 이 데이타는 캐시가능하여야 하며, 따라서 상기 메모리 명령이 처리될 수 있다. 상기 데이타가 상기 캐시내에서 발견되지 않으면, 메모리 명령은 실제 메모리 위치를 액세스하기 위해 시스템 버스측으로 전송되게 된다. 상기 시스템 버스 또는 버스유닛에는 상기 메모리 위치가 캐시가능 데이타를 포함하고 있는지를 결정하기 위한 논리 회로가 제공되어 있다. 이러한 버스 논리 회로는 다소 복잡할 수 있고 성능에 문제가 있을 수 있다. 일반적으로, 캐시가능성을 결정하기 위해 상기 시스템 버스를 액세스할 필요가 있는 경우에는 버스 트래픽이 증가된다. 특히, 데이타는 먼저 판독되지 않으면 상기 캐시에 할당될 수 없다.
버스 트래픽을 감소시키는 한가지 방법은 "기록 할당" 동작을 수행하는 것이다. 한가지 흔한 방법, 즉 "소유를 위한 판독을 통한 기록 할당"에서는, 상기 캐시에 대해 실패한 기록상에서 상기 마이크로프로세서는 라인을 상기 캐시측으로 페치하기 위해 "소유를 위한 판독" 버스 트랜잭션을 발생한다.
일단, 소유를 위한 판독이 수행되고 나면, 기록될 데이타 유닛을 포함하고 있는 전체 캐시 라인이 DCU에 저장되게 된다. 이후, 동일한 캐시 라인에 대한 어떠한 추가적인 기록이 단지 상기 캐시라인내의 데이타를 변경함으로써 수행될 수도 있다. 결국, 상기 캐시라인은 버스트 모드에서 상기 외부 메모리측으로 기록 백된다. 따라서, 기록 할당은 특히 단일의 캐시라인내의 메모리 위치에 대해 여러 기록이 수행되는 환경에서 버스트래픽을 감소시킨다.
기록 할당은 버스 트래픽을 제한하는 한 수많은 이점을 가지고 있지만, 메모리 위치에 캐시가능 데이타가 포함되어 있는지를 결정하기 위한 외부 논리 회로를 사용하는 현재 최근의 마이크로프로세서에서는 쉽게 구현되지 않는다. 특히, 기록 할당중에 요구되는 소유를 위한 판독은 발생할 수 있는 바람직하지 않은 부작용을 가지고 있을 수 있는데, 이는 이 소유를 위한 판독이 단지 하나의 데이타 유닛 보다는 전체 데이타 캐시라인을 요구하기 때문이다. 전체 데이타 캐시라인의 판독은 소유를 위한 판독을 수용하도록 설계되어 있지 않은 I/O 장치와 같은 특정 외부장치와 호환되지 않을 수 있다. 예컨대, 특정 I/O 장치는 어떤 판독동작 전에 기록동작이 수행되기를 원한다. 소유를 위한 판독은 종래 기록 동작을 수신하지 않은 메모리 위치를 액세스하려는 시도를 할 수 있으며, 이에따라 I/O 장치내에서 오동작, 즉 기타 다른 부작용을 유발한다. 또한, 소유를 위한 판독은 소유를 위한 판독에 의해 액세스된 메모리가 메모리 맵 I/O인 경우에도 부작용을 가질 수 있다. 앞서 지적한 바와같이, 메모리 맵 I/O로부터의 판독동작에 의해, 전체 시스템이 재부팅되는 것과 같은 제2의 효과가 생긴다.
소유를 위한 판독 동작을 통한 진정한 기록 할당은, 기록 할당 동작이 행해질 메모리 위치가 메모리 맵 I/O 또는 바람직지 않은 부작용을 가지고 있을 수 있는 기타 다른 메모리 종류를 포함하고 있는지를 마이크로프로세서가 미리 알고 있지 않고는 안전하게 수행될 수 없다.
앞서 지적한 바와같이, ROM 데이타는 일반적으로 기록 보호 프로토콜에 대해서만 캐시불가능 또는 캐시가능한 것으로 생각된다. 메모리 명령에 의해 특정된 메모리 위치가 ROM을 포함하고 있는지를 결정하기 위해서, 컴퓨터 시스템은 상기 메모리 위치에의 기록을 시도한 다음에, 기록동작이 수행되었는지 무시되었는지에 대한 결정을 하기 위해 판독을 수행하게 된다. 무시되었으면, 상기 메모리 위치는 ROM인 것으로 결정되며, 이 메모리 위치에 대한 다음 메모리 명령은 DCU를 바이패스시킨다. 메모리 위치에 대한 이러한 질문은 적어도 두 개의 시스템 버스 트랜잭션을 필요로 하며, 이에따라 버스 트래픽이 더 증가되게 된다.
일부 시스템은 ROM 데이타를 처리하는데 기록 보호 캐시 프로토콜을 이용한다. 기록 보호 캐시 프로토콜에 의해, ROM 데이타는 ROM에의 기록을 무시 또는 억제함으로써 캐시될 수 있더라도, 특정 문제들이 생긴다. 먼저, ROM 데이타는 정규의 데이타보다 캐시내에서 다르게 처리되므로, 상기 데이타가 ROM 데이타라는 사실이 상기 데이타를 캐시하기 전에 결정되어야 하며, 이에따라 시스템 버스 트랜잭션이 필요해져서 앞서 언급한 버스 트래픽 문제 및 기타 다른 문제들이 생기게 된다.
또한, 많은 컴퓨터 시스템은 ROM의 "뒤"에 메모리 맵 I/O를 배치하고 있다. 이러한 시스템의 경우, 캐시된 ROM 데이타에 대한 기록의 억제는 바람직하지 않은 부작용을 가지고 있을 수 있다. 도 2에는 메모리 맵 I/O를 포함하고 있는 비디오 출력 장치가 예시되어 있으며, 이때 비디오 출력장치가 ROM의 "뒤"에 배치되어 있다. 특히, 도 2에는 ROM(50)과 비디오 출력장치(52)가 예시되어 있으며, 이들 둘은 판독/기록버스(54), 별개의 물리적 주소 버스(56) 및 데이타 버스(58)에 접속되어 있다. 물리적 주소 버스(56)는 비교기(60)와 AND게이트(62)를 통해 ROM(50)에 접속되어 있다. 물리적 주소 버스(56)도 또한 비교기(64)와 NAND 게이트(66)를 통해 비디오 출력 장치(52)에 접속되어 있다. AND 게이트(62)와 NAND 게이트(66) 각각은 또한 판독/기록 버스(54)를 따라 판독 신호 또는 기록 신호를 수신한다.
메모리 맵 I/O 위치에 대한 메모리 명령이 마이크로프로세서로부터 디스패치될 때, 판독 신호 또는 기록 신호는 버스 라인(54)을 따라 디스패치되고, 상기 명령에 대응하는 물리적 주소는 버스(56)를 따라 디스패치된다. ROM(50)이 상기 명령에 응답할 필요가 있는지를 결정하기 위해, 비교기(60)는 ROM(50)내에 모든 물리적 주소를 포함하고 있는 테이블 또는 기타 다른 논리와, 버스라인(56)을 따라 수신된 명령의 물리적 주소를 비교한다. 상기 물리적 주소가 ROM(50)내의 메모리 위치와 동일하면, ROM(50)에 대한 판독동작을 전송하도록 AND 게이트를 인에이블시키는 인에이블신호가 비교기(60)로부터 AND 게이트(62)측으로 전송된다. ROM(50)이 판독 전용 메모리를 포함하고 있으므로, 기록 동작은 인에이블되지 않는다. ROM(50)으로부터 검색된 데이타는 경로(64)를 따라 데이타 버스 라인(58)측으로 전송된다.
일반적으로, 판독 요구 또는 기록요구를 수신할 수 있는 모든 장치는 다른 물리적 주소 범위를 가지고 있으며, 이에따라 단지 하나의 장치만이 인에이블신호를 수신하고 상기 판독 요구 또는 기록 요구에 응답할 수 있다. 하지만, 비디오 출력 장치(52)는 ROM(50)과 동일한 물리적 주소 공간을 가지고 구성되어 있다. 비교기(64)는 비교기(60)에 의해 정의된 것과 물리적 주소값의 동일 범위내의 물리적 주소에 대한 판독 또는 기록용 인에이블신호를 발생시킨다. 하지만, AND 게이트(66)는 판독/기록 라인을 따라 반전된 입력을 포함하고 있으며, 이에따라 판독동작이 아닌 기록동작만이 인에이블된다. 기록동작에 필요한 데이타는 데이타 버스 라인(58)으로부터 경로(70)를 따라 수신된다.
따라서, ROM(50)과 비디오 출력 장치(52)는 동일한 물리적 주소 공간을 공유하고 있다. ROM(50)은 상기 물리적 주소 공간의 주소에 대한 판독 요구에만 응답하고, 비디오 출력 장치(52)는 상기 물리적 주소 공간내의 기록 요구에만 응답한다. 따라서, 단일 범위의 물리적 주소는 ROM과 비디오 출력 장치를 수용하고 있다. 또한, 어느 정도, 입력 버스 라인 및 출력 버스라인과 기타 다른 하드웨어 장치는 상기 ROM과 비디오 출력 장치간에 공유될 수 있다. 비디오 출력 장치에 대한 동일한 물리적 주소 공간의 사용은 ROM의 "뒤"에 상기 비디오 출력 장치를 배치하는 것을 의미한다.
ROM의 물리적 주소 공간에 대한 기록을 무시하면서 ROM 데이타를 캐시하려는 시도는 비디오 출력 장치와 같은 제2의 장치가 상기 ROM의 뒤에 배치되어 있으면 효율적으로 행해질 수 없을 수 있다. 실제로, 상기 ROM에 대한 물리적 주소 공간에 대한 모든 기록이 무시되면, 비디오 출력 장치(52)는 어떠한 기록신호도 수신하지 않고 어떤 데이타도 디스플레이할 수 없게 된다. 상기 ROM의 뒤에 배치된 장치가 적절하게 동작하도록 할 수 있는 ROM 데이타 캐시 방법이 제공될 필요가 있다.
따라서, 캐시가능데이타 및 캐시불가능 데이타를 처리하는 종래의 많은 마이크로프로세서에서는 기본적인 문제가 생기는데, 즉 캐시가능 또는 캐시불가능이 알려지기 전에 메모리 요구가 시스템 버스를 통해 전송되어야 하며 이에따라 상당한 버스 트래픽이 생기게 된다. 성능의 관점에서는 버스 트래픽의 양을 최소화하는 것이 바람직하다. 단지 데이타의 캐시가능 또는 캐시불가능을 결정하라는 수많은 외부 메모리 요구를 수행할 필요가 있으므로 전체적인 프로세서 효율에 큰 손실이 초래된다. 따라서, 데이타의 캐시가능 또는 캐시불가능을 결정하라는 외부 메모리 요구를 수행할 필요를 최소화시킬 수 있거나 없앨 수 있는 방법 및 장치를 제공할 필요가 있게 된다.
버스 트래픽을 제한해야 한다는 필요성은 다수의 마이크로프로세서를 이용하는 컴퓨터시스템에서 휠씬 더 커지며, 이때 2개, 3개 이상의 마이크로프로세서는 단일의 시스템 버스를 액세스 하기 위해 경쟁한다.
도 1 및 도 2의 상기 설명에서는, 일단 메모리 명령의 물리적 주소가 결정되면 마이크로프로세서에 의해 발생된 어떤 메모리 명령이 바로 실행될 수 있는 것으로 가정하였다. 하지만, 특정 마이크로프로세서 구조의 경우에 그리고 특정 응용에서는, 하나의 이상의 조건이 행해질 때까지 메모리 명령이 지연되어야 한다. 이러한 시스템에서, 일단 물리적 주소가 결정되면, 상기 메모리 명령은 바로 실행될 수 없거나 바로 실행되어서는 안된다. 이러한 것은 예컨대 배열 이탈 또는 추측적 메모리 명령 동작을 발생할 수 있는 마이크로프로세서에서 발생될 수 있다. 배열 이탈 마이크로프로세서에서, 메모리 명령 동작은 소프트웨어 프로그램에 의해 정의된 순서가 아닌 순서로 발생 유닛에 의해 발생될 수 있다. 메모리 명령의 배열 이탈 발생은 마이크로프로세서의 병렬처리 능력을 이용함으로써 전체적인 프로세서의 효율을 개선하는데 이용될 수도 있다. 메모리 명령 동작이 배열 이탈되게 발생되면, 나중에 발생된 동작이 실행될 때까지 하나이상의 동작을 정지상태로 고정시킬 필요가 있을 수도 있다. 예컨대, 메모리 명령의 수행은 "If" 문과 같은 분기 조건이 해결될 때 까지 지연을 요구할 수도 있다. 추측적 처리를 할 수 있는 마이크로프로세서 구조에서, 해결되지 않은 분기 조건의 발생시 분기 예측을 수행함으로써 효율이 개선된다. 분기 예측에 의해, 분기 다음의 명령이 분기 조건이 해결될 때까지 처리될 수 있다. 환언하면, 각각의 분기 조건의 경우에, 어느 분기가 행해져야 하는지를 마이크로 프로세서가 예측한 다음에, 다음의 명령을 추측 수행한다. 명령을 추측 수행하는 능력은 분기에 좌우되는 적어도 일부 명령이 분기 조건이 실제로 해결되기 전에 수행되도록 함으로써 시스템의 어떤 병렬 처리 능력을 이용하게 된다. 동작 분기 예측이 정확하면, 예측된 분기를 기초로 한 추측 명령은 "종료"되고, 처리 속도가 뜻밖에 개선된다. 분기 예측이 부정확하면, 추측적 명령은 플러싱되거나 포기된다. 배열 이탈 및 추측 처리의 일반적인 측면에 대해서는 마이크 존손 저의 "수퍼 스칼라 마이크로프로세서 설계"(프렌티스 홀 출판사, 1991)에 설명되어 있다.
어떠한 지령 또는 명령이 배열 이탈되게 수행될 수 있는지 그리고 추측 수행될 수 있는지에 대해서는 많은 제한이 있다. 명령 및 지령에 대한 한가지 가능한 제한으로는 메모리 또는 입/출력 장치에 대한 실제명령이 이전 명령이 수행될 때까지 또는 이전의 분지 조건이 해결될 때까지 지연되어야 한다는 점을 들 수 있다. 예컨대, 추측 기억 동작을 기초로 메모리 맵 I/O 위치에 대한 로드 또는 기억을 수행하는 것은 바람직하지 않다. 이러한 추측적 로드 또는 기억은 디스크 드라이브를 액티브시킬 수 있거나, 아마도 전체 컴퓨터 시스템을 재부팅시킬 수도 있다. 이러한 부작용은, 추측적 메모리 기억 명령이 잘못예측된 분기를 기초로 하고 있으면 심각한 결과를 가져올 수 있다. 추측적 명령이 마이크로프로세서로부터 외부 장치측으로 디스패치되면 많은 다른 문제가 생길 수도 있다. 예컨대, 프레임 버퍼 또는 I/O 장치에 대한 추측적 메모리 명령은 다시 잘못 예측된 가능한 분기를 기초로 추측적 데이타를 디스플레이시킬 수 있거나 시스템으로부터 출력시킬 수 있다.
배열 이탈 마이크로프로세서를 사용하면 외부 장치에 대한 그 동작을 디스패칭하기 전에 메모리 동작의 결과 또는 부작용을 결정 또는 예측하는 메카니즘을 제공할 필요해진다. 하나 이상의 배열 이탈 마이크로프로세서를 가지고 있는 컴퓨터 시스템내의 메모리 액세스 문제를 특히 해결할 필요가 있다.
본 발명은 전반적으로 명령을 추측적 처리 또는 배열이탈 처리할 수 있는 하나 이상의 마이크로프로세서를 가지고 있는 컴퓨터 시스템에 관한 것으로, 특히 이러한 마이크로프로세서내의 메모리 명령을 처리하는 것에 관한 것이며, 이때 필요한 실제 처리는 관련된 메모리 주소에 좌우된다.
도 1은 예시적인 종래 컴퓨터 시스템을 나타낸 블록도.
도 2는 단일의 물리적 주소 공간을 액세스하기 위해 종래 기술에 따라 구성된 비디오 출력 장치와 ROM을 나타낸 블록도.
도 3은 본 발명의 측면에 따라 구성된 멀티프로세서 컴퓨터 시스템을 나타낸 블록도.
도 4는 도 3의 마이크로프로세서와 메모리 명령의 추측 및 배열 이탈 수행을 할 수 있는 도 4의 마이크로프로세서중 하나의 마이크로프로세서의 내부 구성을 특별히 보인 블록도.
도 5는 도 4의 마이크로프로세서에 의해 처리된 메모리 명령에 대한 기호표기를 나타낸 도면.
도 6은 도 4의 마이크로프로세서내에서 메모리 명령을 처리하는 방법을 나타낸 흐름도.
도 7은 기록 쓰루 메모리 종류를 나타내는 메모리 명령을 도 4의 마이크로프로세서에 의해 처리하는 방법을 나타낸 흐름도.
도 8은 기록 백 메모리 종류를 나타내는 메모리 명령을 도 4의 마이크로프로세서에 의해 처리하는 방법을 나타낸 흐름도.
도 9는 기록 보호 메모리 종류를 나타내는 메모리 명령을 도 4의 마이크로프로세서에 의해 처리하는 방법을 나타낸 흐름도.
도 10은 제한적 캐시가능 메모리 종류를 나타내는 메모리 명령을 도 4의 마이크로프로세서에 의해 처리하는 방법을 나타낸 흐름도.
도 11은 캐시불가능 추측 기록 조합 메모리 종류를 나타내는 명령을 도 4의 마이크로프로세서에 의해 처리하는 방법을 나타낸 흐름도.
도 12는 캐시불가능 메모리 종류를 나타내는 메모리 명령을 도 4의 마이크로프로세서에 의해 처리하는 방법을 나타낸 흐름도.
도 13은 도 4의 메모리 배열 버퍼의 블록도.
도 14는 도 13의 메모리 배열 버퍼가 메모리 명령을 처리하는 방법을 나타낸 흐름도.
발명의 개요
본 발명의 한 측면에 따라, 컴퓨터 프로세서내에 개선이 제공되며, 이때 메모리 주소와 관련된 "메모리 종류"값은 컴퓨터 프로세서에 의해 정확하게 결정된다. 상기 메모리 종류값은 데이타 또는 명령과 같은 메모리 정보의 메모리 처리 속성을 나타낸다. 상기 메모리 종류 값은 에컨대 특정 범위의 물리적 주소내에 저장된 데이타가 캐시가능한지 아니면 캐시불가능한지를 지시할 수도 있다. 캐시가능 데이타의 경우, 상기 메모리 종류는 캐시가능 데이타가 기록 쓰루 캐시가능인지 기록 백 캐시가능인지를 지시할 수도 있다. 추측 메모리 명령을 디스패칭할 수 있는 컴퓨터 시스템에서, 예컨대, 메모리 종류는 메모리가 추측가능한지 추측불가능한지를 지시할 수도 있다.
컴퓨터 프로세서내에 메모리 종류 정보를 정확하게 유지함으로써, 메모리 명령을 처리할 수 있는 적절한 방법이 메모리 요구 또는 버스 액세스를 요구하지 않고 정확하게 결정될 수 있다. 예컨대, 메모리 명령에 대응하는 메모리 종류가 캐시불가능 메모리이면, 어떠한 캐시 액세스도 시도되지 않는다. 따라서, 데이타의 캐시불가능을 결정하는데 어떤 소유를 위한 판독 또는 기타 다른 시스템 버스 트랜잭션도 필요하지 않게 된다. 메모리 명령의 메모리 종류가 추측 불가능 메모리 종류이면, 메모리 맵 I/O 위치로부터의 추측적 로드는 명령에 좌우되는 메모리 위치가 메모리 맵 I/O를 포함하고 있는지를 결정하기 위해 초기 버스 트랜잭션을 필요로 하지 않고도 쉽게 피할 수 있다.
특정 메모리 종류로는 캐시불가능 및 추측불가능 메모리(UC), 캐시불가능 추측 가능 기록 조합 메모리(USWC), 제한된 캐시가능 추측가능 메모리(RC), 캐시불가능 추측 불가능 메모리 맵 인터럽트 메모리, 기록 쓰루 캐시가능 및 추측 가능 메모리(WT), 기록 보호 캐시가능 및 추측 가능 메모리(WP) 및 기록 백 캐시가능 및 추측 가능 메모리(WB)를 들 수 있다.
예시적 실시예에서, 물리적 주소 공간 테이블 관련 메모리 종류는 컴퓨터 시스템의 PMH내의 메모리 종류 범위 레지스터(MTRR)내에 기억되어 있다. 메모리 명령을 위한 물리적 주소를 결정하기 위해 이용되는 페이지 테이블 검토는 메모리내의 페이지 테이블을 검토함으로써 얻어진 물리적 주소와 디코딩 논리에 물리적 주소를 제공함으로써 얻어진 관련 메모리 종류를 복귀시킨다. 메모리 명령을 위한 메모리 종류의 결정을 신속처리하기 위해, 메모리 종류 값은 물리적주소 및 리니어 주소와 함께 TLB내에 캐시된다. 이 TLB는 메모리 종류값을 결정할 수 있도록 실제 모드와 보호 모드로 동작한다.
예시적 실시예에서, 상기 컴퓨터 시스템은 예컨대 RAM, ROM, DMA 제어기, 프레임 버퍼, 입/출력 장치 및 외부 보조 캐시와 같은 주변소자에 시스템 버스에 의해 상호접속된 예컨대 4개의 마이크로프로세서를 가지고 있는 멀티프로세서 시스템이다. 이 멀티프로세서 시스템의 각각의 마이크로프로세서는 추측 및 비추측 메모리 명령을 발생하는 배열 이탈 엔진, 메모리 명령을 할당하기 위한 예약국(RS), 추측 명령을 배열 및 종료시키는 버퍼(ROB)를 포함하고 있다. 또한, 비블록 DCU, TLB, PMH, 외부장치에 디스패치하기 전에 메모리 명령을 기억 및 배열시키는 메모리 배열 버퍼(MOB)가 포함되어 있다. 상기 MOB는 메모리 재배열 결과에 대한 메모리 명령을 검토하고 메모리 배열문제가 해결될 때까지 어떤 메모리 명령을 외부 장치측으로 지연시킨다.
상기 MOB는 메모리 배열 효과를 예측하기 위해 각각의 메모리 명령의 명령 종류을 검토한다. 메모리 명령을 위한 메모리 종류가 UC이면, 어떠한 추측 메모리 액세스가 허용되며, 그리고 MOB는 상기 명령이 종료될 때까지 상기 시스템 버스에 메모리 명령을 디스패치하는 것을 지연시킨다. WB 메모리 종류의 경우에, 추측 액세스가 허용되며, 또한 상기 MOB에 의해 메모리 명령 로드는 다른 로드를 패스시킬 수 있고 또한 메모리 명령 로드는 이전의 메모리 기억을 패스시킬 수 있다. 하지만, 상기 MOB는 메모리 명령 기억의 로드 패스를 막게 된다. 또한, MOB내에서, UC 메모리 종류에 대한 로드는 강하게 배열되지만, 비UC 메모리 종류에 대한 로드는 UC 로드를 패스시킬 수 있다.
상기 DCU는 또한 메모리 종류 값을 검토한 다음에, 메모리 명령을 처리하게 된다. UC 메모리 종류에 대한 메모리 명령은 캐시되지 않는다. WB메모리의 메모리 주소는 DCU내에서 캐시되며, 기록 백 동작과 기록 할당 동작이 행해진다. WT 형 데이타에 대한 메모리 명령은 DCU내에 저장 및 갱신되며, 기록 쓰루 동작이 행해7진다. WP 메모리에 대한 메모리 명령은 DCU 갱신없이 상기 시스템 버스상에서의 전송을 위해 MOB측으로 전송된다. WP 데이타 종류은 특히 ROM 데이타를 캐시하는데 이용된다.
USWC 메모리 종류에 대한 메모리 명령은 기타 다른 USWC 메모리 종류 명령으로부터의 데이타와 기록 조합 버퍼내에서 조합된다. 기록 조합 버퍼 내에서의 조합 후에, USWC 데이타 유닛 그룹은 버스트 모드에서 시스템 버스를 따라 출력된다.
물리적 주소 공간과 관련된 정확한 메모리 종류를 정의함으로써, 그리고 컴퓨터 프로세서내의 이들 메모리 종류를 정확하게 저장함으로써, 메모리 명령은 예컨대 메모리 종류을 결정하기 위해 메모리 요구의 개수를 제한함으로써 바람직한 메모리 부작용을 피하기 위해 그리고 시스템 버스 트래픽을 최소화하기 위해 상기 메모리 종류에 따라 적절히 그리고 쉽게 제어될 수 있다. 따라서, 종래 시스템의 단점을 피할 수 있고, 앞서 설명한 본 발명의 목적이 달성될 수 있다. 본 발명의 기타 다른 목적 및 이점은 본 발명의 예시적인 방법 및 장치 실시예에 대해 설명되어 있는 다음과 같은 발명의 상세한 설명으로부터 명백해진다.
이제, 나머지 도면을 참조하여 본 발명의 각종 실시예에 대해 설명한다. 여기서 설명된 실시예들은 명령의 추측 및 배열 이탈 수행을 할 수 있는 하나 이상의 마이크로프로세서를 가지고 있는 컴퓨터 시스템에 관한 것으로, 이때 메모리 종류 값은 메모리 명령의 처리를 수월하게 하기 위해 마이크로프로세서내에 정확하게 저장되게 된다. 이하 보다 상세히 설명한 바와같이, 정확한 메모리 종류값은 메모리 명령에 의한 메모리 액세스가 예컨대 캐시불가능 또는 캐시가능, 추측가능 또는 비추측가능임을 지시한다. 명령의 추측 및 배열 이탈 수행을 할 수 있는 마이크로프로세서 시스템을 주로 참조하여 설명되지만, 본 발명의 측면은 또한 배열 마이크로프로세서에 유리하게 포함되게 된다. 또한, 본 발명은 마이크로동작 또는 마이크로명령을 처리하는 CISC 마이크로세서를 참조하여 주로 설명되지만, 본 발명의 원리는 매크로 명령을 직접 처리하는 프로세서에도 직접 응용가능하다. 본 발명의 원리는 RISC 프로세서에 응용가능하다. 본 발명이 포함되어 있는 예시적 컴퓨터 시스템의 개요가 도 3 내지 도 6에 제공되어 있다. 특정 메모리 종류의 메모리 위치에 대한 메모리 명령 처리에 대한 상세한 설명에 대해서는 도 7 내지 도 12를 참조하여 설명한다. 메모리 명령의 재배열에 대해서는 도 13 및 도 14를 참조하여 설명한다.
개요
도 3에는 1개 이상의 마이크로프로세서, 예컨대 시스템 버스(110)에 의해 상호 접속된 4개의 마이크로프로세서(102,104,106,108)를 가지고 있는 멀티프로세서 컴퓨터 시스템이 도시되어 있다. 각각의 마이크로프로세서는 명령의 추측 및 배열 이탈 수행을 행할 수 있다. RAM(116), I/O장치(118), 보조 캐시(119), ROM(120) 및 DMA 제어기(122)는 시스템 버스(114)를 통해 각각의 마이크로프로세서(102-108)에 접속되어 있다. 또한, 프레임 버퍼(124)와 CRT 디스플레이(126)가 상기 시스템 버스(114)에 접속되어 있다. DMA 제어기(122)는 다수의 DMA 제어기 장치중 어느 하나를 나타낸다. 디스크 드라이브, CD ROM 등과 같은 기타 다른 장치도 또한 상기 시스템 버스(114)에 접속되어 있을 수 있다. I/O 장치(112)는 키보드, 모뎀 등과 같은 다수의 입력 장치 또는 출력장치를 포함하고 있을 수 있다. 도 3에 예시된 마이크로프로세서 각각은 동일 또는 상이할 수 있다. 도 3에는 상기 마이크로프로세서로부터 분리되어 있음과 아울러 시스템 버스(114)에 의해 상호접속된 보조 캐시(119)가 예시되어 있지만, 기타 다른 구현예에서는 각각의 마이크로프로세서내에 보조 캐시가 포함되어 있을 수 있다. 또 다른 구현예에서, 각각의 마이크로프로세서내에 보조 캐시가 제공되어 있고, 상기 시스템 버스를 통해 각종 마이크로프로세서에 접속되어 있는 제2의 캐시가 제공되어 있다.
도 4에는 마이크로프로세서(102)와 같은 도 3의 마이크로프로세서의 선택된 기능 구성요소가 예시되어 있으며, 이들 모두는 CPU 버스(138)에 의해 기호를 이용하여 예시된 1개 이상의 버스에 의해 상호접속되어 있다. 특히, 도 4에는 마이크로명령, 여기서는 메모리 로드 및 기억과 같은 마이크로 연산 또는 "uOP"라고 하는 마이크로 명령을 발생하는 배열 이탈 엔진(128)이 예시되어 있다. 일반적으로, 상기 uOP는 uOP가 배열 마이크로프로세내에서 발생되는 순서와는 다른 순서로 배열 이탈 엔진(128)에 의해 발생된다. 또한, 배열 이탈 엔진(128)은 "If"문과 같은 분기 동작에서 예측을 할 수 있으며, 따라서 이 분기 동작의 다음에 uOP가 추측 발생되게 된다. 상기 uOP는 배열 이탈 및/또는 추측 발생되므로, 부분적으로 마이크로프로세서(102)는 프로그램내의 어떤 병렬처리를 이용할 수 있고, 상기 마이크로프로세서의 파이프라인 능력을 이용할 수 있다.
보호 모드에서, 수행 엔진(128)에 의해 발생된 uOP의 내부 주소는 AGU유닛(130)에 의해 산출된다. 실제 모드에서, AGU(130)는 물리적인 주소를 발생한다. 달리 언급이 없으면, 여기에서는 보호 모드 동작에 대해 설명한다. 상기 내부 주소는 상기 물리적인 주소 공간에 맵핑된 리니어 조소 또는 가상 주소 또는 기타 다른 등가 주소일 수 있다. 본 발명의 다른 구현예에서, 별도의 내부 주소 및 물리적인 주소는 정의되어 있지 않을 수도 있다.
리니어 주소를 포함하고 있는 uOP는 CPU 버스(138)를 통해 AGU(130)로부터 출력되며, 이때 상기 uOP는 RS(131)에 의해 인터셉트 및 저장된다. RS(131)는 아직 수행되지 않은 uOP를 할당하고 추측 데이타 의존성에 따라 그리고 기타 다른 기능유닛의 이용가능성에 따라 기타 다른 기능 유닛측으로 uOP를 디스패치하는 마이크로프로세서(120)의 기능 유닛이다. 예약국의 예시적인 특정 구현예에 대한 상세한 것에 대해서는 1993년 12월 27일에 출원된 발명의 명칭이 "예약국으로부터의 명령의 디스패치 스케쥴링 방법 및 장치"로서 함께 계류중인 미국 특허 출원 제08/172,737호에 공지되어 있고, 이 출원은 본 출원의 양수인에게 양도되어 있으며, 본 출원에 참고자료로서 포함되어 있다.
마이크로프로세서(102)는 또한 RS(131)에 의해 디스패치되고 상기 기능유닛중 한 기능 유닛에 의해 수행된 uOP로부터의 추측 결과를 저장하는 재배열 버퍼(ROB)(133)를 포함하고 있다. ROB(133)는 추측 uOP로부터의 결과를 수집하고, 상기 uOP를 재배열한 다음에, 이 uOP를 종료한다. 따라서, 배열 이탈 수행 엔진(128)은 컴퓨터 프로그램에서 나타나는 순서와는 다른 순서로 uOP를 발생하는 반면에, ROB(133)는 상기 컴퓨터 프로그램에 의해 특정된 사건의 시퀀스를 얻기 위해 수행된 uOP의 종료를 재배열한다. 수행된 uOP는 일단 비추측적이면, 즉 상기 uOP 의 미해결된 이전 uOP가 모두 해결되면 종료된다. 따라서, 예컨대, IF문과 같은 분기 조건의 다음에 추측 발생된 uOP의 경우에, uOP는 상기 분기 조건이 평가되고 구해진 후에 종료된다. 특히, 상기 분기 조건이 정확한 것으로 결정되면, 이때 상기 분기 조건에 대해 추측 수행된 uOP가 종료된다. 상기 분기 조건이 부정확한 것으로 결정되면, 상기 분기문 다음의 추측 uOP는 수행되지 않거나 무효화된다. ROB(133)의 특정한 예시적인 구현예에 대한 자세한 것은 1994년 1월 4일 출원된, 발명의 명칭이 "배열 이탈 프로세서의 추측 및 위탁 공급원 파일"으로서 함께 계류중인 미국 특허 출원 제08/177,244호에 공지되어 있으며, 이 출원은 본 출원의 양수인에게 양도되었으며, 본 출원에 참고자료로서 포함되어 있다.
메모리 로드 및 메모리 기억과 같은 메모리 액세스를 포함하고 있는 uOP는 메모리 시스템(135)에 의해 수행된다. 메모리 시스템(135)은 DCU(132), TLB(134), PMH(136), 버스 유닛(140) 및 MOB(142)를 포함하고 있다. TLB(134)는 리니어 주소와 대응 물리적 주소간의 주소 변환 캐시를 유지하고 있다. 사용할 때에, RS(131)에 의해 디스패치된 uOP는 TLB(134)에 의해 CPU 버스(138)로부터 인터셉트되며, 이는 상기 uOP의 리니어 주소에 대응하는 물리적 주소를 결정하게 된다. 상기 주소 변환이 여기서 구해지면, TLB(134)는 상기 물리적 주소를 포함하도록 갱신된 상기 uOP를 CPU 버스(138)를 통해 다시 디스패치한다.
DCU(132)는 다수의 가장 최근에 액세스된 메모리 위치에 대한 데이타를 유지하고 있는 캐시라인(199)을 포함하고 있다. DCU(132)는 상기 uOP의 메모리 액세스에 대한 데이타가 이미 포함되어 있는지를 결정하기 위해 상기 물리적 주소를 포함하고 있는 상기 uOP를 인터셉트하고 내부 캐시 라인을 액세스한다. 상기 데이타가 상기 DCU(132)내에 포함되어 있으면, 상기 데이타는 마이크로프로세서(102)의 다른 기능 유닛에 의한 다른 처리를 위해, 상기 DCU로부터 검색되고 CPU 버스(138)를 통해 디스패치된다. 상기 데이타가 상기 DCU(132)내에서 발견되지 않으면 시스템 버퍼 유닛(140)은 상기 uOP에 의해 특정된 데이타를 액세스하기 위해 보조 캐시(119) 또는 RAM(116) 또는 ROM(120)과 같은 외부 메모리측으로 메모리 요구를 전송할 수 있도록 액세스된다.
DCU(132)는 필 버퍼(도시되어 않음)를 포함하고 있는 미블럭화 캐시이다. 상기 필 버퍼는 프레임 버퍼 기록과 관련된 데이타, 즉 USWC 메모리 종류의 데이타를 저장하기 위해 유리하게 이용된다. DCU(132)는 바람직하게는 MESI 프로토콜을 이용하며, 이때 M은 변경된 캐시 라인을 나타내고, E는 배타적 캐시 라인을 나타내며, S는 공유 캐시 라인을 나타내고, I는 무효 캐시 라인을 나타낸다. 이하에서 보다 완전하게 설명되는 바와같이, DCU(132)는 기록 쓰루 동작, 기록 백 동작 및 기록 보호 캐시 동작을 포함하여 다양한 캐시 프로토콜 동작을 할 수 있다.
지적한 바와같이, 상기 시스템은 보조 외부 캐시(119)를 포함하고 있다. 보조 캐시가 제공되면, DCU(132)에 의해 만족되지 않은 메모리 로드 또는 기억동작이 보조 캐시(119)측으로 전송된다. 상기 로드 동작 또는 기억 동작이 보조 캐시(119)에 포함되어 있는 데이타로 만족될 수 없으면, 로드 또는 기억이 RAM(116) 또는 ROM(120)과 같은 외부 메모리 장치측으로 전송된다. 명료성과 간단화를 위해, 다음의 설명에서는, 보조캐시가 제공되지 않는 것으로 가정한다. 상기 보조 캐시는 단지 후술되는 제한된 캐시가능 메모리 종류을 참조하여 설명되며, 이때 DCU(132)내에서 캐시된 데이타와 제2캐시내에서 캐시된 데이타는 구분된다. 또한, 추가적인 외부 캐시가 제공될 수 있고 그리고 여러 레벨의 캐시가 수용될 수 있음은 물론이다.
다시 TLB(134)를 참조하면, 리니어 주소와 물리적 주소간의 변환이 TLB(134)내에서 캐시되지 않으면, PMH(136)는 대응 물리적 주소를 결정하기 위해 페이지 테이블 검토를 수행한다. TLB 실패를 유발하는 상기 uOP가 비추측 uOP이면, PMH(136)는 비추측 PDE 및 PTE 로드 동작을 발생함으로써 단지 비추측 페이지 테이블 검토를 수행한다. 하지만, TLB 실패를 유발하는 상기 uOP가 추측 uOP이면, PMH(136)는 페이지 테이블 검토를 추측 수행한다. 상기 추측 페이지 테이블 검토에 대한 자세한 것은 1993년 12월 30일에 출원된, 발명의 명칭이 "추측 uOP를 처리할 수 있는 마이크로프로세서의 페이지 테이블 검토 방법 및 장치"인 함께 계류중인 미국 특허 출원 제08/176,363호에 공지되어 있으며, 이 출원은 본 발명의 양수인에게 양도되었으며, 본 출원에 참고자료로서 포함되어 있다.
페이지 테이블 검토 동안에, PMH(136)는 처리중인 uOP에 대한 메모리 종류을 결정하기 위해 MTRR의 137을 액세스한다. PMH가 페이지 테이블 검토동안에 메모리 종류 값을 결정하는 방법은 1993년 12월 22일 출원된, 발명의 명칭이 " 프로세서에 의한 메모리 종류 결정 방법 및 장치"인, 함께 계류중인 미국 특허 출원 제08/171,528호에 공지되어 있으며, 이 출원은 본 발명의 양수인에게 양도되었으며, 본 출원에 참고자료로서 포함되어 있다
각각의 uOP에 대한 메모리 종류 결정을 신속처리하기 위해, TLB(134)는 바람직하게는 다른 방법으로 캐시된 각각의 리니어 주소/물리적 주소 요소에 대한 메모리 종류을 캐시할 수 있도록 구성되어 있다. 따라서, PMH(136)의 MTRR은 TLB 실패인 경우에만 액세스된다. TLB 적중이 경우에는, 상기 메모리 종류 값은 TLB(134)로부터 결정되고, 대응하는 물리적 주소와 리니어 주소 조합이 액세스된다. 상기 컴퓨터 시스템이 실제 모드인지 보호 모드인지에 관계없이 메모리 종류 값이 TLB(134)로부터 액세스될 수 있도록 하기 위해, TLB(134)는 실제모드와 보호 모드에서 동작하게 된다. 필요한 경우, 별개의 데이타 TLB와 별개의 명령 TLB가 제공될 수 있다. 이러한 구현예에서, 메모리 종류 값은 바람직하게는 상기 두 모드에서 캐시될 수 있지만, 다른 구현예에서는 한 모드에서 캐시될 수 있다. TLB(134)의 동작에 대한 자세한 사항, 특히 TLB가 실제모드에서 동작하는 방법은 1993년 12월 30일 출원된, 발명의 명칭이 "실제모드에서 변환 룩어사이드 버퍼를 이용하는 방법 및 장치"인, 함께 계류중인 미국 특허 출원 제08/176,364호에 공지되어 있으며, 이 출원은 본 발명의 양수인에게 양도되었으며, 본 출원에 참고자료로서 포함되어 있다.
MOB(142)는 메모리 uOP를 배열시킨다. 특히, MOB(142)은 메모리 로드 및 기억의 리스트를 유지하고 가능한 메모리 역효과에 대한 로드 및 기억을 체크한다. 메모리 역효과는 예컨대 추측 로드 이전에 외부 메모리측에 디스패치된 추측 기억의 결과로서 발생된다. MOB(142)는 메모리 액세스 동작을 적절히 재배열하고 배열 문제가 해결될 때까지 특정한 메모리 액세스 동작의 수행을 차단할 수 있다. 특히, 상기 MOB는 종료되지 않은, 추측가능하지 않은 것으로 알려진 메모리 uOP의 수행을 차단시킬 수 있다. 또한 MOB(142)에 대한 자세한 것은 도 13 및 도 14를 참조하여 후에 제공되게 된다.
예시적인 메모리 관련 uOP(150)는 도 5에 기호를 이용하여 예시되어 있다. uOP(150)는 연산코드(OPCODE)(152), 리니어 주소(154)용 공간, 물리적 주소(156)용 공간, 물리적 목적지 주소(PDST)(158)를 포함하고 있다. OPCODE(152)는 수행될 메모리 동작의 종류를 지시하는 코드로서, 예컨대 메모리 기억 동작 또는 메모리 로드 동작을 나타낸다. PDST는 마이크로프로세서(102)내의 uOP의 목적지를 나타내는 코드를 기억한다. PDST 값에 의해, 마이크로프로세서는 uOP를 추적하고 uOP의 결과가 결국 그 결과를 필요로 하는 기능 유닛측으로 전송될 수 있다. 또한, 상기 PDST는 상기 uOP의 상대적인 수명을 나타낸다. 즉, 발생된 uOP에 대한 PDST 값은 오름 차순으로 할당되며, 이에따라 두 uOP의 상대적인 수명은 각각의 PDST 값을 검토함으로써 결정될 수 있다. ROB(133)와 RS(131)(도 4)는 유효 PDST 값을 가지고 있는 uOP에만 인터셉트 및 응답한다. ROB(133)와 RS(131)는 PDST값을 포함하고 있지 않거나 유효하지 않은 PDST값을 포함하고 있는 모든 uOP를 간단히 무시하게 된다. 리니어 및 물리적 주소 섹션(154,156)은 알려진다면 각각 리니어 주소와 물리적 주소를 저장하게 된다.
uOP(134)(도 3)는 또한 이 uOP가 현재 추측적인지 또는 종료될 준비가 되어 있어 더 이상 추측적이지 않은지를 나타내는 AT_RETIREMENT 비트(160)를 포함하고 있다. 상기 메모리 종류은 메모리 종류 공간(162)에 저장된다. 앞서 지적한 바와같이, 상기 메모리 종류은 다른 것중에서도 메모리 액세스 uOP에 좌우되는 데이타가 추측적인지 비추측인지, 캐시가능인지 캐시불가능인지 등인지를 지시한다. 추측불가능 데이타 종류은 추측 수행되지 않은 그래픽 판독동작 및 기록 동작과 같은 데이타 종류을 포함하고 있다. 추측가능 데이타 종류은 대부분 다른 데이타 종류을 포함하고 있다. uOP(150)는 이 uOP의 처리 및 수행을 수월하기 위한 광범위한 다른 정보를 추가로 포함하고 있다. 간단화 및 명료성을 위해, 이러한 추가적인 정보는 여기에서는 설명하지 않지만, uOP 구조에 관한 추가 정보는 상기한 함께 계류중인 특허 출원에 공지되어 있다.
표 1에는 uOP(134)의 메모리 종류 공간(162)에의 저장을 위해 예시적인 수치값과 함께 본 발명의 마이크로프로세서에 의해 처리된 6가지의 일반적인 메모리 종류이 리스트되어 있다.
메모리 종류값 메모리 종류 의미
0 캐시불가능 및 추측불가능 메모리.종료시에만 수행된 로드/기억.(UC)
1 캐시불가능, 추측가증 기록 조합 메모리.로드 추측. 종료 후에만 수행된 기억.(USWC)
2 제한된 캐시가능 및 추측가능 메모리.로드 추측. 종료 후에만 수행된 기억.
3 기록 쓰루 캐시가능 및 추측가능 메모리.(WT)로드 추측. 종료 후에만 수행된 기억.
4 기록 보호 캐시가능 및 추측가능 메모리.(WP)로드 추측. 기억은 외부 메모리측으로 전송되지만, 캐시데이타에 적용되지 않음.
5 기록 백 캐시가능 및 추측가능 메모리.(WB)로드 추측. 종료 후에만 수행된 기억.
표 1로부터 알 수 있는 바와같이, 특정 메모리 종류는 캐시불가능 및 추측불가능 메모리(UC), 캐시불가능 추측가능 기록 조합 메모리(USWC), 제한된 캐시가능 및 추측가능 메모리(RC), 기록 쓰루 캐시가능 및 추측가능 메모리(WT), 기록 보호 캐시가능 및 추측가능 메모리(WP) 및 기록 백 캐시가능 및 추측가능 메모리(WB)를 포함하고 있다. 기타 다른 메모리 종류는 본 발명의 일반적인 원리와 일치하도록 정의될 수 있다.
UC 메모리는 캐시불가능 메모리이고 그리고 예컨대 메모리 맵 I/O를 포함하고 있다. UC 메모리에 대한 uOP는 추측불가능이다. 환언하면, UC 메모리에 대한 로드 및 기억은 로드 또는 기억의 종료시에만 마이크로프로세서에 의해 수행된다. USWC 메모리는 일반적으로 프레임 버퍼 메모리용으로 사용된다. USWC 메모리에 대한 로드는 추측 수행된다. 기억은 종료 후에만 캐시가능하다. RC 메모리는 DCU(132)와 같은 주요 또는 L1 캐시에서만 캐시가능하지만, 캐시(199)와 같은 외부 보조 (L2) 캐시에서는 캐시가능하지 않은 메모리와 관련되어 있다. RC로드는 추측
수행될 수도 있다. RC는 종료후에만 수행될 수 있다. WT메모리는 기록 쓰루 캐시 프로토콜에 의해 처리되는 메모리이다. WT 메모리에 대한 로드는 추측 수행된다. WT 메모리에 대한 기억은 종류후에만 수행된다. WP 메모리는 ROM 데이타를 캐시하는데 적합한 메모리이다. WP 메모리에 대한 로드 uOP와 관련된 캐시라인은 DCU내에서 캐시된다. 하지만, 기억 uOP의 경우에, 캐시라인 데이타는 갱신되지 않는다. 그럼에도 불구하고, 기억 uOP는 부분 기록을 사용하여 외부 메모리에 기록된다. WP 메모리에 대한 로드는 추측 수행된다. WP 메모리에의 기억은 종료 후에만 수행된다. WB 메모리는 기록 백 캐시 프로토콜에 따라 일반적으로 처리되는 메모리이며, 이때 데이타 기록은 캐시라인에 먼저 병합된 다음에, 버스트 모드를 사용하여 외부 메모리에 다시 기록된다. WP 메모리에 대한 로드는 추측 수행된다. WP 메모리에 대한 기억은 종료 후에만 수행된다.
표 1에서, 메모리 종류를 나타내는 특정 메모리 종류 수치값이 제공되어 있다. 알 수 있는 바와같이, 다른 수치값 또는 코드도 또한 사용될 수 있다.
보다 완전하게 후술되는 바와같이, 마이크로프로세서(102)의 기능 구성요소는 uOP가 처리되어야 하는지와 그 방법을 결정하기위해 각각의 uOP의 메모리 종류값을 검토한다. 예컨대, uOP의 메모리 종류값이 WB 메모리를 나타내면, uOP는 일반적으로 앞서 지적된 추측 제한에 좌우되는 기록 백 캐시 프로토콜에 따라 처리된다.
따라서, 도 4에는 마이크로프로세서(102)가 예시되어 있다. 도 4에는 마이크로프로세서의 관련 기능 구성요소만이 예시되어 있다. 명료성을 위해, 수많은 구현예에 대한 자세한 것은 정확하게 도시되어 있지 않다. 예컨대, 도 4에 예시되어 있는 단일의 CPU 버스는 실제로 리니어 주소, 물리적 주소, DCU로부터의 기록 백 결과, 및 OPCODE를 위한 각각의 버스를 포함하여 여러 가지 별개의 버스를 포함하고 있다. 또한, 상기 버스의 별개의 물리적 주소는 기타 다른 유닛이 물리적 주소를 액세스할 필요가 없는 경우에는 PMH, TLB, DCU에만 상호접속될 수 있다. 배열 이탈 엔진은 순차적 명령 페치, 마이크로코드 유닛, 및 명령 디코더 및 할당기 유닛과 같은 별개의 내부 구성요소를 포함하고 있을 수 있다. 또한, 정수 및 플로팅 포인트 유닛은 특별히 예시되지 않은 마이크로프로세서내에 포함되어 있을 수도 있다. 별개의 정수(TLB)도 또한 제공되어 있을 수 있다. 도 5의 uOP에 의해 나타내어진 정보는 반드시 상기 마이크로프로세서내에 함께 저장될 필요는 없다. 특히, uOP 자체는 리니어주소 및 물리적 주소를 기억할 필요가 없다. 실제로, 별개의 리니어 및 물리적 주소 버스가 제공될 수 있다. 일반적인 배열 이탈 프로세서 구성요소에 관한 추가 정보는 존슨에 의한 앞서 언급한 참조 문헌에 설명되어 있다.
도 4의 마이크로프로세서내에서 uOP를 처리하는 방법에 대헤서는 도 6에 예시되어 있다. 초기에, 스텝(200)에서, uOP 페치 및 발생 유닛은 메모리 uOP를 발생한다. 또한, 수많은 비메모리 uOP가 발생된다. 하지만, 이는 본 발명에 적절한 것은 아니므로, 여기서는 자세히 설명하지 않는다. 다음에, RS(131)는 스텝(202,204)에서 uOP를 할당후 디스패치한다. AGU(130)는 스텝(206)에서 uOP용 라인 주소를 결정한다. 상기 마이크로프로세서가 실제모드에서 동작하면, 스텝(206)은 바이패스되는데, 이는 물리적 주소만이 처리되기 때문이다. 어느 경우에도, 이때에는 스텝(208)에서 uOP가 MOB에 할당된다.
스텝(208)에서, uOP에 의해 나타내어진 메모리 위치의 메모리 종류는 아직 알려지지 않았다. 스텝(210)에서, TLB(210)는 메모리 종류를 결정하기 위한 시도에서 액세스된다. 앞서 지적한 바와같이, TLB(134)는 리니어 주소와 대응 물리적 주소와 가장 최근에 액세스된 다수의 메모리 페이지에 대한 메모리 종류를 포함하고 있다. 보호 모드에서 동작하고 TLB 적중이 발생되면, 물리적 주소와 메모리 종류가 TLB로부터 검색된다. 실제 모드에서 동작하고 TLB 적중이 발생하면, 메모리 종류만이 TLB로부터 검색되는데, 이는 물리적 주소는 이미 알려져 있기 때문이다. 따라서, 종래 TLB와는 달리, TLB(134)는 정보를 검색하기 위해 보호 모드에서 또는 실제 모드에서 액세스된다.
TLB 적중 또는 실패가 발생되었는지는 스텝(212)에서 결정된다. TLB의 발생시 메모리 종류 또는 메모리 종류와 물리적 주소를 판독하는 상기 스텝은 스텝(214)에서 수행된다. TLB 실패가 발생하면, 수행은 스텝(212)에서 스텝(216)으로 진행되며, 여기서 PMH(136)는 물리적 주소와 해당 메모리 종류를 결정하기 위해 페이지 테이블 검토를 수행하도록 액세스된다. 앞서 지적한 바와같이, PMH(136)는 해당 범위의 메모리에 메모리 종류를 맵핑시키는 MTRR(137)를 포함하고 있으며, 이에따라 페이지 테이블 검토 동안에 메모리 종류가 결정될 수 있다. 다음에 수행은 스텝(214) 또는 스텝(216)으로부터 스텝(218)에서 진행한다.
다음에, 스텝(218)에서, uOP에 대한 메모리 종류가 알려진다. 스텝(218)에서, 상기 uOP는 정확한 메모리 종류를 지시하기 위해 갱신된 uOP의 메모리 종류 값으로 그리고 적절한 리니어 주소 또는 물리적 주소로 DCU측으로 디스패치된다. 스텝(218) 후에, 수행은 메모리 종류값에 따라 분기된다. 메모리 종류가 WT이면, 수행은 스텝(220)으로 진행된다. 메모리종류가 WB 또는 WP이면, 수행은 각각 스텝(222) 또는 스텝(224)으로 진행된다. 메모리 종류가 RC, UC 또는 USWC이면, 수행은 스텝(226,228,230)으로 각각 진행된다. 각각의 스텝(220-230)에서, uOP에 의해 나타내어진 메모리 액세스는 특정된 메모리 종류에 따라 수행된다. 이러한 처리에 대한 자세한 것은 도 7 내지 도 12를 대해 후술된다.
따라서, 도 6에는 메모리 uOP를 처리하는 방법에 대한 흐름도가 제공되어 있다. 알수 있는 바와같이, 스텝들의 실제 순서와, 각각의 스텝을 수행하는 특정 방법은 특정 구현예에 따라 변경될 수 있다. 예컨대, 상기 uOP를 DCU측으로 그리고 TLB 측으로 동시에 디스패치하는 것이 바람직하며, 이에따라 메모리 종류와 물리적 주소가 TLB로부터 검색되면, 상기 DCU는 상기 uOP를 만족시키기 위해 내부 캐시 라인을 바로 액세스할 수 있다. 이러한 구현예에서, 물리적 주소 또는 메모리 종류가 TLB내에서 발견되지 않으면 DCU 액세스는 중지된다.
여기서 설명한 예시적 실시예에서, 상기 DCU는 물리적 주소에 따라 데이타를 캐시한다. 따라서, DCU 액세스는 상기 uOP에 대한 상기 물리적 주소가 알려질 때까지 수행될 수 없으며, 상기 물리적 주소를 결정하기 위해 이용된 페이지 테이블 검토의 결과가 얻어질 때까지 실제 DCU 액세스가 필요할 수 있다. 기타 다른 구현예에서, 리니어 주소에 따라 DCU내의 데이타를 캐시하는 것이 바람직하며, 이에따라 DCU는 실제 물리적 주소의 결정 이전에 적어도 개시될 수 있다. 이러한 실시예에서도, 메모리 종류가 알려질 때까지 DCU 액세스의 종료를 지연시킬 필요가 있을 수 있다.
또한, 도 6에 예시되어 있는 스텝중 어느 것도 uOP가 추측 또는 비추측인지에 대한 사전 결정을 필요로 하지 않음에 주목해야 한다. 대부분, uOP가 추측 또는 비추측인지는 도 7 내지 도 13을 참조하여 후술되는 uOP를 처리하는데 이용되는 특정스텝에 영향을 미칠뿐이다.
상기 설명에는 마이크로프로세서(102)의 동작에 대한 간단한 개요가 제공되어 있고, 특히 마이크로프로세서가 메모리 종류값을 정확하게 기억하는 방법이 제공되어 있다. 구현예에 따라, 도 6에서 설명된 스텝의 특정 순서는 다를 수 있다. 이제, 나머지 도면을 참조하여, 특정 메모리 종류를 처리하는 방법 및 장치에 대해서 보다 자세히 설명한다.
기록 쓰루 메모리 종류 처리
도 7에는 WT 메모리 종류의 메모리 위치에 대한 메모리 uOP를 처리하는 프로세스(도 6의 스텝(220))가 에시되어 있다. 도 7에서 설명된 대부분의 스텝은 DCU(132)와 버스 유닛(144)에 의해 수행된다. 하지만, 필요한 경우, 상기 스텝들은 기타 다른 기능 유닛에 의해 수행될 수 있다.
초기에, 스텝(300)에서 상기 uOP가 로드 동작인지 기억 동작인지에 대한 결정이 행해진다. 바람직하게는, 상기 uOP의 OPCODE는 상기 메모리 uOP가 로드인지 기억인지를 나타낸다. 상기 uOP가 로드이면 수행은 스텝(302)를 통해 스텝(304)으로 진행되며, 여기서 DCU(132)는 uOP내에 물리적 주소에 의해 나타내어진 메모리 위치에 대한 데이타가 내부 캐시 라인 내에 이미 포함되어 있는지에 대한 결정을 행하기 위해 그 내부 캐시 라인을 액세스한다. DCU 적중이 발생되면, 수행은 스텝(306)을 통해 스텝(308)으로 진행되어 상기 uOP에 의해 나타내어진 데이타가 DCU내로부터 액세스된 다음에, ROB(133)측으로 또는 uOP에서 나타내어진 데이타를 요구하는 기타 다른 기능 유닛측으로 디스패치된다.
DCU 실패가 스텝(304)에서 발생하면, 수행은 스텝(310)을 통해 스텝(312)으로 진행되며, 여기서 uOP에 의해 나타내어진 메모리 위치를 포함하고 있는 데이타의 전체적인 캐시 라인의 소유를 검색하여 얻기 위해 라인 판독이 수행된다. 데이타 캐시라인을 제공하는 실제 외부 장치는 상기 uOP내에서 나타내어진 메모리 위치에 좌우된다. WT 데이타를 포함하고 있는 예시적인 장치는 RAM(116)이다. 바람직하게는, 데이타의 캐시 라인은 버스트 모드 전송을 사용하는 버스 구동기(140)를 경유하여 DCU(132)를 통해 외부장치로부터 전송된다. 일단 원하는 데이타를 포함하고 있는 캐시 라인이 DCU(132)내로 판독되면, 상기 메모리 uOP는 필요한 특정 데이타 유닛을 검색하기 위해 상기 캐시라인을 액세스함으로써 만족된다. 다음에, 데이타 유닛은 ROB측으로 또는 필요한 기타 다른 기능 유닛측으로 전송된다.
따라서, WT 메모리 종류로부터의 로드 결과로서, 수행은 스텝(304,306,308) 또는 스텝(304,310,312,314)을 따라 진행된다. 중요하게는, uOP가 추측 또는 비추측인지에 대한 어떠한 결정도 WT 메모리에 대한 로드를 처리하는데에는 필요없게 된다. 환언하면, 진행 흐름의 어떠한 목적지도 WT메모리에 대한 추측 또는 비추측 로드 uOP 사이에서는 필요없게 된다. 따라서, uOP가 추측적이고 그리고 잘못에측된 분기를 기초로 하고 있더라도 WT 메모리에 대한 순수한 추측 로드 uOP는 DCU(132)에 의해 완전하게 처리되게 된다. 상기 uOP가 추측적이면, 상기 DCU에 의해 수행된 메모리 액세스의 결과는 상기 uOP가 종료될 때까지 ROB내에서 유지된다. uOP가 비추측적이면 uOP의 결과는 종료될 때까지 유지되지 않지만 PDST 값에 의해 나타내어진 데이타를 필요로 하는 어떤 기능 유닛측으로 바로 디스패치된다.
따라서, 상기 DCU는 WT 메모리 종류로부터의 로드를 추측 수행한다. WT 메모리 종류에 대한 로드는 추측 수행되므로, 메모리 맵 I/O은 WT메모리로 나타내어져서는 안된다. (uOP가 잘못예측된 분기를 기초로 있고 무시되면 메모리 멥 I/O 에 대한 로드는 매우 해로울 수 있는 부작용을 가질 수 있다.)
또한, 어떤 캐시 라인이 추측을 기초로 검색되어 무시되더라도, uOP는 유효한 캐시 라인임에 주의해야 한다. 따라서, 상기 캐시라인이 추측 uOP를 기초로 하고 있어 무시된 메모리로부터 판독되더라도 상기 데이타는 유효하고 다음 uOP를 만족시키기 위해 사용되는 DCU내에서 보존된다.
상기 uOP가 로드 uOP가 아니고 기억 uOP이면, 수행은 스텝(302)로부터 스텝(305)측으로 진행하며, 여기서 상기 uOP가 추측적이면, 처리는 상기 uOP가 종료될 때까지 지연된다. 상기 uOP가 추측적이지 않으면 또는 상기 uOP가 추측적이고 종료되었으면, 수행은 스텝(316)으로 진행되며, 여기서 상기 DCU가 액세스된다. DCU 적중이 발생되면, 수행은 스텝(318)을 통해 스텝(320)측으로 진행하며, 여기서, 상기 DCU 적중에 의해 나타내어진 캐시라인은 uOP 기억 uOP내에 포함되어 있는 데이타로 갱신된다.
322에서, 상기 uOP 기억은 부분 기록 동작을 사용하여 외부 메모리측으로 전송된다.
따라서, WT 메모리 종류를 위한 외부 메모리에 대한 실제 로드는 상기 uOP가 비추측적인 것으로 알려질 때까지 지연된다. 상기 uOP가 원래 비추측적이면, 스텝(316-322)의 프로세스는 전형적인 기록 쓰루 캐시 프로토콜에 해당하며, 이때 캐시라인이 갱신되고 부분기록이 바로 외부 메모리측으로 전송된다. 상기 uOP의 처리는 단지 상기 uOP가 추측적이면 지연될 뿐이다. 비추측적이면, 상기 DCU를 액세스하는 것을 포함해서 상기 uOP의 처리는 지연없이 수행된다.
DCU실패가 uOP 기억 동작의 결과로서 발생하는 경우에, 수행은 스텝(316)으로부터 스텝(328)을 통해 스텝(330)측으로 진행되며, 이때 상기 uOP 기억 동작은 부분 기록을 사용하여 외부 메모리측으로 전송된다. 따라서 스텝(328-330)의 처리는 비추측 uOP에 대한 전형적인 기록 쓰루 처리에 해당하게 된다. 상기 uOP가 추측적이면 상기 DCU를 액세스하는 것을 포함해서 상기 uOP의 처리는 상기 유가 비추측적인 것으로 알려질 때까지 지연된다. 예컨대 상기 uOP가 잘못예측된 분기를 기초로 하고 있기 때문에 상기 uOP가 종료되지 않게 되면, 어떠한 부분기록도 상기 uOP를 기초로 한 외부 메모리측으로 전송되지 않게 된다. 따라서, 스텝(318-322) 및 스텝(328-330)의 기억 uOP 처리는 단지 이 uOP가 종료되면 수행될 뿐이다.
따라서, 도 7에는 WT 메모리 위치로 나타내어진 메모리 위치에 대한 메모리 uOP 처리 방법이 예시되어 있다. 특정 메모리 위치가 WT로 나타내어 있는지 일부 다른 메모리 종류로 나타내어져 있는지가 프로그래머에 의해 결정된다. 바람직하게는 종래 기록 쓰루 캐시 프로토콜에 다른 방법으로 좌우되는 메모리 위치만이 WT 메모리 종류인 것으로 나타내어진다. 지금까지 배열 이탈 마이크로프로세서를 참조하여 주로 설명이 되었지만, 본 발명의 기록 쓰루 처리에 대한 이점은 배열 프로세서에서도 얻어진다.
기록 백 메모리 종류 처리
도 8에는 WB 메모리 종류의 메모리 위치를 나타내는 메모리 uOP를 처리하는 방법이 예시되어 있다.
스텝(400)에서, uOP가 로드 인지 기억인지에 대한 결정이 행해진다. 상기 uOP가 로드이면, 수행은 스텝(402)을 통해 스텝(404)측으로 진행되며, 여기서 DCU(132)는 로드를 만족시키려는 시도하에 액세스된다. DCU 적중이 발생하면, 수행은 스텝(406)을 통해 스텝(408)으로 진행되며, 여기서 로드는 스텝(406)의 DCU 적중에 의해 나타내어진 캐시 라인으로부터 직접 만족된다. DCU 실패가 발생되면, 수행은 스텝(404)으로부터 스텝(410)을 통해 스텝(412)측으로 진행되며, 여기서 로드 동작에 좌우되는 데이타를 포함하고 있는 캐시 라인을 얻기 위해 라인 판독이 수행된다. 다음에, 스텝(414)에서, uOP는 일단 상기 캐시라인이 상기 DCU에 배치되어 있으면 상기 캐시 라인으로부터 만족된다. 앞서 도 7에서 설명한 WT 메모리 종류의 로드 처리 스텝의 경우와 같이, WB 메모리 종류의 로드 처리 스텝은 uOP가 추측적인지 비추측적인지에 관계없이 수행된다. 이에따라 메모리 맵 I/O는 WB 메모리 종류으로서 나타내어져서는 안되는데, 이는 로드가 잘못예측된 분기를 기초로 WB 메모리 위치에 대해 추측적으로 수행될 수 있기 때문이며, 메모리 맵 I/O에 인가되면, 그러한 로드는 의도되지 않은 부작용을 가질 수 있다.
상기 uOP가 로드이면, 수행은 스텝(402)에서 스텝(403)측으로 진행되며, 여기서 상기 uOP가 추측적이면, uOP의 또 다른 처리는 종료될 때까지 지연된다. 상기 uOP가 추측적이지 않으면 또는 상기 uOP가 추측적이어서 종료되었으면, 수행은 스텝(416)으로 진행되며, 여기서 상기 DCU가 액세스된다. DCU 적중이 발생하면, 수행은 스텝(418)을 통해 스텝(420)측으로 진행되며, 여기서 상기 DCU 적중에 의해 나타내어진 캐시 라인은 uOP 기억 동작에서 제공된 데이타를 포함할 수 있도록 갱신되며, 상기 라인은 더티로서 표시된다. 결국, 상기 갱신된 캐시 라인은 바람직하게는 버스트 모드 회복에 의해 회복될 수 있다.
WB 메모리 종류에 대한 기억 uOP의 처리 스텝들은 상기 uOP가 비추측적이기만 하면, 또는 상기 uOP가 종료된 후에만 추측적이면 수행된다.
스텝(416)에서 DCU 실패가 발생되면, 수행은 스텝(428)을 통해 스텝(430)측으로 진행되며, 여기서 소유를 위한 판독은 uOP 기억 동작에 좌우되는 메모리 위치를 포함하고 있는 외부 메모리로부터 전체 캐시 라인이 얻어지도록 수행된다. 스텝(432)에서, 이전의 라인 판독 동작에 좌우되는 캐시 라인은 uOP 기억 동작이 반영될 수 있도록 갱신된다. 스텝(432)에서, 상기 라인은 또한 더티로 표시된다. 이후 때때로, 상기 갱신된 캐시 라인은 버스트 모드 회복을 사용하여 회복된다.
따라서, 기록 백 메모리에 대한 비추측적 uOP 기억 동작을 기초로 한 uOP 실패의 경우에, 소유를 위한 판독은 캐시 라인을 얻기 위해 수행되고, 다음에 이 캐시 라인은 기억 데이타가 반영되도록 갱신되며, 마지막으로 상기 캐시라인은 외부메모리에 기록 백된다. 상기 3개의 스텝은 소유를 위한 판독 동작을 가진 진정한 기록 할당을 나타낸다. 진정한 기록 할당은 메모리 맵 I/O에 영향을 줄 위험없이 수행될 수 있는데, 이는 메모리 종류가 상기 기록 할당 동작을 초기화하기 전에 알려지기 때문이다.
상기 uOP가 추측적이면, DCU 액세스를 포함한 전체 기록 할당 동작은 상기 uOP가 종료될 때까지 지연된다. 지연이 uOP가 종료될 때까지 발생하더라도, 전체 처리 스텝들은 또한 진정한 기록 할당 동작을 나타낸다.
따라서, 도 8에는 본 발명에 따른 기록 백 메모리 종류를 처리하는 스텝부터 예시되어 있으며, 이때 상기 메모리 종류는 DCU를 액세스하기 전에 알려진다. 도 8의 방법의 한가지 중요한 측면은 DCU 실패가 추측적으로 수행된다는 점이다. 또 다른 중요한 측면은 진정한 기록 할당이 기록 백 메모리에 대한 기억 uOP의 DCU 실패를 만족시킬 수 있도록 수행된다는 점이다. 배열 이탈 마이크로프로세서를 참조하여 주로 설명하였지만, 본 발명의 기록 백 처리의 이점은 또한 배열 마이크로프로세서에서도 얻어진다.
기록 보호 메모리 처리
도 9에는 기록 보호 메모리에 대한 메모리 uOP를 처리하는 방법이 예시되어 있다. 초기에, 스텝(500)에서, uOP 로드 동작인지 기억 동작인지에 대한 결정이 행해진다. uOP가 로드이면 수행은 스텝(502)을 통해 스텝(504)측으로 진행되며, 여기서 DCU가 액세스된다. DCU 적중이 발생되면, 수행은 스텝(506)을 통해 스텝(508)으로 진행되며, 여기서 스텝(506)의 DCU 적중에 의해 나타내어진 캐시 라인으로부터 로드동작이 만족된다. DCU 실패가 발생되면, 수행은 스텝(504)으로부터 스텝(510)을 통해 스텝(512)으로 진행되며, 여기서 로드 uOP 에 좌우되는 데이타를 포함하고 있는 캐시 라인을 얻기 위해 라인 로드가 수행된다. 다음에, 스텝(514)에서, 스텝(512)에서 검색된 상기 캐시 라인으로부터 로드동작이 만족된다.
따라서, 기록 보호 메모리 종류를 나타내는 uOP에 대한 로드 처리 스텝은 기록 백 메모리 종류 또는 기록 쓰루 메모리 종류의 스텝과 유사하다. 기록 백 메모리 종류 또는 기록 쓰루 메모리 종류에서와 같이, 로드 동작은 추측적으로 수행된다. 데이타가 추측 uOP를 기초로 메모리로부터 안전하게 로드될 수 있는데, 이는 메모리 종류가 미리 알려져 있기 때문이다. 기록 쓰루 메모리 종류 및 기록백 메모리 종류의 경우와 마찬가지로, 바람직하게는 메모리 맵 I/O가 기록 보호 메모리로 나타내어지지 않는데, 이는 외부 메모리에 대한 기록 보호 처리 동안에 디스패치된 추측적 로드 동작이 달리 의도되지 않은 부작용을 일으키기 때문이다.
하지만, 기록 보호 메모리에의 기억 동작의 처리는 기록 백 및 기록 쓰루 메모리의 처리와는 실질적으로 다르다. 기록 보호 메모리 종류에 대한 기억 uOP의 경우에, 어떠한 DCU 액세스도 수행되지 않으며, 오히려 수행은 스텝(502)으로부터 스텝(516)으로 직접 진행되며, 여기서 상기 uOP가 추측적이면 추가적인 처리는 uOP가 종료될 때까지 지연된다. 상기 추측적 uOP가 종료되면 또는 상기 uOP가 추측적이지 않으면 부분 기록 동작이 스텝(518)에서 수행된다.
상기 DCU가 WP 메모리 위치에 대한 기억 uOP를 만족하도록 DCU가 액세스되지 않으므로, 메모리 위치로부터의 데이타를 포함하고 있는 상기 DCU내의 어떠한 캐시 라인도 상기 기억 uOP에 의해 영향을 받지 않는다. 환언하면, DCU는 기록 보호로 나타내어진 메모리 위치에 대한 기억 uOP이다. 그럼에도 불구하고, 부분 기록이 외부 메모리측으로 전송된다. 따라서 "ROM의 뒤에" 배치된 메모리 장치가 기록 동작에 의해 적절히 갱신될 수 있다. 따라서, 도 2를 참조하여 앞서 설명한 환경에서, 상기 출력장치는 ROM과 물리적 주소 공간을 공유하고, ROM의 물리적 주소 공간으로의 기록 동작은 상기 마이크로프로세서로부터 디스패치되며, 이에따라 ROM의 물리적 주소공간을 공유하고 있는 출력장치에 의해 기록 동작이 적절히 수행될 수 있다.
따라서, 기록 보호 메모리 종류를 제공함으로써 ROM 데이타는 캐시될 수 있고 또한 부분 기록을 적절히 수신할 수 있도록 ROM의 뒤에 출력 장치를 배치할 수도 있다. 또한, 여기에서 설명된 예시적 실시예는 추측 uOP를 발생하는 마이크로프로세서이지만, 본 발명의 이점은 배열 마이크로프로세서에서도 얻어진다. 특히 ROM 데이타가 캐시가능하게 제공되며, 여전히 메모리장치는 ROM의 뒤에 배치될 수 있다.
제한된 캐시가능 메모리 종류 처리
도 10에는 RC 메모리 위치를 나타내는 메모리 uOP를 처리하는 방법이 예시되어 있다. 앞서 지적한 바와같이, 상기 RC 메모리 종류는 DCU내에서 캐시되는, 하지만 캐시(119)와 같은 외부 보조 캐시내에서는 캐시되지 않는 메모리 위치를 나타내는데 사용된다. RC 메모리에 대한 메모리 uOP를 처리하는 스텝은 기록 백 처리의 스텝과 유사하므로, 그러한 처리 스텝에 대한 자세한 것은 다시 설명하지 않는다. 오히려, 관련된 차이점에 대해 상세히 설명한다.
도 10에는 일반적으로 도 8의 방법 스텝에 따르고 있는 방법 스텝(600-632)이 예시되어 있다. 하지만, 스텝(612)에서, DCU 로드 실패를 만족시키기위해 캐시 라인을 얻기 위한 라인 판독이 수행되고, 이 라인 판독은 보조 캐시를 바이패스시키며, 이때 외부 메모리에 대한 캐시라인의 기록 백은 기억 uOP를 기초로 한 DCU적중의 결과로서 발생되며, 상기 기록백은 또한 보조 캐시(119)를 바이패시킨다. 마찬가지로, 스텝(630)에서 라인 판독은 기억 uOP의 DCU실패에 응답하여 수행되며, 상기 라인 판독은 상기 보조 캐시를 바이패스시킨다.
따라서, 외부메모리가 로드 또는 기억을 위해 액세스되는 각각의 상황에서, 보조 캐시(119)는 바이패스된다.
RC 메모리에 대한 메모리 uOP의 처리의 다른 측면은 WP 메모리의 측면과 유사하다. 특히, 진정한 기록 할당 동작은 기억 실패에 응답하여 수행된다. 또한, 로드 실패가 추측적으로 수행된다. 필요한 경우, 상기 RC 메모리 처리 프로토콜이 정의될 수 있으며, 이에따라 DCU(132)가 바이패스되고 모든 데이타는 보조캐시(119)내에서만 캐시된다. 두 개 이상의 캐시 레벨을 이용하는 시스템의 경우에는 여러 캐시내에서 데이타가 캐시되는지 또는 그 방법간에 추가적인 구별이 행해질 수 있다. 별개의 데이타 캐시 유닛과 명령 캐시 유닛을 이용하는 시스템의 경우에도, 마찬가지로 유사한 구별이 행해질 수 있다.
캐시불가능 추측가능 기록 조합 메모리 종류 처리
도 11에는 USWC 메모리 종류에 대한 메모리 uOP를 처리하는 스텝들이 예시되어 있다. 앞서 지적한 바와같이, 상기 USWC 메모리 종류는 순차적인 기록 동작에 전형적으로 좌우되는 캐시 불가능 데이타를 포함하고 있는 프레임 버퍼 위치와 같은 메모리 위치에 이용된다. USWC 메모리의 다른 한가지 측면은 처리 배열이 무시되고 글로벌 관측이 필요없다는 점이다.
초기에, 스텝(700)에서, 상기 uOP가 로드인지 기록인지에 대한 결정이 행해진다. 상기 uOP가 기억이면, 수행은 스텝(702)을 통해 스텝(704)으로 진행되며, 여기서 다른 수행은 종료될 때까지 지연된다. 따라서, USWC 메모리 종류에 대한 기억동작의 수행은 추측적으로 수행되지 않지만, 종료될 때까지 언제나 지연될 수 있다. uOP가 더 이상 추측적이지 않게 된 후에, DCU(132)내에 제공된 기록 조합 버퍼가 액세스된다. 앞서 지적한 바와같이, 상기 기록 조합 버퍼는 캐시불가능 데이타를 저장하는데 이용되는 비블록 DCU의 필 버퍼이다. 상기 기록 조합 버퍼를 액세스하는 방법과 기록 조합 버퍼에 대한 자세한 것은 "캐시 라인 크기 기록 버퍼에의 캐시불가능 기록 데이타 조합 방법 및 장치"를 명칭으로 한 상기 참조된 특허 출원에 제공되어 있다. 함께 계류중인 출원이 여기에서 참조되므로, 기록 조합 버퍼의 구조 및 기능에 대한 상세한 것은 여기서 상세히 설명하지 않는다. 오히려, 기록 조합 버퍼에 관련된 처리 흐름 스텝에 대해서만 설명한다. 706에서, 기록 조합 버퍼들중 한 버퍼내에서 적중이 발생되면, 수행은 스텝(708)을 통해 스텝(710)측으로 진행되며, 여기서 스텝(708)에서 구한 기록 조합 버퍼 라인이 갱신된다. 이 갱신은 일반적으로 DCU 캐시 라인 갱신에 따라 수행된다.
스텝(712)에서, 일단 WC 버퍼라인이 풀상태이면, 상기 WC버퍼는 버스트 모드에서 또는 일련의 부분 기록 동작으로 회복되며, 이때 이들 각각은 버스트 모드 기록이 될 수 있다. 또한 상기 WC 버퍼 라인의 회복은 동기 펜스(fence) 또는 기타 다른 트리거 동작의 결과로서 상기 버퍼가 풀상태로 되기 전에 발생될 수 있다. 또한, WC 버퍼라인을 회복하는 방법에 대해 자세한 것은 함께 계류중인 상기 특허 출원에 제공되어 있다.
따라서, 스텝(704-712)에는 USWC 메모리 위치에 대한 개별적인 기록 동작을 처리하는 방법이 예시하고 있다. 지적한 바와같이, 상기 기억동작의 처리는 상기 uOP가 종료될 때까지 지연된 다음에, 일단 WC 버퍼가 풀상태가 되거나 동기 펜스, 인터럽트 또는 유사한 트리거가 발생된 후에, 버스트 모드이전에 WC 버퍼 라인내의 다른 기억과 병합된다. 단일의 WC 버퍼 라인내의 USWC 메모리에 대한 각종 기억 동작을 병합함으로써, 캐시 라인 기초 버스트 처리 기술이 캐시불가능 USWC 기록의 전송을 신속처리하는데 사용될 수 있다. 기록이 병합된 다음에, 함께 회복되므로, 프로세서 배열은 반드시 보존되지 않는다. 따라서, USWC 메모리 종류는 강한 프로세서 배열을 요구하는 메모리 위치에 사용되어서는 안된다. 프로세서 배열이 무시되므로 프로세서 배열을 보존하는데 도움을 필요로 하는 글로벌 관측은 설립될 필요가 없다. 따라서, 글로벌 관측을 가능하게 하기 위해 프레임 버퍼에 대한 부분 기록 동작들사이에 통상적으로 배치된 전송지연은 제공되지 않는다.
스텝(706)에서, 실패가 상기 WC 버퍼내에서 발생되었으면, 수행은 스텝(714)을 통해 스텝(716)으로 진행되며, 여기서 기억된 uOP에 의해 나타내어진 데이타는 빈 WC 버퍼 라인내에 저장된다. 어떠한 WC 버퍼라인도 비어있지 않으면, 하나가 회복된 다음에, 상기 기억 데이타는 새롭게 이용가능한 WC 버퍼 라인내에 배치된다. 718에서, 일단 상기 WC 버퍼라인이 풀상태이면 상기 라인은 버스트 모드를 사용하여 회복된다. 스텝(712)의 경우에서와 같이, WC 버퍼 라인은 예컨대 동기 펜스 또는 인터럽트의 발생시에 상기 버퍼가 풀상태로 되기 전에 회복될 수 있다. 이러한 상황에서, 상기 WC 버퍼 라인은 버스트 기록, 부분 기록 시퀀스, 이들 두 기록의 조합을 사용하여 회복된다. 또한, 스텝(712)의 경우에서와 같이, 스텝(718)은 프로세서 배열을 무시하고 글로벌 관측을 무시하는 방법으로 수행된다. 또한, 멀티프로세서 시스템내에서는, DCU 캐시 라인이 필요로 할 수 있는 다른 프로세서의 기록 조합 버퍼 라인을 프로세서가 배회할 필요는 없다. 이러한 배회는 때때로 프로세서 배열을 보장하기 위해 캐시가능 데이타에 이용된다. 하지만, 프로세서 배열이 USWC 메모리에 대해 무시되므로, 그러한 배회는 필요하지 않다.
상기 USWC 메모리 종류가 프레임 버퍼 메모리와 같은, 기록동작에 좌우되는 메모리에 주로 이용되더라도, 로드 동작은 또한 USWC 메모리에 대해 발생할 수 있다. 로드 동작의 경우, 수행은 스탭(702)으로부터 스텝(720)으로 진행되며, 여기서 로드를 만족시키기 위해 기록 조합 버퍼가 액세스된다. 적중이 WC 버퍼에 대해 발생하면, 수행은 스탭(722)으로부터 스텝(724)으로 진행되며, 여기서 로드는 WC 버퍼로부터 만족되게 된다. 실패가 WC 버퍼내에서 발생되면 수행은 스텝(720)으로부터 스텝(726)을 통해 스텝(728)측으로 진행되며, 여기서 로드될 데이타를 검색하기 위해 부분 판독이 수행된다.
앞서 설명한 다수의 메모리 종류의 경우와 마찬가지로, 로드 실패는 추측적으로 수행된다. 이는 메모리 맵 I/O가 USWC 메모리로서 인식되는 한 허용될 수 있다. 메모리 맵 I/O가 USWC 메모리로서 인식된 구현예에서, USWC 메모리로부터의 로드는 잘못 예측된 분기의 다음에 있는 추측적 uOP의 결과로서 부작용을 발생하지 않는 것을 보장하기 위해 uOP가 종료될 때까지 지연된다. 필요한 경우, 로드 uOP에 대한 기록 조합 버퍼에 대한 액세스는 상기 로드 uOP가 종료될 때까지 지연될 수 있다.
지적한 바와같이, 인터럽트 동작은 또한 WC 버퍼 라인의 회복을 트리커시킨다. 바람직하게는, 적어도 하나의 인터럽트가 삼십분의 일초마다 발생되며, 이에따라 상기 WC 버퍼 라인은 적어도 종래 CRT 디스플레이에서 데이타가 디스플레이되는 것만큼 자주, 즉 초당 30 프레임마다 회복되게 된다. 이러한 인터럽트를 제공함으로써 그래픽 기록 동작의 즉각적인 출력이 보장된다.
지금까지 주로 배열 이탈 마이크로프로세서에 대해 설명하였지만, USWC 메모리 종류에 대한 이점은 배열 마이크로프로세서에서도 마찬가지로 얻어질 수 있다. 배열 마이크로프로세서의 경우, USWC 기록 동작의 병합은 종료될 때까지 지연될 필요가 없다. 각종 구현예에서, 기록 조합 버퍼와 조합된 USWC 메모리 종류를 제공하면, 버스 트래픽이 실질적으로 감소된다. 개별적인 부분 기록으로서 전송되게 되는 개별적인 그래픽 기록 동작은 캐시 라인 크기 유닛내로 효율적으로 병합된 다음에 버스트 모드에서 전송된다. 마이크로프로세서의 상태에서, 그래픽 디스플레이 속도는 중요하며, 그래픽 버스 트래픽의 감소는 큰 이점이 된다.
캐시불가능 종류 메모리 처리
도 12에는 UC 메모리에 대한 uOP를 처리하는 방법이 예시되어 있다. 앞서 지적한 바와같이, UC 메모리는 캐시불가능 메모리로서, DCU 캐시 라인 또는 기록 조합 버퍼 라인내에서는 캐시되지 않는다. UC 메모리는 예컨대 메모리 맵 I/O를 포함하고 있다. UC메모리는 추측적 로드 또는 추측적 기록이 행해지지 않는다.
초기에, 스텝(800)에서, uOP의 수행은 종료시까지 지연된다. 종료 후, 수행은 스텝(802)으로 진행되며, 여기서 상기 uOP가 로드인지 기억인지에 대한 결정이 행해진다. 상기 uOP가 기억이면, 수행은 스텝(804)을 통해 스텝(806)으로 진행되며, 여기서 외부 메모리측으로 부분 기록이 전송된다. 스텝(806)에서, DCU는 바이패스되는데, 이는 데이타가 캐시불가능한 것으로 알려져 있기 때문이다.
스텝(806)의 부분 기록은 기억 uOP에 응답하여 외부 메모리를 갱신하기에 충분하다. UC 메모리 종류의 메모리가 캐시불가능하므로, DCU내에 저장되어서는 안되지만, 캐시 라인은 UC 데이타를 포함하고 있는 DCU내에 존재할 수 있다. 이는 물리적 주소와 리니어 주소간의 구별로서, 특히 두 리니어 주소가 공통적인 물리적 주소에 대응할 수 있다는 가능성의 결과로서 발생될 수 있다.
캐시라인은 uOP 기억 동작에 의해 갱신된 메모리 위치로부터의 데이타를 포함하고 있으므로, 상기 DCU는 그러한 캐시 라인을 검출하기 위해 스스로 배회하고 필요한 경우에는 캐시라인을 무효화시킨다. 특히, 스텝(808)에서, 사기 DCU(및 보조캐시)는 상기 저장된 uOP에 의해 나타내어진 물리적 주소를 포함하고 있는 캐시라인을 나타내기 위해 자신의 캐시라인을 스스로 배회한다. 이러한 자기 배회가 변경된 캐시라인(즉, "M"상태의 캐시라인)을 나타내면, 상기 캐시라인은 스텝(810)에서 무효화된다. 상기 자기 배회가 공유 상태에 있는 캐시라인을 검출하면, 상기 캐시라인은 외부메모리측으로 다시 기록된 다음에, 무효화된다. 따라서, 기억 uOP에 좌우되는 캐시불가능 데이타를 포함하고 있는 어떤 캐시 라인이 무효화된다.
스텝(804)에서, uOP가 로드이면 수행은 스텝(814)으로 진행되어, 로드 uOP를 만족시키기 위해 외부메모리측으로 부분 판독이 전송된다. 또한, DCU가 바이패스되는데, 이는 데이타가 캐시불가능인 것으로 알려져 있기 때문이다. 하지만, uOP 기억 동작의 경우와 마찬가지로, DCU가 메모리 uOP에 대응하는 캐시불가능 데이타를 포함하고 있는 상황이 존재하게 된다. 따라서, 자기 배회 스텝(816,818,820)이 수행된다. 스텝(816,820)은 스텝(808-812)과 유사하다.
따라서, 캐시불가능한 것으로 알려져 있는 데이타의 경우에, 종료될 때까지 수행이 지연된 다음에, 부분 판독 또는 기록이 외부 메모리측으로 디스패치된다. 외부로드는 종료시까지 지연되므로, 어떠한 바람직하지 않은 부작용도 추측 로드 동작으로부터 얻어질 수 있는 메모리 맵 I/O로부터의 데이타 로드를 유발하지 않게 된다.
따라서, 도 7 내지 도 12에는 6가지의 메모리 종류 각각의 메모리에 대한 메모리 uOP를 처리하는 특정 방법에 대해 예시되어 있다. 다음 섹션에서는 MOB(142)가 로드 및 기억 uOP를 할당하고 재배열하는 방법에 대해 설명한다.
메모리 배열 버퍼내의 메모리 처리
배열 이탈 마이크로프로세서를 설계할 때, 메모리 uOP가 재배열되는 방법에 대한 선택이 행해진다. uOP의 원래 또는 고유의 배열이 보존되는 정도를 일반적으로 "강한 배열" 또는 "약한 배열"이라고 한다. 예컨대, 강한 배열시스템에서, 어떠한 메모리 uOP도 다른 메모리 uOP를 패스시킬 수 있다. 따라서, 강한 배열의 마이크로프로세서는 배열 마이크로프로세서가 된다. 본 발명의 마이크로프로세서는 약한 배열을 채용하고 있으며, 이때 특정 uOP가 다른 uOP를 패스시킬 수 있고 기타 다른 uOP는 패스시킬 수 없다.
일반적으로, 본 발명은 메모리 배열 기술을 채용하고 있으며, 이때 로드는 다른 로드를 패스시킬 수 있지만, 로드는 기억을 패스시킬수 없으며, 기억은 다른 기억을 패스시킬 수 없다. 보다 정확하게는, UC 메모리 종류는 다른 로드를 패스시킬 수 없다는 점을 제외하고는 로드는 다른 로드를 패스시킬 수 없다. 앞서 지적한 바와같이, 모든 잠재적인 메모리 맵 I/O 위치는 UC메모리로 나타내어진다. 따라서, 로드는 비 UC 메모리측으로 로드를 패스시킬 수 있지만 UC 메모리측으로 로드를 패스시킬 수는 없다. 로드는 또한 미지의 메모리 종류측으로 로드를 패시킬 수 없는데, 이는 상기 미지의 메모리 종류가 UC메모리일 수 있기 때문이다.
도 13에는 메모리 명령의 재배열을 수월하게 하기 위한 MOB(142)가 예시되어 있으며, 이 MOB(142)에는 로드 버퍼(1000)와 기억 버퍼(1002)가 제공되어 있다. 스텝(208)에서, (도 6) 새롭게 수신된 uOP는 로드 버퍼(1000) 또는 기억 버퍼(1002)내에 uOP를 배치함으로써 MOB내에 할당된다. 앞서 지적한 바와같이, uOP가 로드 위치 또는 기억 위치를 제공하는지에 대한 결정은 uOP내의 OPCODE 또는 기타 다른 값으로부터 결정된다. 상기 OPCODE도 또한 상기 uOP의 순차적인 원래 배열의 지시를 제공한다. 이는 상기 uOP의 상대적인 수명의 지시를 제공하는 값을 PDST 필드(도 5)에 저장함으로써 달성된다. 따라서, 하나의 uOP가 다른 uOP보다 오래되었는지의 여부에 대한 결정이 행해질 수 있다. 로드 버퍼(1000) 또는 기억 버퍼(1002)내의 할당후에, MOB는 앞서 언급한 배열 제한에 따라 상기 uOP를 선택적으로 재배열한다. MOB가 uOP를 재배열하는 것에 대한 자세한 것은 MOB에 대해 설명되어 있는 상기 상호 참조 특허 출원에 제공되어 있다. uOP를 재배열하는 것이외에, 상기 MOB는 이전의 조건이 해결되기 전에 실행될 수 없는 어떤 uOP의 실행을 차단시킨다. 예컨대, 미지의 메모리 종류에 대한 uOP는 상기 메모리 종류가 알려질 때까지 또는 상기 uOP가 종료될 때까지 수행되어서는 안되는데, 이는 상기 uOP가 메모리 맵 I/O를 주소지정할 수 있기 때문이다. 따라서, 그러한 uOP는 종료될 때까지 또는 상기 메모리 종류가 비 UC 메모리인 것으로 결정될 때까지 차단되게 된다.
본 발명의 한가지 측면은 상기 MOB가 다른 로드에 대해 비 UC 메모리 종류인 것으로 알려진 로드를 재배열한다. 하지만, 상기 MOB는 미지의 메모리 종류 또는 UC 메모리 종류의 다른 로드에 대해 미지의 메모리 종류의 로드 또는 UC 메모리 종류에 대한 로드를 재배열시키지 않는다. 이 "약하게 배열된" 메모리 배열 프로토콜은 대부분의 로드가 다른 로드를 패스시킬 수 있도록, 반면에 이전의 로드를 패스시키는 메모리 맵 I/O에 대한 로드의 결과로 어떤 바람직하지 않은 부작용이 발생하지 않도록 제공되어 있다.
본 발명의 메모리 재배열 프로토콜의 또 다른 측면은 입력 및 출력 동작 재배열될 수 없다는 점이다. 환언하면, 로드 또는 기억은 어떠한 입력 동작 또는 출력동작의 전에 미리 행해질 수 없다. 입력 동작과 출력동작은 기억 동작과 유사한데, 이는 기억동작이 재배열되지 않기 때문이다. 입력 동작과 출력동작이 재배열되지 않는 것을 보장하기 위해, 입력 및 출력 uOP는 둘다 기억 버퍼(1002)내에 할당된다. 따라서, 실제로 입력동작이 로드동작에 해당하더라도, MOB는 입력 uOP를 기억 버퍼에 배치한 다음에, 메모리 배열 프로토콜을 위해 기억 uOP인 것처럼 상기 입력 uOP를 처리함으로써 기억동작인 것처럼 상기 입력동작을 처리한다.
도 14에는 MOB에서 I/O 동작과 메모리 동작이 처리되는 방법에 대해 예시되어 있다. 초기에, 스텝(900)에서, MOB(142)에 의해 수신된 uOP가 로드/기억 동작 또는 입력/출력 동작에 해당하는지에 대한 결정이 행해진다. uOP의 OPCODE로부터 결정이 행해진다. 모든 입/출력 동작은 캐시불가능동작이며, 따라서 UC 메모리 종류를 수행한다. 따라서, 입력/출력 동작의 경우에, TLB 액세스 또는 PMH 페이지 테이블 검토는 메모리 종류를 결정하는데 수행되지 않는다. 오히려, 단지 상기 uOP의 OPCODE의 검토로부터 메모리 종류가 결정된다.
상기 uOP가 입력 동작 또는 출력 동작이면, 수행은 스텝(902)으로 진행되며, 여기서 MOB(142)은 MOB의 기억 버퍼에 입력 동작 또는 출력 동작을 할당한다. 따라서, 입력 동작이 일반적으로 로드 동작으로서 특징지워지더라도 MOB(142)은 실제로 상기 로드버퍼내에 보다는 MOB 버퍼내의 기억 버퍼내에 입력 동작을 할당한다. 이후, 스텝(904)에서, MOB(142)는 입/출력 uOP가 종료될 때까지 입력 uOP 또는 출력 uOP와 다음의 uOP의 수행을 막도록 동작한다. 종료 후, 스텝(906)에서, 입력 동작 또는 출력 동작은 도 12의 UC 메모리 종류 처리에 따라 처리를 위해 디스패치된다. 스텝(904,906)은 또한 여기에서 "글로벌 펜싱" 동작이라고 한다.
스텝(900)에서, 상기 uOP가 로도 동작 또는 기억동작인 것으로 결정되면, 수행은 스텝(908)으로 진행되며, 여기서 상기 uOP가 MOB(142)내에 할당된다. 상기 uOP가 로드이면, 상기 uOP는 상기 로드 버퍼내에 할당된다. 상기 uOP가 기억이면, 상기 uOP는 상기 기억 버퍼내에 할당된다. 상기 uOP가 입/출력 동작이 아니고 로드 또는 기억이므로, 상기 메모리 종류는 상기 OPCODE로부터 단독으로 결정될 수 없다. 따라서, 다른 로드 또는 기억을 참조하여 로드 또는 기억의 최적의 배열은 상기 메모리 종류가 결정될 때까지 수행될 수 없다. 앞서 지적한 바와같이, 상기 마이크로프로세서(102)는 추측 처리 프로토콜내에서, 로드 동작은 다른 로드동작을 패스시킬 수 없다. 하지만, 로드 동작은 기억동작을 패스시킬 수 없다. 또한, UC 메모리에 대한 로드 동작은 비 UC 메모리에 대한 로드를 패스시킬 수 없다. 따라서, 상기 메모리 종류가 알려졌는지에 따라 그리고 상기 메모리 종류가 UC인지에 따라 다른 로드와 관련하여 로드가 재배열된다. 특히, 스텝(910)에서, 비UC 로드는 UC로드에 대해 그리고 미지의 메모리 종류에 대해 재배열된다. 스텝(912)에서, 캐시불가능 로드보다 오래되지 않은 모든 로드는 차단된다. 스텝(914)에서, 로드 또는 기억의 실제 수행은 상기 로드 uOP 또는 기억 uOP의 메모리 종류가 결정될 때까지 차단된다. 다음에, 916에서, 일단 로드 uOP 또는 기억 uOP의 메모리 종류가 결정되면, 상기 uOP는 DCU측으로, 기록 조합 버퍼측으로 또는 메모리 종류에 따라 직접 외부 메모리측으로 디스패치된다.
스텝(908-916)은 여기에서 "국부 시리얼라이징"이라고 하며, 이때 비 UC 형 로드는 다른 로드를 패스시킬 수 없지만 UC 로드는 재배열되지 않는다. 로컬 시리얼라이징은 UC 메모리 위치에 대한 로드가 다른 로드를 패스시킬 수 없으면 발생되게 되는 부작용을 방지하는데 이용된다.
마이크로프로세서내의 메모리 uOP를 처리하는 방법 및 장치에 대해 설명이 되어 있으며, 이때 다른 것중에서도 메모리 종류값은 메모리 위치의 메모리 종류가 미리 알려질 수 있도록 하기 위해 마이크로프로세서내에 정확하게 저장되어 있다. 여기에서 설명한 예시적 실시예에서, 상기 마이크로프로세서는 추측 메모리 uOP를 디스패치할 수 있는 배열 이탈 마이크로프로세서이다. 하지만, 본 발명의 원리는 배열 마이크로프로세서를 포함하고 있는 각종 마이크로프로세서 시스템에 이용될 수 있다. 본 발명의 마이크로프로세서는 종래 기술에 따라 구성 및 제조될 수 있고 그리고 예컨대 실리콘 또는 갈륨비소 기술을 수용하도록 구현될 수도 있다. 본 발명은 인텔 구조를 가지고 있는 마이크로프로세서에 유리하게 이용된다. 하지만, 본 발명의 원리는 또한 기타 다른 일반적인 마이크로프로세서 구조에 그리고 마찬가지로 기타 다른 컴퓨터 프로세서에도 적용될 수 있다. 따라서, 여기서 설명된 예시적 실시예들은 단지 본 발명을 예시한 것이며, 본 발명의 범위를 한정하는 것으로 간주되어서는 안된다.

Claims (18)

  1. 외부 메모리;
    제1캐시 메모리;
    상기 외부 메모리에 접속되어 있는 적어도 하나의 마이크로프로세서를 구비하고 있고,
    상기 적어도 하나의 마이크로프로세서는 상기 외부 메모리의 메모리 위치를 액세스하는데 적합한 메모리 액세스 프로토콜을 나타내는 메모리 종류값을 저장하는 레지스터, 및 이 레지스터로부터 수신된 상기 메모리 종류값을 캐시하는 제2캐시 메모리를 포함하고 있고, 상기 메모리 종류값은 상기 메모리 위치를 액세스하기 위해 상기 적어도 하나의 마이크로프로세서에 의해 사용될, 복수의 메모리 액세스 프로토콜로부터 특정 메모리 액세스 프로토콜을 지시하며;
    상기 적어도 하나의 마이크로프로세서는 상기 제2캐시 메모리를 액세스함으로써 상기 메모리 위치에 대한 메모리 액세스 프로토콜을 결정할 수 있도록 동작하고, 그리고 또한 상기 메모리 종류값에 의해 나타내어진 상기 메모리 액세스 프로토콜에 따라 상기 메모리 위치에 저장된 정보를 액세스할 수 있도록 동작하는 것을 특징으로 하는 컴퓨터 시스템.
  2. 제 1 항에 있어서, 상기 메모리 종류값은 기록 백 캐시 메모리 액세스 프로토콜을 나타내는 것을 특징으로 하는 컴퓨터 시스템.
  3. 제 1 항에 있어서, 상기 메모리 종류값은 기록 쓰루 캐시 메모리 액세스 프로토콜을 나타내는 것을 특징으로 하는 컴퓨터 시스템.
  4. 제 1 항에 있어서, 상기 메모리 종류값은 기록 보호 캐시 메모리 액세스 프로토콜을 나타내는 것을 특징으로 하는 컴퓨터 시스템.
  5. 제 1 항에 있어서, 상기 메모리 종류값은 캐시불가능 메모리 액세스 프로토콜을 나타내는 것을 특징으로 하는 컴퓨터 시스템.
  6. 제 5 항에 있어서, 캐시불가능 메모리 액세스 프로토콜을 나타내는 상기 메모리 종류값에 대응하는 외부 메모리는 메모리 맵 I/O 메모리 위치인 것을 특징으로 하는 컴퓨터 시스템.
  7. 제 1 항에 있어서, 상기 메모리 종류값은 기록 조합 메모리 액세스 프로토콜을 나타내는 것을 특징으로 하는 컴퓨터 시스템.
  8. 제 1 항에 있어서, 상기 마이크로프로세서는 추측 메모리 액세스 명령을 발생할 수 있는 것을 특징으로 하는 컴퓨터 시스템.
  9. 제 8 항에 있어서, 상기 메모리 종류값은 상기 메모리 위치를 액세스하기 위한 메모리 처리 명령이 추측가능한지 아니면 추측불가능한지를 나타내는 것을 특징으로 하는 컴퓨터 시스템.
  10. 외부 메모리;
    제1 및 제2캐시를 포함하고 있는 캐시 메모리;
    상기 외부 메모리에 접속되어 있는 적어도 하나의 마이크로프로세서로서, 복수의 메모리 액세스 프로토콜중 하나의 메모리 액세스 프로토콜에 따라 상기 외부메모리의 메모리 위치에 저장된 정보를 액세스하는 적어도 하나의 마이크로프로세서를 구비하고 있고,
    상기 적어도 하나의 마이크로프로세서는 메모리 종류값을 저장하는 레지스터를 포함하고 있고, 상기 메모리 종류값은 상기 메모리 위치를 액세스하기 위해 상기 적어도 하나의 마이크로프로세서에 의해 사용될, 상기 복수의 메모리 액세스 프로토콜로부터 특정 메모리 액세스 프로토콜을 지시하며;
    상기 캐시 메모리는 제1 및 제2캐시를 포함하고 있고, 상기 메모리 종류값은 제한된 캐시가능 메모리 액세스 프로토콜을 나타내며, 상기 메모리 위치로부터 액세스된 정보는 상기 제1캐시에서만 캐시될 수 있는 것을 특징으로 하는 컴퓨터 시스템.
  11. 마이크로프로세서와 외부 메모리를가지고 있는 컴퓨터 시스템으로서, 상기 마이크로프로세서는 상기 외부 메모리로부터의 정보를 캐시하는 제1캐시, 상기 외부 메모리의 위치에 대응하는 메모리 종류값을 저장하는 레지스터, 및 상기 메모리 종류값을 캐시하는 제2캐시를 포함하고 있는 컴퓨터 시스템에서, 상기 외부 메모리내의 메모리 위치를 액세스하는 방법에 있어서,
    상기 메모리 위치를 액세스하는데 적합한 메모리 액세스 프로토콜을 나타내는 메모리 종류값을 상기 레지스터내에 저장하는 단계;
    상기 제2캐시측으로 상기 메모리 종류값을 전송하는 단계;
    상기 메모리 위치에의 메모리 액세스를 특정하는 명령을 발생하는 단계;
    상기 제2캐시에 저장된 메모리 종류값을 액세스함으로써 상기 메모리 위치에 대응하는 메모리 엑세스 프로토콜을 결정하는 단계; 및
    상기 메모리 종류값에 의해 나타내어진 메모리 엑세스 프로토콜에 따라 상기 메모리 위치를 액세스하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
  12. 제 11 항에 있어서, 상기 메모리 종류값은 기록 쓰루 캐시 메모리 액세스 프로토콜을 나타내며, 메모리 위치를 액세스하는 상기 단계는 상기 명령이 로드인지 기억인지를 결정하는 단계;
    상기 명령이 로드이면, 캐시 적중이 발생되는지 캐시 실패가 발생되는지를 결정하기 위해 상기 제1캐시를 액세스하여, 캐시 적중이 발생되면 상기 제1캐시로 부터의 상기 로드를 만족시키고, 캐시 실패가 발생되면 상기 로드를 만족시키기 위해 상기 외부 메모리로부터의 라인 판독을 수행하는 단계;
    상기 명령이 기억이면, 캐시 적중이 발생되는지 캐시 실패가 발생되는지를 결정하기 위해 상기 제1캐시를 액세스하여, 캐시 적중이 발생되면 상기 명령에 의해 제공된 정보로 상기 캐시 적중을 일으키는 상기 제1캐시내의 캐시 라인을 갱신하고, 캐시 실패가 발생되면 상기 명령에 의해 제공된 정보를 외부 메모리에 기록하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
  13. 제 11 항에 있어서, 상기 메모리 종류값은 기록 백 캐시 메모리 액세스 프로토콜을 나타내며, 메모리 위치를 액세스하는 상기 단계는 상기 명령이 로드인지 기억인지를 결정하는 단계;
    상기 명령이 로드이면, 캐시 적중이 발생되는지 캐시 실패가 발생되는지를 결정하기 위해 상기 제1캐시를 액세스하여, 캐시 적중이 발생되면 상기 제1캐시로부터의 상기 로드를 만족시키고, 캐시 실패가 발생되면 상기 로드를 만족시키기 위해 상기 외부 메모리로부터의 라인 판독을 수행하는 단계; 및
    상기 명령이 기억이면, 캐시 적중이 발생되는지 캐시 실패가 발생되는지를 결정하기 위해 상기 제1캐시를 액세스하여, 캐시 적중이 발생되면 상기 명령에 의해 제공된 정보로 상기 캐시 적중을 일으키는 상기 제1캐시내의 캐시 라인을 갱신하고, 캐시 실패가 발생되면 기록 할당 동작을 수행하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
  14. 제 11 항에 있어서, 상기 메모리 종류값은 기록 보호 캐시 메모리 액세스 프로토콜을 나타내며, 메모리 위치를 액세스하는 상기 단계는 상기 명령이 로드인지 기억인지를 결정하는 단계;
    상기 명령이 로드이면, 캐시 적중이 발생되는지 캐시 실패가 발생되는지를 결정하기위해 상기 제1캐시를 액세스하여, 캐시 적중이 발생되면 상기 제1캐시로 부터의 상기 로드를 만족시키고, 캐시 실패가 발생되면 상기 로드를 만족시키기 위해 상기 외부 메모리로부터의 라인 판독을 수행하는 단계; 및
    상기 명령이 기억이면, 상기 명령에 의해 제공된 정보를 외부 메모리에 기록하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
  15. 제 11 항에 있어서, 상기 마이크로프로세서는 기록 조합 버퍼를 포함하고 있고, 상기 메모리 종류값은 기록 조합 메모리 액세스 프로토콜을 나타내며, 메모리 위치를 액세스하는 상기 단계는 상기 명령이 로드인지 기억인지를 결정하는 단계;
    상기 명령이 로드이면, 적중이 발생되는지 실패가 발생되는지를 결정하기 위해 상기 기록 조합 버퍼를 액세스하여, 적중이 발생되면 상기 기록 조합 버퍼로부터의 로드를 만족시키고, 실패가 발생되면 사기 로드를 만족시키기 위해 상기 외부메모리로부터의 부분 판독을 수행하는 단계; 및
    상기 명령이 기억이면, 적중이 발생되는지 실패가 발생되는지를 결정하기 위해 상기 기록 조합 버퍼를 액세스하여, 적중이 발생되면 상기 명령에 의해 제공된 정보로 상기 적중을 일으키는 상기 기록 조합 버퍼내의 버퍼 라인을 갱신하고, 실패가 발생되면 상기 기록 조합 버퍼내의 빈 버퍼 라인내에, 상기 명령에 의해 제공된 정보를 기록하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
  16. 제 11 항에 있어서, 상기 메모리 종류값은 캐시불가능 메모리 액세스 프로토콜을 나타내며, 메모리 위치를 액세스하는 상기 단계는 상기 명령이 로드인지 기억인지를 결정하는 단계;
    상기 명령이 로드이면, 상기 제1캐시를 바이패스하면서 외부메모리측으로 부분 판독 동작을 전송하는 단계; 및
    상기 명령이 기억이면, 상기 제1캐시를 바이패스하면서 외부 메모리측으로 부분 기록 동작을 전송하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
  17. 마이크로프로세서, 외부 메모리, 이 외부 메모리로부터의 정보를 캐시하는 제1캐시 및 제2캐시를 가지고 있는 컴퓨터 시스템으로서, 상기 마이크로프로세서는 상기 외부 메모리의 위치에 대응하는 메모리 종류값을 저장하는 레지스터를 가지고 있는 컴퓨터 시스템에서, 상기 외부 메모리내의 메모리 위치를 액세스하는 방법에 있어서,
    메모리 위치를 액세스하기 위해 제한된 캐시가능 메모리 액세스 프로토콜을 나타내는 메모리 종류값을 상기 레지스터에 저장하는 단계;
    상기 메모리 위치에의 메모리 액세스를 특정하는 명령을 발생하는 단계;
    상기 메모리 위치에 대응하는 메모리 액세스 프로토콜을 결정하는 단계;
    상기 명령이 로드인지 기억인지를 결정하는 단계;
    상기 명령이 로드이면, 캐시 적중이 발생되는지 캐시 실패가 발생되는지를 결정하기 위해 상기 제1캐시를 액세스하여, 캐시 적중이 발생되면 상기 제1캐시로 부터의 상기 로드를 만족시키고, 캐시 실패가 발생되면 상기 로드를 만족시키기 위해 상기 제2캐시를 바이패스하면서 상기 외부 메모리로부터의 직접적인 라인 판독을 수행하는 단계; 및
    상기 명령이 기억이면, 캐시 적중이 발생되는지 캐시 실패가 발생되는지를 결정하기 위해 상기 제1캐시를 액세스하여, 캐시 적중이 발생되면 상기 명령에 의해 제공된 정보로 상기 캐시 적중을 일으키는 상기 제1캐시내의 캐시 라인을 갱신하고, 캐시 실패가 발생되면 상기 제2캐시를 바이패스하면서 상기 외부 메모리에 대한 직접적인 기록 할당 동작을 수행하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
  18. 외부 메모리를 가지고 있는 컴퓨터 시스템용 마이크로프로세서에 있어서,
    상기 외부 메모리내의 메모리 위치를 액세스하는데 적합한 메모리 액세스 프로토콜을 나타내는 메모리 종류값을 저장하는 메모리 종류 범위 레지스터;
    상기 메모리 종류 범위 레지스터로부터 상기 메모리 종류값을 수신하고 이 메모리 종류값을 캐시하는 캐시 메모리;
    상기 외부 메모리내의 메모리 위치를 특정하는 명령을 발생하는 명령 디코더;
    상기 명령 디코더에 접속되어 있는 회로로서, 상기 캐시 메모리를 액세스함으로써 상기 명령에 의해 특정된 메모리 위치에 대응하는 메모리 종류값을 결정하는 회로; 및
    상기 메모리 종류값에 의해 나타내어진 메모리 처리 프로토콜에 따라, 상기 메모리 종류값이 결정된 후에, 상기 메모리 위치를 액세스하는 회로를 구비하고 있는 것을 특징으로 하는 마이크로프로세서.
KR1019970702101A 1994-09-30 1995-08-24 마이크로프로세서내의 메모리 종류 정보 처리 방법 및 장치 KR100264401B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US31655094A 1994-09-30 1994-09-30
US8/316,550 1994-09-30
US08/316,550 1994-09-30
PCT/US1995/010788 WO1996010789A1 (en) 1994-09-30 1995-08-24 Method and apparatus for processing memory-type information within a microprocessor

Publications (2)

Publication Number Publication Date
KR970706538A KR970706538A (ko) 1997-11-03
KR100264401B1 true KR100264401B1 (ko) 2000-08-16

Family

ID=23229519

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970702101A KR100264401B1 (ko) 1994-09-30 1995-08-24 마이크로프로세서내의 메모리 종류 정보 처리 방법 및 장치

Country Status (7)

Country Link
US (1) US5751996A (ko)
EP (1) EP0783735B1 (ko)
KR (1) KR100264401B1 (ko)
AU (1) AU3494995A (ko)
MX (1) MX9702265A (ko)
WO (1) WO1996010789A1 (ko)
ZA (1) ZA954460B (ko)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819079A (en) * 1995-09-11 1998-10-06 Intel Corporation Instruction fetch on demand for uncacheable memory which avoids memory mapped I/O side effects in a processor with speculative instruction fetch
US5752265A (en) * 1996-06-13 1998-05-12 Compaq Computer Corporation Memory accessing in a multi-processor system using snooping
US5915262A (en) * 1996-07-22 1999-06-22 Advanced Micro Devices, Inc. Cache system and method using tagged cache lines for matching cache strategy to I/O application
US6189074B1 (en) 1997-03-19 2001-02-13 Advanced Micro Devices, Inc. Mechanism for storing system level attributes in a translation lookaside buffer
US5958045A (en) * 1997-04-02 1999-09-28 Advanced Micro Devices, Inc. Start of access instruction configured to indicate an access mode for fetching memory operands in a microprocessor
US5895484A (en) * 1997-04-14 1999-04-20 International Business Machines Corporation Method and system for speculatively accessing cache memory data within a multiprocessor data-processing system using a cache controller
US5924118A (en) * 1997-04-14 1999-07-13 International Business Machines Corporation Method and system for speculatively sourcing cache memory data prior to upstream cache invalidation within a multiprocessor data-processing system
US6301647B1 (en) * 1997-12-17 2001-10-09 Via-Cyrix, Inc. Real mode translation look-aside buffer and method of operation
US6351797B1 (en) * 1997-12-17 2002-02-26 Via-Cyrix, Inc. Translation look-aside buffer for storing region configuration bits and method of operation
US6185661B1 (en) * 1998-01-02 2001-02-06 Emc Corporation Worm magnetic storage device
US6038617A (en) * 1998-02-23 2000-03-14 National Instruments Corporation Auto configuration of a serial ROM by sensing an output of the serial ROM after transmission of a read instruction and an x-bit address to it's input
US6073210A (en) * 1998-03-31 2000-06-06 Intel Corporation Synchronization of weakly ordered write combining operations using a fencing mechanism
US6356270B2 (en) * 1998-03-31 2002-03-12 Intel Corporation Efficient utilization of write-combining buffers
US6643745B1 (en) * 1998-03-31 2003-11-04 Intel Corporation Method and apparatus for prefetching data into cache
US6433787B1 (en) 1998-11-23 2002-08-13 Nicholas J. N. Murphy Dynamic write-order organizer
JP4235299B2 (ja) * 1998-12-22 2009-03-11 キヤノン株式会社 カラー画像形成装置の製造方法
US6389527B1 (en) * 1999-02-08 2002-05-14 Kabushiki Kaisha Toshiba Microprocessor allowing simultaneous instruction execution and DMA transfer
US6321303B1 (en) 1999-03-18 2001-11-20 International Business Machines Corporation Dynamically modifying queued transactions in a cache memory system
US6269427B1 (en) 1999-03-18 2001-07-31 International Business Machines Corporation Multiple load miss handling in a cache memory system
US6311254B1 (en) 1999-03-18 2001-10-30 International Business Machines Corporation Multiple store miss handling in a cache memory memory system
US6366984B1 (en) * 1999-05-11 2002-04-02 Intel Corporation Write combining buffer that supports snoop request
US6446189B1 (en) 1999-06-01 2002-09-03 Advanced Micro Devices, Inc. Computer system including a novel address translation mechanism
DE19946716A1 (de) * 1999-09-29 2001-04-12 Infineon Technologies Ag Verfahren zum Betrieb eines Prozessorbusses
US6678810B1 (en) 1999-12-30 2004-01-13 Intel Corporation MFENCE and LFENCE micro-architectural implementation method and system
US6438673B1 (en) * 1999-12-30 2002-08-20 Intel Corporation Correlated address prediction
US6631452B1 (en) * 2000-04-28 2003-10-07 Idea Corporation Register stack engine having speculative load/store modes
US6510508B1 (en) 2000-06-15 2003-01-21 Advanced Micro Devices, Inc. Translation lookaside buffer flush filter
US6636939B1 (en) * 2000-06-29 2003-10-21 Intel Corporation Method and apparatus for processor bypass path to system memory
US6564305B1 (en) * 2000-09-20 2003-05-13 Hewlett-Packard Development Company Lp Compressing memory management in a device
US7287147B1 (en) 2000-12-29 2007-10-23 Mips Technologies, Inc. Configurable co-processor interface
US7237090B1 (en) 2000-12-29 2007-06-26 Mips Technologies, Inc. Configurable out-of-order data transfer in a coprocessor interface
US7168066B1 (en) * 2001-04-30 2007-01-23 Mips Technologies, Inc. Tracing out-of order load data
US7127559B2 (en) * 2001-07-10 2006-10-24 Micron Technology, Inc. Caching of dynamic arrays
US7062761B2 (en) 2001-07-10 2006-06-13 Micron Technology, Inc. Dynamic arrays and overlays with bounds policies
US6665788B1 (en) 2001-07-13 2003-12-16 Advanced Micro Devices, Inc. Reducing latency for a relocation cache lookup and address mapping in a distributed memory system
US6681311B2 (en) * 2001-07-18 2004-01-20 Ip-First, Llc Translation lookaside buffer that caches memory type information
US7529912B2 (en) * 2002-02-12 2009-05-05 Via Technologies, Inc. Apparatus and method for instruction-level specification of floating point format
US7181596B2 (en) * 2002-02-12 2007-02-20 Ip-First, Llc Apparatus and method for extending a microprocessor instruction set
US7315921B2 (en) * 2002-02-19 2008-01-01 Ip-First, Llc Apparatus and method for selective memory attribute control
US7328328B2 (en) * 2002-02-19 2008-02-05 Ip-First, Llc Non-temporal memory reference control mechanism
US7546446B2 (en) * 2002-03-08 2009-06-09 Ip-First, Llc Selective interrupt suppression
US7395412B2 (en) * 2002-03-08 2008-07-01 Ip-First, Llc Apparatus and method for extending data modes in a microprocessor
US7302551B2 (en) * 2002-04-02 2007-11-27 Ip-First, Llc Suppression of store checking
US7155598B2 (en) * 2002-04-02 2006-12-26 Ip-First, Llc Apparatus and method for conditional instruction execution
US7373483B2 (en) 2002-04-02 2008-05-13 Ip-First, Llc Mechanism for extending the number of registers in a microprocessor
US7380103B2 (en) 2002-04-02 2008-05-27 Ip-First, Llc Apparatus and method for selective control of results write back
US7185180B2 (en) * 2002-04-02 2007-02-27 Ip-First, Llc Apparatus and method for selective control of condition code write back
US7380109B2 (en) * 2002-04-15 2008-05-27 Ip-First, Llc Apparatus and method for providing extended address modes in an existing instruction set for a microprocessor
US6922745B2 (en) * 2002-05-02 2005-07-26 Intel Corporation Method and apparatus for handling locks
GB2396930B (en) * 2002-11-18 2005-09-07 Advanced Risc Mach Ltd Apparatus and method for managing access to a memory
US7290093B2 (en) * 2003-01-07 2007-10-30 Intel Corporation Cache memory to support a processor's power mode of operation
US7159076B2 (en) * 2003-06-24 2007-01-02 Research In Motion Limited Cache operation with non-cache memory
US20050114559A1 (en) * 2003-11-20 2005-05-26 Miller George B. Method for efficiently processing DMA transactions
JP2005190161A (ja) * 2003-12-25 2005-07-14 Matsushita Electric Ind Co Ltd データ処理装置およびコンパイラ装置
JP4576323B2 (ja) * 2004-12-10 2010-11-04 富士通株式会社 データ転送装置およびデータ転送方法
US20060242390A1 (en) * 2005-04-26 2006-10-26 Intel Corporation Advanced load address table buffer
US9176741B2 (en) * 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US7644258B2 (en) * 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US7949834B2 (en) * 2007-01-24 2011-05-24 Qualcomm Incorporated Method and apparatus for setting cache policies in a processor
US8055805B2 (en) * 2009-03-31 2011-11-08 Intel Corporation Opportunistic improvement of MMIO request handling based on target reporting of space requirements
US9367356B2 (en) * 2010-06-17 2016-06-14 Microsoft Technology Licensing, Llc Resource access control
JP2012198803A (ja) * 2011-03-22 2012-10-18 Fujitsu Ltd 演算処理装置及び演算処理方法
US8910136B2 (en) * 2011-09-02 2014-12-09 International Business Machines Corporation Generating code that calls functions based on types of memory
US20140317337A1 (en) * 2011-12-30 2014-10-23 Leena K. Puthiyedath Metadata management and support for phase change memory with switch (pcms)
JP6127907B2 (ja) * 2012-11-12 2017-05-17 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9756048B2 (en) 2013-11-24 2017-09-05 Truly Protect Oy System and methods for executing encrypted managed programs
US9471511B2 (en) * 2013-11-24 2016-10-18 Truly Protect Oy System and methods for CPU copy protection of a computing device
US9658963B2 (en) * 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
JP6729168B2 (ja) * 2016-08-22 2020-07-22 ブラザー工業株式会社 コンテンツ処理装置
US11853231B2 (en) 2021-06-24 2023-12-26 Ati Technologies Ulc Transmission of address translation type packets
US20230153094A1 (en) * 2021-11-18 2023-05-18 Toyota Motor North America, Inc. Robust over the air reprogramming
US11860670B2 (en) 2021-12-16 2024-01-02 Intel Corporation Accessing a memory using index offset information

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5091846A (en) * 1986-10-03 1992-02-25 Intergraph Corporation Cache providing caching/non-caching write-through and copyback modes for virtual addresses and including bus snooping to maintain coherency
US5185878A (en) * 1988-01-20 1993-02-09 Advanced Micro Device, Inc. Programmable cache memory as well as system incorporating same and method of operating programmable cache memory
US5297270A (en) * 1989-11-13 1994-03-22 Zenith Data Systems Corporation Programmable cache memory which associates each section of main memory to be cached with a status bit which enables/disables the caching accessibility of the particular section, and with the capability of functioning with memory areas of varying size
US5353431A (en) * 1991-04-29 1994-10-04 Intel Corporation Memory address decoder with storage for memory attribute information
US5325504A (en) * 1991-08-30 1994-06-28 Compaq Computer Corporation Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system
US5386547A (en) * 1992-01-21 1995-01-31 Digital Equipment Corporation System and method for exclusive two-level caching

Also Published As

Publication number Publication date
MX9702265A (es) 1997-06-28
US5751996A (en) 1998-05-12
EP0783735A4 (en) 2004-10-20
EP0783735B1 (en) 2011-08-24
AU3494995A (en) 1996-04-26
EP0783735A1 (en) 1997-07-16
ZA954460B (en) 1996-02-05
KR970706538A (ko) 1997-11-03
WO1996010789A1 (en) 1996-04-11

Similar Documents

Publication Publication Date Title
KR100264401B1 (ko) 마이크로프로세서내의 메모리 종류 정보 처리 방법 및 장치
US11803486B2 (en) Write merging on stores with different privilege levels
KR100242484B1 (ko) 캐쉬 메모리 시스템의 성능 최적화 방법 및 장치
US5715428A (en) Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system
US6430657B1 (en) Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
US6223258B1 (en) Method and apparatus for implementing non-temporal loads
US6829684B2 (en) Applications of operating mode dependent error signal generation upon real address range checking prior to translation
EP0795820B1 (en) Combined prefetch buffer and instructions cache memory system and method for providing instructions to a central processing unit utilizing said system.
US5265233A (en) Method and apparatus for providing total and partial store ordering for a memory in multi-processor system
US4933837A (en) Methods and apparatus for optimizing instruction processing in computer systems employing a combination of instruction cache and high speed consecutive transfer memories
KR100204741B1 (ko) 제1및 제2캐시 메모리 사용방법
EP1399823B1 (en) Using an l2 directory to facilitate speculative loads in a multiprocessor system
MXPA97002265A (en) Method and apparatus for processing memory type information within a microprocess
US7620954B2 (en) Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors
JPH07319767A (ja) コンピュータ・システム
US6205520B1 (en) Method and apparatus for implementing non-temporal stores
US5269009A (en) Processor system with improved memory transfer means
JP2004326758A (ja) 局所的なキャッシュ・ブロック・フラッシュ命令
CN110959154A (zh) 用于线程本地存储数据访问的私有高速缓存
US5758120A (en) Method and system for increased system memory concurrency in a multi-processor computer system utilizing concurrent access of reference and change bits
JPH10293720A (ja) コンピュータシステムにおけるキャッシュ・コヒーレンシー機構および主メモリに保持されている項目に関してキャッシュの内容のコヒーレンシー状態を変更する方法
US5802567A (en) Mechanism for managing offset and aliasing conditions within a content-addressable memory-based cache memory
US5339397A (en) Hardware primary directory lock
US6044447A (en) Method and apparatus for communicating translation command information in a multithreaded environment
US6938148B2 (en) Managing load and store operations using a storage management unit with data flow architecture

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: 20130520

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20140502

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 16

EXPY Expiration of term