KR100959014B1 - Tlb 록 표시자 - Google Patents

Tlb 록 표시자 Download PDF

Info

Publication number
KR100959014B1
KR100959014B1 KR1020087006678A KR20087006678A KR100959014B1 KR 100959014 B1 KR100959014 B1 KR 100959014B1 KR 1020087006678 A KR1020087006678 A KR 1020087006678A KR 20087006678 A KR20087006678 A KR 20087006678A KR 100959014 B1 KR100959014 B1 KR 100959014B1
Authority
KR
South Korea
Prior art keywords
tlb
entry
cache
processor
virtual address
Prior art date
Application number
KR1020087006678A
Other languages
English (en)
Other versions
KR20080041707A (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 KR20080041707A publication Critical patent/KR20080041707A/ko
Application granted granted Critical
Publication of KR100959014B1 publication Critical patent/KR100959014B1/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
    • 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/12Replacement control
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • 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
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB

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

프로세서는 레벨-1 TLB 및 소형의 고속 레벨-0 TLB를 포함하는 계층형 변환 참조 버퍼(TLB)를 포함한다. L0 TLB의 엔트리들은 L1 TLB의 엔트리들을 복제한다. 프로세서는 우선 어드레스 변환에서 L0 TLB에 액세스하며, 가상 어드레스가 L0 TLB에서 미스하는 경우 L1 TLB에 액세스한다. 가상 어드레스가 L1 TLB에서 히트할 때, 가상 어드레스, 물리 어드레스, 및 페이지 속성은 L0 TLB에 기록되며, L0 TLB가 가득찬 경우 기존의 엔트리를 대체한다. 엔트리는 L1 TLB 엔트리의 L0 록(L0L) 표시자에 응답하여 L0 TLB에서의 대체에 대해 록킹될 수도 있다. 마찬가지로, 하드웨어 관리된 L1 TLB에서, 엔트리들은 대응하는 페이지 테이블 엔트리에서 L1 록(L1L) 표시자에 응답하여 대체에 대해 록킹될 수도 있다.

Description

TLB 록 표시자{TLB LOCK INDICATOR}
본 발명은 일반적으로 프로세서들의 분야에 관한 것이며, 특히 대체에 대해 하나 이상의 변환 참조 버퍼들의 엔트리들을 록킹하는 시스템 및 방법에 관한 것이다.
마이크로프로세서들은 휴대용 전자 장치들을 포함하는 다양한 애플리케이션들의 계산 태스크들을 실행한다. 대부분의 경우, 추가의 기능들 및 특성들이 휴대용 전자 장치들 및 다른 애플리케이션들에서 구현될 수 있도록 프로세서 성능을 최대화하는 것은 주요한 설계 목표이다. 또한, 많은 애플리케이션들에서, 소정의 계산 태스크들은 다른 것들에 비해 우선 순위를 가지며, 시스템이 계산 리소스들이 높은 우선 순위 태스크들을 위해 보존되게 하는 것을 보장하는 것이 유리할 것이다.
많은 프로그램들은 이들을 실행하는 컴퓨터가 매우 큰(이상적으로는 제한이 없는) 용량의 고속 메모리를 갖는 것처럼 기록된다. 대부분의 현대의 프로세서들은 메모리 타입들의 계층(hierarchy)을 포함함으로써 상기 이상적인 조건을 시뮬레이션하는데, 각각의 타입은 상이한 속도 및 비용 특성들을 갖는다. 계층에서 메모리 타입들은 최상위에서 매우 고속이고 매우 고가로부터 점진적으로 느려져서 하위 레벨들에서 더욱 경제적인 저장 타입들로 변화한다. 통상의 프로세서 메모리 계층은 상위 레벨에서 프로세서에 레지스터들(게이트들)을 포함할 수도 있으며; 하나 이상의 온칩 캐시들(SRAM); 가능하게는 오프칩 캐시(SRAM); 메인 메모리(DRAM); 디스크 저장소(전자-기계적 액세스를 이용하는 마그네틱 매체); 및 최하위 레벨에서 테이프 또는 CD(자기 또는 광학 매체)에 의해 베이킹된다. 대부분의 휴대용 전자 장치들은, 만일 존재한다 해도, 제한된 디스크 저장소를 가지며, 따라서 종종 크기가 제한되는 메인 메모리는 메모리 계층에서 최하위 레벨이다.
컴퓨터 메모리 계층에서, 각각의 하위 레벨은 더 높은 레이어들에 상주하는 데이터의 전체(그러나 가능하게는 스테일(stale)) 사본을 유지한다. 즉, 더 높은 레벨들에 저장된 데이터는 더 낮은 레벨들에 저장된 데이터를 복제한다. 더 소형이고 더 높은 레벨의 저장소는 더 대형이고 더 낮은 레벨의 메모리의 다수의 위치들에 맵핑하기 때문에, 맵핑 방식은 계층 구조 레이어들(hierarchy layers) 사이에서 어드레스들의 변환을 필요로 한다. 대부분의 프로세서는 매우 큰, 개념상으로 연속하는 가상의 어드레스 공간에서 동작한다. 메인 메모리는 하드웨어와 시스템 파라미터들에 의해 제한된 물리적 어드레스 공간에서 액세스된다. 캐시들 ― 프로세서 코어와 메인 메모리 사이에 삽입된 고속 메모리들 ― 은 가상 어드레스들에 의해, 완벽하게는 물리적 어드레스들에 의해, 또는 (가상 인덱스 및 물리적 태그를 이용하는 것과 같이) 조합하여, 완전하게 액세스 될 수도 있다. 그러나 캐시 구조에 관계없이, 어드레스들은 가상 어드레스 공간으로부터 물리 어드레스 공간으로 변환되어야 한다.
하나의 제한된 물리 메모리 어드레스 공간으로의 많은 대형의 가상 어드레스 공간들의 맵핑 및 변환(실행 프로그램 또는 콘텍스트(context)당 하나)은 메모리 관리로 알려져 있다. 연산 시스템에 의한 메모리 관리는 프로그램들이 서로의 데이터를 오버라이팅하는 것을 방지함으로써 적절한 성능을 보장하며; 일 사용자가 다른 사용자의 데이터에 액세싱하는 것을 불허함으로써 보안성을 제공하며; 사용자-레벨 프로그램들이 연산 시스템 배치 테이블들 및 파라미터들과 같은 감시자-레벨 데이터 구조들을 액세스하는 것을 불허함으로써 신뢰도를 증진시킨다.
메모리는 예를 들어, 4K 바이트를 포함할 수도 있는, 페이지들로 불리는 고정된 크기의 세그먼트들에서 관리될 수도 있다. 페이지 번호로 불리는 어드레스의 상부 또는 가장 중요한 부분은 특정 메모리 페이지를 식별한다. 페이지 번호는 가상 어드레스 공간에서 물리 어드레스 공간으로 변환된다. 페이지 오프셋으로 불리는 어드레스의 하부, 또는 가장 덜 중요한 부분은 가상 어드레스들 및 물리 어드레스들에 대해 동일한 페이지로의 오프셋이며; 페이지 오프셋 비트들은 변환되지 않는다. 예로서, 4K 페이지들을 갖는 32 비트 어드레스의 경우, 페이지 번호는 어드레스 비트 [31:12] 및 페이지 dh프셋 비트 [11:0]을 포함할 것이다.
31 페이지 번호 12 11 페이지 오프셋 0
표1: 어드레스의 페이지 필드들
가상 페이지 번호들의 물리 페이지 번호로의 맵핑은, 페이지 테이블들로 불리는 하나 이상의 데이터 구조들에서, 연산 시스템 소프트웨어에 의해 제어된다. 페이지 테이블은 단일 테이블, 또는 계층형 또는 트리형 시리즈의 테이블들일 수도 있으며, 각각은 가상 페이지 번호의 부분 또는 세그먼트를 물리 메모리의 대응하는 범위로 맵핑한다. 페이지가 공유되든지, 단일 프로세스에 전용되든지 등에 관계 없이, 페이지 테이블들은 부가적으로 판독, 기록 및 실행 허용들과 같은 물리 페이지들의 속성을 저장한다. 초기에, 프로세서는 메인 메모리(또는 만일 캐시 메모리가 물리적으로 인덱스 또는 태그되었다면, 캐시 메모리)에 액세스하기 위해, 새로운 가상 어드레스를 대응하는 물리 어드레스로 변환하기 위해 페이지 테이블들을 "워킹(walk)" 하거나 트래버스(traverse)해야 한다. 후속하는 어드레스 변환들은 TLB에서, 가상 및 물리 페이지 번호들, 및 페이지 속성들을 저장함으로써 빠르게 될 수도 있다. TLB는 데이터 및 명령 페이지들 모두에 대해 어드레스 변환들 및 페이저 속성들을 저장할 수도 있다. 부가적으로, 단일화된 TLB의 서브세트를 포함할 수도 있는 명령 TLB(ITLB)는 명령들에 대한 어드레스 변환들 및 페이지 속성들을 개별적으로 저장할 수도 있다.
TLB는 콘텐츠 어드레싱 가능한 메모리(CAM), 및 관련된 랜덤 액세스 메모리(RAM)를 포함할 수도 있으며, 각각은 예를 들어, 32, 64 또는 128과 같은 고정된 수의 엔트리들을 갖는다. CAM은 모든 저장된, 앞서 변환된 가상 페이지 번호들에 대해, 변환을 위해 제공된 가상 페이지 번호의 병렬 비교를 실행한다. CAM의 출력은 제공된 가상 페이지 번호에 부합하는 저장된 가상 페이지 번호의 위치이다. 이러한 위치는 RAM을 인덱스하는데, 이는 가상 페이지 번호는 물론, 페이지 속성들에 대응하는 저장된 물리 페이지 번호를 제공한다. 캐시 및/또는 메인 메모리에 제공된 물리 어드레스는 가상 어드레스로부터 페이지 오프셋과 연결된, TLB로부터 리트리브(retrieve)된 물리 페이지 번호이다.
새로운 가상 페이지 번호가 변환을 위해 제공될 때, TLB 미스가 발생하며, 프로세서는 변환을 실행하기 위해 페이지 테이블들을 트래버스해야 한다. 페이지 테이블 워크가 완료되면, 가상 및 물리 페이지 번호들 및 페이지 속성들은 TLB의 빈 위치에 저장된다. 만일 TLB가 가득차면, 기존의 엔트리는 새로운 엔트리로 대체되어야 한다. 랜덤, 최근에는 사용되지 않는 라운드 로빈, 선입 선출(FIFO), 가장 최근에 사용되지만 자주 사용되지 않는 2차 기회 FIFO, 에이징 등과 같은 대체 알고리즘의 다양성은 기술 분야에 공지되어 있다. 중요한 태스크들과 관련된 메모리 페이지들의 경우, 많은 TLB 구현들은 연산 시스템이 대체에 대해 하나 이상의 TLB 엔트리들을 록킹하게 함으로써, 중요한 태스크들을 위한 고속 변환을 실행하도록 엔트리들이 언제나 TLB에 상주하는 것을 보장한다. 록킹된 TLB 엔트리들은 TLB 엔트리가 대체되어야 할 때 TLB 대체 알고리즘에 관계하지 않는다. 그러나 모든 명령 세트들이 대체에 대해 TLB 엔트리들을 록킹하기 위한 명령들과 같은 TLB 관리 명령들을 포함하는 것은 아니다. 이러한 경우들에서, TLB는 하드웨어에 의해 관리되며, 연산 시스템은 TLB 엔트리들을 직접 록킹하기 위해 소정의 방법을 결여할 수도 있다.
더 높은 성능을 위해, 프로세서는 (레벨-1 또는 L1 TLB로 참조되는 메인 TLB를 갖는) 레벨-0 또는 L0 TLB로 불리는 예를 들어, 4, 8 또는 16 엔트리들을 갖는 더 소형이고 더 고속인 TLB를 포함할 수도 있다. L0 TLB는 또한 기술 분야에서 마이크로 TLB로 알려져 있다. LO TLB는 최근에 액세스된 메모리 페이지로부터 명령들 또는 데이터가 다시 인출될 것 같은, 대부분의 프로그램들의 시간 및 공간 위치 원리를 이용하여 가장 최근에 사용된 몇몇 어드레스 변환들을 저장한다. 가상 어드레스를 변환하기 위해, 프로세서는 우선 가상 페이지 번호를 L0 TLB에 제공한다. 만일 가상 페이지 번호가 L0 TLB에서 히트하면, 대응하는 물리 페이지 번호 및 페이지 속성들이 제공된다. 만일 가상 페이지 번호가 L0 TLB에서 미스하면, 가상 페이지 번호는 변환을 위해 L1 TLB에 제공된다.
일반적으로, L0 TLB는 소프트웨어에 의해 인식되거나 직접 제어되지 않는 하드웨어 구현이다. 즉, 소프트웨어는 L0 TLB 엔트리들을 직접 판독 및 기록할 수 없으며, L0 TLB의 관리는 하드웨어에 의해 실행된다. 이것의 일 결과는 연산 시스템이 대체에 대해 록킹된 것으로서 L0 TLB의 엔트리들을 지정할 수 없다는 것이다. 대체에 대해 하나 이상의 L0 TLB 엔트리들을 록킹하는 능력이 가장 빠른 변환이 중요한 태스크들에 대해 언제나 이용가능한 것을 보장하기 때문에 유리할 것이다.
일 실시예에서, 하드웨어 관리된 L1 TLB의 경우, 페이지 테이블 엔트리들은 L1 TLB에 저장될 때 대체에 대해 대응하는 엔트리가 록킹되어야 하는지를 나타내는 L1 록(L1L) 비트와 같은 표시자를 포함한다. L1 TLB가 연산 시스템에 의해 관리되고(그리고 엔트리들을 록킹할 성능을 포함한) 다른 실시예에서, L1 TLB 엔트리들은 L0 TLB에 저장될 때 대체에 대해 엔트리가 록킹되어야 하는지를 나타내는 L0 록(LOL) 비트와 같은 표지사를 포함한다. 이러한 실시예에서, 가상 어드레스가 LO TLB에서 미스하고 L1 TLB에서 히트하면, 가상 어드레스, 물리 어드레스 및 페이지 속성들은 L0 TLB에 기록된다. 엔트리는 L1 TLB 엔트리에서 L0L 비트에 응답하여, LO TLB에서든 아니든 대체에 대해 록킹된다.
일 실시예는 계층형 참조 버퍼(TLB)를 관리하는 방법에 관한 것이다. 상위 레벨 TLB로부터의 엔트리는 낮은 레벨 TLB에 복제된다. 하위 레벨 TLB의 엔트리는 상위 레벨 TLB 엔트리의 표시자에 응답하여 대체에 대해 록킹된다.
다른 실시예는 프로세서에 관한 것이다. 프로세서는 상위 레벨 TLB 및 하위 레벨 TLB를 포함하는 계층형 변환 참조 버퍼(TLB) 및 명령 실행 파이프라인을 포함한다. 하위 레벨 TLB의 엔트리들은 상위 레벨 TLB의 엔트리를 복제한다. 프로세서는 어드레스 변환에서 하위 레벨 TLB에 우선 액세스하고, 만일 매칭 엔트리가 하위 레벨 TLB에서 발견되지 않을 경우, 상위 레벨 TLB를 액세스하도록 동작하는 TLB 제어기를 또한 포함한다. 제어기는 상위 레벨 TLB에서 대응하는 엔트리의 표시자에 응답하여 하위 레벨 TLB의 엔트리를 록킹하도록 추가로 동작한다.
다른 실시예는 프로세서에서 가상 어드레스를 물리 어드레스로 변환하는 방법에 관한 것이다. 메모리 액세스 명령은 가상 어드레스를 생성하기 위해 실행된다. 레벨-0 변환 참조 버퍼(L0 TLB)는 가상 어드레스의 일부와 액세스된다. 만일 가상 어드레스가 L0 TLB에서 미스하면, 레벨-1 TLB(L1 TLB)는 가상 어드레스의 일부와 액세스된다. 만일 가상 어드레스가 L1 TLB에서 히트하면, 물리 어드레스들 및 페이지 속성들의 일부는 L1 TLB로부터 획득되고, L1 TLB의 레벨-0 록(L0L) 표시자가 조사되고, 가상 어드레스의 일부, 물리 어드레스의 일부 및 페이지 속성들이 L0 TLB에서 엔트리로서 기록되고, L0 TLB 엔트리는 L0L 표시자에 응답하여 대체에 대해 록킹된다.
다른 실시예는 변환 참조 버퍼(TLB)를 관리하는 방법에 관한 것이다. 가상 어드레스에 대한 TLB 미스 시, 페이지 테이블 워크는 대응하는 물리 어드레스 및 록 표시자를 획득하기 위해 실행된다. 적어도 가상 및 물리 어드레스를 포함하는 엔트리는 TLB에 기록된다. TLB의 엔트리는 록 표시자에 응답하여 대체에 대해 록킹된다.
도1은 L0 TLB, L1 TLB 및 페이지 테이블의 기능적 블록도이다.
도2는 L0 TLB에서 엔트리 록킹을 나타낸 기능적 블록도이다.
도3은 프로세서의 기능적 블록도이다.
도4는 가상 어드레스의 물리 어드레스로의 변환에 대한 흐름도이다.
도1은 L0 TLB(100), L1 TLB(102) 및 페이지 테이블(104)을 도시한 기능적 블록도이다. L0 TLB(100) 및 L1 TLB(102)는 프로세서의 회로이며, 페이지 테이블(104)은 메모리의 논리적 데이터 구조이다. 가상 어드레스, 또는 페이지 번호와 같은 가상 어드레스의 일부는 L0 TLB(100)에 제공된다. 만일 가상 어드레스가 히트(hit)하면, L0 TLB(100)는 대응하는 물리 어드레스 및 페이지 속성들을 제공하며, 캐시 또는 메인 메모리 액세스가 계속될 것이다. 이는 가장 빠른 어드레스 변환이며, 따라서 높은 성능에 바람직하다.
만일 가상 어드레스가 L0 TLB(100)에서 미스(miss)하면, L1 TLB(102)가 액세스된다. 크기 때문에, L1 TLB(102) 액세스는 L0 TLB(100) 액세스보다 더 오래 걸린다. 만일 가상 어드레스가 L1 TLB(102)에서 히트하면, 대응하는 물리 어드레스 및 페이지 속성들이 제공되며, L0 TLB(100)로 기록되어, L0 TLB(100)이 동작하게 되는 소정의 대체 알고리즘에 따라 L0 TLB(100)에서 기존의 엔트리를 대체한다.
만일 가상 어드레스가 L1 TLB(102)에서 미스하면, 페이지 테이블(104)은 가상을 물리적 맵핑으로 확인시키기 위해 액세스된다. 도1의 단일 기능적 블록으로서 도시되었지만, 페이지 테이블(104)은 차례로 포개진 데이터 구조에서 다수의 페이지 테이블들을 포함할 수도 있으며, 전체 페이지 테이블(104) 통과(traversal)는 몇몇 반복적인 액세스들을 포함할 수도 있다. 페이지 테이블(104) 통과가 완료되면, 물리적 어드레스 및 페이지 속성들은 L1 TLB(102)로 기록되어, 현재의 동작하는 대체 알고리즘에 따라, 필요하다면, 기존의 L1 TLB(102) 엔트리를 대체한다. 만일 어드레스 변환 정보가 페이지 테이블(104)에서 발견되지 않으면, 에러가 발생된다.
페이지 테이블(104) 워크 및 L1 TLB(102)로의 엔트리를 기록 후, 어드레스 변환을 생성하는 명령이 재실행될 수도 있으며, 가상 어드레스는 L0 TLB(100)에서 미스하고 L1 TLB(102)에서 히트할 것이다. L1 TLB(102)는 물리적 어드레스 및 페이지 속성들을 제공하는데, 이들은 L0 TLB(100)로의 엔트리로서 가상 어드레스로 기록된다. 소정의 구현들에서, 물리적 어드레스 및 페이지 속성들은, 엔트리를 L1 TLB로 기록하는 것과 동시에, 페이지 테이블 워크의 완료시 L0 TLB로 직접 기록될 수도 있다. 이는 점선으로 도1에 표시된다.
가상 어드레스가 L0 TLB(100)에서 미스하고 L1 TLB(102)에서 히트할 때, 엔트리는 L0 TLB(100)로 기록된다. 만일 L0 TLB(100)가 채워지면, 엔트리는 대체되어야 한다. 소정의 중요한 태스크들에 의한 최대 성능을 보장하기 위해, 대체에 대해 하나 이상의 엔트리들을 L0 TLB(100)에 록킹할 수 있는 것은 유리할 것이다. 그러나 종래 기술의 프로세서에서, 연산 시스템 소프트웨어는 L0 TLB(100)로의 직접 액세스가 없으며, 어떤-또는 소정의- L0 TLB(100) 엔트리들이 대체에 대해 록킹되어야 하는지에 대한 방식이 없다. 유사한 상황은 하드웨어 관리된 L1 TLB와 함께 발생하는데, 여기서 연산 시스템은 대체에 대해 L1 TLB 엔트리들을 록킹할 방법이 없다.
일 실시예에 따라, L0 LOCK, 또는 L0L, 표시자가 L1 TLB(102) 엔트리들에 부가된다. L0L 표시자는 예를 들어, 비트를 포함할 수도 있다. L0L 비트의 상태는 엔트리가 L0 TLB(100)에서 대체에 대해 록킹되어야 하든지 그렇지 않든지 프로세서와 통신한다. L0L 비트는 페이지 테이블(104)에서 페이지 속성들과 함께 유지될 수도 있다. 택일적으로, 연산 시스템이 엔트리들을 직접 L1 TLB(102)에 기록하는 구현들에서, 소프트웨어는 L1 TLB(102) 엔트리가 생성되고 저장될 때 L0L 비트이든 아니든 이를 세팅할 수도 있다. (페이지 테이블(104) 통과로부터 초래된 L1 TLB(102)의 업데이트 후를 포함하여) 가상 어드레스가 L0 TLB(100)에서 미스하고 L1 TLB(102)에서 히트하면, L0L 비트는 엔트리가 L0 TLB(100)에서 록킹되어야 하는지를 결정하기 위해 조사된다. 만일 L0L 비트가 세팅되면, 엔트리는 L0 TLB(100)에 기록되고 대체에 대해 록킹된다.
유사하게, 하드웨어 관리된 L1 TLB(102), L1 LOCK 또는 L1L을 갖는 프로세서에서, 표시자는 페이지 테이블에 유지되고, 대응하는 엔트리가 L1 TLB(102)에서 록킹되어야 하는지를 나타낸다. 일반적으로, 대체에 대해 L0 TLB(100) 엔트리들을 록킹하는 것과 관련한 모든 논의는 하드웨어 관리된 L1 TLB(102)의 경우 대체에 대해 L1 TLB(102) 엔트리들을 록킹하는 것에 적용된다.
도2는 일 실시예에 따라, L1 TLB(102) 엔트리에서 L0L 비트에 의해 표시될 때, L0 TLB(100) 엔트리들을 록킹하는 수단을 나타낸 기능적 블록도이다. L0 TLB(100)는 0 내지 n-1로 넘버링된 n 엔트리들을 포함한다. FLOOR 레지스터(101)는 L0 TLB(100)의 "FLOOR"를 나타내는 엔트리 번호, 또는 표준 배치에 이용가능한 최하위 L0 TLB(100) 엔트리를 유지한다. FLOOR 이하의 L0 TLB(100) 엔트리들은 대체를 위해 이용가능하지 않으며, 따라서, 록킹된다. 만일 어떠한 엔트리들도 록킹되지 않으면, FLOOR 레지스터(101)는 0을 포함하며, 대체 알고리즘은 L0 TLB(100)를 통해 동작한다. 도2에 도시된 바와 같이, 만일 하부의 두 엔트리들이 대응하는 L1 TLB(102) 엔트리들에서 L0L 비트에 응답하여 록킹되면, 프로세서는 FLOOR 레지스터(101)를 2로 증가시킬 것이며, 제1 L0 TLB(100) 엔트리는 재배치에 이용가능하다. 이 경우, 표준 캐시 재배치 알고리즘은 "floor", 또는 2로부터 L0 TLB(100)의 최상부, n-1로 L0 TLB(100)의 일부에서 동작한다. 엔트리들은 FLOOR 레지스터(101)를 감소시킴으로써 언록킹(unlock)될 수도 있다.
하나의 장소에서 록킹된 L0 TLB(100) 엔트리들을 그룹화하는 것은 재배치 알고리즘을 간략화한다. 예를 들어, 만일 L0 TLB(100) 엔트리들이 라운드 로빈에 기초하여 대체되면, "롤오버(rollover)" 포인트만이 록킹된 엔트리들에 의해 영향을 받는다(즉, n-1을 넘어서 증가할 때, 다음의 엔트리는 0이 아닌 FLOOR 레지스터(101)에 의해 지적되는 것임). 라운드 로빈 배치에 의해 "생략" 되어야 하는, L0 TLB(100) 공간에 산재한 비연속 록킹된 엔트리들은 없다. L0 TLB(100) 엔트리들을 그룹화하고 록킹하는 FLOOR 방법은 대표적인 예이며, 이에 한정되지 않음을 주의해야 한다. L0 TLB(100) 엔트리들은 다양한 방법들에 따라 재배치에 대해 록킹될 수도 있다. 유사하게, 기술 분야에 알려진 바와 같이, 엔트리들은 FLOOR 레지스터를 이용하는 페이지 테이블(104)에서 또는 다른 방식에서 설명된 바와 같이 또는 소프트웨어 제어 하에서 L1 TLB(102)에 록킹될 수도 있다.
도3은 파이프라인 구조 및 계층형 메모리 구조를 이용하는, 전형적인 프로세서(10)의 기능적 블록도를 도시한다. 프로세서(10)는 제어 로직(14)에 따라 명령 실행 파이프라인(12)에서 명령들을 실행한다. 파이프라인은 파이프라인 스테이지들에 구성된 다양한 레지스터들 또는 래치들(16), 및 하나 이상의 산술 논리 유닛(ALU)(18)을 포함한다. 범용 레지스터(GPR) 파일(20)은 메모리 계층의 최상부를 포함하는 레지스터들을 제공한다.
파이프라인은 명령 캐시(I-캐시)(22)로부터 명령들을 인출하며, 메모리 어드레싱 및 허가들은 레벨-0 명령측 변환 참조 버퍼(L0 ITLB)(24), 및 L1 ITLB(25)에 의해 관리된다. 데이터는 데이터 캐시(D-캐시)(26)로부터 액세스되며, 메모리 어드레싱 및 허가들은 메인 L0 TLB(100) 및 L1 TLB(102)에 의해 관리된다. 다양한 실시예들에서, L1 ITLB(24)는 L1 TLB(102)의 일부의 사본을 포함할 수도 있다. 택일적으로, L1 ITLB(24) 및 L1 TLB(102)는 통합될 수도 있다. 유사하게, 프로세서(10)의 다양한 실시예들에서, I-캐시(22) 및 D-캐시(26)는 통합되거나 단일화될 수도 있다. I-캐시(22) 및/또는 D-캐시(26)에서 미스들은 메모리 인터페이스(30)의 제어하에서 메인(오프-칩) 메모리(32)로의 액세스를 유발한다. 페이지 테이블(104)은 메모리(32)에 저장된다.
프로세서(10)는 다양한 주변 장치들(36)에 대한 액세스를 제어하는 입력/출력(I/O) 인터페이스(34)를 포함할 수도 있다. 기술 분야의 당업자는 프로세서(10)의 다양한 변화들이 가능하다는 것을 이해할 것이다. 예를 들어, 프로세서(10)는 I 및 D 캐시들(22, 26) 중 하나 또는 모두에 대한 제 2-레벨(L2) 캐시를 포함할 수도 있다. 게다가, 프로세서(10)에 도시된 하나 이상의 기능 블록들은 특정 실시예로부터 생략될 수도 있다.
도4는 일 실시예에 따라, 일반적으로 200으로 도시된, 메모리 어드레스 변환 프로세스를 도시한 흐름도이다. 메모리 액세스 명령이 실행되고(블록 202), 가상 어드레스 또는 그 일부가 L0 TLB(100)에 제공된다(블록 204). 만일 가상 어드레스가 L0 TLB(100)에서 히트하면(블록 206), L0 TLB(100)는 물리 어드레스 또는 그 일부, 및 페이지 속성들 및 캐시(22, 26)를 제공하거나(블록 208), 메인 메모리(32) 액세스를 계속한다(미도시). 만일 가상 어드레스가 L0 TLB(100)에서 미스하면(블록 206), 가상 어드레스는 변환을 위해 L1 TLB(102)로 제공된다.
만일 가상 어드레스가 L1 TLB(102)에서 히트하면(블록 212), L1 TLB(102) 엔트리에서 L0L 비트가 체크된다(블록 214). 만일 L0L 비트가 세팅되지 않으면, 엔트리는 L0 TLB(100)에 부가되며(블록 216), 물리 어드레스 및 페이지 속성들이 제공된다(블록 208). 만일 L0L 비트가 세팅되면, 엔트리는 L0 TLB(100)에 부가되고 대체에 대해 L0 TLB(100)에서 록킹되고(블록 218), 물리 어드레스 및 페이지 속성들이 제공된다(블록 208).
만일 가상 어드레스가 L1 TLB(102)에서 미스하면(블록 212), 페이지 테이블(들)(104)은 어드레스 변환을 획득하기 위해 액세스된다(블록 220). 만일 변환이 페이지 테이블(104)에서 발견되지 않으면(블록 222), 에러가 발생된다(블록 224). 만일 변환이 페이지 테이블(104)로부터 획득되면(블록 222), 변환은 L0 TLB(100)에서 대체에 대해 엔트리가 록킹되어야 하는지를 나타내는 L0L 비트를 포함하여, L1 TLB(102)에 엔트리로서 기록된다. 이어 메모리 액세스 명령(202)은 어드레스 변환 프로세스를 재시작하기 위해 재실행된다(블록 202). 이때, 가상 어드레스는 L0 TLB(100)에서 미스할 것이고(블록 206), L1 TLB(102)에서 히트할 것이다(블록 212). 이어 엔트리는 L1 TLB(102) 엔트리에서 L0L 비트의 상태에 따라 L0 TLB(100)에 기록되고 록킹되든지 한다(블록 214, 216, 218). 도4의 흐름도가 연속한 단계들을 도시하지만, 일 실시예에서 L0 TLB(100) 및 L1 TLB(102) 액세스들은 동시에 발생한다.
L1 TLB(102) 엔트리들에서 하나 이상의 L0L 비트들을 한정하는 것은 어떤 엔트리들이 L0 TLB(100)에서 대체에 대해 록킹되어야 하는지를 지정하기 위한 연산 시스템 수단을 제공한다. 이는 연산 시스템이, L0 TLB(100)로의 직접 액세스 없이, 소정의 중요한 태스크들에 대한 가장 빠른 가능한 메모리 어드레스 변환들을 보장하게 한다. 마찬가지로, 하드웨어 관리된 L1 TLB(102)의 경우, L1L 비트는, 대응하는 L1 TLB(102) 엔트리가 대체에 대해 록킹되어야 하는지를 나타내는 페이지 테이블(104)에서 유지될 수도 있다.
비록 본 발명이 특정한 특성, 특징 및 그 실시예에 관해 설명되었지만, 다양한 변경, 변화 및 다른 실시예가 본 발명의 최광의의 사상 내에서 가능하며, 실시예들은 본 발명의 사상 내에 있는 것으로 간주된다. 따라서, 본 발명의 실시예는 설명을 위한 것이며 한정을 위한 것은 아니며, 모든 변경은 첨부된 청구항의 범위 내에 있다.

Claims (18)

  1. 계층형 변환 참조 버퍼(TLB)를 관리하는 방법으로서,
    상위 레벨 TLB로부터의 엔트리를 하위 레벨 TLB로 복제(replicate)하는 단계; 및
    상기 상위 레벨 TLB 엔트리의 표시자에 응답하여 대체(replacement)에 대해 상기 하위 레벨 TLB의 상기 엔트리를 록킹(locking)하는 단계를 포함하는,
    계층형 변환 참조 버퍼(TLB)를 관리하는 방법.
  2. 제1항에 있어서,
    상기 표시자는 상기 상위 레벨 TLB 엔트리의 비트인,
    계층형 변환 참조 버퍼(TLB)를 관리하는 방법.
  3. 제1항에 있어서,
    상기 표시자를 포함하는 상기 상위 레벨 TLB 엔트리는 소프트웨어에 의해 세팅되는,
    계층형 변환 참조 버퍼(TLB)를 관리하는 방법.
  4. 제1항에 있어서,
    상기 표시자는 메모리 페이지 테이블에서 소프트웨어에 의해 세팅되며, 상기 표시자는 하드웨어 페이지 테이블 확장 연산 동안 상기 상위 레벨 TLB 엔트리에서 세팅되는,
    계층형 변환 참조 버퍼(TLB)를 관리하는 방법.
  5. 제1항에 있어서,
    상기 하위 레벨 TLB는 명령 TLB인,
    계층형 변환 참조 버퍼(TLB)를 관리하는 방법.
  6. 제1항에 있어서,
    상기 하위 레벨 TLB는 데이터 TLB인,
    계층형 변환 참조 버퍼(TLB)를 관리하는 방법.
  7. 제6항에 있어서,
    상기 상위 레벨 TLB 엔트리를 하위 레벨 명령 TLB로 복제하는 단계 및 상기 표시자에 응답하여 대체에 대해 상기 하위 레벨 명령 TLB 엔트리를 록킹하는 단계를 더 포함하는,
    계층형 변환 참조 버퍼(TLB)를 관리하는 방법.
  8. 프로세서로서,
    명령 실행 파이프라인;
    상위 레벨 TLB 및 하위 레벨 TLB를 포함하는 계층형 변환 참조 버퍼(TLB) ― 상기 하위 레벨 TLB의 엔트리들은 상기 상위 레벨 TLB의 엔트리들을 복제함 ― ; 및
    어드레스 변환에서 상기 하위 레벨 TLB에 우선 액세스하고, 매칭 엔트리가 상기 하위 레벨 TLB에서 발견되지 않는 경우 상기 상위 레벨 TLB에 액세스하도록 동작하는 TLB 제어기 ― 상기 제어기는 상기 상위 레벨 TLB의 대응하는 엔트리의 표시자에 응답하여 상기 하위 레벨 TLB의 엔트리를 록킹하도록 추가로 동작함 ― 를 포함하는,
    프로세서.
  9. 프로세서에서 가상 어드레스를 물리 어드레스로 변환하는 방법으로서,
    가상 어드레스를 생성하기 위해 메모리 액세스 명령을 실행하는 단계;
    상기 가상 어드레스의 일부를 통해 레벨-0 변환 참조 버퍼(L0 TLB)에 액세스하는 단계;
    상기 가상 어드레스가 상기 L0 TLB에서 미스(miss)하는 경우, 상기 가상 어드레스의 일부를 통해 레벨-1 TLB(L1 TLB)에 액세스하는 단계; 및
    상기 가상 어드레스가 상기 L1 TLB에서 히트(hit)하는 경우,
    상기 L1 TLB로부터 페이지 속성들 및 물리 어드레스의 일부를 획득하는 단계,
    상기 L1 TLB 엔트리의 레벨-0 록(L0L) 표시자를 조사하는 단계,
    상기 L0 TLB에 엔트리로서 상기 가상 어드레스의 일부, 상기 물리 어드레스의 일부, 및 상기 페이지 속성들을 기록하는 단계, 및
    상기 L0L 표시자에 응답하여 대체에 대해 상기 L0 TLB 엔트리를 록킹하는 단계를 포함하는,
    가상 어드레스를 물리 어드레스로 변환하는 방법.
  10. 제9항에 있어서,
    상기 가상 어드레스가 상기 L1 TLB에서 미스하는 경우,
    상기 가상 어드레스와 관련된 페이지 속성들 및 물리 어드레스를 획득하기 위해 페이지 테이블 통과(traversal)을 실행하는 단계; 및
    L1 TLB에 엔트리로서 상기 가상 어드레스의 일부, 상기 물리 어드레스의 일부, 상기 페이지 속성들 및 L0L 표시자를 기록하는 단계를 더 포함하는,
    가상 어드레스를 물리 어드레스로 변환하는 방법.
  11. 제 8 항에 있어서,
    레벨-0 명령측 변환 참조 버퍼(L0 ITLB);
    레벨-1 명령측 변환 참조 버퍼(L1 ITLB); 및
    명령 캐시(I-캐시)를 더 포함하고,
    상기 명령 실행 파이프라인은 상기 I-캐시로부터의 명령들에 액세스하도록 동작가능하고,
    메모리 어드레싱 및 허가들은 상기 L0 ITLB 및 상기 L1 ITLB에 의해 관리되는,
    프로세서.
  12. 제 11 항에 있어서,
    상기 L1 ITLB 및 상기 상위 레벨 TLB가 통합되는,
    프로세서.
  13. 제 11 항에 있어서,
    데이터 캐시(D-캐시)를 더 포함하고,
    상기 명령 실행 파이프라인은 상기 D-캐시로부터의 데이터에 액세스하도록 동작가능하고, 메모리 어드레싱 및 허가들은 상기 하위 레벨 TLB 및 상기 상위 레벨 TLB에 의해 관리되는,
    프로세서.
  14. 제 13 항에 있어서,
    상기 I-캐시 및 D-캐시가 통합되는,
    프로세서.
  15. 제 13 항에 있어서,
    제 2-레벨(L2) 캐시를 더 포함하는,
    프로세서.
  16. 제 15 항에 있어서,
    상기 L2 캐시는 상기 I-캐시를 포함하는,
    프로세서.
  17. 제 15 항에 있어서,
    상기 L2 캐시는 상기 D-캐시를 포함하는,
    프로세서.
  18. 제 8 항에 있어서,
    적어도 하나의 주변 장치로의 액세스를 제어하도록 동작가능한 입력/출력(I/O) 인터페이스를 더 포함하는,
    프로세서.
KR1020087006678A 2005-08-23 2006-08-22 Tlb 록 표시자 KR100959014B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/210,526 US7426626B2 (en) 2005-08-23 2005-08-23 TLB lock indicator
US11/210,526 2005-08-23

Publications (2)

Publication Number Publication Date
KR20080041707A KR20080041707A (ko) 2008-05-13
KR100959014B1 true KR100959014B1 (ko) 2010-05-24

Family

ID=37497978

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087006678A KR100959014B1 (ko) 2005-08-23 2006-08-22 Tlb 록 표시자

Country Status (6)

Country Link
US (1) US7426626B2 (ko)
EP (1) EP1934753B1 (ko)
JP (1) JP4567789B2 (ko)
KR (1) KR100959014B1 (ko)
CN (1) CN101292228B (ko)
WO (1) WO2007024937A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11704018B2 (en) 2019-09-27 2023-07-18 SK Hynix Inc. Memory management device capable of managing memory address translation table using heterogeneous memories and method of managing memory address thereby

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070094476A1 (en) * 2005-10-20 2007-04-26 Augsburg Victor R Updating multiple levels of translation lookaside buffers (TLBs) field
US8195886B2 (en) * 2007-03-16 2012-06-05 Arm Limited Data processing apparatus and method for implementing a replacement scheme for entries of a storage unit
US8799620B2 (en) 2007-06-01 2014-08-05 Intel Corporation Linear to physical address translation with support for page attributes
US7908439B2 (en) * 2007-06-25 2011-03-15 International Business Machines Corporation Method and apparatus for efficient replacement algorithm for pre-fetcher oriented data cache
US20090049272A1 (en) * 2007-08-13 2009-02-19 International Business Machines Corporation Method for improving the performance of software-managed tlb
US8156309B2 (en) * 2007-10-18 2012-04-10 Cisco Technology, Inc. Translation look-aside buffer with variable page sizes
US7949851B2 (en) * 2007-12-28 2011-05-24 Spansion Llc Translation management of logical block addresses and physical block addresses
US8464021B2 (en) * 2008-05-28 2013-06-11 Spansion Llc Address caching stored translation
US9239799B2 (en) * 2008-06-26 2016-01-19 Qualcomm Incorporated Memory management unit directed access to system interfaces
EP2148279A1 (fr) * 2008-07-24 2010-01-27 Nagravision S.A. Méthode de mise à jour de données dans des mémoires utilisant une unité de gestion mémoire
US9569349B2 (en) * 2008-12-19 2017-02-14 Ati Technologies Ulc Method and apparatus for reallocating memory content
US8275598B2 (en) * 2009-03-02 2012-09-25 International Business Machines Corporation Software table walk during test verification of a simulated densely threaded network on a chip
US9535849B2 (en) * 2009-07-24 2017-01-03 Advanced Micro Devices, Inc. IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect
JP5423871B2 (ja) * 2010-03-09 2014-02-19 富士通株式会社 情報処理装置、情報処理方法、およびプログラム
US8615636B2 (en) 2011-03-03 2013-12-24 International Business Machines Corporation Multiple-class priority-based replacement policy for cache memory
WO2013147882A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Efficient locking of memory pages
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US20140189333A1 (en) * 2012-12-28 2014-07-03 Oren Ben-Kiki Apparatus and method for task-switchable synchronous hardware accelerators
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US9292453B2 (en) * 2013-02-01 2016-03-22 International Business Machines Corporation Storing a system-absolute address (SAA) in a first level translation look-aside buffer (TLB)
CN103116556B (zh) * 2013-03-11 2015-05-06 无锡江南计算技术研究所 内存静态划分虚拟化方法
US10454714B2 (en) 2013-07-10 2019-10-22 Nicira, Inc. Method and system of overlay flow control
US10135789B2 (en) 2015-04-13 2018-11-20 Nicira, Inc. Method and system of establishing a virtual private network in a cloud service for branch networking
US9836410B2 (en) * 2015-04-15 2017-12-05 Qualcomm Incorporated Burst translation look-aside buffer
CN106326150B (zh) * 2015-06-26 2020-09-15 中兴通讯股份有限公司 内存访问处理方法及装置
US11403099B2 (en) 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
CN106649149A (zh) * 2015-10-28 2017-05-10 福州瑞芯微电子股份有限公司 实现地址映射的内存管理系统及方法
US10915333B2 (en) 2016-03-30 2021-02-09 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
US10061712B2 (en) 2016-05-10 2018-08-28 Oracle International Corporation Virtual memory page mapping overlays
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10162764B2 (en) * 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10037283B2 (en) * 2016-08-12 2018-07-31 Advanced Micro Devices, Inc. Updating least-recently-used data for greater persistence of higher generality cache entries
US10515671B2 (en) 2016-09-22 2019-12-24 Advanced Micro Devices, Inc. Method and apparatus for reducing memory access latency
US20180219765A1 (en) 2017-01-31 2018-08-02 Waltz Networks Method and Apparatus for Network Traffic Control Optimization
US11706127B2 (en) 2017-01-31 2023-07-18 Vmware, Inc. High performance software-defined core network
US10992568B2 (en) 2017-01-31 2021-04-27 Vmware, Inc. High performance software-defined core network
US20200036624A1 (en) 2017-01-31 2020-01-30 The Mode Group High performance software-defined core network
US10127159B1 (en) * 2017-07-13 2018-11-13 International Business Machines Corporation Link consistency in a hierarchical TLB with concurrent table walks
US10608844B2 (en) 2017-10-02 2020-03-31 Vmware, Inc. Graph based routing through multiple public clouds
US10999100B2 (en) 2017-10-02 2021-05-04 Vmware, Inc. Identifying multiple nodes in a virtual network defined over a set of public clouds to connect to an external SAAS provider
US11115480B2 (en) 2017-10-02 2021-09-07 Vmware, Inc. Layer four optimization for a virtual network defined over public cloud
US11223514B2 (en) 2017-11-09 2022-01-11 Nicira, Inc. Method and system of a dynamic high-availability mode based on current wide area network connectivity
US11321240B2 (en) * 2018-06-08 2022-05-03 International Business Machines Corporation MMIO addressing using a translation lookaside buffer
US11243891B2 (en) * 2018-09-25 2022-02-08 Ati Technologies Ulc External memory based translation lookaside buffer
US11310170B2 (en) 2019-08-27 2022-04-19 Vmware, Inc. Configuring edge nodes outside of public clouds to use routes defined through the public clouds
US11489783B2 (en) 2019-12-12 2022-11-01 Vmware, Inc. Performing deep packet inspection in a software defined wide area network
US11722925B2 (en) 2020-01-24 2023-08-08 Vmware, Inc. Performing service class aware load balancing to distribute packets of a flow among multiple network links
US11363124B2 (en) * 2020-07-30 2022-06-14 Vmware, Inc. Zero copy socket splicing
US11575591B2 (en) 2020-11-17 2023-02-07 Vmware, Inc. Autonomous distributed forwarding plane traceability based anomaly detection in application traffic for hyper-scale SD-WAN
US11929903B2 (en) 2020-12-29 2024-03-12 VMware LLC Emulating packet flows to assess network links for SD-WAN
CN116783874A (zh) 2021-01-18 2023-09-19 Vm维尔股份有限公司 网络感知的负载平衡
US11979325B2 (en) 2021-01-28 2024-05-07 VMware LLC Dynamic SD-WAN hub cluster scaling with machine learning
US11381499B1 (en) 2021-05-03 2022-07-05 Vmware, Inc. Routing meshes for facilitating routing through an SD-WAN
US11729065B2 (en) 2021-05-06 2023-08-15 Vmware, Inc. Methods for application defined virtual network service among multiple transport in SD-WAN
US11943146B2 (en) 2021-10-01 2024-03-26 VMware LLC Traffic prioritization in SD-WAN
US11909815B2 (en) 2022-06-06 2024-02-20 VMware LLC Routing based on geolocation costs
CN115794681B (zh) * 2022-10-12 2023-05-23 中国人民解放军军事科学院国防科技创新研究院 适用于risc-v的多级可扩展tlb系统及其地址转换方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149490A (ja) * 2000-11-06 2002-05-24 Fujitsu Ltd マイクロプロセッサ及びマイクロプロセッサのアドレス変換方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0746325B2 (ja) * 1985-12-23 1995-05-17 モトロ−ラ・インコ−ポレ−テツド データ処理システム
US4727485A (en) 1986-01-02 1988-02-23 Motorola, Inc. Paged memory management unit which locks translators in translation cache if lock specified in translation table
US6223263B1 (en) * 1998-09-09 2001-04-24 Intel Corporation Method and apparatus for locking and unlocking a memory region
GB2388447B (en) * 2002-05-09 2005-07-27 Sun Microsystems Inc A computer system method and program product for performing a data access from low-level code
US6941442B2 (en) * 2002-08-02 2005-09-06 Arm Limited Entry lockdown within a translation lookaside buffer mechanism
JP3936672B2 (ja) * 2003-04-30 2007-06-27 富士通株式会社 マイクロプロセッサ

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149490A (ja) * 2000-11-06 2002-05-24 Fujitsu Ltd マイクロプロセッサ及びマイクロプロセッサのアドレス変換方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11704018B2 (en) 2019-09-27 2023-07-18 SK Hynix Inc. Memory management device capable of managing memory address translation table using heterogeneous memories and method of managing memory address thereby

Also Published As

Publication number Publication date
KR20080041707A (ko) 2008-05-13
JP2009506434A (ja) 2009-02-12
US7426626B2 (en) 2008-09-16
WO2007024937A1 (en) 2007-03-01
US20070050594A1 (en) 2007-03-01
CN101292228B (zh) 2012-02-08
EP1934753B1 (en) 2018-08-08
CN101292228A (zh) 2008-10-22
JP4567789B2 (ja) 2010-10-20
EP1934753A1 (en) 2008-06-25

Similar Documents

Publication Publication Date Title
KR100959014B1 (ko) Tlb 록 표시자
JP5628404B2 (ja) キャッシュされたメモリデータを伴うキャッシュメモリ属性インジケータ
US7287140B1 (en) System and technique for fine-grained computer memory protection
US7461209B2 (en) Transient cache storage with discard function for disposable data
US5493660A (en) Software assisted hardware TLB miss handler
US7797509B2 (en) Systems and methods for utilizing an extended translation look-aside buffer having a hybrid memory structure
US4825412A (en) Lockout registers
JPH0683711A (ja) データ処理システムおよびデータ処理方法
BRPI0710171A2 (pt) cache de instruções marcada virtualmente com comportamento marcado fisicamente
US20160140042A1 (en) Instruction cache translation management
JPH0619793A (ja) キャッシュ・アクセスのための仮想アドレス変換予測の履歴テーブル
WO2006060198A9 (en) Translation lookaside buffer (tlb) access supression for intra-page program counter relative or absolute address branch instructions
US5956752A (en) Method and apparatus for accessing a cache using index prediction
JP4263770B2 (ja) キャッシュミスにおける電力消費を減少させるグローバル修正インジケータ
JP2009512943A (ja) 多階層の変換索引緩衝機構(TLBs)フィールドの更新
CN111858404A (zh) 缓存数据定位系统
US20040133760A1 (en) Replacement algorithm for a replicated fully associative translation look-aside buffer
MX2008005091A (en) Caching memory attribute indicators with cached memory data

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140430

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee