KR20080095253A - 변환 색인 버퍼 조작 - Google Patents

변환 색인 버퍼 조작 Download PDF

Info

Publication number
KR20080095253A
KR20080095253A KR1020087020292A KR20087020292A KR20080095253A KR 20080095253 A KR20080095253 A KR 20080095253A KR 1020087020292 A KR1020087020292 A KR 1020087020292A KR 20087020292 A KR20087020292 A KR 20087020292A KR 20080095253 A KR20080095253 A KR 20080095253A
Authority
KR
South Korea
Prior art keywords
tlb
instruction
pipeline
processor
memory
Prior art date
Application number
KR1020087020292A
Other languages
English (en)
Other versions
KR100974775B1 (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 KR20080095253A publication Critical patent/KR20080095253A/ko
Application granted granted Critical
Publication of KR100974775B1 publication Critical patent/KR100974775B1/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/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]

Abstract

멀티스테이지 파이프라인을 구비한 프로세서는 TLB 및 TLB 제어기를 포함한다. TLB 미스 신호에 응답하여, TLB 제어기는 메모리 또는 상위 레벨 TLB로부터 어드레스 변환 정보를 요청하고, 상기 정보를 TLB 내에 배치하여 TLB 리로드를 개시한다. 프로세서는 손실된 가상 어드레스를 가지는 명령을 플러시하고 상기 명령을 리패치하여 TLB 액세스 포인트 위의 파이프라인의 초기 스테이지에서 명령의 재입력을 발생한다. TLB 리로드의 개시 및 명령의 플러시/리패치는 파이프라인을 즉시 중단하지 않고 실질적으로 동시에 수행된다. 리패치된 명령은 TLB 리로드가 종료될 때까지 TLB 액세스 포인트 위의 파이프라인 내의 포인트에 저장되며, 따라서 리패치된 명령은 그 다음 액세스에서 TLB 내에 "히트"를 생성한다.

Description

변환 색인 버퍼 조작{TRANSLATION LOOKASIDE BUFFER MANIPULATION}
본 발명은 변환 색인 버퍼들에 관한 것이다.
호출된 가상 메모리를 지원하는 프로세서에서, 데이터는 프로세서의 가상 어드레스 공간을 점유하는 가상의(또는 "논리적인") 어드레스들을 사용하여 특정될 수 있다. 가상 어드레스 공간은 일반적으로 시스템 내의 실제 물리적인 메모리의 양보다 더 클 수 있다. 상기 프로세서들 내의 운영 시스템은 고정 크기 블럭의 호출 페이지들 내에서 물리적인 메모리를 관리할 수 있다.
가상 페이지 어드레스들을 물리적인 페이지 어드레스들로 변환하기 위해, 프로세서는 시스템 메모리 내에 저장된 페이지 테이블들을 탐색할 수 있고, 상기 페이지 테이블들은 어드레스 변환 정보를 포함할 수 있다. 상기 탐색들(또는 "페이지 테이블 걷기(page table walks)"는 메모리 액세스들을 수반할 수 있기 때문에, 페이지 테이블 데이터가 데이터 캐시 내에 있지 않다면, 상기 탐색들은 시간이 소비될 수 있다.
따라서 프로세서는 하나 또는 그 이상의 변환 색인 버퍼들(TLBs)을 사용하여 어드레스 변환을 수행할 수 있다. TLB는 어드레스 변환 캐시, 즉 가상 어드레스들로부터 물리적인 어드레스들로의 최근 맵핑들을 저장하는 소형 캐시이다. 프로세 서는 페이지 테이블 탐색 및 어드레스 변환을 수행한 이후에 물리적인 어드레스를 TLB 내에 캐싱(cache)할 수 있다. TLB는 종종 기준 가상 페이지 어드레스들뿐만 아니라 그와 연관된 물리적인 페이지 어드레스를 공통으로 포함할 수 있다. 명령 어드레스들(명령들-TLB 또는 I-TLB) 및 데이터 어드레스들(데이터-TLB 또는 D-TLB)에 대하여 개별적인 TLB들이 존재할 수 있다.
TLB가 가상 페이지 어드레스를 수신하면, TLB는 그 엔트리들을 탐색하여 임의의 엔트리 내에 포함된 어드레스 변환 정보가 수신된 가상 페이지 어드레스와 매칭되는지 확인한다. 만약 TLB에 제공된 가상 페이지 어드레스가 임의의 TLB 엔트리들 내의 어드레스 변환 정보와 매칭되면, TLB "히트(hit)"가 발생할 수 있고, 그렇지 않으면 TLB "미스(miss)"가 발생할 수 있다.
TLB 미스에 응답하여, 파이프라인은 미스가 발생하는 포인트에서 중단될 수 있다. 가상 어드레스를 포함하는 명령은 바로 움직이지 않고 대기할 수 있고, 어드레스 변환 정보의 부재로 인해 다음 스테이지로 진행할 수 없다. 상기 상황에서, 미스가 발생한 포인트 위의 모든 스테이지들은 또한 대기해야 하며, 따라서 상당히 비효율적이다. TLB 미스에 응답하여 채용된 또 다른 측정은 TLB 액세스 포인트 이전의 스테이지에서 명령을 중단하지 않고 손실된 명령을 플러시하는 것일 수 있다. 상기 경우에, 다수의 미스들이 동일한 명령에 대하여 발생할 수 있고, 다수의 플러시들을 필요로 한다. 이와 같은 상황은 비효율적일 수 있다.
프로세서는 멀티스테이지 파이프라인을 구비할 수 있고, TLB 및 TLB 제어기를 포함할 수 있다. TLB는 가상 어드레스들을 물리적인 어드레스들로 변환되도록 하는 어드레스 변환 정보를 저장하도록 구성된다. TLB는 TLB에 제공된 명령의 가상 어드레스가 TLB로부터 손실될 때 TLB 미스 신호를 생성하도록 추가로 구성될 수 있다. TLB 제어기는 TLB 미스 신호에 응답하여 TLB 리로드를 개시하도록 추가로 구성될 수 있다. 프로세서는 손실된 가상 어드레스를 가지는 명령을 플러시하도록 구성될 수 있다. 프로세서는 TLB 액세스 포인트 위의 파이프라인의 초기 스테이지에서 명령의 재입력을 발생하는 명령을 리패치하도록 추가로 구성될 수 있다. TLB 리로드의 개시 및 명령의 플러시/리패치 모두는 파이프라인을 즉시 중단하지 않고 동시에 수행될 수 있다. 프로세서는 TLB 리로드가 종료될 때까지 TLB 액세스 포인트 위의 파이프라인 내의 포인트에서 리패치된 명령을 고정하도록 추가로 구성되며, 따라서 리패치된 명령은 다음 액세스에서 TLB 내에서 "히트"할 것이다.
멀티스테이지 파이프라인을 구비한 파이프라인 프로세서에서 TLB를 동작시키는 방법은 상기 TLB로부터 TLB 미스 신호를 수신하는 단계를 포함할 수 있다. TLB 미스 신호는 명령의 가상 어드레스에 대한 어드레스 변환 정보가 상기 TLB 내에 존재하지 않음(absence)을 표시한다. 상기 방법은 또한 상기 TLB 미스 신호에 응답하여 TLB 리로드를 개시하는 단계를 포함한다. 상기 방법은 또한 명령을 플러시하는 단계 및 상기 명령을 리패치하는 단계를 포함하며, 따라서 명령은 TLB 미스 신호에 응답하여 TLB 액세스 포인트 위의 파이프라인의 초기 단계에서 재입력된다. TLB 리로드의 개시 및 명령의 플러시/리패치는 파이프라인을 즉시 중단하지 않고 동시에 수행될 수 있다. 방법은 또한 TLB 리로드가 종료될 때까지 TLB 액세스 포인트 위의 파이프라인 내의 포인트에서 리패치된 명령을 고정하는 단계를 포함하며, 따라서 리패치된 명령은 다음 액세스에서 TLB 내에서 "히트"할 것이다.
도 1은 가상 메모리 시스템 내에서 동작하는 TLB를 개략적으로 도시한다.
도 2는 TLB 미스 신호에 응답하여 파이프라인을 중단하지 않고 TLB 리로드 프로세스를 개시하도록 구성된 TLB 제어기를 구비한 파이프라인 프로세서의 개략도이다.
도 3은 TLB 미스에 응답하는 방법의 흐름도이다.
도면을 참조하여 하기에 설명되는 실시예는 프로세서 내의 TLB를 동작시키는 방법 및 프로세서의 다양한 실시예들을 설명하기 위한 것이지만, 본 명세서에 개시된 본 발명의 개념들이 실행될 수 있는 실시예들만을 표시하도록 의도된 것은 아니다. 실시예는 설명되는 내용에 대한 이해를 허용하기 위해 특정 세부 사항들을 포함한다. 그러나, 몇몇 실시예들에서, 하나 또는 그 이상의 특정 세부 사항들이 요구되지 않는 것이 당업자에 의해 인식되어야 한다. 몇몇 경우들에서, 공지된 구조들 및 컴포넌트들은 제공되는 개념들을 더 명확하게 설명하기 위해 블럭 다이어그램 형태로 도시된다.
도 1은 가상 메모리 시스템 내에서 동작하는 TLB를 개략적으로 도시한다. 가상 메모리 시스템들에서 맵핑들(또는 변환들)은 일반적으로 가상의(또는 "선형"의) 어드레스 공간 및 물리적인 어드레스 공간 사이에서 수행될 수 있다. 가상 어 드레스 공간은 일반적으로 프로세서에 의해 생성된 모든 가상 어드레스들(22)의 세트를 지칭한다. 물리적인 어드레스 공간은 일반적으로 프로세서의 물리적인 메모리(30) 내에 상주하는 데이터에 대한 모든 물리적인 어드레스들의 세트, 즉 물리적인 메모리(30) 내의 특정 위치에 기록하거나 이로부터 판독하기 위해 메모리 버스에 제공되는 어드레스들을 지칭한다.
호출된 가상 메모리 시스템 내에서, 데이터는 공통으로 페이지들이라 지칭되는 고정-길이 유니트들(31)로 구성된다. 가상 어드레스 공간 및 물리적인 어드레스 공간은 연속하는 페이지 어드레스들의 블럭으로 분할될 수 있다. 각각의 가상 페이지 어드레스는 가상 페이지 번호를 제공하며, 각각의 물리적인 페이지 어드레스는 데이터의 특정 페이지(31)의 메모리(30) 내의 위치를 표시할 수 있다. 일반적인 페이지 크기는 예를 들면, 약 4 킬로 바이트가 될 수 있지만, 서로 다른 페이지 크기들이 사용될 수 있다. 물리적인 메모리(30) 내의 페이지 테이블(20)은 가상 메모리 시스템의 모든 가상 페이지 어드레스들에 상응하는 물리적인 페이지 어드레스들을 포함할 수 있으며, 즉 가상 어드레스 공간 내의 모든 가상 페이지 어드레스들에 대하여 상응하는 물리적인 페이지 어드레스들과 가상 페이지 어드레스들 사이에서의 맵핑들을 포함할 수 있다. 일반적으로, 페이지 테이블(20)은 다수의 페이지 테이블 엔트리들(PTEs; 21)을 포함할 수 있고, 각각의 PTE(21)는 특정 가상 어드레스에 상응하는 물리적인 메모리(30) 내의 페이지(31)를 가리킨다.
물리적인 메모리(30) 내의 페이지 테이블(20) 내에 저장된 PTEs(21)에 액세스하는 것은 일반적으로 메모리 버스 변환들을 필요로 할 수 있고, 상기 변환들은 프로세서 사이클 시간 및 전력 소비와 관련하여 비용이 들 수 있다. 메모리 버스 변환들의 횟수는 물리적인 메모리(30) 보다 TLB(10)에 액세스함으로써 감소될 수 있다. 전술된 것과 같이, TLB(10)는 가상 및 물리적인 어드레스들 사이의 최근 맵핑들을 저장하는 어드레스 변환 캐시이다. TLB(10)는 일반적으로 페이지 테이블(20) 내에 저장된 가상-대-물리적인 어드레스 매핑들의 서브세트를 포함한다. TLB 액세스들의 효율을 증가시키기 위해, TLB들의 다수 레벨들(비도시)은 메모리 캐시의 다수 레벨들과 동시에 사용되고 실행될 수 있으며, 하위 레벨의 TLB는 일반적으로 상위 레벨 TLB와 비교할 때 더 작고 더 빠를 수 있다. TLB(10)는 일반적으로 다수의 TLB 엔트리들(12)을 포함할 수 있다. 각각의 TLB 엔트리(12)는 태그 필드(14) 및 데이터 필드(16)를 가질 수 있다. 태그 필드(14)는 가상 페이지 어드레스들의 높은 차수 비트들 중 몇몇을 태그로서 포함할 수 있다. 데이터 필드(16)는 태그된 가상 페이지 어드레스에 상응하여 물리적 페이지 어드레스를 표시할 수 있다.
호출된 가상 메모리 시스템은 전술된 것과 같이 멀티스테이지 파이프라인을 가지는 파이프라인 프로세서 내에서 사용될 수 있다. 파이프라인은 하나 이상의 동작이 동시에 수행될 수 있도록 하드웨어를 배치함으로써 하드웨어의 성능을 증가시킬 수 있다. 상기 방식에서, 단위 시간당 수행되는 동작들의 횟수는 증가될 수 있지만, 임의의 주어진 동작을 종료하는데 요구되는 시간 량은 동일하게 유지될 수 있다. 파이프라인 프로세서에서, 프로세서 내의 동작들의 시퀀스는 다수의 세그먼트들 또는 스테이지들로 분할될 수 있고, 각각의 스테이지는 명령 또는 동작의 서 로 다른 부분을 동시에 실행한다. 다수의 스테이지들은 파이프를 형성하기 위해 연결되는 것으로 보여질 수 있다. 일반적으로, 파이프라인 내의 각각의 스테이지는 하나의 클럭 사이클 내에 그 동작을 종료하는 것으로 예측될 수 있다. 중간 저장 버퍼는 하나의 스테이지로부터 다음 스테이지로 통과되는 정보를 저장하기 위해 공통으로 사용될 수 있다.
프로그램의 실행 동안 명령이 상응하는 물리적인 어드레스로 변환되어야 하는 가상 어드레스(22)를 가질 때, TLB(10)는 TLB(10) 내에 저장된 TLB 엔트리들(12) 사이에서 가상 어드레스(22)를 검색하기 위해 액세스 될 수 있다. 가상 어드레스(22)는 일반적으로 가상 페이지 번호를 포함하며, 상기 가상 페이지 번호는 상응하는 물리적인 페이지 어드레스를 검색하기 위해 TLB(10) 내에서 사용될 수 있다. 특히, 프로세서에 의해 생성된 각각의 가상 어드레스는 명령 패치를 위한 것인지 또는 피연산자 패치/저장 연산을 위한 것인지에 따라 오프셋(일반적으로 가장 어드레스의 하위 차수 비트들에 의해 표시되는)이 뒤따르는 가상 페이지 번호(일반적으로 가상 어드레스의 상위 차수 비트들에 의해 표시됨)를 포함하는 것으로 보여질 수 있다. 가상 어드레스의 오프셋 부분은 페이지 내에서 특정 바이트 또는 워드의 위치를 특정할 수 있다.
만약 TLB(10)가 그 TLB 엔트리들 사이에서 TLB에 제공된 가상 어드레스(22) 내에 포함되는 가상 페이지 번호에 상응하는 특정 물리적인 페이지 어드레스를 포함하면, TLB "히트"가 발생할 수 있고, 물리적인 페이지 어드레스는 TLB(10)로부터 검색될 수 있다. 만약 TLB(10)가 TLB에 제공된 가상 어드레스(22) 내의 가상 페이 지 번호에 상응하는 특정 물리적인 페이지 어드레스를 포함하지 않으면, TLB "미스" 가 발생할 수 있고, 물리적인 메모리(30) 내의 페이지 테이블(20)의 검색(및/또는 임의의 경우에 상위-레벨 TLB들의 검색)이 수행되어야 할 수 있다. 물리적인 페이지 어드레스가 페이지 테이블(20)로부터 결정되면, 가상 페이저 어드레스에 상응하는 물리적인 페이지 어드레스는 TLB(10)로 로딩될 수 있고, TLB(10)는 가상 페이지 어드레스(22)와 다시 한번 액세스될 수 있다. 요구되는 물리적인 페이지 어드레스가 현재 TLB(10) 내에 로딩되어 있기 때문에, TLB 액세스는 상기 시간에 TLB "히트"를 발생함, 최근에 로딩된 물리적인 페이지 어드레스는 TLB(10)의 출력에서 생성될 수 있다.
도 2는 파이프라인을 즉시 중단하지 않고 TLB 리로드를 개시함으로써 TLB 미스 신호에 응답하도록 구성된 파이프라인 프로세서(100)의 개략도이다. 개관에서, 프로세서(100)는 다수의 페이지들 내에 명령들 및 데이터를 저장하도록 구성된 메모리(130); 상기 메모리(130) 내에 저장된 데이터 및 명령들의 서브 세트로의 고속 액세스를 제공하도록 구성된 데이터 캐시(D-캐시;117) 및 명령 캐시(I-캐시;127); 가상 어드레스들로부터 물리적인 어드레스들로의 최근의 변환들을 저장하도록 구성된 TLB(122); 및 상기 TLB(122)의 동작을 제어하도록 구성된 TLB 제어기(140)를 포함할 수 있다.
TLB 제어기(140)는 도 2에 도시된 것과 같이 프로세서(100) 내의 중앙 처리 유니트(CPU;150)의 일부가 될 수 있다. 다른 실시예들에서, TLB 제어기(140)는 프로세서(100)의 CPU(150) 근처에 위치될 수 있다. 프로세서(100)의 설명되는 실시 예에서, TLB(1220)는 프로세서의 CPU 근처에 위치되지만, CPU 내에 위치되는 것은 아니다. 예를 들어, TLB(122)는 CPU 외부에 위치된 메모리 관리 유니트(비도시) 내에 위치될 수 있다. 메모리(130)는 프로세서(100)에 의해 생성된 가상 페이지 어드레스들에 상응하는 물리적인 페이지 어드레스들을 저장하는 페이지 테이블(120)을 포함할 수 있다. TLB는 데이터-TLB(DTLB) 및/또는 명령-TLB(ITLB) 및/또는 통합 TLB(UTLB)이 될 수 있다.
프로세서(100)는 요구되는 어드레스 변환 메카니즘이 TLB(122) 내에서 손실되는 경우에 정확한 어드레스 변환 정보를 결정하기 위해 추가로 TLB 리로드를 실행하도록 구현된 TLB 리로드 메카니즘(170)을 포함한다. TLB 리로드 메카니즘(170)은 예를 들면 하드웨어 페이지 테이블 걷기(walk)를 수행하기 위해 논리 상태 기계(비도시)를 사용하여 메모리(130) 내의 페이지 테이블(120)로부터 어드레스 변환 정보를 검색하기 위해 메모리 액세스를 실행할 수 있다. 몇몇 실시예들(비도시)에서, 프로세서(100)는 하나 이상의 상위 레벨 TLB들을 포함할 수 있다. 상기 경우들에서, 만약 주어진 액세스가 TLB(122) 내에서 "미스"를 발생하면, TLB 리로드 메카니즘(170)은 메모리(130)에 액세스하기 전에 먼저 상위 레벨 TLB들에 액세스할 수 있다.
프로세서(100)은 멀티스테이지 파이프라인 프로세서이며, CPU(150) 내의 파이프라인 스테이지들의 예시적인 시퀀스는 도 2에 점선을 사용하여 개념적으로 도시된다. 도 2에 도시된 스테이지들의 시퀀스는 패치 스테이지(210), 디코딩 스테이지(220), 실행 스테이지(230), 메모리 액세스 스테이지(240), 및 후기록(write back) 스테이지(250)를 포함한다. 도 2의 예시적인 시퀀스는 설명을 위해 도시된다. 더 작거나 많은 수의 파이프라인 스테이지들을 가지는 다른 선택적인 시퀀스들이 가능하다. 패치 스테이지(210) 동안 명령을 패치하고, 디코딩 스테이지(220)에서 명령을 디코딩하는 등등과 같이 각각의 스테이지 내에서의 기능은 일반적으로, 하나의 CPU 클럭 사이클 내에서 발생한다.
도 2는 하나의 CPU 클럭 사이클 내에서 각각의 스테이지에 속하는 기능을 수행하도록 각각 구성된 하드웨어 유니트들을 도시한다. 하드웨어 유니트들은 I-캐시(127) 또는 메인 메모리(130)로부터 하나 또는 그 이상의 명령들을 패치하도록 구성된 적어도 하나의 패치 유니트(211); 상기 패치 유니트(211)에 의해 패치된 명령들을 디코딩하도록 구성된 적어도 하나의 디코딩 유니트(221); 상기 디코딩 유니트(221)에 의해 디코딩된 하나 또는 그 이상의 명령들을 실행하도록 구성된 적어도 하나의 실행 유니트(231); 메모리 액세스들을 수행하도록 구성된 적어도 하나의 메모리 유니트(241); 및 메모리(130)로부터 검색된 데이터를 실행 유니트(231) 내에 후기록하도록 구성된 적어도 하나의 후기록 유니트(251)를 포함할 수 있다. 히트/미스 표시자 레지스터 또는 버퍼(135)는 패치 유니트(211)에 의해 패치된 명령들에 의해 I-캐시로의 액세스들을 발생하는 히트들 또는 미스들을 표시하도록 제공된다.
파이프라인은 하나 또는 그 이상의 데이터 액세스 명령들이 어드레스 변환 정보를 탐색하기 위해 TLB(122)에 액세스할 수 있는, 화살표(242)로 표시된 TLB 액세스 포인트(242)를 포함할 수 있다. 만약 요구되는 어드레스 변환 정보가 TLB(122) 내에 존재하면, TLB(122)는 TLB 히트 신호를 생성할 수 있다. 어드레스 변환 정보는 TLB(122)로부터 검색될 수 있고, D-캐시(117)로 전송될 수 있다. 데이터 버퍼 및/또는 어드레스 버퍼(비도시)는 D-캐시(117)에 결합되어 어드레스 변환 정보 및 데이터에 대한 일시적인 저장을 제공한다.
TLB(122)는 TLB(122)에 제공되는 명령에 의해 요청되는 데이터의 가상 어드레스에 대한 어드레스 변환 정보가 TLB(122) 내의 임의의 엔트리들로부터 손실될 때 TLB 미스 신호를 생성하도록 구성된다. 명령은 패치 유니트(211)에 의해 I-캐시(127)로부터 패치되고, 디코딩 유니트(221)에 의해 디코딩되고, 실행 유니트(231)에 의해 실행되는 프로세스 내에 있을 수 있다.
TLB 미스 신호에 응답하여, 미스가 발생한 포인트에서 파이프라인을 중단하는 것이 공통적인 실행일 수 있다. TLB 미스 신호를 발생한 가상 어드레스를 가지는 명령은 움직이지 않고 대기할 수 있으며, 어드레스 변환 정보의 결핍으로 인해 파이프라인 내의 다음 스테이지로 진행할 수 없다. 상기와 같은 상황에서, 미스가 발생한 포인트에서의 모든 스테이지들은 대기하여야 하며, 따라서 상당히 비효율적이다. 선택적으로 TLB 신호를 발생한 명령은 중단 및 리패치되지 않고 플러시될 수 있다. 상기 프로세스는 다수의 플러시들을 요구하는 동일한 명령에 대한 다수의 미스들을 발생하며, 따라서 레이턴시 및 비효율성이 증가할 수 있다.
도 2에 도시된 프로세서(100)의 실시예에서, TLB 제어기(140)는 TLB(122)로부터의 TLB 미스 신호에 응답하여 파이프라인을 즉시 중단하지 않고 TLB 리로드를 개시하도록 구성된다. TLB 리로드 프로세스는 요구되는 어드레스 변환 정보를 결정하기 위해 개시된다.
프로세서(100)는 파이프라인의 상부(즉, 도 2의 초기 스테이지(210)에서 TLB 미스를 발생한 명령의 재입력을 유발하는 손실된 명령을 플러시 및 리패치한다. TLB 리로드의 개시 및 손실된 명령의 플러시/리패치는 파이프라인을 즉시 중단하지 않고 실질적으로 동시에 수행된다. TLB 리로드 프로세스가 종료되는 것을 대기하기 위해 파이프라인을 중단하는 대신에, 프로세서(100)는 공급(flow)할 수 있는 것을 공급하라는 명령을 플러시하고, 상기 명령을 리패치 한다. 원래의 TLB 미스 신호를 발생한 명령은 따라서 제 2 시간 동안 파이프라인의 연속하는 단계들을 통과하며, TLB 리로드 프로세스가 종료할 때까지 TLB 액세스 포인트 위의 파이프라인 스테이지에 고정된다.
프로세서(100)는 TLB 리로드가 종료될 때까지 TLB 액세스 포인트(242) 위의 파이프라인 내의 포인트에 리패치된 명령을 고정하도록 추가로 구성된다. 명령이 TLB 액세스 포인트(242) 위의 포인트에 도달할 때까지, 파이프라인 중단 횟수 및 기간은 상당히 감소될 수 있다.
TLB 리로드 프로세스 동안, TLB 리로드 메카니즘(170)은 메모리(130)에 액세스하고, 상기 메모리(130) 내의 페이지 테이블(120)로부터 TLB 미스를 발생한 명령의 가상 어드레스에 대한 어드레스 변환 정보를 검색하며, 검색된 어드레스 변환 정보를 TLB(122) 내에 기록한다. 하나 또는 그 이상의 상위-레벨 TLBs(비도시)가 제공되는 프로세서의 일 실시예에서, TLB 리로드 메카니즘(170)은 물리적인 메모리(130)에 액세스하기 전에 먼저 상위 레벨 TLB에 액세스한다(최저 레벨의 TLB에서 시작하여 TLB 레벨을 계속해서 진행시킴).
TLB 리로드 메카니즘이 종료되면, 프로세서(100)는 TLB 액세스 포인트 위의 파이프라인 스테이지에서 고정된 리패치된 명령을 해제한다. 메모리(130)로부터 검색된 어드레스 변환 정보는 현재 TLB(122)에 기록되어 있기 때문에, TLB(122)는 현재 리패치된 명령의 가상 어드레스에 대하여 요구되는 어드레스 변환 정보를 포함한다. 따라서, 다음에 명령(원래 TLB 미스를 발생한)은 TLB(122)에 제공되고, TLB 미스 대신에 TLB 히트가 발생한다. 따라서, 리패치된 명령은 TLB 미스를 발생할 수 없다.
프로세서(100)는 파이프라인의 상부에서 미리 결정된 횟수 동안 명령(초기 TLB 미스를 발생한)을 재입력하도록 구성된다. 프로세서(100)의 일 실시예에서, 미리 결정된 횟수는 1이 될 수 있다.
도 3은 TLB 미스에 응답하는 방법(300)의 흐름도이다. 단계(302)에서, TLB 미스 신호는 명령의 가상 어드레스에 대한 어드레스 변환 정보를 검색하기 위해 TLB에 액세스한 명령에 응답하여 수신된다. TLB 미스 신호는 프로세서의 CPU 내의 또는 근처의 TLB 제어기 또는 CPU 내의 몇몇 다른 제어 레지스터에 의해 수신될 수 있다. TLB 미스 신호는 명령의 가상 어드레스에 대하여 요구되는 어드레스 변환 정보가 TLB(122) 내에 존재하지 않는(absense) 것을 표시한다.
단계(304)에서, 파이프라인을 즉시 중단하지 않고 메모리 또는 상위 레벨의 TLB에 어드레스 변환 정보를 요구함으로써 TLB 리로드가 개시된다. 단계(306)에서, TLB 미스 신호를 발생한 명령은 TLB 리로드 프로세스와 실질적으로 동시에 플러시 및 리패치된다. 단계(308)에서 가상 어드레스에 대하여 요구되는 어드레스 변환 정보는 메모리 또는 상위 레벨 TLB로부터 검색되며, 검색된 어드레스 변환 정보는 TLB 내에 기록된다. 단게(310, 311)에서, 리패치된 명령은 TLB 리로드 프로세스가 종료될 때까지 TLB 액세스 포인트 위의 파이프라인 내의 포인트에 고정된다. 마지막으로, 단계(312)에서 TLB 리로드 프로세스가 종료되면 리패치된 명령은 해제된다. 요구되는 어드레스 변환 정보가 단계(306)에서 TLB 내에 기록되었기 때문에, TLB 미스는 더 이상 발생하지 않는다.
결국, 파이프라인을 즉시 중단하지 않고 TLB 미스에 응답하기 위한 장치 및 방법이 설명되었다. TLB 리로드는 TLB 미스에 응답하여 파이프라인을 즉시 중단하지 않고 개시되며, TLB 미스를 발생한 명령의 플러시 및 리패치는 TLB 리로드 프로세스와 동시에 수행된다. 리패치된 명령은 TLB 리로드 프로세스가 종료될 때까지 TLB 액세스 포인트 위의 파이프라인 내의 포인트에 고정된다. 명령에 대한 필수적인 어드레스 변환 정보는 TLB 리로드 동안 TLB 내에 기록되기 때문에 리패치된 명령은 해제될 수 있고, 더 이상 TLB 미스가 발생하지 않는다.
개시된 실시예들의 전술된 설명은 당업자가 전술된 시스템을 실행하거나 사용할 수 있도록 제공된다. 상기 실시예들에 대한 다양한 변형들이 당업자에게 용이하게 인식될 것이며, 본 명세서에서 정의된 일반적인 원칙들은 본 명세서에 개시된 발명의 개념들의 사상 및 정신을 벗어나지 않고 다양한 실시예들에 적용될 수 있다. 따라서 본 발명은 본 명세서에 도시된 실시예들에 제한되는 것이 아니라 첨구 범위들과 일치하는 전체 영역을 따르며, 단일 엘리먼트에 대한 참조는 "하나 또는 그 이상"이라고 언급되지 않는다고 해서 "하나 및 단 하나"를 의미하는 것은 아 니다. 당업자에게 공지된 본 개시물을 통해 설명되는 다양한 엘리먼트들의 요소들에 대한 모든 구성적이고 기능적인 등가물은 본 명세서에서 참조로서 통합되며 청구 범위들에 의해 포함된다. 또한, 본 명세서에 개시된 그 어떤 것도 상기 개시물이 청구 범위들에 명확하게 언급되어 있는 것과 관계없이 공개된다. 엘리먼트가 "수단"을 사용하여 언급되지 않거나, 방법 청구항에서 "단계"를 사용하여 언급되지 않는다면, 어떤 엘리먼트도 35 U.S.C. §112 6항의 조항들에서 고려되지 않는다.

Claims (22)

  1. 멀티스테이지 파이프라인을 구비한 프로세서로서,
    가상 어드레스들이 물리적인 어드레스들로 변환되도록 하는 어드레스 변환 정보를 저장하도록 구성된 변환 색인 버퍼(TLB) - 상기 TLB는 상기 TLB에 제공된 명령의 가상 어드레스가 상기 TLB로부터 손실되었을 때 TLB 미스(miss) 신호를 생성하도록 추가로 구성됨 - ; 및
    상기 TLB 미스 신호에 응답하여 상기 파이프라인을 즉시 중단하지 않고 TLB 리로드(reload)를 개시하도록 구성된 TLB 제어기를 포함하고,
    상기 프로세서는 상기 TLB 리로드와 실질적으로 동시에 상기 손실된 가상 어드레스를 가지는 명령을 플러시(flush) 및 리패치(refetch)하도록 구성되는 프로세서.
  2. 제 1항에 있어서,
    상기 파이프라인은 하나 또는 그 이상의 명령들이 상기 TLB를 액세스하도록 허용되는 TLB 액세스 포인트를 포함하며,
    상기 프로세서는 상기 TLB 리로드가 종료될 때까지 상기 리패치된 명령을 상기 TLB 액세스 포인트 위에 고정하도록 추가로 구성되는 것을 특징으로 하는 프로세서.
  3. 제 1항에 있어서,
    상기 프로세서는 상기 파이프라인의 초기 스테이지에서 상기 명령을 재입력함으로써 상기 명령을 리패치하도록 추가로 구성되는 것을 특징으로 하는 프로세서.
  4. 제 3항에 있어서,
    상기 프로세서는 상기파이프라인의 초기 스테이지에서 상기 명령을 오직 미리 결정된 횟수만큼 재입력하도록 추가로 구성되는 것을 특징으로 하는 프로세서.
  5. 제 4항에 있어서,
    상기 미리 결정된 횟수는 1인 것을 특징으로 하는 프로세서.
  6. 제 1항에 있어서,
    다수의 페이지들 내에 데이터를 저장하도록 구성된 메모리를 더 포함하는 것을 특징으로 하는 프로세서.
  7. 제 6항에 있어서,
    상기 메모리 내에 저장된 데이터의 서브 세트를 저장하도록 구성된 데이터 캐시를 더 포함하는 것을 특징으로 하는 프로세서.
  8. 제 6항에 있어서,
    상기 메모리는 다수의 명령들을 저장하도록 추가로 구성되는 것을 특징으로 하는 프로세서.
  9. 제 8항에 있어서,
    상기 메모리 내에 저장된 명령들의 서브 세트를 저장하도록 구성된 명령 캐시를 더 포함하는 것을 특징으로 하는 프로세서.
  10. 제 6항에 있어서,
    상기 TLB 제어기는 상기 TLB 리로드 동안 상기 손실된 가상 어드레스에 대한 어드레스 변환 정보를 상기 메모리로부터 검색하고, 상기 어드레스 변환 정보를 상기 TLB 내에 기록하도록 추가로 구성되는 것을 특징으로 하는 프로세서.
  11. 제 6항에 있어서,
    상기 다수의 페이지들 중 각각의 페이지는 물리적인 페이지 어드레스를 가지며, 상기 TLB 내에 포함된 상기 어드레스 변환 정보는 가상 어드레스들이 상기 다수의 페이지들의 물리적인 페이지 어드레스들로 변환되도록 하는 것을 특징으로 하는 프로세서.
  12. 제 1항에 있어서,
    상기 TLB는 데이터 TLB(DTLB), 명령-TLB(ITLB) 및 통합된-TLB(UTLB) 중 적어도 하나를 포함하는 것을 특징으로 하는 프로세서.
  13. 제 1항에 있어서,
    상기 멀티스테이지 파이프라인은 적어도 패치 스테이지, 디코딩 스테이지, 실행 스테이지, 메모리 액세스 스테이지 및 후기록(write-back) 스테이지를 포함하는 것을 특징으로 하는 프로세서.
  14. 제 1항에 있어서,
    명령 레지스터로부터 하나 또는 그 이상의 명령들을 패치하도록 구성된 적어도 하나의 패치 유니트;
    상기 패치 유니트에 의해 패치된 상기 하나 또는 그 이상의 명령들을 디코딩하도록 구성된 적어도 하나의 디코딩 유니트; 및
    상기 디코딩 유니트에 의해 디코딩된 상기 하나 또는 그 이상의 명령들을 실행하도록 구성된 적어도 하나의 실행 유니트를 더 포함하는 것을 특징으로 하는 프로세서.
  15. 멀티스테이지 파이프라인을 구비한 파이프라인 프로세서에서 TLB를 동작시키는 방법으로서,
    상기 TLB로부터 TLB 미스 신호 - 상기 TLB 미스 신호는 명령의 가상 어드레 스에 대한 어드레스 변환 정보가 상기 TLB 내에 존재하지 않음(absence)을 표시함 - 를 수신하는 단계;
    상기 TLB 미스 신호에 응답하여 상기 파이프라인을 즉시 중단하지 않고 TLB 리로드를 개시하는 단계;
    상기 명령을 플러시하는 단계; 및
    상기 명령을 리패치하는 단계를 포함하는 방법.
  16. 제 15항에 있어서,
    상기 파이프라인은 하나 또는 그 이상의 명령들이 상기 TLB를 액세스하도록 허용되는 TLB 액세스 포인트를 포함하며,
    상기 TLB 리로드가 종료될 때까지 상기 리패치된 명령을 상기 TLB 액세스 포인트 위에 고정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  17. 제 15항에 있어서,
    상기 명령을 리패칭 하는 단계는 상기 파이프라인의 초기 스테이지에서 상기 명령을 재입력하는 단계를 포함하는 것을 특징으로 하는 방법.
  18. 제 17항에 있어서,
    상기 파이프라인의 초기 스테이지에서 상기 명령을 재입력하는 단계는 상기파이프라인의 초기 스테이지에서 상기 명령을 오직 미리 결정된 횟수만큼 재입력하 는 단계를 포함하는 것을 특징으로 하는 방법.
  19. 제 18항에 있어서,
    상기 미리 결정된 횟수는 1인 것을 특징으로 하는 방법.
  20. 제 15항에 있어서,
    상기 프로세서는 메모리를 포함하고,
    상기 TLB 리로드 동안 상기 가상 어드레스에 대한 어드레스 변환 정보를 상기 메모리로부터 검색하는 단계 및 상기 어드레스 변환 정보를 상기 TLB 내에 기록하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  21. 제 15항에 있어서,
    상기 프로세서는 상기 손실된 신호가 수신되는 TLB와 비교하여 상위-레벨의 TLB인 적어도 하나의 추가 TLB를 포함하며,
    상기 가상 어드레스에 대한 어드레스 변환 정보를 상기 상위-레벨 TLB로부터 검색하는 단계 및 상기 어드레스 변환 정보를 상기 TLB 내에 기록하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  22. 제 15항에 있어서,
    상기 파이프라인은 적어도 패치 스테이지, 디코딩 스테이지, 실행 스테이지, 메모리 액세스 스테이지 및 후기록 스테이지를 포함하는 것을 특징으로 하는 방법.
KR1020087020292A 2006-01-20 2007-01-22 변환 색인 버퍼 조작 KR100974775B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/336,264 US7721067B2 (en) 2006-01-20 2006-01-20 Translation lookaside buffer manipulation
US11/336,264 2006-01-20

Publications (2)

Publication Number Publication Date
KR20080095253A true KR20080095253A (ko) 2008-10-28
KR100974775B1 KR100974775B1 (ko) 2010-08-06

Family

ID=38091746

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087020292A KR100974775B1 (ko) 2006-01-20 2007-01-22 변환 색인 버퍼 조작

Country Status (6)

Country Link
US (1) US7721067B2 (ko)
EP (1) EP1974255B1 (ko)
JP (2) JP5329234B2 (ko)
KR (1) KR100974775B1 (ko)
CN (1) CN101375245B (ko)
WO (1) WO2007085009A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7721067B2 (en) * 2006-01-20 2010-05-18 Qualcomm Incorporated Translation lookaside buffer manipulation
US20070180158A1 (en) * 2006-02-01 2007-08-02 International Business Machines Corporation Method for command list ordering after multiple cache misses
US20070180157A1 (en) * 2006-02-01 2007-08-02 International Business Machines Corporation Method for cache hit under miss collision handling
US7809893B2 (en) * 2007-07-12 2010-10-05 Apple Inc. Method and apparatus for refetching data
US8433855B2 (en) * 2008-02-15 2013-04-30 International Business Machines Corporation Serializing translation lookaside buffer access around address translation parameter modification
US9569349B2 (en) * 2008-12-19 2017-02-14 Ati Technologies Ulc Method and apparatus for reallocating memory content
CN102132263A (zh) * 2009-06-24 2011-07-20 松下电器产业株式会社 存储器访问控制装置、集成电路、存储器访问控制方法及数据处理装置
JP6273733B2 (ja) * 2013-09-20 2018-02-07 富士通株式会社 演算処理装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
US10515671B2 (en) 2016-09-22 2019-12-24 Advanced Micro Devices, Inc. Method and apparatus for reducing memory access latency
US10127159B1 (en) * 2017-07-13 2018-11-13 International Business Machines Corporation Link consistency in a hierarchical TLB with concurrent table walks
US11061822B2 (en) * 2018-08-27 2021-07-13 Qualcomm Incorporated Method, apparatus, and system for reducing pipeline stalls due to address translation misses
CN114827076B (zh) * 2022-06-30 2022-09-13 沐曦集成电路(上海)有限公司 一种基于地址翻译单元的地址返回方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6076153A (en) * 1997-12-24 2000-06-13 Intel Corporation Processor pipeline including partial replay
US6205542B1 (en) * 1997-12-24 2001-03-20 Intel Corporation Processor pipeline including replay
US6934832B1 (en) * 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6745297B2 (en) * 2000-10-06 2004-06-01 Broadcom Corporation Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent
US7721067B2 (en) * 2006-01-20 2010-05-18 Qualcomm Incorporated Translation lookaside buffer manipulation

Also Published As

Publication number Publication date
JP2012230683A (ja) 2012-11-22
JP2009524166A (ja) 2009-06-25
KR100974775B1 (ko) 2010-08-06
CN101375245A (zh) 2009-02-25
JP5329234B2 (ja) 2013-10-30
US20070174584A1 (en) 2007-07-26
WO2007085009A1 (en) 2007-07-26
US7721067B2 (en) 2010-05-18
EP1974255B1 (en) 2018-08-22
CN101375245B (zh) 2013-05-01
EP1974255A1 (en) 2008-10-01

Similar Documents

Publication Publication Date Title
KR100974775B1 (ko) 변환 색인 버퍼 조작
US5586295A (en) Combination prefetch buffer and instruction cache
US8533437B2 (en) Guaranteed prefetch instruction
US5793941A (en) On-chip primary cache testing circuit and test method
US20080294867A1 (en) Arithmetic processor, information procesing apparatus and memory access method in arithmetic processor
US8984264B2 (en) Precise data return handling in speculative processors
US20090006803A1 (en) L2 Cache/Nest Address Translation
US11176055B1 (en) Managing potential faults for speculative page table access
US7680985B2 (en) Method and apparatus for accessing a split cache directory
JP2004503870A (ja) 変換索引バッファのフラッシュフィルタ
US20070005933A1 (en) Preventing multiple translation lookaside buffer accesses for a same page in memory
JPH07200399A (ja) マイクロプロセッサ、およびマイクロプロセッサにおいてメモリにアクセスするための方法
JPH10198563A (ja) マイクロプロセッサ内の動的にロード可能なパターン履歴表
JPH0619793A (ja) キャッシュ・アクセスのための仮想アドレス変換予測の履歴テーブル
US20070094476A1 (en) Updating multiple levels of translation lookaside buffers (TLBs) field
US10067875B2 (en) Processor with instruction cache that performs zero clock retires
US7937530B2 (en) Method and apparatus for accessing a cache with an effective address
US20110320789A1 (en) Method and Apparatus for High Performance Cache Translation Look-Aside Buffer TLB Lookups Using Multiple Page Size Prediction
KR100234647B1 (ko) 인스트럭션 프리페치 방법 및 데이터 처리 시스템
US11151054B2 (en) Speculative address translation requests pertaining to instruction cache misses
EP3321810A1 (en) Processor with instruction cache that performs zero clock retires
JP2001344152A (ja) キャッシュメモリ装置
TW201738736A (zh) 依據快取線決定記憶體所有權以偵測自修正程式碼的處理器與方法
JP2000029693A (ja) 命令キャッシュ装置及びその制御方法

Legal Events

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

Payment date: 20130729

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140730

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 9