KR101145557B1 - 변환 색인 버퍼 및 가상 어드레스 룩업 기능 실행 방법 - Google Patents

변환 색인 버퍼 및 가상 어드레스 룩업 기능 실행 방법 Download PDF

Info

Publication number
KR101145557B1
KR101145557B1 KR1020057004205A KR20057004205A KR101145557B1 KR 101145557 B1 KR101145557 B1 KR 101145557B1 KR 1020057004205 A KR1020057004205 A KR 1020057004205A KR 20057004205 A KR20057004205 A KR 20057004205A KR 101145557 B1 KR101145557 B1 KR 101145557B1
Authority
KR
South Korea
Prior art keywords
virtual address
translation
line
memory
random access
Prior art date
Application number
KR1020057004205A
Other languages
English (en)
Other versions
KR20050043944A (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 KR20050043944A publication Critical patent/KR20050043944A/ko
Application granted granted Critical
Publication of KR101145557B1 publication Critical patent/KR101145557B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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]
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

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

본 발명에서는 RAM 및 합성 가능 로직(synthesisable logic circuits)에 의해 형성되는 변환 색인 버퍼(translation lookaside buffer)(TLB)에 대해 개시되어 있다. TLB는 반드시 검색되어야 하는 다수의 메모리 위치들의 쌍을 형성하여 수신된 가상 어드레스(virtual address)로부터 물리적 어드레스에 대한 변환을 확인하는 합성 가능 로직 내에 로직을 제공한다. 이러한 로직은 수신된 가상 어드레스를 해싱(hashing)하고 해싱된 가상 어드레스를 이용하여 변환을 제공하는 RAM 내의 하나의 라인을 위치 지정하기 위해 RAM을 색인을 작성하는 해싱 회로(hashing circuit)를 제공한다.

Description

변환 색인 버퍼 및 가상 어드레스 룩업 기능 실행 방법{TRANSLATION LOOKASIDE BUFFER WITH PARTIAL TAG HASHED ACCORDING TO PAGE SIZE INDICATOR}
본 발명은 변환 색인 버퍼(translation lookaside buffers)의 분야에 관한 것으로, 보다 구체적으로는 설계 싸이클을 신속하게 하기 위한 변환 색인 버퍼 아키텍처에 관한 것이다.
현대의 마이크로프로세서 시스템은 전형적으로 가상 어드레스(virtual addressing)를 이용한다. 가상 어드레스는 시스템이 실제 물리적 메모리 공간보다 더 큰 가상 메모리 공간을 효과적으로 생성할 수 있게 한다. 실제 물리적 메모리 공간을 가상 메모리 공간으로 분할하는 프로세스는 페이징(paging)으로 지칭된다. 페이징은 물리적 메모리 공간의 선형 어드레스 공간(linear address space)을 페이지로 지칭되는 고정된 블록으로 분할한다. 페이지는 큰 선형 어드레스 공간이 더 소형의 물리적 메인 메모리와 저렴한 백그라운드 메모리(background memory)로 구현될 수 있게 한다. 이러한 구성은 "가상 메모리(virtual memory)"로 지칭된다. 페이징은 가상 메모리가 백그라운드 메모리와의 사이에서 교환되는 페이지로 메모리를 관리함으로써 구현될 수 있게 한다. 페이징은 감소된 메인 메모리 분할(main memory fragmentation)과, 여러 페이지에 대한 선택적 메모리 기록 정책과, 여러 페이지에 대한 메모리 보호 기법을 변동시키는 것을 포함하는 여러 추가적인 이점을 제공한다. 페이징 메커니즘의 존재는 전형적으로 응용 프로그램이 인식하지 못하는 방식으로 진행된다.
페이지의 크기는 유연성과 성능 사이에서 절충된다. 작은 페이지 크기는 가상 메모리 시스템에 걸쳐 정교한 제어를 가능하게 하지만 페이징 작업에 의한 오버헤드를 증가시킨다. 따라서, 여러 CPU는 페이지 크기의 혼합을 지원하는데, 예를 들면, 특정한 MIPS 구현은 40, 160, 640, 256kB, 1MB, 4MB 및 16MB 페이지의 임의의 조합을 지원한다.
따라서 프로세서는 가상 어드레스를 이용하여 가상 어드레스 공간 내에서 유리하게 작동될 수 있다. 그러나, 종종 이러한 가상 어드레스는 물리적 어드레스, 즉 실제 메모리 위치로 변환되어야 한다. 이와 같이 가상 어드레스의 물리적 어드레스로의 변환을 달성하기 위한 한가지 방법은 규칙적으로 액세스되고, 메인 메모리 내에 저장된 변환 표(translation tables)를 이용하는 것이다. 변환 표는 그 크기가 전형적으로 크기 때문에 메인 메모리 내에 저장된다. 불행하게도, 메인 메모리 내에 저장된 변환 표를 규칙적으로 액세스하는 것은 전체 시스템 성능의 속도를 늦추는 경향이 있다.
현대의 마이크로프로세서 시스템은 때때로 어드레스 변환을 수행하기 위해서 메인 메모리 내의 변환 표를 규칙적으로 액세스할 필요성을 회피하기 위해, 변환 색인 버퍼(TLB)를 이용하여 최근에 생성된 가상 어드레스에서 물리적 어드레스로의 변환을 저장하거나 캐싱(cache)한다. TLB는 특별한 타입의 캐시 메모리이다. 다른 타입의 캐시 메모리에서와 마찬가지로, TLB는 전형적으로 신속하게 액세스 가능하도록 특별히 설계된 비교적 적은 용량의 메모리 저장 장치로 이루어진다. TLB는 전형적으로 캐시 메모리 내에 제공된 태그 어레이(tag array)와 데이터 어레이를 모두 포함한다. 태그 어레이 내에서, 각각의 태그 라인은 가상 어드레스를 저장한다. 다음에 이러한 태그 라인은 가상 어드레스에 대한 물리적 어드레스 변환이 저장되어 있는 데이터 어레이 내의 해당되는 데이터 라인과 연관된다. 따라서, 메인 메모리 내의 변환 표로부터 가상 어드레스의 변환을 탐색하기 전에, 프로세서는 가장 먼저 TLB를 참조하여 가상 어드레스의 물리적 어드레스 변환이 TLB 내에 현재 저장되어 있는지 여부를 판정한다. 가상 어드레스 및 해당되는 물리적 어드레스가 TLB 내에 저장되는 경우에, TLB는 그 출력 포트에서 해당되는 물리적 어드레스를 제공하고, 시간 및 리소스 소모적인 메인 메모리로의 액세스가 회피된다. TLB의 동작을 촉진하고, 그 색인 조건을 감소시키기 위해서, 컨텐츠 어드레스 가능 메모리(content addressable memory : CAM)가 전형적으로 TLB 내에 제공된다. CAM은 병렬 패턴 매칭 회로이다. 동작의 매칭 모드에서, CAM은 매칭되는 대상을 찾는 것과 동시에 그 전체 데이터의 검색을 가능하게 한다.
불행하게도, 종래 기술의 TLB는 CAM을 구현하는 데 있어서 통상적인 회로 설계 기법을 필요로 한다. 각각의 TLB 및 연관된 CAM이 하나의 프로세서 시스템 설계 내에서 동일하게 구현되게 하기 위해서는 상당한 설계 노력이 필요하기 때문에 통상적인 회로 설계를 이용하는 것은 불리하다. 물론, 프로세서가 CAM 회로를 포함하지 않으면, 프로세서로부터의 신호는 칩으로부터 CAM으로 전파되어, 지연이 발생된다.
따라서, 본 발명의 목적은 종래의 합성 가능한 회로 블록으로 이루어진 CAM 아키텍처를 제공하는 것이다.
본 발명에 따르면, 변환 색인 버퍼(TLB)가 제공되는데, 이 변환 색인 버퍼는,
가상 어드레스의 일부분을 수신하는 적어도 하나의 입력 포트와, 랜덤 액세스 메모리와, 레지스터의 세트와, 가상 어드레스의 수신된 부분으로부터 해시값(hash value)을 결정하고, 해시값과 레지스터의 세트 내에 저장된 해시값을 비교하여 가상 어드레스와 관련된 물리적 어드레스가, 랜덤 액세스 메모리 내의 라인 내에 저장되고 레지스터의 세트 중에서 해시값을 저장하는 레지스터와 관련되는 가능성을 판정하는 합성 가능 로직을 포함한다.
본 발명의 일 측면에 따르면, 변환 색인 버퍼가 제공되는데, 이 변환 색인 버퍼는, 랜덤 액세스 메모리와, 메모리 내의 라인과 연관된 제 1 레지스터와, 그 변환이 현재 랜덤 액세스 메모리 내에 저장되어 있는 가상 어드레스 이외의 가상 어드레스를 수신하고, 해시값을 결정하여 상기 해시값을 제 1 레지스터 내에 저장하며, 메모리 내의 라인에 가상 어드레스 및 그 변환을 저장하는 해싱 회로를 포함한다.
본 발명의 다른 측면에 따르면 변환 색인 버퍼가 제공되는데, 이 변환 색인 버퍼는 RAM과, 가상 어드레스로부터 가상 어드레스와 연관된 물리적 어드레스를 검색할 수 있도록 고정된 관계를 갖는 RAM 내의 적어도 하나의 잠재적 어드레스를 결정하는 합성 가능 로직을 포함하고, 적어도 하나의 잠재적 어드레스는 가상 어드레스와 연관된 상기 물리적 어드레스에 대해 고정된 관계를 갖는 RAM 내의 오로지 유일하게 알려진 어드레스가 아닌 다른 어드레스이다.
본 발명의 또 다른 측면에 따르면, RAM 및 합성 가능 로직을 포함하는 변환 색인 버퍼에 대한 가상 어드레스 룩업 기능을 실행하는 방법이 제공되는데, 이 방법은 합성 가능 로직에 가상 어드레스를 제공하는 단계와, 제공된 가상 어드레스를 해싱하여 해시 결과를 제공하는 단계와, 해시 결과를 기초로 하여 가상 어드레스 식별자 및 그에 관련된 물리적 어드레스가 저장되어 있는 위치에 대해 RAM 내의 메모리 위치를 결정하는 단계와, 가상 어드레스를 가상 어드레스 식별자에 대해 비교하여 물리적 어드레스가 제공된 가상 어드레스에 일치하는지 여부를 결정하는 단계와, 물리적 어드레스가 제공된 가상 어드레스와 일치하면, 물리적 어드레스를 출력값으로서 제공하는 단계를 포함한다.
본 발명은 이하의 도면을 참조하여 설명될 것이다.
도 1a는 SRAM 회로의 종래 기술의 트랜지스터로서의 구현을 도시하는 도면.
도 1b는 CAM 회로의 종래 기술의 트랜지스터로서의 구현을 도시하는 도면.
도 2는 가상 어드레스(VA)로부터 물리적 어드레스(PA)로의 종래 기술의 변환 프로세스를 도시하는 도면.
도 3은 VA로부터 PA로의 종래 기술의 변환이 직접 매핑된(direct mapped) 캐시 메모리를 가지고 실행되는 것을 도시하는 도면.
도 4a는 합성 가능 로직 성분 및 랜덤 액세스 메모리를 이용하여 형성된 변환 색인 버퍼를 개략적으로 도시하는 도면.
도 4b는 합성 가능 로직 성분으로부터 형성된 변환 색인 버퍼를 보다 상세하게 도시하는 도면.
도 4c는 TLB의 동작을 위해서 수행된 단계를 개략적으로 나타내는 도면.
도 5는 해싱 회로를 보다 상세하게 도시하는 도면.
도 6은 도 5에 도시된 해싱 회로의 변형을 도시하는 도면.
CAM 회로는 SRAM 회로의 구조와 유사한 저장 회로를 포함한다. 그러나, CAM 회로는 동작의 병렬 탐색 모드의 추가적 이점을 제공하는 탐색 회로를 또한 포함하여, 하드웨어를 이용하여 병렬 방식으로 CAM의 컨텐츠를 탐색할 수 있게 한다. CAM에서 특정 데이터값을 탐색할 때, CAM은 CAM 내의 데이터 값에 대한 매칭값을 찾으면 매칭 신호(match signal)를 제공한다. CAM과 SRAM 사이의 주된 차이는, CAM에서는 가상 어드레스를 나타내는 데이터가 CAM에 제공되고 해당 데이터에 연관 된 어드레스가 복귀되는 반면, SRAM에서는, 어드레스가 SRAM에 제공되고 해당 어드레스에 저장된 데이터가 복귀된다는 것이다.
CAM의 셀은 셀의 각 행이 메모리 어드레스를 보유하고, 셀의 행이 매칭 라인(match line)에 의해 데이터 어레이의 해당되는 워드 라인에 접속되게 하여 매칭 라인 상에서 매칭되면, 해당 워드 라인 내의 데이터 어레이를 액세스할 수 있도록 구성된다. 완전 연관 캐시(fully associative cache)에서, CAM의 각 행은 해당되는 메인 메모리 위치의 전체 어드레스를 보유하고, CAM으로의 입력은 입력된 전체 어드레스를 필요로 한다.
Steven A Guccione 등에 의한 "A Reconfigurable Content Addressable Memory"라는 제목의 종래 기술에서의 문헌에는 FPGA 내에서의 CAM 구현에 대해 논의되어 있다. 종래 기술에 따른 도 1에서 확인되는 바와 같이, 트랜지스터 레벨에서, CAM 회로(101)의 구현은 표준 SRAM(100)과 거의 유사하다. CAM과 SRAM 회로는 거의 동일하고, CAM(101)에 대해 병렬 탐색 기능을 제공하는 3개의 매칭 트랜지스터(103)가 추가된다는 것을 제외하면, 각각 6개의 트랜지스터(102)를 구비한다. 불행하게도, 표준 프로그래밍 가능 로직 디바이스를 사용하면 이러한 트랜지스터 레벨 회로의 구현이 어려워진다.
종래 기술의 문헌에서는, FPGA 내에서 CAM의 구현에 관해 논의되어 있다. CAM을 구현하기 위해서 게이트 레벨 로직을 이용하면, 때때로 원치않는 크기의 CAM이 생성된다. 플립-플롭(flip-flops)은 CAM 내에서 데이터 저장 소자로서 사용되고, 결과적으로 FPGA를 이용하여 획득 가능한 CAM 회로의 크기는 FPGA 내에서 이용 가능한 플립-플롭의 개수에 의존한다. FPGA 내에서 CAM을 구현하는 것은 다량의 FPGA 리소스를 빠르게 소모하고, 결과적으로 이용 가능한 해결책이 될 수 없다. 불행하게도, 이는 종래 기술자들이 CAM이 오로지 트랜지스터 레벨에서만 효과적으로 구현될 수 있는 것으로 결론짓게 만들었다.
종래 기술의 문헌은 또한 FPGA 내에서 룩업 테이블(LUT)을 이용하여 CAM의 구현을 가능하게 하였다. 일치되는 데이터를 저장하기 위해 FPGA 내에 플립-플롭을 이용하는 것보다, 이러한 구현은 일치되는 데이터를 저장하기 위해 LUT를 이용하도록 반영하였다. 플립-플롭이 아닌 LUT를 이용함으로써 더 소형의 CAM 아키텍처를 획득할 수 있다.
불행하게도, 합성 가능한 소자를 이용하여 CAM을 형성하는 것은 용이하게 이루어질 수 없으므로, CAM을 제공하는 종래 기술의 프로세서는 프로세서 내에 CAM 코어(CAM core)를 구비해야 한다. 프로세서 내에 CAM 코어를 제공하는 것은, 설계 복잡도를 추가하는 것에 기인하여 불행하게도 결과적인 회로의 가격을 상승시킨다. 이러한 추가적인 설계 복잡도는 프로세서에 대한 소형 배치(batch)의 통상적인 설계에 있어서는 적합하지 않다.
도 2는 가상 어드레스(VA)(201)로부터 물리적 어드레스(PA)(202)로의 변환 프로세스를 도시한다. VA(201)는 32비트 어드레스, 즉 VA[31:0]이고, PA(202)는 32비트 어드레스, 즉 PA[31:0]이다. VA는 2개의 부분을 포함하는데, 가상 페이지 번호(virtual page number)(VPN)(203) 및 페이지 오프셋(page offset)(PO)(204)을 포함한다. 필수 사항은 아니지만, VPN(203)은 전형적으로 VA(201)의 상위 부분에 위치되고, PA(202)는 전형적으로 하위 부분에 위치된다. 전형적으로 32비트 어드레싱 기법에 있어서, VPN은 20비트이고, PA는 12비트이다. PA 또는 하위 12 비트는 PA로 직접 변환된다. VPN(203)은 TLB(205)의 색인을 작성하여 그로부터 물리적 페이지 번호(PPN)(206)를 검색하는 데 사용된다. 다시 말해서, VPN(203)은 PPN(206)로 변환된다. PA(202) 및 PO의 상위 부분에 있는 PPN(206)을 PA의 하위 부분으로 결합하는 것은 VA로부터 PA로의 변환을 제공한다.
도 3은 직접 매핑 캐시 메모리(direct mapped cache memory)(301)를 가지고 VA(201)로부터 PA(202)로의 변환을 나타낸다. 변환 사이클의 개시 시점에서, VA를 사용하여 캐시 메모리(301) 및 TLB(205)를 모두 액세스한다. VA의 페이지 오프셋 부분(page-offset portion)을 사용하여 캐시 메모리(301)를 액세스하는데. 페이지 오프셋은 변환 프로세스에 의해 수정되지 않은 채로 유지되는 어드레스의 부분이다. 페이지 오프셋을 사용하여 캐시 메모리(301) 내에서 발견된 태그 어레이(302) 및 데이터 어레이(303)에 대한 색인을 작성하는데, 여기에서는 페이지 오프셋을 사용하여 캐시 메모리(301) 내의 캐시 라인(302a)에 대한 색인을 작성한다. TLB(205)에 대한 액세스는 VA(201)의 VPN(203) 부분을 이용하여 수행된다. TLB(205)는 전형적으로 TLB 태그 어레이(304) 및 TLB 데이터 어레이(305)를 포함한다. TLB 태그 어레이(304) 및 TLB 데이터 어레이(305)는 모두 VPN(203)으로부터의 비트를 포함하여, VPN이 이러한 어레이에 모두 제공될 때, VPN을 형성하는 비트를 어레이(304, 305) 내에 저장된 비트에 대해 비교하여 TLB(205) 내에 엔트리를 위치시킨다.
TLB 데이터 어레이(305)가 액세스되고, VPN과 TLB 데이터 어레이(305a) 내의 엔트리 사이에 일치가 확인되면, PPN(206)은 검색되고, 캐시 메모리(301)에 제공되며, 태그 어레이(302)로부터 검색된 태그(302a)에 대한 비교를 위해 사용된다. 일치는 캐시가 "히트(hit)"(306)했다고 표현할 수 있다. VPN(203)와 TLB 태그 어레이(304a) 내의 엔트리 사이에 일치가 확인되면, TLB 히트 신호(307)가 생성된다. 이러한 방식으로, 캐시는 오로지 PPN(206)의 비트를 이용해서만 액세스된다. 상술된 예는 직접 매핑된 캐시 메모리의 사용에 대해 나타내지만, VA로부터 PA로의 동일한 변환은 세트 연관 캐시(set-associative caches)에도 적용 가능하다. 세트 연관 캐시가 사용되면, 당업자들은 캐시의 크기가 가상 페이지의 크기와 같거나 더 작을 수 있다는 것을 이해할 것이다.
불행하게도, TLB가 SRAM에서 구현될 때, CAM 기능을 지원하기 위해서는 메모리에 대한 상세한 탐색이 필요하다. 따라서, TLB가 1024개의 가상 어드레스 및 그에 해당되는 물리적 어드레스를 위한 저장 장치를 포함할 때, 각각의 어드레스 변환은 1024개의 메모리 액세스 및 비교 동작을 필요로 할 것이다. 이러한 CAM의 구현은 성능이 CAM 크기에 따라서 감소되기 때문에 적용 불가능하다.
도 4a는 일반적으로 합성 가능 로직 구성 요소(499) 및 랜덤 액세스 메모리(RAM)(410)를 이용하여 형성된 TLB(400)를 도시한다. 변환을 위한 VPN은 VPN_IN 입력 포트(450)를 통해 제공되는데, 여기에서 비트(VPN_IN[31:12])는 VA[31:0]로부터 이러한 입력 포트(450)로 제공된다. 페이지 마스크 신호(page mask signal)는 CP0_PAGE_MASK 입력 포트(451)를 통해 공급된다. CP0_TRANSLATION 입력 신호는 CP0_TRANSLATION 입력 포트(452)를 통해 제공된다. TLB_TRANSLATION 출력 신호는 TLB(400)를 이용한 VA로부터 PA로의 변환에 따라서 TLB_TRANSLATION 출력 포트(453)를 통해 제공된다.
도 4b는 합성 가능 로직 구성 요소로부터 형성된 TLB(400)를 보다 상세하게 나타내는 도면이고, 도 4c에서, TLB(400)의 동작 단계가 개략적으로 도시되어 있다. TLB 동작에 대한 보다 상세한 설명에서, 변환을 위한 VPN은 단계(480)에서 VPN_IN 입력 포트(450)를 통해 제공되고, 여기에서 비트(VPN_IN[31:12])는 VPN으로서 VA[31:0]로부터 이 입력 포트(450)로 제공된다. 페이지 마스크는 CP0_PAGE_MASK 입력 포트(451)를 통해 제공된다. 이러한 페이지 마스크는 표 1에 따른 페이지 마스크를 인코딩하기 위해서 페이지 마스크 인코더(408)에 제공된다.
Figure 112005012922049-pct00001
페이지 마스크 인코더(408)는 그 입력 포트에서 CP0_PAGE_MASK 입력 신호를 수신하고, 이러한 입력 신호를 3비트 벡터(MASK[2:0]에 대해 상관시키기 위해 사용된다. 3비트 벡터(MASK[2:0])는 또한 해싱 회로(406)에도 제공된다. 해싱 회로(406)는 제 1 입력 포트(406a)를 통해 VPN_IN[31:12]를 수신하고, 제 2 입력 포트 (406b)를 통해 MASK[2:0]를 수신한다. 해싱된 벡터(H_VPN[5:0])는 그의 출력 포트(406c)로부터 해싱 회로(406)의 해싱 동작(481)을 이용하여 공급된다. 해싱된 벡터(H_VPN[5:0]) 및 MASK[2:0]는 또한 48개의 레지스터(409)에 각각 제공되고, 여기에서 각각의 레지스터는 통칭하여 491로 지칭된 다수의 플립-플롭을 구성한다. 각각의 레지스터(409)는 2개의 출력 포트를 포함한다. 제 1 출력 포트로부터의 제 1 출력 신호는 비교기 회로(403)에 제공된다. 제 2 출력 포트로부터의 제 2 출력 신호는 48개의 해싱 회로(406) 중 어느 하나에 있는 제 2 입력 포트(406b)에 제공된다. 이러한 해싱 회로 상의 제 1 입력 포트는 VPN_IN[31:12]을 수신한다. 해싱 회로(406)의 출력 포트는 48개의 비교기 회로(403) 중 어느 하나에 접속되어 레지스터 출력과 해싱 회로 출력 신호 간의 비교를 수행한다. 각각의 비교기는, 2개의 입력 신호 간의 비교에 따라서, 해당 신호들이 동일하면 '1'을 제공하고, 해당 신호들이 상이하면 '0'을 제공한다. 각 48개의 비교기로부터의 출력 신호(hiti)는 48개의 단일 비트 2-입력 멀티플렉서(411) 중 어느 하나에 제공된다. 각 멀티플렉서로부터의 출력 포트는 플립-플롭(404)에 접속된다. 각각의 플립-플롭(404)은 tryi로 표시된 출력 포트에서 제공되는 출력 신호를 생성하는데, 여기에서 집합적으로 이러한 출력 신호(try[0..47])(0≤i≤47)는 우선 순위 인코더 회로(priority encoder circuit)(401)에 제공된다. 우선 순위 인코더 회로는 또한 이진 디코더 회로(binary decoder circuit)(402)에 접속되는데, 여기에서 우선 순위 인코더 회로는 이진 디코더 회로(402) 및 RAM(410)에 대해 TLB_ENTRY[5:0] 신호를 어서트 (assert)한다. 이러한 출력 포트는 TLB(400), ENTRY_FOUND 출력 포트(454), ENTRY_NOT_FOUND 출력 포트(455) 및 TLB_TRANSLATION 출력 포트(453)(각각 ENTRY_FOUND, ENTRY_NOT_FOUND 및 TLB_TRANSLATION 출력 신호를 제공함) 내에 제공된다.
VA로부터 PA로의 변환을 위한 어드레스는 랜덤 액세스 메모리(RAM)(410) 내에 저장되고, 여기에서 RAM(410)은 바람직하게는 48개의 엔트리를 라인의 형태로 포함한다. 사용 중에, 새로운 변환이 수행될 때마다, 입력 신호(VPN_IN, CP0_PAGE_MASK 및 CP0_TRANSLATION은 제각기 입력 포트(450, 451, 452)를 통해 TLB 회로(400)에 제공된다. TLB에 의해 실행된 변환은 주어진 색인 i를 가지고 RAM(410) 내에 저장된다. 주어진 색인은 PPN에 대한 변환을 보유하는 RAM 내의 라인(410a) 중의 하나에 대한 색인이다. 해싱 회로(406)는 해시 함수(H(VPN_IN, MASK)를 계산하고, 그 결과를 해당되는 6비트 레지스터(hi)(490)에 저장한다. 페이지 마스크는 3비트 레지스터(mi)(491)에 저장된다.
TLB를 이용하는 변환이 요구될 때, VPN은 입력 포트(450)를 통해 제공되고, 해시 함수(H(VPN_IN, mi)는 모든 i에 대해 계산되고, hi와 비교된다. 이는 48개의 비트 벡터(492)(hit0..hit47)를 획득하게 하고, 이는 그 후에 48개의 비트 레지스터(493)(try0..try47)에 로딩된다. 요청된 VPN_IN이 RAM(482) 내에 저장된 변환 표에 존재하는지 여부를 판정하기 위해서, RAM 내에서 엔트리 또는 라인을 검사하여 어 떤 tryi가 어서트되었는지 검사한다. 48비트 tryi 벡터 내의 엔트리는 '1'을 획득하는 경우에 어서트된다(483). 물론, tryi 벡터 내에서 어서트된 하나 이상의 비트가 존재할 수 있지만, 우선 순위 인코더 (401)는 RAM 내의 어드레스 엔트리에 대한 최저 색인으로 엔트리를 선택한다. 디코더(402)는 이러한 색인을 48비트 원-핫 벡터(one-hot vector)(494)(cIr0..clr47)로 변환한다. 클록 회로(도시하지 않음)로부터 클록 버스가 입력되면, RAM을 어드레싱하는 데 사용되었던 것에 해당하는 비트(이는 삭제됨)를 제외한 tryi 벡터를 재로딩(reloaded)한다. 이러한 프로세스는 한 번에 하나의 엔트리마다 반복된다(483). 이러한 프로세스는 ENTRY_FOUND 출력 포트(454) 상에서 ENTRY_FOUND 신호에 의해 표시된 바와 같이, 요청된 엔트리가 발견되자마자(484) 반복되거나, tryi 내의 모든 비트가 0이 될 때 정지한다. tryi 내의 모든 비트가 '0'이 되면, ENTRY_NOT_FOUND 신호가 ENTRY_NOT_FOUND 출력 포트(455)를 통해 제공된다. 첫 번째 경우에, 변환은 성공적이고 변환에 대한 정보는 TLB_TRANSLATION 출력 포트(453) 상의 TLB_TRANSLATION 신호를 이용하여 RAM(410)으로부터 제공된다(485). 두 번째 경우에 변환은 성공적이지 않고 TLB는 TLB 리필 예외(TLB refill exception)를 보고한다.
도 5는 해싱 회로(506)를 보다 상세하게 도시한다. 해싱 회로(506)에 대해 MASK[2:0] 및 VPN[31:12] 입력 신호를 사용하면, 7-투-1 멀티플렉서(7 to 1 multiplexer)(501)는 제 2 입력 포트(506b)에 제공되는 MASK[2:0] 신호에 따라서 해싱 회로(506)로부터의 H_VPN[5:0] 출력 신호를 제공한다. 이러한 해싱 회로는 VPN으로부터 6개의 최하위 비트(least significant bits)를 선택한다. "최하위(least significant)"의 정의가 페이지 크기에 따라 달라지기 때문에 이러한 선택은 페이지 마스크에 의해 제어된다. 예를 들면, 4kB 페이지 크기에 있어서, VPN의 6개의 최하위 비트(least significant bits : LSB)는 비트 22:17이지만, 16kB 페이지 크기에 있어서 6개의 LSB는 비트 19:14이다. TLB(400)는 TLB 엔트리마다 홀수/짝수 쌍으로 지칭되는 2개의 인접한 가상 페이지를 저장하기 때문에, 4kB 페이지 홀수/짝수 쌍에 대한 6개의 LSB는 비트 18:13이다. 따라서 비트 12는 짝수(0) 또는 홀수(1) 변환을 복귀시킬 것인지 여부를 결정하고, 16kB 홀수/짝수 쌍에 있어서 비트는 20:15이다. 그러나, 비트 H_VPN[5:0]의 순차화가 부적절하기 때문에 이러한 해시 함수는 불필요하다. 도 6은 비트의 순차화가 부적절하다는 것을 나타낸다.
도 6은 도 5에 도시된 해싱 회로의 변형을 도시한다. VPN[31:12] 신호는 제 1 입력 포트(606a)에 제공되고, MASK[2:0] 신호는 제 2 입력 포트(606b)에 제공된다. 마스크 신호(MASK[2:0])는 비트(m0, m1, m2)로 이루어진다. 이러한 해싱 회로(606) 내에는 3개의, 3-투-1 멀티플렉서(601~603)가 존재한다. 제 1 멀티플렉서(601)는 그 선택 입력 포트에서 비트
Figure 112005012922049-pct00002
를 수신하고, 여기에서 VPN, VPN[13:14], VPN[19:20], VPN[25:26]으로부터의 비트는 제각기 0 내지 2로 라벨링되어 멀티플렉서 데이터 입력 포트에 제공된다. 따라서, 멀티플렉서(601)는 H_VPN[5:0] 출력 신호에 대해 비트 5 및 비트 4를 제공한다. 제 2 멀티플렉서 (602)는 그의 선택 입력 포트에서 비트
Figure 112005012922049-pct00003
를 수신하고, 여기에서 VPN, VPN[15:16], VPN[21:22], VPN[27:28]로부터의 비트는 제각기 0 내지 2로 라벨링되어 멀티플렉서 데이터 입력 포트에 제공된다. 그에 따라서, 멀티플렉서(602)는 H_VPN[5:0] 출력 신호에 대해 비트 3 및 비트 2를 제공한다. 제 3 멀티플렉서(603)는 그의 선택 입력 포트에서 비트
Figure 112005012922049-pct00004
를 수신하고, 여기에서 VPN, VPN[17:18], VPN[23:24], VPN[29:30]으로부터의 비트는 제각기 0 내지 2로 라벨링되어 멀티플렉서 데이터 입력 포트에 제공된다. 따라서 멀티플렉서(603)는 H_VPN[5:0] 출력 신호에 대해 비트 1 및 비트 0을 제공한다.
바람직하게는, 해시 함수 H_VPN[5:0]은 MASK[2:0] 및 VPN_IN[31:12] 입력 신호에 대해 균일하게 분포되어야 한다. TLB가 미스(miss)인 경우에, 초기에 tryi가 어서트되었는지 확인하기 위해 RAM 내의 모든 엔트리를 탐색한다. 사이클의 개수(Nmiss)는 다음 식에 의해 구할 수 있다.
Figure 112005012922049-pct00005
여기에서 p는 비교기 출력 신호(hiti)가 어서트될 가능성을 나타낸다.
Figure 112005012922049-pct00006
항은 시도 벡터(try vector)(tryi) 내에서 정확히 j 비트가 초기에 어서트될 가능성을 나타낸다. 그 출력 신호에서 n비트를 갖는 균일한 해싱 함수(H)는 p=2-n이 되고, 여기에서 도 4b의 경우를 고려하면 n=6이다.
시도 벡터(tryi)가 모두 '0'을 포함하지 않기 때문에 RAM을 액세스하지 않고도 검출될 수 있는 TLB 미스 상황과는 반대로, TLB가 히트(hit)인 경우에는 RAM(410)에 대한 적어도 하나의 액세스가 요구된다.
TLB 내에서 히트되는 변환을 수행하기 위한 사이클의 평균 개수는 다음 식에 의해 구할 수 있다.
Figure 112005012922049-pct00007
TLB 히트인 경우에, 시도 벡터(tryi) 내에는 적어도 하나의 '1'이 존재해야 한다. 유일한 불확실값은 이 벡터 내의 나머지 성분이다. 변수 k를 사용하여 k의 범위를 0...47로 하여 시도 벡터(tryi) 내에서 '1'로 설정된 나머지 엔트리의 개수를 나타낸다. k=0이면, RAM 내에서 오직 하나의 엔트리만이 탐색된다. 따라서, i=0인 제 1 위치에서 변환을 구하기 위해서 하나의 클록 사이클이 사용되기 때문에, 전체 2개의 클록 사이클을 이용하여 변환을 수행하게 된다. 평균적으로, RAM(410)으로부터 요청된 변환을 복귀시키기 위해서는 2+k/2 사이클이 소요된다.
변환의 수행 및 지연 방지에 있어서, 요구되는 클록 사이클의 개수는 긴 룩업 시퀀스, 예를 들면 k가 25 이상의 높은 값은 갖는 경우에 대해 검토한다. 다음 식은 TLB가 25 이상의 사이클을 이용하여 변환을 완료할 가능성을 제공한다.
Figure 112005012922049-pct00008
표 2는 해시 함수의 범위 폭(n)에 대하여, 변환(Nhit)을 확인하는데 소요되는 평균 사이클 개수, 미스(Nmiss)를 검출하는데 소요되는 평균 사이클 개수 및 TLB 동작이 25 이상의 사이클을 사용할 가능성을 검출하는데 소요되는 평균 사이클 개수에 대해 열거한다.
Figure 112005012922049-pct00009
표 2로부터, P{N25}가 너무 작아서 4 비트 해시 함수를 가지고도 TLB 변환이 25와 48 사이의 클록 사이클을 필요로 하는 경우에 적용하기 위해서는 6000년 이상의 연속 동작이 필요하다는 것을 확인할 수 있다.
Nhitq(hit quick)의 열은 VPN_IN이 연속적으로 TLB 회로(400)에 인가되는 경우에 적용된다. 이 표에서부터, 가장 중요한 수, 즉 Nhit에만 집중한다면 n=5 또는 n=6이 충분하다는 것을 알 수 있다. n⇒20일 때 Nhit가 2.0에 근접하기 때문에 6비트를 초과한다고 해도 그 이득이 크지 않을 것이다. 해시 함수가 그다지 균일하지 않을 수 있으므로 n=6값이 TLB 회로(400)에서 사용된다. 따라서, TLB 내에서 사용되는 6비트 해시 함수는 5비트의 매우 균일한 해시 함수의 성능에 근접한다.
VA가 TLB에 제공될 때, VA는 각 라인에 대해 합성된 로직까지 전파되고, 비트로 이루어진 tryi 벡터 내의 적어도 하나의 어서트된 비트에 의해 표시된 결과가 제공되는 것이 유리하다. 따라서, 일치되었다고 표시하는 결과를 갖는 라인만이 물리적으로 액세스되어 PPN을 제공한다. 이와 같이 TLB 라인의 작은 부분만이 변환 프로세스를 위해 액세스되고, 그에 따라서 실질적인 성능 향상이 초래된다.
본 발명의 정신 및 범주를 벗어나지 않으면서 여러 다른 실시예를 고려할 수 있다.

Claims (34)

  1. 변환 색인 버퍼(translation lookaside buffer : TLB)로서,
    가상 어드레스(virtual address)의 일부분을 수신하는 적어도 하나의 입력 포트(450)와,
    랜덤 액세스 메모리(RAM; 410)와,
    레지스터의 세트(491)와,
    상기 가상 어드레스의 수신된 부분으로부터 해시값(hash value)을 결정하고, 상기 가상 어드레스와 관련된 물리적 어드레스가 상기 랜덤 액세스 메모리(410) 내의 라인(410a) 내에 저장되고 상기 레지스터의 세트(491) 중에서 상기 해시값을 저장하는 하나 이상의 레지스터(409)와 연관될 가능성(likelihood)을 판정하기 위해 상기 해시값과 상기 레지스터의 세트(491) 내에 저장된 해시값을 비교하는 합성 가능 로직(synthesisable logic)(499)을 포함하되,
    상기 합성 가능 로직은, 상기 가상 어드레스에 대한 변환이 메모리 내의 각각의 연관된 라인 내에 저장될 가능성을 판정하기 위해 복수의 해시값을 메모리(410a) 내의 라인에 각각 연관되는 복수의 예측(expected) 해시값에 대해 비교하는 복수의 비교기(403)를 포함하고,
    상기 복수의 비교기들은 상기 랜덤 액세스 메모리(410) 내의 각 라인과 연관된 값을 포함하는 벡터를 제공하기 위한 것인
    변환 색인 버퍼.
  2. 제 1 항에 있어서,
    상기 합성 가능 로직(499)은, 페이지 크기를 나타내는 적어도 하나의 페이지 크기 신호(page size signal)를 수신하고, 상기 적어도 하나의 페이지 크기 신호로부터 상기 해시값을 결정하는 데 사용되는 적어도 하나의 마스크 비트(mask bit)를 결정하는 인코더 회로(408)를 포함하는
    변환 색인 버퍼.
  3. 제 2 항에 있어서,
    상기 합성 가능 로직은, 출력 포트(406c)를 포함하고 상기 가상 어드레스의 상기 수신된 부분 및 상기 적어도 하나의 마스크 비트를 수신하며, 상기 가상 어드레스의 상기 수신된 부분 및 상기 적어도 하나의 마스크 비트로부터 제 1 해시값을 결정론적으로(deterministically) 생성하고, 상기 제 1 해시값을 상기 출력 포트(406c)에 제공하는 제 1 해싱 회로(406)를
    포함하는 변환 색인 버퍼.
  4. 제 3 항에 있어서,
    상기 합성 가능 로직은 상기 적어도 하나의 마스크 비트를 저장하는 적어도 하나의 레지스터(409)를 포함하는
    변환 색인 버퍼.
  5. 제 4 항에 있어서,
    상기 합성 가능 로직은, 상기 가상 어드레스의 상기 수신된 부분과 상기 적어도 하나의 레지스터(409)로부터의 적어도 하나의 저장된 마스크 비트를 수신하고 상기 해시값을 결정하는 제 2 해싱 회로(406)를 포함하는
    변환 색인 버퍼.
  6. 제 5 항에 있어서,
    비교기(403)를 포함하고,
    상기 랜덤 액세스 메모리(410)는 그 내부에 저장된 변환 표(translation table)를 포함하며,
    상기 라인(410a)은 상기 변환 표 내에 저장되고,
    상기 해시값은 상기 가상 어드레스가 상기 변환 표 내의 연관된 라인에 존재하는지 여부를 판정하기 위해, 상기 비교기(403) 내에서 비교되되, 상기 연관된 라인 내의 상기 가상 어드레스에 대해 긍정의 표시(positive indication)는 가능성 있는 부합(match)이 있음을 나타내고, 부정의 표시(negative indication)는 가능성 있는 부합이 없음을 나타내는
    변환 색인 버퍼.
  7. 제 5 항에 있어서,
    상기 가상 어드레스의 상기 수신된 부분과 상기 적어도 하나의 레지스터(409)로부터의 적어도 하나의 저장된 마스크 비트를 수신하고, 상기 제 2 해싱 회로(406)와 병렬로, 상기 랜덤 액세스 메모리(410) 내의 적어도 2개의 라인에 대해 상기 결정론적으로 생성된 해시값을 저장하고 있는 해시 벡터를 결정하는 제 3 해싱 회로(406)를 포함하는
    변환 색인 버퍼.
  8. 제 7 항에 있어서,
    상기 제 1 해싱 회로(406)는 상기 가상 어드레스 및 적어도 하나의 검색된(retrieved) 마스크 비트를 사전 해싱(pre-hashing)하여 상기 제 2 및 제 3 해싱 회로에 제공될 사전 해시값을 제공하는
    변환 색인 버퍼.
  9. 제 8 항에 있어서,
    상기 해시값과 상기 메모리 내의 연관된 라인(410a) 사이의 비교 결과를 저장하는 적어도 하나의 제 2 레지스터(404)를 포함하되,
    상기 비교 결과는 상기 연관된 라인 내의 상기 가상 어드레스에 대해 가능성 있는 부합이 있음을 나타내는 긍정의 표시와 가능성 있는 부합이 없음을 나타내는 부정의 표시를 제공하는
    변환 색인 버퍼.
  10. 제 9 항에 있어서,
    복수의 상기 적어도 하나의 제 2 레지스터(404)는 상기 변환 색인 버퍼의 메모리(410) 내의 라인의 개수와 같거나 더 큰 개수의 레지스터(493)를 포함하는
    변환 색인 버퍼.
  11. 삭제
  12. 제 1 항에 있어서,
    상기 합성 가능 로직은 상기 변환을 포함하는 메모리 내의 라인의 잠재적 변환을 나타내는 복수의 값 사이에서 결정하는(resolve) 결정 회로를 포함하는 변환 색인 버퍼.
  13. 제 1 항에 있어서,
    해시 값을 결정하기 위해, 변환이 현재 저장되어 있는 가상 어드레스 이외의 가상 어드레스를 해싱하고, 메모리 내의 이용 가능한 라인(410a)과 연관된 레지스터(404) 내에 상기 해시값을 저장하며, 메모리(410) 내의 상기 이용 가능한 라인 내에 상기 가상 어드레스 및 그의 변환을 저장하는 해싱 회로(406)를 포함하는
    변환 색인 버퍼.
  14. 삭제
  15. 삭제
  16. 제 1 항에 있어서,
    상기 합성 가능 로직은 상기 가상 어드레스에 대한 변환의 검색을 개시하게 되는 상기 랜덤 액세스 메모리(410) 내의 라인(410a)을 표시하는 값을 결정하기 위해 상기 가상 어드레스를 해싱하는 해싱 회로(406)를 포함하는
    변환 색인 버퍼.
  17. 제 16 항에 있어서,
    상기 합성 가능 로직은, 상기 가상 어드레스의 변환이 존재하는지 여부를 결정하기 위해, 상기 랜덤 액세스 메모리(410) 내의 복수의 라인 내에 저장된 가상 어드레스 데이터와 상기 가상 어드레스를 반복적으로 비교하고, 출력 포트(output port)(453)에 결정된 변환(resolved translation)을 제공하는 룩업 결정 회로(lookup resolving circuit)를 포함하는
    변환 색인 버퍼.
  18. 제 17 항에 있어서,
    상기 룩업 결정 회로는 연속적인 비교 동작들 사이에서 상기 랜덤 액세스 메모리(410) 내의 상기 라인의 어드레스를 하나의 라인만큼 증분하는 증분 회로(incrementing circuit)(401)를 포함하는
    변환 색인 버퍼.
  19. 제 17 항에 있어서,
    상기 룩업 결정 회로는 연속적인 비교 동작들 사이에서 상기 랜덤 액세스 메모리(410) 내의 상기 라인의 어드레스를 하나의 라인만큼 변동시키는 해싱 회로를 포함하는
    변환 색인 버퍼.
  20. 랜덤 액세스 메모리(410) 및 합성 가능 로직(499)을 포함하는 변환 색인 버퍼에 대해 가상 어드레스 룩업 기능을 실행하는 방법으로서,
    상기 합성 가능 로직(499)에 가상 어드레스(490)를 제공하는 단계와,
    상기 제공된 가상 어드레스를 해싱하여 해시 결과를 제공하는 해싱 단계(481)와,
    상기 해시 결과를 기초로 하여 가상 어드레스 식별자 및 그에 관련된 물리적 어드레스가 저장되어 있는 상기 랜덤 액세스 메모리(410) 내의 메모리 위치를 결정하는 단계(482)와,
    상기 물리적 어드레스가 상기 제공된 가상 어드레스에 대응하는지 여부를 결정하기 위해, 상기 가상 어드레스를 상기 가상 어드레스 식별자에 대해 비교하는 단계(483)와,
    상기 물리적 어드레스가 상기 제공된 가상 어드레스에 대응하면(484), 상기 물리적 어드레스를 출력값으로서 제공하는 단계(485)를 포함하되,
    상기 메모리 위치 결정 단계는,
    비교 결과를 결정하기 위해 상기 해시 결과를 상기 랜덤 액세스 메모리(410) 내의 라인(410a)과 연관된 알려진 해시 결과에 대해 비교하는 비교 단계와,
    복수의 값을 포함하는 히트 벡터(hit vector)(492)를 형성하는 단계 - 각각의 값은 상기 알려진 해싱 결과와 연관된 랜덤 액세스 메모리(410) 내의 라인(410a)과 연관되고, 각각의 값과 연관되어 있는 상기 랜덤 액세스 메모리(410) 내의 상기 라인(410a)이 상기 가상 어드레스에 대한 변환을 포함할 가능성을 나타냄 - 를 포함하는
    가상 어드레스 룩업 기능 실행 방법.
  21. 삭제
  22. 제 20 항에 있어서,
    상기 결정 단계는 상기 랜덤 액세스 메모리(410) 내의 각 라인에 대해 실행되는
    가상 어드레스 룩업 기능 실행 방법.
  23. 제 22 항에 있어서,
    상기 비교 단계는, 상기 변환을 포함하는 상기 라인의 위치가 확인될 때까지 상기 가상 어드레스에 대한 잠재적 변환을 나타내는 값과 연관된 상기 랜덤 액세스 메모리(410) 내의 여러 라인에 대해 순차적으로 실행되는
    가상 어드레스 룩업 기능 실행 방법.
  24. 제 20 항에 있어서,
    상기 결정 단계는, 상기 랜덤 액세스 메모리(410) 내의 각 라인에 대해 실행되는
    가상 어드레스 룩업 기능 실행 방법.
  25. 제 24 항에 있어서,
    상기 메모리 내의 하나의 라인은 하나의 가상 어드레스로부터 하나의 대응 물리적 어드레스로의 하나의 어드레스 변환을 포함하는
    가상 어드레스 룩업 기능 실행 방법.
  26. 제 20 항에 있어서,
    상기 해싱 단계는 상기 메모리 내의 각 라인과 연관된 해시값을 독립적으로 결정하기 위해 상기 가상 어드레스 및 메모리 내의 각 라인과 연관되어 저장된 값을 해싱하는 단계를 포함하는
    가상 어드레스 룩업 기능 실행 방법.
  27. 제 26 항에 있어서,
    상기 메모리 내의 하나의 라인은 하나의 가상 어드레스로부터 하나의 대응 물리적 어드레스로의 하나의 어드레스 변환을 포함하는
    가상 어드레스 룩업 기능 실행 방법.
  28. 제 20 항에 있어서,
    상기 해싱 단계는,
    상기 가상 어드레스를 사전 해싱하는 단계와,
    랜덤 액세스 메모리(410) 내의 각 라인과 연관된 해시값을 독립적으로 결정하기 위해 상기 사전 해싱된 가상 어드레스를 복수의 저장된 값 중 각각의 값 - 상기 각각의 값은 상기 메모리 내의 하나의 라인에 연관됨 - 과 독립적으로 결합하는 단계를 포함하는
    가상 어드레스 룩업 기능 실행 방법.
  29. 제 28 항에 있어서,
    상기 비교 단계는, 상기 변환을 포함하는 상기 라인(410a)의 위치가 확인될 때까지 상기 가상 어드레스에 대한 잠재적 변환을 나타내는 값과 연관된 상기 랜덤 액세스 메모리(410) 내의 상이한 라인에 대해 순차적으로 실행되는
    가상 어드레스 룩업 기능 실행 방법.
  30. 제 28 항에 있어서,
    상기 메모리 내의 하나의 라인은 하나의 가상 어드레스로부터 하나의 대응 물리적 어드레스로의 하나의 어드레스 변환을 포함하는
    가상 어드레스 룩업 기능 실행 방법.
  31. 제 20 항에 있어서,
    상기 해싱 단계는, 상기 가상 어드레스에 대한 변환이 잠재적으로 저장된 랜덤 액세스 메모리(410) 내의 라인을 나타내는 값을 결정하기 위해, 상기 가상 어드레스를 해싱하는 단계를 포함하는
    가상 어드레스 룩업 기능 실행 방법.
  32. 제 31 항에 있어서,
    상기 비교 단계는 상기 가상 어드레스에 대한 변환의 위치가 확인될 때까지, 상기 결정된 값에 관련된 상기 랜덤 액세스 메모리(410) 내의 상기 라인으로부터 시작하여 랜덤 액세스 메모리(410) 내의 복수의 라인을 알려진 순서대로 반복적으로(iteratively) 비교하는 단계를 포함하는
    가상 어드레스 룩업 기능 실행 방법.
  33. 제 32 항에 있어서,
    상기 알려진 순서는 연속 비교들 사이에서 하나의 라인만큼 증분되는
    가상 어드레스 룩업 기능 실행 방법.
  34. 제 32 항에 있어서,
    상기 알려진 순서는 상기 결정된 값에 기초한 함수의 해를 구함으로써(solving) 결정되는 가상 어드레스 룩업 기능 실행 방법.
KR1020057004205A 2002-09-13 2003-09-12 변환 색인 버퍼 및 가상 어드레스 룩업 기능 실행 방법 KR101145557B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/242,785 2002-09-13
US10/242,785 US20040054867A1 (en) 2002-09-13 2002-09-13 Translation lookaside buffer
PCT/IB2003/003915 WO2004025480A1 (en) 2002-09-13 2003-09-12 Translation lookaside buffer with partial tag hashed according to page size indicator

Publications (2)

Publication Number Publication Date
KR20050043944A KR20050043944A (ko) 2005-05-11
KR101145557B1 true KR101145557B1 (ko) 2012-05-16

Family

ID=31991480

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057004205A KR101145557B1 (ko) 2002-09-13 2003-09-12 변환 색인 버퍼 및 가상 어드레스 룩업 기능 실행 방법

Country Status (7)

Country Link
US (2) US20040054867A1 (ko)
EP (1) EP1552397A1 (ko)
JP (1) JP2005538465A (ko)
KR (1) KR101145557B1 (ko)
CN (1) CN100555248C (ko)
AU (1) AU2003260822A1 (ko)
WO (1) WO2004025480A1 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7596139B2 (en) 2000-11-17 2009-09-29 Foundry Networks, Inc. Backplane interface adapter with error control and redundant fabric
US7236490B2 (en) * 2000-11-17 2007-06-26 Foundry Networks, Inc. Backplane interface adapter
US7468975B1 (en) * 2002-05-06 2008-12-23 Foundry Networks, Inc. Flexible method for processing data packets in a network routing system for enhanced efficiency and monitoring capability
US7649885B1 (en) 2002-05-06 2010-01-19 Foundry Networks, Inc. Network routing system for enhanced efficiency and monitoring capability
US20120155466A1 (en) 2002-05-06 2012-06-21 Ian Edward Davis Method and apparatus for efficiently processing data packets in a computer network
US7266117B1 (en) 2002-05-06 2007-09-04 Foundry Networks, Inc. System architecture for very fast ethernet blade
US7187687B1 (en) 2002-05-06 2007-03-06 Foundry Networks, Inc. Pipeline method and system for switching packets
US20090279558A1 (en) * 2002-05-06 2009-11-12 Ian Edward Davis Network routing apparatus for enhanced efficiency and monitoring capability
KR100459728B1 (ko) * 2002-10-22 2004-12-03 삼성전자주식회사 고속 변환 색인 버퍼
US6901072B1 (en) 2003-05-15 2005-05-31 Foundry Networks, Inc. System and method for high speed packet transmission implementing dual transmit and receive pipelines
US7817659B2 (en) * 2004-03-26 2010-10-19 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US8730961B1 (en) * 2004-04-26 2014-05-20 Foundry Networks, Llc System and method for optimizing router lookup
US8775740B2 (en) * 2004-08-30 2014-07-08 Texas Instruments Incorporated System and method for high performance, power efficient store buffer forwarding
US7657703B1 (en) 2004-10-29 2010-02-02 Foundry Networks, Inc. Double density content addressable memory (CAM) lookup scheme
US7948171B2 (en) * 2005-02-18 2011-05-24 Semiconductor Energy Laboratory Co., Ltd. Light emitting device
US8448162B2 (en) 2005-12-28 2013-05-21 Foundry Networks, Llc Hitless software upgrades
US20070288690A1 (en) * 2006-06-13 2007-12-13 Foundry Networks, Inc. High bandwidth, high capacity look-up table implementation in dynamic random access memory
CN100520710C (zh) * 2006-07-27 2009-07-29 中国科学院计算技术研究所 复杂指令系统中tlbr内部例外的处理方法和处理器
US7903654B2 (en) * 2006-08-22 2011-03-08 Foundry Networks, Llc System and method for ECMP load sharing
US8238255B2 (en) 2006-11-22 2012-08-07 Foundry Networks, Llc Recovering from failures without impact on data traffic in a shared bus architecture
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
CN101715575A (zh) 2006-12-06 2010-05-26 弗森多系统公司(dba弗森-艾奥) 采用数据管道管理数据的装置、系统和方法
US7978614B2 (en) 2007-01-11 2011-07-12 Foundry Network, LLC Techniques for detecting non-receipt of fault detection protocol packets
US8271859B2 (en) 2007-07-18 2012-09-18 Foundry Networks Llc Segmented CRC design in high speed networks
US8037399B2 (en) * 2007-07-18 2011-10-11 Foundry Networks, Llc Techniques for segmented CRC design in high speed networks
US8509236B2 (en) 2007-09-26 2013-08-13 Foundry Networks, Llc Techniques for selecting paths and/or trunk ports for forwarding traffic flows
US8090901B2 (en) 2009-05-14 2012-01-03 Brocade Communications Systems, Inc. TCAM management approach that minimize movements
US8599850B2 (en) 2009-09-21 2013-12-03 Brocade Communications Systems, Inc. Provisioning single or multistage networks using ethernet service instances (ESIs)
US20110216769A1 (en) * 2010-03-08 2011-09-08 Brocade Communications Systems, Inc. Dynamic Path Selection
CN102486751A (zh) * 2010-12-01 2012-06-06 安凯(广州)微电子技术有限公司 一种在微内存系统上实现小页nandflash虚拟大页的方法
US20130067289A1 (en) * 2011-09-14 2013-03-14 Ariel Maislos Efficient non-volatile read cache for storage system
US9569369B2 (en) * 2011-10-27 2017-02-14 Oracle International Corporation Software translation lookaside buffer for persistent pointer management
CN102662860B (zh) * 2012-03-15 2015-07-01 天津国芯科技有限公司 用于进程切换的旁路转换缓冲器(tlb)及在其中地址匹配的方法
US9343177B2 (en) * 2013-02-01 2016-05-17 Apple Inc. Accessing control registers over a data bus
CN104216833B (zh) 2013-05-29 2017-10-10 华为技术有限公司 一种确定物理地址的方法及装置
US10007435B2 (en) 2015-05-21 2018-06-26 Micron Technology, Inc. Translation lookaside buffer in memory
US9959044B2 (en) * 2016-05-03 2018-05-01 Macronix International Co., Ltd. Memory device including risky mapping table and controlling method thereof
US10545877B2 (en) * 2018-04-05 2020-01-28 Arm Limited Apparatus and method for accessing an address translation cache
US11055232B2 (en) 2019-03-29 2021-07-06 Intel Corporation Valid bits of a translation lookaside buffer (TLB) for checking multiple page sizes in one probe cycle and reconfigurable sub-TLBS

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4170039A (en) * 1978-07-17 1979-10-02 International Business Machines Corporation Virtual address translation speed up technique
EP0675443A1 (en) * 1994-03-30 1995-10-04 Digital Equipment Corporation Apparatus and method for accessing direct mapped cache
WO2001050272A1 (en) * 2000-01-03 2001-07-12 Advanced Micro Devices, Inc. Cache which provides partial tags from non-predicted ways to direct search if way prediction misses

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4215402A (en) * 1978-10-23 1980-07-29 International Business Machines Corporation Hash index table hash generator apparatus
WO1984002784A1 (en) * 1982-12-30 1984-07-19 Ibm Virtual memory address translation mechanism with controlled data persistence
US4680700A (en) * 1983-12-07 1987-07-14 International Business Machines Corporation Virtual memory address translation mechanism with combined hash address table and inverted page table
JPH0760411B2 (ja) * 1989-05-23 1995-06-28 株式会社日立製作所 バッファ記憶制御装置
GB9205551D0 (en) * 1992-03-13 1992-04-29 Inmos Ltd Cache memory
US5574877A (en) * 1992-09-25 1996-11-12 Silicon Graphics, Inc. TLB with two physical pages per virtual tag
US5526504A (en) * 1993-12-15 1996-06-11 Silicon Graphics, Inc. Variable page size translation lookaside buffer
US5752275A (en) * 1995-03-31 1998-05-12 Intel Corporation Translation look-aside buffer including a single page size translation unit
US6026476A (en) * 1996-03-19 2000-02-15 Intel Corporation Fast fully associative translation lookaside buffer
US5860147A (en) * 1996-09-16 1999-01-12 Intel Corporation Method and apparatus for replacement of entries in a translation look-aside buffer
US6014732A (en) * 1997-10-22 2000-01-11 Hewlett-Packard Company Cache memory with reduced access time
US6516386B1 (en) * 1997-12-31 2003-02-04 Intel Corporation Method and apparatus for indexing a cache
US6212603B1 (en) * 1998-04-09 2001-04-03 Institute For The Development Of Emerging Architectures, L.L.C. Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory
US6205531B1 (en) * 1998-07-02 2001-03-20 Silicon Graphics Incorporated Method and apparatus for virtual address translation
US6381673B1 (en) * 1998-07-06 2002-04-30 Netlogic Microsystems, Inc. Method and apparatus for performing a read next highest priority match instruction in a content addressable memory device
US6360220B1 (en) * 1998-08-04 2002-03-19 Microsoft Corporation Lock-free methods and systems for accessing and storing information in an indexed computer data structure having modifiable entries
US6233652B1 (en) * 1998-10-30 2001-05-15 Intel Corporation Translation lookaside buffer for multiple page sizes
US6625714B1 (en) * 1999-12-17 2003-09-23 Hewlett-Packard Development Company, L.P. Parallel distributed function translation lookaside buffer
US6625715B1 (en) * 1999-12-30 2003-09-23 Intel Corporation System and method for translation buffer accommodating multiple page sizes
US6356990B1 (en) * 2000-02-02 2002-03-12 International Business Machines Corporation Set-associative cache memory having a built-in set prediction array
US6581140B1 (en) * 2000-07-03 2003-06-17 Motorola, Inc. Method and apparatus for improving access time in set-associative cache systems
US6629099B2 (en) * 2000-12-07 2003-09-30 Integrated Silicon Solution, Inc. Paralleled content addressable memory search engine
US6889225B2 (en) * 2001-08-09 2005-05-03 Integrated Silicon Solution, Inc. Large database search using content addressable memory and hash
US6700808B2 (en) * 2002-02-08 2004-03-02 Mobility Electronics, Inc. Dual input AC and DC power supply having a programmable DC output utilizing a secondary buck converter
US6925464B2 (en) * 2002-06-13 2005-08-02 Intel Corporation Method and system for performing inserts and lookups in memory
US7136960B2 (en) * 2002-06-14 2006-11-14 Integrated Device Technology, Inc. Hardware hashing of an input of a content addressable memory (CAM) to emulate a wider CAM

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4170039A (en) * 1978-07-17 1979-10-02 International Business Machines Corporation Virtual address translation speed up technique
EP0675443A1 (en) * 1994-03-30 1995-10-04 Digital Equipment Corporation Apparatus and method for accessing direct mapped cache
WO2001050272A1 (en) * 2000-01-03 2001-07-12 Advanced Micro Devices, Inc. Cache which provides partial tags from non-predicted ways to direct search if way prediction misses

Also Published As

Publication number Publication date
KR20050043944A (ko) 2005-05-11
WO2004025480A1 (en) 2004-03-25
AU2003260822A1 (en) 2004-04-30
JP2005538465A (ja) 2005-12-15
US20040054867A1 (en) 2004-03-18
CN1682200A (zh) 2005-10-12
CN100555248C (zh) 2009-10-28
US20120066475A1 (en) 2012-03-15
EP1552397A1 (en) 2005-07-13
US8607026B2 (en) 2013-12-10

Similar Documents

Publication Publication Date Title
KR101145557B1 (ko) 변환 색인 버퍼 및 가상 어드레스 룩업 기능 실행 방법
EP0642086B1 (en) Virtual address to physical address translation cache that supports multiple page sizes
US4797814A (en) Variable address mode cache
US5526504A (en) Variable page size translation lookaside buffer
JP4065660B2 (ja) 機能が並列に分散された変換索引バッファ
US6493812B1 (en) Apparatus and method for virtual address aliasing and multiple page size support in a computer system having a prevalidated cache
US10489303B2 (en) Multi-range lookup in translation lookaside buffer
US7831760B1 (en) Serially indexing a cache memory
JPH11203199A (ja) キャッシュ・メモリ
JPH04320553A (ja) アドレス変換機構
KR960011742A (ko) 데이터처리장치
US6581140B1 (en) Method and apparatus for improving access time in set-associative cache systems
JP2020523678A (ja) 論理ディレクトリを使用したキャッシュ構造
KR100895715B1 (ko) 메모리 관리 유닛, 메모리 관리 유닛을 포함하는 시스템 및어드레스 변환 방법
US5860097A (en) Associative cache memory with improved hit time
US6865590B2 (en) Three input variable subfield comparation for fast matching
JPH10283259A (ja) 情報処理装置およびプロセッサ
US10146698B2 (en) Method and apparatus for power reduction in a multi-threaded mode
US20140006747A1 (en) Systems and methods for processing instructions when utilizing an extended translation look-aside buffer having a hybrid memory structure
JPS623354A (ja) キヤツシユメモリ・アクセス方式
JP2000148589A (ja) メモリ管理装置、方法及びプログラムを記憶した記憶媒体
JPH05216767A (ja) エントリ置き換え制御方式
KR930004432B1 (ko) 컴퓨터 시스템의 lru업 데이트 로직

Legal Events

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

Payment date: 20160330

Year of fee payment: 5