KR100634930B1 - 캐시 메모리에서 문맥 식별자를 사용하는 방법 및 장치 - Google Patents

캐시 메모리에서 문맥 식별자를 사용하는 방법 및 장치 Download PDF

Info

Publication number
KR100634930B1
KR100634930B1 KR1020037017291A KR20037017291A KR100634930B1 KR 100634930 B1 KR100634930 B1 KR 100634930B1 KR 1020037017291 A KR1020037017291 A KR 1020037017291A KR 20037017291 A KR20037017291 A KR 20037017291A KR 100634930 B1 KR100634930 B1 KR 100634930B1
Authority
KR
South Korea
Prior art keywords
thread
address
base
page directory
context identifier
Prior art date
Application number
KR1020037017291A
Other languages
English (en)
Other versions
KR20040017821A (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 KR20040017821A publication Critical patent/KR20040017821A/ko
Application granted granted Critical
Publication of KR100634930B1 publication Critical patent/KR100634930B1/ko

Links

Images

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
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking

Landscapes

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

Abstract

문맥 식별자가 캐시 메모리 시스템에서 사용된다. 문맥 식별자는, 캐시 기입 동작 동안에 캐시 라인의 태그 속에 기입될 수 있거나 캐시 라인의 태그에 대한 부가물로 기입될 수 있다. 캐시 판독 동작 동안에, 발행된 명령어의 문맥 식별자는 캐시 라인의 태그의 문맥 식별자와 비교될 수 있다. 캐시 라인의 데이터 블럭은 문맥 식별자와 태그가 매칭되면 트랜스퍼될 수 있다.
캐시 메모리 시스템, 문맥 식별자, 태그, 히트/미스, 비교기

Description

캐시 메모리에서 문맥 식별자를 사용하는 방법 및 장치{USE OF A CONTEXT IDENTIFIER IN CACHE MEMORY}
본 발명은 컴퓨터 기술에 관한 것이다. 더 특정하자면, 본 발명은 컴퓨팅 디바이스에서 캐시 메모리의 성능을 개선하기 위한 것이다.
컴퓨터 메모리 계층 구조에서 하나 또는 그 이상의 캐시 메모리 시스템을 사용하는 것은 컴퓨터의 성능을 향상시키는 기술로서 본 기술 분야에 잘 알려져 있다(예로, Handy, Jim; The Cache Memory Book; Academic Press, 1998). 도1은 전형적인 캐시 메모리 어레이(100)를 예시하였다. 캐시 메모리 어레이(100)는 캐시 라인(110)을 포함한다. 각 캐시 라인은 태그(120) 및 데이터 블럭(130)을 포함한다. 예시적 캐시 라인(140)은 태그(150) 및 데이터 블럭(160)을 포함한다. 참조 번호 (170)은 예시적 태그(150)가 주 메모리 어드레스(160)의 부분임을 예시하고 있다. 주 메모리 어드레스(170)는 데이터 블럭(160)에 상응하는 주 메모리 어드레스이다.
프로세서는 메모리 트랜스퍼 동안에 프로세서의 실행 코어와 컴퓨터의 메모리 계층 구조 사이에서 명령 및 오퍼랜드를 전후로 전달한다. 메모리 트랜스퍼의예로서는 메모리 계층 구조로부터 프로세서로 명령/오퍼랜드를 로드하고 프로세서 로부터의 명령 및 오퍼랜드를 메모리 계층 구조로 기억시키는 것이 있다. 메모리 트랜스퍼 동안에 프로세서는 주 메모리 어드레스를 발생시킨다. 캐시 룩-업(look-up) 동안에 캐시 어레이(100)가 메모리 트랜스퍼에 상응하는 엔트리를 포함하고 있는 지의 여부를 판정하기 위해, 주 메모리 어드레스의 일부분은 태그(120) 내의 엔트리와 비교된다. 태그(150)와 주 메모리 어드레스(170) 사이의 상기 관계에서 보여진 것처럼, 캐시 룩-업 과정은 프로세서가 각각의 주 메모리 어드레스의 일부분 만을 태그의 각각의 엔트리와 비교하게 함으로써 빨라진다. 전형적으로는 캐시 메모리는 캐시 어레이(100)에 기억된 데이터를 인덱싱하기 위해 프로세서에 의해 발생된 각각의 선형 어드레스의 일부분을 사용한다.
스레드(thread)는 컴퓨터 프로그램의 다른 부분과 독립적으로 실행할 수 있는 컴퓨터 프로그램의 일부이다. 프로세서의 성능은 다수의 스레드가 프로세서 상에서 동시에 실행될 수 있다면 향상될 수 있다. 다수의 스레드에 대한 동시 실행은, 다수의 스레드의 여러가지 명령 중에서의 의존성이 검출되고 적절하게 관리된다면, 가능해진다.
도2는 얼마나 많은 인텔(Intel)?프로세서가 큰 선형 어드레스 스페이스가 작은 양의 물리적 메모리(예로, 랜덤 액세스 메모리)에 의해 지원되도록 하여주는 가상 메모리 환경을 사용하는지를 예시한다. 메모리 트랜스퍼 동안에, 프로세서는 선형 어드레스(210)를 발생시킨다. 선형 어드레스(210)는 디렉토리 필드(220), 테이블 필드(225), 및 오프셋 필드(230)를 포함한다. 페이지 디렉토리(235)의 베이스는 제어 레지스터 CR3 (240)에 포함된다. 선형 어드레스(210)의 디렉토리 엔트 리(220)는 제어 레지스터CR3 (240)에 포함된 값에 대한 오프셋을 제공한다. 페이지 디렉토리는 페이지 테이블 베이스 포인터(245)를 포함한다. 테이블 필드(225)는 물리적 어드레스(225)를 포함하는 페이지의 베이스를 식별하기 위해 페이지 테이블 베이스 포인터(245)와 결합된 오프셋을 제공한다. 오프셋 필드(230)는 물리적 어드레스(255)를 식별하기 위해 페이지 테이블 엔트리와 결합된다.
도3은 주 메모리 어드레스의 일부분 만으로 캐시 룩-업을 실행하는 것과 관련된 단점을 도시하였다. 프로세서(도시 안됨)는 로드 명령 LD0 및 LD1에 응답하여 선형 어드레스 (304) 및 (306)을 발생시킨다. (305) 및 (307)은 캐시 룩-업을 실행하는 데에 사용되는 각각의 어드레스의 일부분을 예시하였다. (305) 및 (307)은 동일한 것으로 보이는데, 이들은 각각 (304) 및 (306)의 일부분일 뿐이다. (304) 및 (306)은 두개의 서로 다른 물리적 어드레스로 맵핑하는데, 이는 각각의 어드레스가 이들의 각각의 디렉토리 필드(320 및 325)와 오프셋 필드(330 및 335)에서 서로 다른 엔트리를 갖기 때문이다. 도3에 도시된 대로, 프로세서가 다수의 스레드에 대한 동시 실행을 지원하는 경우에, 추가의 복잡도가 도입된다. 스레드 0 및 스레드 1은 이들의 개별 페이지 디렉토리(340 및 345)의 베이스에 대해서 서로 다른 값을 가질 수 있다. 따라서, (304) 및 (306)이 동일하다 하더라도 이들은 두개의 서로 다른 물리적 어드레스에 맵핑할 것이다.
본 발명은, 유사 참조 번호는 유사 구성 요소들을 가리키도록 되어 있는 첨부 도면의 그림들을 통해서, 예를 들며 설명되는데, 이는 제한적인 목적으로 제시되는 것은 아니다.
[도면의 간단한 설명]
도1은 종래 기술의 캐시 메모리 어레이의 다이어그램이다.
도2는 선형 어드레스를 물리적 어드레스에 맵핑하는 개념 예시도이다.
도3은 두개의 서로 다른 물리적 어드레스로 맵핑하는 두개의 유사한 태그의 개념 예시도이다.
도4a는 문맥 식별자를 활용한 캐시 메모리 어레이의 일 실시예의 다이어그램이다.
도4b는 문맥 식별자의 일 실시예의 개념 예시도이다.
도5는 문맥 식별자 발생기 및 관련 제어 회로에 대한 일 실시예의 단순 블럭도이다.
도6은 캐시 메모리 시스템의 일 실시예의 블럭도이다.
도7은 캐시 메모리 시스템의 일 실시예의 블럭도이다.
캐시 메모리에서 문맥 식별자(context identifier)를 활용하는 것이 여기 설명된다. 다음의 설명에서 본 발명의 실시예에 대한 충분한 이해를 도모하기 위해 다수의 특정된 상세 사항들이 제공된다. 그러나, 본 기술 분야의 당업자는 상기 특정된 상세 사항 중에서 하나 또는 그 이상의 것이 없이도, 또는 다른 방법, 구성요소, 재료 등을 이용하여, 본 발명이 실시될 수 있음을 알 것이다. 경우를 바꾸어 말하자면, 본 발명의 특징을 모호하게 하지 않기 위해서, 공지된 구조, 재료, 또는 동작은 상세하게 보여지거나 설명되지 않았다.
이 명세서를 통해서, '일 실시예' 또는 '한 실시예' 라고 한 것은 이 실시예와 관련되어 설명된 특정의 특색, 구조, 또는 특징이 본 발명의 적어도 하나의 실시예에 포함되어 있음을 의미한다. 따라서, 이 명세서를 통해서 여러 곳에서 '일 실시예에서' 또는 '한 실시예에서' 라는 문구가 나타날 때에 이것이 반드시 동일한 실시예만을 언급하는 것은 아니다. 더나아가, 특정의 특색, 구조, 특징들은 하나 또는 그 이상의 실시예와 임의의 적합한 방식으로 결합될 수 있다.
캐시 메모리 시스템은 태그라고 불리는 선형 어드레스의 일부분으로 캐시 라인을 인덱싱한다. 프로세서는 메모리 트랜스퍼 동작 동안에 선형 어드레스를 발생시킨다. 선형 어드레스의 일부분은 캐시 룩-업 동안에 태그와 비교된다. 많은 인텔®프로세서는 부분 어드레스와 태그 사이의 명백한 매칭이 진정한 매칭이라는 것을 확인하기 위한 메커니즘을 제공한다. 이 메커니즘은 히트/미스(hit/miss) 판정기라고 불린다. 히트/미스 판정기는 캐시 메모리의 캐시 룩-업 처리 과정과 병렬로 작동한다. 히트/미스 판정기는 발행된 명령어와 관련된 선형 어드레스를 상응하는 물리적 어드레스로 변환하고 이 물리적 어드레스를 부분 선형 어드레스와 매칭되는 태그와 관련된 전체 어드레스와 비교한다. 히트/미스 판정기는 캐시 메모리보다 훨씬 느린데, 이는 판정기가 선형 어드레스를 물리적 어드레스로 번역해야만 하기 때문이고 또한 완전한 주소들에 대해 비교를 해야 하기 때문이다. 히트/미스 판정기는, 캐시 메모리에 의해 폴스(false) 매칭이 산출되었음을 검출하면, 캐시 메모리에 의해 이뤄진 실수를 정정할 것이다. 캐시 메모리에서 폴스 매칭에 의해 도입되는 에러를 검출하고 그에 응답하는 과정은 프로세서 성능을 저하시킬 수 있다.
도4a는 문맥 식별자를 수용한 캐시 메모리의 일 실시예를 예시하였다. 캐시 메모리 어레이(400)는 다수의 캐시 라인(410)을 포함한다. 각각의 캐시 라인(410)은 문맥 식별자(405), 태그(420), 및 데이터 블럭(430)을 포함한다. 따라서, 캐시 라인(440A)는 문맥 식별자(415A) 및 태그(450B)를 포함한다. 유사하게, 캐시 라인(440B)은 문맥 식별자(415B) 및 태그(450B)를 포함한다. 두개의 서로 다른 스레드는 문맥 식별자 (415A) 및 (415B)를 발생시켰다.
선형 어드레스 (470A) 및 (470B)는 태그 (450A) 및 (450B)에 대응한다. 도4a및 도4b에서 선형 어드레스는 문맥 식별자를 포함하여 문맥 식별자가 유사한 선형 어드레스를 구별하는 데에 어떻게 쓰이는 지를 예시한다. 그러나, 문맥 식별자는 선형 어드레스의 일부분이 아니고 선형 어드레스와는 별개로 발생된다.
종래 기술에 따라 구현된 캐시 메모리 시스템은 프로세서(도시 안됨)에 의해 발생된 부분 선형 어드레스를 캐시 어레이(400) 내의 각각의 태그(420)와 비교함으로써 캐시 룩-업을 실행한다. 프로세서가 123 이라는 부분 선형 어드레스를 발생시켰다면 그후 이 어드레스는 태그(450A)와 태그(450B) 모두와 매칭될 것이다. 앞서 제시한 대로, 히트/미스 판정기는 만약 어느 것이라도 있기만 하다면 어느 캐시 라인이 프로세서에 의해 발생된 주 메모리 어드레스와 매칭되는 지를 궁극적으로 판정한다. 종래 시스템은 히트/미스 판정기가 부분 선형 어드레스와 태그(420) 사이에 폴스 매칭을 관리하고 수정할 때에 성능 상의 불이익을 일으킨다.
도4b는 태그(420)와 프로세서에 의해 발생된 부분 선형 어드레스 사이의 폴 스 매칭의 빈도를 줄이기 위해 문맥 식별자를 사용하는 것을 예시하였다. 선형 어드레스 (470A) 및 (470B)는 도4a의 캐시 라인 (440A) 및 (440B)와 관련된다. 어드레스(475)는 발행된 명령어에 응답하여 프로세서에 의해 발생된다. 어드레스(475)는 문맥 식별자(480) 및 부분 선형 어드레스(485)를 포함한다. 종래의 캐시는 부분 선형 어드레스(485)가 태그(450B)와 매칭되기 때문에 (475) 와 (470B) 사이의 폴스 매칭을 식별했을 것이다. 일 실시예에서, 문맥 식별자(480)는 문맥 식별자(415B)와 비교된다. 또한, 일 실시예에서, 부분 선형 어드레스(485)는 태그(450B)와 비교된다. 따라서, 캐시 어레이(400)는, 문맥 식별자(480)가 문맥 식별자(415B)와 매칭되지 않기 때문에, (475)와 (470B) 사이의 폴스 매칭을 찾아내지 못할 것이다.
도5는 페이지 미스 핸들러(page miss handler,PMH)의 일부분에 대한 일 실시예를 예시하였다. 일 실시예에서, PMH(500)는 문맥 식별자의 부여를 발생시키고 제어한다. PMH(500)는 문맥 식별자 발생기(510), 비교기(520), 문맥 식별자 멀티플렉서(530), 및 인버터(540)를 포함한다. 일 실시예에서, 문맥 식별자 발생기(510)는 현재 실행되는 스레드에 상응하는 1 비트 이진수를 발생시킨다. 본 발명의 대안 실시예에서, 문맥 식별자 발생기(510)는 1 비트 이상을 갖는 이진 수를 발생시킨다. 비교기(520)는 프로세서 상에서 실행되고 있는 두개의 스레드에 의해 사용되는 페이지 디렉토리의 베이스의 어드레스들을 비교한다. 다른 실시예에서는, 문맥 식별자는 두개 또는 그 이상의 비트를 포함한다.
일 실시예에 따라서, PMH(500)는 동일한 문맥 식별자가 두개의 서로 다른 스 레드의 명령에 부여되었는 지의 여부를 판정한다. 도5에 도시된 실시예에서, PMH(500)는 제1 문맥 식별자를 프로세서 상에서 실행되는 제1 스레드에게 부여한다. 예로, 만약 스레드 0가 프로세서 상에서 실행되는 제1 스레드이라면, 프로세서는 스레드 0의 문맥 식별자로서 0 을 부여할 것이다. 문맥 식별자는 스레드 번호와 매칭하는 데에는 요구되지 않는다. 따라서, 스레드 0는 1 또는 0 중의 하나인 문맥 식별자를 가질 것이다. 본 발명의 대안 실시예에서, 프로세서는 두개 이상의 명령 스레드를 실행하며 1 비트 이상의 문맥 식별자가 사용된다.
만약 제2 스레드가 프로세서 상에서 실행하기를 시작한다면(예로, 스레드 1), PMH(500)는 제2 스레드의 명령에게 스레드 0의 명령에게 부여되었던 문맥 식별자와 다른 것을 부여할 지의 여부를 결정한다. 스레드 0 및 스레드 1이 주 메모리에서 동일한 페이지를 사용하는 것이 가능하다. 만약 그렇다면, 두개의 스레드의 명령에게 동일한 문맥 식별자를 부여하는 것이 바람직한데, 이는 선형 어드레스가 태그와 동일한 페이지에 맵핑하는 것으로 알려졌을 때 태그와 선형 어드레스 사이의 폴스 매칭이 덜 일어나기 때문이다. 비교기(520)는 두개의 스레드에 의해 사용되는 페이지 디렉토리의 베이스들을 비교함으로써 주 메모리에서 동일한 페이지를 사용할 지의 여부를 판정한다.
스레드 0과 스레드 1이 이들의 각각의 페이지 디렉토리의 베이스로서 동일한 어드레스를 사용한다면, 멀티플렉서(530)는 이것이 스레드 0에 대해서 선택했던 것과 동일한 문맥 식별자를 스레드 1에 대해서도 선택할 것이다. 역으로, 만약 비교기(520)가 스레드 0과 스레드 1이 이들의 페이지 디렉토리의 베이스에 대해 동일한 어드레스를 사용하지 않는다고 표시하면, 멀티플렉서(530)는 인버터(540)의 출력을 스레드 1에 대한 문맥 식별자로서 선택할 것이다. 두개의 스레드가 동일한 문맥 식별자를 공유하는 지의 여부를 판정하는 것은 다른 방식으로 구현될 수 있다. 예를 들어, 본 발명의 한 실시예에서, 오퍼레이팅 시스템은 두개의 스레드가 동일한 문맥 식별자를 공유하는 지의 여부를 판정하며 프로세서에게 스레드와 관련시킬 올바른 문맥 식별자를 명백히 말해 준다. 또다른 본 발명의 실시예에서는, 스레드의 메모리 액세스 패턴을 연구하는 예측기가 문맥 식별자를 예측한다. 일 실시예에 따라서, 사용자는 PMH(500)에게 두개의 서로 다른 스레드의 명령들에 대해 항상 동일한 값을 선택하도록 지시하거나 또는 두개의 서로 다른 스레드의 명령에 대해 서로 다른 문맥 식별자 값을 항상 선택하도록 지시할 수 있다.
본 발명의 대안 실시예에서, 두개 이상의 스레드가 프로세서에 존재한다. n개의 스레드가 프로세서에 존재하는 한 실시예에 대해서는, 문맥 식별자는 n개의 서로 다른 문맥 식별자들이 특정되도록 허용해 주는 인코딩 방식까지 확장된다. 본 분야의 당업자는 n 비트 문맥 식별자가 사용될 때, 단일 비트가 캐시에 배치되는 방식과 동일하게 n 비트가 캐시에 배치될 수 있음을 알 것이다. 또한, 본 분야의 당업자는 n 비트 문맥 식별자를 서로에 대해 비교하는 것은 두개의 단일 비트 문맥 식별자들을 비교한 것과 거의 동일한 방식으로 이뤄질 수 있음을 알 것이다.
다수의 스레드를 갖는 본 발명의 한 실시예는 사용되지 않은 문맥 식별자의 풀(pool)을 활용한다. 스레드가 그 페이지 테이블 베이스를 변화시켰을 때, 이는 신규 값을, 다른 활성 스레드에 의해 사용된 페이지 테이블 베이스 또는 풀 내의 문맥 식별자의 임의의 유효 페이지 테이블 베이스의 값과 비교한다. 매칭이 있다면, 이 매칭을 발생시킨 스레드의 문맥 식별자의 값을 취한다. 또 다른 활성 스레드와의 매칭이 없다면, 풀로부터 사용되지 않은 문맥 식별자를 취한다. 문맥 식별자는, 스레드가 그것의 페이지 베이스 값을 변화시켰을 때, 또는 주어진 문맥 식별자를 갖는 캐시의 최종 라인이 디얼라케이트(deallocate)되었을 때, 사용되지 않은 풀로 회귀한다. 후자의 조치는 스레드가 이전 스레드가 가져왔던 데이터에 히트하도록 허용해 준다. 당업자는 스레드에 대한 문맥 식별자의 값을 예측하는 데에 여러가지 다양한 방식이 사용될 수 있음을 알 것이다.
도6은 문맥 식별자를 갖는 캐시 메모리 시스템으로부터 판독하는 것을 예시하였다. 캐시 어레이(610)는 캐시 라인(605)을 포함한다. 각각의 캐시 라인(605)은 문맥 식별자(610A), 태그(610B), 및 데이터 블럭(610C)를 포함한다. 캐시 어레이(610)는 캐시 제어기(620)에 결합된다. 캐시 제어기(620)는 캐시 어레이(610)에 포함된 데이터에 대한 액세스를 제어한다.
캐시 제어기(620)는 히트/미스 판정기(670)와 비교기 (675) 및 (680) 에 결합된다. 히트/미스 판정기(670) 및 비교기 (675) 및 (680)의 작동이 아래에 설명된다. 일 실시예에서, 비교기(675)는 AGU(630) 뿐만이 아니라 AND 게이트(685)에 결합된다. AGU(630)는 메모리 트랜스퍼를 요구하는 발행된 명령어(예로, LOAD 및 STORE 명령)에 대한 선형 어드레스를 발생시킨다. 일 실시예에서, 비교기(680)는 멀티플렉서(650)를 통해서 AND 게이트(685) 및 PMH(640)에게 결합된다. PMH(640)는 어느 문맥 식별자가 어느 발행된 명령어에 부여될 것인지를 결정하는 데에 사용 되는 제어 로직을 포함한다.
판독 사이클은 전형적으로는 발해진 LOAD 명령(LD)(660)에 의해 개시된다. LD(660)는 PMH(640) 및 AGU(630)으로 전달된다. PMH(640)는 무엇보다도 어느 스레드가 LD(660)의 소스인지를 결정한다. PMH(640)는 부분적으로는 어느 스레드가 LD(660)의 소스인지에 기초하여 LD(660)에게 문맥 식별자를 부여한다. PMH(640)는 LD(660)과 관련된 문맥 식별자를 멀티플렉서(650)를 통해서 비교기(680)에 발행한다(issue). 유사하게, AGU(630)는 부분 선형 어드레스를 비교기(675)에 발행한다.
비교기 (675) 및 (680)은 캐시 어레이(610)가 LD(660)가 요구하는 정보를 포함하고 있는지를 판정하기 위해 부분 선형 어드레스 및 LD(660)의 문맥 식별자를 사용한다. 만약 캐시 어레이(610)가 요구된 정보를 포함하고 있으면, 캐시 히트로 귀결된다. 캐시 어레이(610)가 요구된 정보를 포함하고 있지 않다면, 캐시 미스로 귀결된다.
캐시 히트는 특정 캐시 라인이 LD(660)의 문맥 식별자와 매칭되는 문맥 식별자와 LD(660)에 상응하는 부분 선형 어드레스와 매칭하는 태그를 포함할 것을 요구한다. 비교기 (675) 및 (680)은 각각의 캐시 라인의 태그 필드 및 문맥 식별자 필드를 LD(660)의 문맥 식별자 및 부분 선형 어드레스와 비교한다. 일 실시예에 따라서, 캐시 라인과 동일한 수의 비교기가 있어서 비교는 단일 병렬 동작으로 이뤄질 수 있다. 만약 단일 캐시 라인이 LD(660)의 문맥 식별자 및 부분 선형 어드레스와 매칭되는 문맥 식별자 및 태그를 포함한다면, AND 게이트(685)는 캐시 히트 신호를 보낸다. 그러나, 캐시 히트가 폴스 매칭에 기초하였을 가능성이 있는데, 이는 비교기(675)가 LD(660)의 어드레스의 일부분만을 캐시 어레이(610A) 내의 각각의 태그와 비교하기 때문이다.
히트/미스 판정기(670)는 캐시 히트가 폴스 매칭에 기초하였는지의 여부를 검출한다. 히트/미스 판정기는 LD(660)가 명령/오퍼랜드를 그로부터 요구하는 주 메모리의 로케이션의 전체 선형 어드레스를 수신한다. 일 실시예에 따라서, 히트/미스 판정기(670)는 AGU에 의해 자신에게 운반된 선형 어드레스를 물리적 어드레스로 번역한다. 히트/미스 판정기(670)는 LD(660)의 부분 선형 어드레스와 매칭되는 태그에 상응하는 물리적 어드레스를 결정한다. 히트/미스 판정기(670)는 캐시 히트가 폴스 매칭에 기초하였는지를 판정하기 위해 완전한 물리적 어드레스 양자를 비교한다.
도7은 문맥 식별자를 이용하는 캐시 메모리에 대한 기입을 예시하였다. 캐시 어레이(710)는 다수의 캐시 라인(705)을 포함한다. 각각의 캐시 라인(705)은 문맥 식별자(710A), 태그(710B), 및 데이터 블럭(710C)를 포함한다. 캐시 어레이(710)는 캐시 제어기(720)에게 결합된다. 캐시 제어기(720)는 한 블럭의 데이터가 어느 캐시 라인으로 기입될 것인지를 판정하는 것을 포함하여 다수의 기능을 실행한다. 캐시 제어기(720)는 멀티플렉서(750)를 통해서 AGU(730) 및 PMH(740)에 결합된다.
발행된 명령어(760)는 프로세서(도시 안됨)로부터 PMH(740) 및 AGU(730)으로 전달된다. 일 실시예에서, AGU(730)은 발행된 명령어(760)가 메모리 트랜스퍼를 요구할 때 선형 어드레스를 발생시킨다. AGU(730)는 일반적으로 프로세서의 실행 코어의 일부분이다. 다른 실시예에서, AGU(730)은 물리적 어드레스를 발생시킬 수 있다. 일 실시예에서, PMH(740)는 적어도 두개의 문맥 식별자와 멀티플렉서(750)를 제어하는 제어 신호를 발생시킨다. 다른 실시예에서, PMH(740)는 임의의 수의 문맥 식별자를 발생시킬 수 있다.
기입 사이클은 전형적으로는 발해진 기억 명령(ST)(예로, ST 760)에 의해 개시된다. ST(760)은 PMH(740) 및 AGU(730)으로 전달된다. PMH(740)은 어느 스레드가 ST(760)의 소스인지를 판정한다. PMH(740)는 어느 문맥 식별자가 ST(760)에 부여될 것인지를 추가로 판정한다. 일 실시예에 따라서, PMH(740)는 다음과 같은 세가지의 동작 모드를 갖는다. OFF, NON-SHARED, 및 ADAPTIVE. 만약 PMH(740)가 OFF모드에서 동작한다면, PMH(740)는 각각의 문맥 식별자에 대해 동일한 값을 기입할 것이다. 스레드가 캐시 라인에 기억된 문맥 식별자와 동일한 문맥 식별자를 갖는다면 캐시 라인은 두개 또는 그 이상의 스레드의 명령에 의해 공유된다.
NON-SHARED 모드에서 동작할 때, PMH(40)는 발행된 명령어를 포함하는 스레드에게 특정적인 문맥 식별자를 부여할 것이다. 일 실시예에서, ADAPTIVE 모드는 PMH(740)가 서로 다른 스레드로부터 기원하는 명령들에 대해 동일한 또는 서로 다른 문맥 식별자를 부여할 것인지의 여부를 동적으로 판단할 수 있도록 하여준다. 일 실시예에서, 만약 스레드가 이들의 페이지 디렉토리의 베이스에 대해 동일한 어드레스를 공유한다면, PMH(70)는 스레드에 포함된 명령들에 대해 동일한 문맥 식별자를 동적으로 부여할 수 있다. 그렇지 않다면, 한 실시예에서, PMH(740)는 스레드에 포함된 명령들에게 서로 다른 문맥 식별자를 동적으로 부여할 것이다.
일 실시예에서, PMH(740)는 컴퓨터가 멀티-스레드 모드에 있는지와, 두개의 서로 다른 스레드의 명령들에 대해 동일한 문맥 식별자를 기입할 지의 여부를 판정할 때 페이징이 인에이블될 지를 고려한다. 발행된 명령어에 부여된 문맥 식별자의 값을 결정하기 위해 임의 수의 기준이 사용될 수 있다. 또한, 문맥 식별자 발생기 및 관련 제어 로직은 전자 시스템의 수많은 장소에 로케이트될 수 있고, PMH 또는 그와 유사한 유닛에 꼭 포함될 필요는 없다.
PMH(740)는 ST(760)에게 적합한 문맥 식별자를 멀티플렉서(750)를 통해 캐시 제어기(720)에게 보낸다. AGU(730)는 ST(760A)가 데이터를 기억시키기 위해 구하게 되는 주 메모리 로케이션에 상응하는 선형 어드레스를 발생시킨다. AGU(730)는 캐시 제어기(720) 및 히트/미스 판정기(770)에게 ST(760)에 상응하는 선형 어드레스를 제공한다. 캐시 제어기(720)는 어느 캐시 라인이 ST(760)에 대한 데이터를 기억하는 데에 사용될 지를 결정하기 위해 캐시 라인 교체 정책(replacement policy)을 활용한다. 캐시 라인 교체 정책은 본 기술 분야에 공지되어 있다(캐시 라인 교체 정책에 대한 더 자세한 설명을 보려면 예로, Handy, Jim;The Cache Memory Book;Academic Press, 1998 을 참고).
적합한 캐시 라인을 선택한 후에, 캐시 제어기(720)는 문맥 식별자를 선택된 캐시 라인(780)의 문맥 식별자 필드(780A)에 기입한다. 캐시 제어기(720)는 ST(760)의 선형 어드레스의 일부분을 캐시 라인(780)의 태그 필드(780B)에 기입한다. 일 실시예에서, 태그는 32 비트 선형 어드레스의 비트 23에서 12를 포함한다. 태그에 대해 활용할 수 있는 어드레스 비트의 조합은 많이 있다. 캐시 제어기는 ST(760)과 관련된 데이터를 선택된 캐시 라인(780)의 데이터 블럭 필드(780C) 내로 기입한다.
캐시 관리는 전자적으로 액세스 가능한 매체로부터의 명령에 의해 제어될수 있는데, 이는 여기 설명된 처리 과정을 실행하기 위해 컴퓨터(또는 다른 전자적장비)를 프로그램하는 데에 사용된다. 전자적으로 액세스 가능한 매체는 플로피 디스크, 광 디스크, CD-ROM, 자기-광 디스크, ROM, RAM, EPROM, EEPROM, 자기 또는 광 카드, 플래시 메모리, 또는 전자적 명령을 기억시키는 데에 적합한 다른 유형의 매체/머신-판독가능 매체를 포함할 수 있다. 더나아가, 명령은 컴퓨터 프로그램 프로덕트로서 또한 다운로드될 수 있는데, 여기서, 프로그램은 통신 링크(예로, 모뎀 또는 네트워크 접속)을 경유하여 반송파 또는 다른 전파 매체에 실려진 데이터 신호를 통해 원격 컴퓨터로부터 요구하는 컴퓨터로 전달될 수 있다.
본 발명의 예시적 실시예에 대한 앞의 설명은, 더 이상의 예가 없을 정도로 완전히 제시된 것도 아니고 본 발명을 개시된 형태에만 정확히 제한시키도록 의도된 것도 아니다. 본 발명의 특정 실시예 및 본 발명에 대한 예들은, 여기서 예시적 목적으로만 설명된 것이고, 여러가지의 균등한 변형물이 당업자가 아는 바와 같이 본 발명의 범위 내에서 이루질 수 있다.
이런 변형물은 앞서의 상세한 설명에 비추어 볼 때 본 발명에 대해 이뤄질 수 있다. 다음의 청구범위에서 사용되는 용어들을 해석할 때 본 발명을 상세한 설명 및 청구범위에서 개시된 특정 실시예에만 제한시키는 것으로 해석하여서는 안된다. 그보다는, 본 발명의 범위는 전적으로 다음의 청구범위에 의해서 결정해야만 하는데, 이 청구범위는 청구범위 해석론의 확립된 원칙에 따라서 해석해야만 할 것이다.

Claims (33)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제1 스레드(thread)에 의해 사용된 페이지 디렉토리의 베이스의 어드레스를 제2 스레드에 의해 사용된 페이지 디렉토리의 베이스의 어드레스와 비교하여, 상기 제1 스레드에 의해 사용된 페이지 디렉토리의 베이스의 어드레스가 상기 제2 스레드에 의해 사용된 페이지 디렉토리의 베이스의 어드레스와 매칭되는지 여부를 판정하는 단계와;
    상기 제1 스레드에 의해 사용된 페이지 디렉토리의 베이스의 어드레스가 상기 제2 스레드에 의해 사용된 페이지 디렉토리의 베이스의 어드레스와 매칭되는 경우에, 상기 제1 스레드와 상기 제2 스레드 양쪽 모두에 하나의 문맥 식별자를 부여하는 단계와;
    상기 제1 스레드에 의해 사용된 페이지 디렉토리의 베이스의 어드레스가 상기 제2 스레드에 의해 사용된 페이지 디렉토리의 베이스의 어드레스와 매칭되지 않는 경우에, 상기 제1 스레드와 상기 제2 스레드에 서로 다른 문맥 식별자를 부여하는 단계
    를 포함하는 방법.
  6. 제5항에 있어서,
    상기 제1 스레드의 페이지 디렉토리의 베이스의 어드레스를 제1 레지스터에 기억하는 단계와;
    상기 제2 스레드의 페이지 디렉토리의 베이스의 어드레스를 제2 레지스터에 기억하는 단계와;
    상기 제1 레지스터를 판독하여 상기 제1 스레드의 페이지 디렉토리의 베이스의 어드레스를 판정하는 단계와;
    상기 제2 레지스터를 판독하여 상기 제2 스레드의 페이지 디렉토리의 베이스의 어드레스를 판정하는 단계
    를 더 포함하는 방법.
  7. 제6항에 있어서, 상기 제1 레지스터와 상기 제2 레지스터는 동일 레지스터인 방법.
  8. 제5항에 있어서, 상기 제1 스레드와 상기 제2 스레드에 동일한 문맥 식별자가 부여되는 방법.
  9. 제5항에 있어서, 상기 제1 스레드와 상기 제2 스레드에 서로 다른 문맥 식별자가 부여되는 방법.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 프로세서에 의해 발행된 명령어에 응답하여 어드레스를 발생시키기 위한 어드레스 발생 유닛(AGU)과;
    적어도 문맥 식별자와, 태그와, 데이터 블럭을 각각 포함하는 복수의 캐시 라인을 기억하기 위한 캐시와 - 상기 문맥 식별자는 동시 실행되는 복수의 스레드들 중 하나를 식별함 - ;
    상기 AGU에 결합되고 상기 캐시에 결합되어, 상기 AGU에 의해 발생된 어드레스 부분을 각각의 상기 복수의 캐시 라인 내의 각각의 상기 태그와 비교하기 위한 적어도 하나의 비교기와;
    두개 이상의 문맥 식별자를 발생시키고 상기 두개 이상의 문맥 식별자 중 하나를 선택하기 위한 제어 유닛과;
    상기 제어 유닛에 결합되고 상기 캐시에 결합되어, 상기 제어 유닛에 의해 선택된 문맥 식별자를 각각의 상기 복수의 캐시 라인 내의 각각의 문맥 식별자와 비교하기 위한 적어도 하나의 비교기와;
    컴퓨터 명령어를 실행하는 제1 스레드와 관련된 페이지 디렉토리의 베이스의 어드레스를 기억하기 위한 제1 레지스터와;
    컴퓨터 명령어를 실행하는 제2 스레드와 관련된 페이지 디렉토리의 베이스의 어드레스를 기억하기 위한 제2 레지스터와;
    상기 제1 레지스터 및 상기 제2 레지스터에 결합되어, 상기 제1 레지스터에 기억된 값과 상기 제2 레지스터에 기억된 값을 비교하기 위한 다른 비교기와;
    적어도 두개의 문맥 식별자를 발생시키기 위한 문맥 식별자 발생기와;
    상기 문맥 식별자 발생기 및 상기 비교기에 결합되어, 상기 적어도 두개의 문맥 식별자 중 하나를 선택하기 위한 멀티플렉서
    를 포함하는 장치.
  16. 삭제
  17. 제15항에 있어서,
    상기 멀티플렉서는, 컴퓨터 명령어를 실행하는 상기 제1 스레드와 관련된 페이지 디렉토리의 베이스의 어드레스가 컴퓨터 명령어를 실행하는 상기 제2 스레드와 관련된 페이지 디렉토리의 베이스의 어드레스와 매칭되면 제1 문맥 식별자를 선택하고;
    상기 멀티플렉서는, 컴퓨터 명령어를 실행하는 상기 제1 스레드와 관련된 페이지 디렉토리의 베이스의 어드레스가 컴퓨터 명령어를 실행하는 상기 제2 스레드와 관련된 페이지 디렉토리의 베이스의 어드레스와 매칭되지 않으면 제2 문맥 식별자를 선택하게 되어 있는 장치.
  18. 삭제
  19. 삭제
  20. 삭제
  21. 프로그램을 저장한 컴퓨터 판독가능한 매체로서, 상기 프로그램은 실행되는 경우,
    제1 스레드(thread)에 의해 사용된 페이지 디렉토리의 베이스의 어드레스를 제2 스레드에 의해 사용된 페이지 디렉토리의 베이스의 어드레스와 비교하여, 상기 제1 스레드에 의해 사용된 페이지 디렉토리의 베이스의 어드레스가 상기 제2 스레드에 의해 사용된 페이지 디렉토리의 베이스의 어드레스와 매칭되는지 여부를 판정하는 단계와;
    상기 제1 스레드에 의해 사용된 페이지 디렉토리의 베이스의 어드레스가 상기 제2 스레드에 의해 사용된 페이지 디렉토리의 베이스의 어드레스와 매칭되는 경우에, 상기 제1 스레드와 상기 제2 스레드 양쪽 모두에 하나의 문맥 식별자를 부여하는 단계와;
    상기 제1 스레드에 의해 사용된 페이지 디렉토리의 베이스의 어드레스가 상기 제2 스레드에 의해 사용된 페이지 디렉토리의 베이스의 어드레스와 매칭되지 않는 경우에, 상기 제1 스레드와 상기 제2 스레드에 서로 다른 문맥 식별자를 부여하는 단계를, 컴퓨터에 실행시키는, 컴퓨터 판독가능한 매체.
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 관련 태그와 관련 문맥 식별자를 각각 갖는 복수의 캐시 라인을 기억하기 위한 캐시 메모리와 - 상기 문맥 식별자는 동시 실행되는 복수의 스레드들 중 하나를 식별함 - ;
    상기 복수의 캐시 라인의 각각에 대해 요구 태그 및 요구 문맥 식별자를 상기 관련 태그 및 상기 관련 문맥 식별자와 비교하기 위한 비교 로직을 포함하고,
    제1 모드에서 상기 관련 문맥 식별자는 스레드 식별자를 포함하고,
    제2 모드에서 상기 관련 문맥 식별자는 예측된 문맥 식별자(predicted context identifier)이며, 상기 예측된 문맥 식별자는 제1 스레드에 의해 사용된 페이지 디렉토리의 베이스와 제2 스레드에 의해 사용된 페이지 디렉토리의 베이스를 비교하여, 상기 제1 스레드에 의해 사용된 페이지 디렉토리의 베이스가 상기 제2 스레드에 의해 사용된 페이지 디렉토리의 베이스와 매칭되는지 여부를 판정함으로써 판정되는, 프로세서.
  33. 제32항에 있어서,
    상기 비교 로직은, 문맥 식별자 매칭과 태그 매칭이 발생하는 경우에만 히트 신호를 발생시키게 되어 있는 프로세서.
KR1020037017291A 2002-03-22 2003-03-13 캐시 메모리에서 문맥 식별자를 사용하는 방법 및 장치 KR100634930B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/104,815 2002-03-22
US10/104,815 US7085889B2 (en) 2002-03-22 2002-03-22 Use of a context identifier in a cache memory
PCT/US2003/007710 WO2003083663A2 (en) 2002-03-22 2003-03-13 Use of context identifiers in cache memory

Publications (2)

Publication Number Publication Date
KR20040017821A KR20040017821A (ko) 2004-02-27
KR100634930B1 true KR100634930B1 (ko) 2006-10-17

Family

ID=28040700

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037017291A KR100634930B1 (ko) 2002-03-22 2003-03-13 캐시 메모리에서 문맥 식별자를 사용하는 방법 및 장치

Country Status (10)

Country Link
US (1) US7085889B2 (ko)
JP (1) JP4459628B2 (ko)
KR (1) KR100634930B1 (ko)
CN (1) CN1302396C (ko)
AU (1) AU2003214148A1 (ko)
DE (1) DE10392127T5 (ko)
HK (1) HK1069449A1 (ko)
RU (1) RU2285286C2 (ko)
TW (1) TWI300897B (ko)
WO (1) WO2003083663A2 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560690B2 (en) * 2000-12-29 2003-05-06 Intel Corporation System and method for employing a global bit for page sharing in a linear-addressed cache
US20040049657A1 (en) * 2002-09-10 2004-03-11 Kling Ralph M. Extended register space apparatus and methods for processors
US7254617B2 (en) * 2002-12-06 2007-08-07 Scott Ruple Distributed cache between servers of a network
US7206916B2 (en) * 2004-03-08 2007-04-17 Sun Microsystems, Inc. Partial address compares stored in translation lookaside buffer
CN100440170C (zh) * 2004-05-26 2008-12-03 英特尔公司 网络应用内的自动高速缓存生成
EP1789883B1 (en) * 2004-08-31 2011-12-07 Freescale Semiconductor Inc. A virtual address cache and method for sharing data using a unique task identifier
JP2008512758A (ja) * 2004-09-07 2008-04-24 フリースケール セミコンダクター インコーポレイテッド 仮想アドレス・キャッシュに格納されたデータを共用する仮想アドレス・キャッシュ及び方法
KR100899097B1 (ko) * 2007-05-11 2009-05-25 한국과학기술원 복수의 인덱싱 정보를 제공하는 방법 및 이를 이용한 캐쉬메모리 장치
US8024546B2 (en) * 2008-10-23 2011-09-20 Microsoft Corporation Opportunistic page largification
CN101854311A (zh) * 2009-03-31 2010-10-06 国际商业机器公司 在web服务器上传递上下文信息的方法和装置
CN104932990B (zh) * 2015-06-03 2018-05-11 华为技术有限公司 一种高速缓冲存储器中数据块的替换方法和装置
CN107291630B (zh) * 2016-03-30 2020-08-25 华为技术有限公司 一种高速缓冲存储器处理方法及装置
US11379592B2 (en) * 2018-12-20 2022-07-05 Intel Corporation Write-back invalidate by key identifier
US11593108B2 (en) 2021-06-07 2023-02-28 International Business Machines Corporation Sharing instruction cache footprint between multiple threads
US11593109B2 (en) * 2021-06-07 2023-02-28 International Business Machines Corporation Sharing instruction cache lines between multiple threads

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8823077D0 (en) * 1988-09-30 1988-11-09 Int Computers Ltd Data processing apparatus
US5341487A (en) 1991-12-20 1994-08-23 International Business Machines Corp. Personal computer having memory system with write-through cache and pipelined snoop cycles
TW255022B (ko) 1993-06-30 1995-08-21 Intel Corp
US5615343A (en) 1993-06-30 1997-03-25 Intel Corporation Method and apparatus for performing deferred transactions
US5568620A (en) 1993-06-30 1996-10-22 Intel Corporation Method and apparatus for performing bus transactions in a computer system
US5548733A (en) 1994-03-01 1996-08-20 Intel Corporation Method and apparatus for dynamically controlling the current maximum depth of a pipe lined computer bus system
US5572703A (en) 1994-03-01 1996-11-05 Intel Corporation Method and apparatus for snoop stretching using signals that convey snoop results
TW400483B (en) 1994-03-01 2000-08-01 Intel Corp High performance symmetric arbitration protocol with support for I/O requirements
WO1995024678A2 (en) 1994-03-01 1995-09-14 Intel Corporation Highly pipelined bus architecture
US6029217A (en) 1994-10-03 2000-02-22 International Business Machines Corporation Queued arbitration mechanism for data processing system
US5710906A (en) 1995-07-07 1998-01-20 Opti Inc. Predictive snooping of cache memory for master-initiated accesses
KR0164395B1 (ko) 1995-09-11 1999-02-18 김광호 반도체 메모리 장치와 그 리이드 및 라이트 방법
US5812803A (en) 1995-09-29 1998-09-22 Intel Corporation Method and apparatus for controlling data transfers between a bus and a memory device using a multi-chip memory controller
JPH09101916A (ja) * 1995-10-06 1997-04-15 Fujitsu Ltd マルチプロセス処理装置
US5809522A (en) * 1995-12-18 1998-09-15 Advanced Micro Devices, Inc. Microprocessor system with process identification tag entries to reduce cache flushing after a context switch
US5838995A (en) 1995-12-18 1998-11-17 International Business Machines Corporation System and method for high frequency operation of I/O bus
US6374329B1 (en) 1996-02-20 2002-04-16 Intergraph Corporation High-availability super server
JP3643425B2 (ja) 1996-02-29 2005-04-27 富士通株式会社 データ処理方法、データ処理装置及びインターフェイスコントローラ
US5754818A (en) * 1996-03-22 1998-05-19 Sun Microsystems, Inc. Architecture and method for sharing TLB entries through process IDS
US6427162B1 (en) * 1996-05-02 2002-07-30 Sun Microsystems, Inc. Separate code and data contexts: an architectural approach to virtual text sharing
US5733603A (en) 1996-06-05 1998-03-31 Kimberly-Clark Corporation Surface modification of hydrophobic polymer substrate
US6012118A (en) 1996-12-30 2000-01-04 Intel Corporation Method and apparatus for performing bus operations in a computer system using deferred replies returned without using the address bus
US6065101A (en) 1997-06-12 2000-05-16 International Business Machines Corporation Pipelined snooping of multiple L1 cache lines
US6336159B1 (en) 1997-06-25 2002-01-01 Intel Corporation Method and apparatus for transferring data in source-synchronous protocol and transferring signals in common clock protocol in multiple agent processing system
US5919254A (en) 1997-06-25 1999-07-06 Intel Corporation Method and apparatus for switching between source-synchronous and common clock data transfer modes in a multiple processing system
US5991855A (en) 1997-07-02 1999-11-23 Micron Electronics, Inc. Low latency memory read with concurrent pipe lined snoops
US5978869A (en) 1997-07-21 1999-11-02 International Business Machines Corporation Enhanced dual speed bus computer system
US6108736A (en) 1997-09-22 2000-08-22 Intel Corporation System and method of flow control for a high speed bus
US5964856A (en) 1997-09-30 1999-10-12 Intel Corporation Mechanism for data strobe pre-driving during master changeover on a parallel bus
US6691118B1 (en) * 1997-10-31 2004-02-10 Oracle International Corporation Context management system for modular software architecture
US6092156A (en) 1997-11-05 2000-07-18 Unisys Corporation System and method for avoiding deadlocks utilizing split lock operations to provide exclusive access to memory during non-atomic operations
KR100255664B1 (ko) * 1997-12-29 2000-05-01 윤종용 반도체 집적회로의 클락 포워딩 회로 및 클락포워딩 방법
US6006291A (en) 1997-12-31 1999-12-21 Intel Corporation High-throughput interface between a system memory controller and a peripheral device
US6041380A (en) 1998-01-21 2000-03-21 Micron Electronics, Inc. Method for increasing the number of devices capable of being operably connected to a host bus
US6449677B1 (en) 1998-09-03 2002-09-10 Compaq Information Technologies Group, L.P. Method and apparatus for multiplexing and demultiplexing addresses of registered peripheral interconnect apparatus
US6141747A (en) 1998-09-22 2000-10-31 Advanced Micro Devices, Inc. System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word
US6272604B1 (en) 1999-05-20 2001-08-07 International Business Machines Corporation Contingent response apparatus and method for maintaining cache coherency
US6487621B1 (en) 1999-08-17 2002-11-26 Compaq Information Technologies Group, L.P. Architecture, system and method for ensuring an ordered transaction on at least one of a plurality of multi-processor buses that experience a hit-to-modified snoop cycle
US6615323B1 (en) 1999-09-02 2003-09-02 Thomas Albert Petersen Optimizing pipelined snoop processing
US6591321B1 (en) 1999-11-09 2003-07-08 International Business Machines Corporation Multiprocessor system bus protocol with group addresses, responses, and priorities
CN1173271C (zh) * 1999-12-24 2004-10-27 仁宝电脑工业股份有限公司 具有双重高速缓冲映射存储器的高速缓冲存储器系统
US6609171B1 (en) 1999-12-29 2003-08-19 Intel Corporation Quad pumped bus architecture and protocol
EP1215582A1 (en) 2000-12-15 2002-06-19 Texas Instruments Incorporated Cache memory access system and method
EP1182571B1 (en) 2000-08-21 2011-01-26 Texas Instruments Incorporated TLB operations based on shared bit
EP1215577B1 (en) * 2000-08-21 2012-02-22 Texas Instruments Incorporated Fault management and recovery based on task-ID
US20020087824A1 (en) * 2000-12-29 2002-07-04 Hum Herbert H.J. System and method for employing a process identifier to minimize aliasing in a linear-addressed cache
US6560690B2 (en) * 2000-12-29 2003-05-06 Intel Corporation System and method for employing a global bit for page sharing in a linear-addressed cache

Also Published As

Publication number Publication date
US20030182512A1 (en) 2003-09-25
US7085889B2 (en) 2006-08-01
JP4459628B2 (ja) 2010-04-28
WO2003083663A3 (en) 2004-05-21
AU2003214148A1 (en) 2003-10-13
AU2003214148A8 (en) 2003-10-13
KR20040017821A (ko) 2004-02-27
RU2003136262A (ru) 2005-05-27
CN1552025A (zh) 2004-12-01
HK1069449A1 (en) 2005-05-20
WO2003083663A2 (en) 2003-10-09
DE10392127T5 (de) 2004-07-29
TW200405155A (en) 2004-04-01
JP2006505834A (ja) 2006-02-16
RU2285286C2 (ru) 2006-10-10
TWI300897B (en) 2008-09-11
CN1302396C (zh) 2007-02-28

Similar Documents

Publication Publication Date Title
US5475827A (en) Dynamic look-aside table for multiple size pages
US7165164B2 (en) Method and apparatus including heuristic for sharing TLB entries
KR100634930B1 (ko) 캐시 메모리에서 문맥 식별자를 사용하는 방법 및 장치
US7461209B2 (en) Transient cache storage with discard function for disposable data
US4797814A (en) Variable address mode cache
US7194597B2 (en) Method and apparatus for sharing TLB entries
US5860138A (en) Processor with compiler-allocated, variable length intermediate storage
US6560690B2 (en) System and method for employing a global bit for page sharing in a linear-addressed cache
US9058284B1 (en) Method and apparatus for performing table lookup
US7039768B2 (en) Cache predictor for simultaneous multi-threaded processor system supporting multiple transactions
JPH10232834A (ja) キャッシュメモリを作動する方法およびコンピュータシステム
WO1996041250A2 (en) System and method for processing multiple requests and out of order returns
US6061774A (en) Limited virtual address aliasing and fast context switching with multi-set virtual cache without backmaps
WO2020021224A1 (en) Binary search procedure for control table stored in memory system
US20050027960A1 (en) Translation look-aside buffer sharing among logical partitions
US6567907B1 (en) Avoiding mapping conflicts in a translation look-aside buffer
EP0611462B1 (en) Memory unit including a multiple write cache
US20190310948A1 (en) Apparatus and method for accessing an address translation cache
US11455253B2 (en) Set indexing for first-level and second-level set-associative cache
CN117785738B (zh) 页表预取方法、装置、芯片及存储介质
EP1262876B1 (en) Multiprocessing system with shared translation lookaside buffer
GB2455406A (en) Translation Lookaside Buffer for a co-processor

Legal Events

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

Payment date: 20090925

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee