KR20080041707A - Tlb 록 표시자 - Google Patents
Tlb 록 표시자 Download PDFInfo
- Publication number
- KR20080041707A KR20080041707A KR1020087006678A KR20087006678A KR20080041707A KR 20080041707 A KR20080041707 A KR 20080041707A KR 1020087006678 A KR1020087006678 A KR 1020087006678A KR 20087006678 A KR20087006678 A KR 20087006678A KR 20080041707 A KR20080041707 A KR 20080041707A
- Authority
- KR
- South Korea
- Prior art keywords
- tlb
- entry
- indicator
- virtual address
- level
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/681—Multi-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
본 발명은 일반적으로 프로세서들의 분야에 관한 것이며, 특히 하나 이상의 변환 참조 버퍼에서 대체에 대해 엔트리들을 록킹하는 시스템 및 방법에 관한 것이다.
마이크로프로세서는 적절한 전자 장치들을 포함하는 다양한 애플리케이션들의 계산 태스크를 실행한다. 대부분의 경우, 추가의 기능들 및 특성들이 휴대용 전자 장치들 및 다른 애플리케이션들에서 구현될 수 있도록 프로세서 성능을 최대화하는 것은 주요한 설계 목표이다. 또한, 많은 애플리케이션에서, 소정의 계산 태스크들은 다른 것에 비해 우선 순위를 가지며, 시스템이 계산 리소스들이 높은 우선 순위 태스크를 위해 보존되게 하는 것을 보장하는 것이 유리할 것이다.
많은 프로그램들은 이들을 실행하는 컴퓨터가 매우 큰(이상적으로는 제한이 없는) 용량의 고속 메모리를 갖는 것처럼 기록된다. 대부분의 현대의 프로세서들은 메모리 타입들의 계통(hierarchy)을 포함함으로써 상기 이상적인 조건을 시뮬레이션하는데, 각각의 타입은 상이한 속도 및 비용 특성을 갖는다. 계통에서 메모리 타입은 최상위에서 매우 고속이고 매우 고가로부터 점진적으로 낮아져서 하위 레벨에서 더욱 경제적인 저장 타입들로 변화한다. 통상의 프로세서 메모리 계통은 상 위 레벨에서 프로세서에 레지스터들(게이트들)을 포함할 수도 있으며; 하나 이상의 온칩 캐시들(SRAM); 가능하게는 오프칩 캐시(SRAM); 메인 메모리(DRAM); 디스크 저장소(전자-기계적 액세스를 이용하는 마그네틱 매체); 및 최하위 레벨에서 테이프 또는 CD(자기 또는 광학 매체)에 의해 베이킹된다. 대부분의 휴대용 전자 장치들은, 만일 존재한다 해도, 제한된 디스크 저장소를 가지며, 따라서 종종 크기로 제한되는 메인 메모리는 메모리 계통에서 최하위 레벨이다.
컴퓨터 메모리 계통에서, 각각의 하위 레벨은 더 높은 계층들에 상주하는 데이터의 전체(그러나 가능하게는 스테일(stale)) 사본을 유지한다. 즉, 더 높은 레벨들에 저장된 데이터는 더 낮은 레벨에 복제된다. 더 소형이고 더 높은 레벨의 저장소는 더 대형이고 더 낮은 레벨의 메모리의 다수의 위치에 맵핑하기 때문에, 맵핑 방식은 계통 계층들(hierarchy layers) 사이에서 어드레스들의 변환을 필요로 한다. 대부분의 프로세서는 매우 큰, 개념상으로 연속한 가상의 어드레스 공간에서 동작한다. 메인 메모리는 하드웨어와 시스템 파라미터들에 의해 제한된 물리적 어드레스 공간에서 액세스된다. 캐시들-프로세서 코어와 메인 메모리 사이에 삽입된 고속 메모리들-은 가상 어드레스에 의해, 완벽하게는 물리적 어드레스에 의해, 또는 (가상 인덱스 및 물리적 태그를 이용하는 것과 같이) 조합하여, 완전하게 액세스 될 수도 있다. 그러나 캐시 구조에 관계없이, 어드레스들은 가상 어드레스 공간으로부터 물리 어드레스 공간으로 변환되어야 한다.
하나의 제한된 물리 메모리 어드레스 공간으로의 많은 대형의 가상 어드레스 공간의 맵핑 및 변환은 메모리 관리로 알려져 있다. 연산 시스템에 의한 메모리 관리는 프로그램들이 서로의 데이터를 오버라이팅하는 것을 방지함으로써 적절한 성능을 보장하며; 일 사용자가 다른 사용자의 데이터에 액세싱하는 것을 불허함으로써 보안성을 제공하며; 사용자-레벨 프로그램들이 연산 시스템 배치 테이블들 및 파라미터들과 같은 감시자-레벨 데이터 구조들을 액세스하는 것을 불허함으로써 신뢰도를 증진시킨다.
메모리는 예를 들어, 4K 바이트를 포함할 수도 있는, 페이지들로 불리는 고정된 크기의 세그먼트들에서 관리될 수도 있다. 페이지 번호로 불리는 어드레스의 상부 또는 가장 중요한 부분은 특정 메모리 페이지를 식별한다. 페이지 번호는 가상 어드레스 공간에서 물리 어드레스 공간으로 변환된다. 페이지 오프셋으로 불리는 어드레스의 하부, 또는 가장 덜 중요한 부분은 가상 어드레스들 및 물리 어드레스들에 대해 동일한 페이지로의 오프셋이며; 페이지 오프셋 비트들은 변환되지 않는다. 예로서, 4K 페이지들을 갖는 32 비트 어드레스의 경우, 페이지 번호는 어드레스 비트 [31:12] 및 페이지 프셋 비트 [11:0]을 포함할 것이다.
31 페이지 번호 12 | 11 페이지 오프셋 0 |
표1: 어드레스의 페이지 필드
가상 페이지 번호들의 물리 페이지 번호로의 맵핑은, 페이지 테이블들로 불리는 하나 이상의 데이터 구조들에서, 연산 시스템 소프트웨어에 의해 제어된다. 페이지 테이블은 단일 테이블, 또는 계층 또는 트리형 시리즈의 테이블일 수도 있으며, 각각은 가상 페이지 번호의 부분 또는 세그먼트를 물리 메모리의 대응하는 범위로 맵핑한다. 페이지 테이블은 부가적으로 판독, 기록 및 실행 허용과 같은 물리 페이지들의 속성을 저장하는데, 페이지는 공유되거나 단일 프로세스에 전유 등이 된다. 초기에, 프로세서는 메인 메모리(또는 만일 캐시 메모리가 물리적으로 인덱스 또는 태그되었다면, 캐시 메모리)에 액세스하기 위해, 새로운 가상 어드레스를 대응하는 물리 어드레스로 변환하기 위해 페이지 테이블들을 "워킹" 하거나 운행해야 한다. 연속한 어드레스 변환들은 TLB에서, 가상 및 물리 페이지 번호들, 및 페이지 속성들을 저장함으로써 빠르게 될 수도 있다. TLB는 데이터 및 명령 페이지들 모두에 대해 어드레스 변환들 및 페이저 속성들을 저장할 수도 있다. 부가적으로, 단일화된 TLB의 서브세트를 포함할 수도 있는 명령 TLB(ITLB)는 명령들에 대한 어드레스 변환들 및 페이지 속성을 개별적으로 저장할 수도 있다.
TLB는 콘텐츠 어드레싱 가능한 메모리(CAM), 및 관련된 랜덤 액세스 메모리(RAM)를 포함할 수도 있으며, 각각은 예를 들어, 32, 64 또는 128과 같은 고정된 수의 엔트리들을 갖는다. CAM은 모든 저장된, 앞서 변환된 가상 페이지 번호들에 대해, 변환을 위해 제공된 가상 페이지 번호의 병렬 비교를 실행한다. CAM의 출력은 제공된 가상 페이지 번호에 부합하는 저장된 가상 페이지 번호의 위치이다. 이러한 위치는 RAM을 인덱스하는데, 이는 가상 페이지 번호는 물론, 페이지 속성들에 대응하는 저장된 물리 페이지 번호를 제공한다. 캐시 및/또는 메인 메모리에 제공된 물리 어드레스는 가상 어드레스로부터 페이지 오프셋과 연결된, TLB로부터 검색된 물리 페이지 번호이다.
새로운 가상 페이지 번호가 변환을 위해 제공될 때, 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)에 제공된다. 만일 가상 어드레스가 히트하면, L0 TLB(100)는 대응하는 물리 어드레스 및 페이지 속성을 제공하며, 캐시 또는 메인 메모리 액세스가 계속될 것이다. 이는 가장 빠른 어드레스 변환이며, 따라서 높은 성능을 위해 참조된다.
만일 가상 어드레스가 L0 TLB(100)에서 미스하면, 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) 운행법은 몇몇 반복적인 액세스들을 포함할 수도 있다. 페이지 테이블(104) 운행이 완료되면, 물리적 어드레스 및 페이지 속성들은 L1 TLB(102)로 기록되어, 현재의 동작하는 대체 알고리즘에 따라, 필요하다면, 현재의 L1 TLB(102) 엔트리를 대체한다. 만일 어드레스 변환 정보가 페이지 테이블(104)에서 발견되지 않으면, 에러가 발생된다.
페이지 테이블(104) 워크 및 L1 TLB(102)로의 엔트리를 기록 후, 어드레스 변환을 생성하는 명령이 재실행될 수도 있으며, 가상 어드레스는 L1 TLB에서 미스하고 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)를 증가시킴으로써 록킹될 수도 있다.
하나의 장소에서 록킹된 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-캐시)로부터 명령들을 인출하며, 메모리 어드레싱 및 허가는 레벨-0 명령측 변환 참조 버퍼(L0 ITLB)(24), 및 L1 ITLB(25)에 의해 관리된다. 데이터는 데이터 캐시(D-캐시)로부터 액세스되며, 메모리 어드레싱 및 허가는 메인 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)는 I 및 D 캐시들(22, 26) 중 하나 또는 모두에 대한 제2-레벨(L2) 캐시를 포함할 수도 있다. 게다가, 프로세서(10)에 도시된 하나 이상의 기능 블록들은 특정 실시예로부터 생략될 수도 있다.
도4는 일 실시예에 따라, 일반적으로 200으로 도시된, 메모리 어드레스 변환 프로세스를 도시한 흐름도이다. 메모리 액세스 명령이 실행(블록 202)되고, 가상 어드레스 또는 그 일부가 L0 TLB(100)에 제공(블록 204)된다. 만일 가상 어드레스가 L0 TLB(100)에서 히트하면(블록 206), L0 TLB(100)는 물리 어드레스 또는 그 일부, 및 페이지 속성 및 캐시(22, 26)를 제공하거나, 메인 메모리(32) 액세스(미도시)를 계속한다. 만일 가상 어드레스가 L0 TLB(100)에서 미스하면(블록 206), 가상 어드레스는 변환을 위해 L1 TLB(102)로 제공된다.
만일 가상 어드레스가 L1 TLB(102)에서 히트하면, 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)로엔트리로서 기록된다. 이어 메모리 액세스 명령(102)은 어드레스 변환 프로세스를 재시작하기 위해 재실행(블록 202)된다. 이때, 가상 어드레스는 L0 TLB(100)에서 미스(블록 206)할 것이고, L1 TLB(102)에서 히트(블록 212)할 것이다. 이어 엔트리는 L1 TLB(102) 엔트리에서 L0L 비트의 상태에 따라 L0 TLB(100)에 기록되고 록킹되든지 한다(블록 214, 216, 218). 도4의 흐름도가 연속한 단계를 도시하지만, 일 실시예에서 L0 TLB 및 L1 TLB(102) 액세스는 동시에 발생한다.
L1 TLB(102) 엔트리들에서 하나 이상의 L0L 비트들을 한정하는 것은 어떤 엔트리들이 L0 TLB(100)에서 대체에 대해 록킹될 지를 지정하기 DLN한 연산 시스템 수단을 제공한다. 이는 연산 시스템이, L0 TLB(100)로의 직접 액세스 없이, 소정의 중요한 태스크들에 대한 가장 빠른 가능한 메모리 어드레스 변환을 보장하게 한다. 마찬가지로, 하드웨어 관리된 L1 TLB(102)의 경우, L1L 비트는, 대응하는 L1 TLB(102) 엔트리가 대체에 대해 록킹되어야 하는지는 나타내는 페이지 테이블(104)에서 유지될 수도 있다.
비록 본 발명이 특정한 특성, 특징 및 그 실시예에 관해 설명되었지만, 다양한 변경, 변화 및 다른 실시예가 본 발명의 광의의 사상 내에서 가능하며, 실시예 들은 본 발명의 사상 내에 있는 것으로 간주된다. 따라서, 본 발명의 실시예는 설명을 위한 것이며 한정을 위한 것은 아니며, 모든 변경은 첨부된 청구항의 범위 내에 있다.
Claims (12)
- 계통 변환 참조 버퍼(TLB)를 관리하는 방법으로서,상위 레벨 TLB로부터 하위 레벨 TLB로 엔트리를 복제하는 단계; 및상기 상위 레벨 TLB 엔트리의 표시자에 응답하여 대체에 대해 상기 하위 레벨 TLB의 상기 엔트리를 록킹하는 단계를 포함하는,계통 변환 참조 버퍼(TLB)를 관리하는 방법.
- 제1항에 있어서,상기 표시자는 상기 상위 레벨 TLB 엔트리의 비트인 것을 특징으로 하는 계통 변환 참조 버퍼(TLB)를 관리하는 방법.
- 제1항에 있어서,상기 표시자를 포함하는 상기 상위 레벨 TLB 엔트리는 소프트웨어에 의해 세팅되는 것을 특징으로 하는 계통 변환 참조 버퍼(TLB)를 관리하는 방법.
- 제1항에 있어서,상기 표시자는 메모리 페이지 테이블에서 소프트웨어에 의해 세팅되며, 상기 표시자는 하드웨어 페이지 테이블 확장 연산 동안 상기 상위 레벨 TLB 엔트리에서 세팅되는 것을 특징으로 하는 계통 변환 참조 버퍼(TLB)를 관리하는 방법.
- 제1항에 있어서,상기 하위 레벨 TLB는 명령 TLB인 것을 특징으로 하는 계통 변환 참조 버퍼(TLB)를 관리하는 방법.
- 제1항에 있어서,상기 하위 레벨 TLB는 데이터 TLB인 것을 특징으로 하는 계통 변환 참조 버퍼(TLB)를 관리하는 방법.
- 제6항에 있어서,상기 상위 레벨 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에 엔트리로서 상기 가상 어드레스의 일부, 상기 페이지 속성들 및 상기 물리 어드레스의 일부를 기록하는 단계, 및상기 L0L 표시자에 응답하여 대체에 대해 상기 L0 TLB 엔트리를 록킹하는 단계를 포함하는,가상 어드레스를 물리 어드레스로 변환하는 방법.
- 제9항에 있어서,만일 상기 가상 어드레스가 상기 L1 TLB에서 미스하면,상기 가상 어드레스와 관련된 페이지 속성들 및 물리 어드레스를 획득하기 위해 페이지 테이블 운행을 실행하는 단계; 및L1 TLB에 엔트리로서 상기 가상 어드레스의 일부, 상기 물리 어드레스의 일부, 상기 페이지 속성들 및 L0L 표시자를 기록하는 단계를 포함하는 것을 특징으로 하는 가상 어드레스를 물리 어드레스로 변환하는 방법.
- 변환 참조 버퍼(TLB)를 관리하는 방법으로서,가상 어드레스에 대한 TLB 미스 시, 대응하는 물리 어드레스 및 록킹 표시자를 획득하기 위해 페이지 테이블 워크를 실행하는 단계;적어도 상기 가상 및 물리 어드레스들을 포함하는 TLB로 엔트리를 기록하는 단계; 및상기 록킹 표시자에 응답하여 대체에 대해 상기 TLB에서 상기 엔트리를 록킹하는 단계를 포함하는,변환 참조 버퍼(TLB)를 관리하는 방법.
- 제12항에 있어서,상기 TLB는 L1 TLB이며, 상기 록킹 표시자는 L1 록(L1L) 표시자인 것을 특징으로 하는 변환 참조 버퍼(TLB)를 관리하는 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/210,526 | 2005-08-23 | ||
US11/210,526 US7426626B2 (en) | 2005-08-23 | 2005-08-23 | TLB lock indicator |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080041707A true KR20080041707A (ko) | 2008-05-13 |
KR100959014B1 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) |
Families Citing this family (75)
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 |
EP2546748A1 (en) | 2010-03-09 | 2013-01-16 | Fujitsu Limited | Information processing device, information processing method, and program |
US8615636B2 (en) | 2011-03-03 | 2013-12-24 | International Business Machines Corporation | Multiple-class priority-based replacement policy for cache memory |
US9465751B2 (en) | 2012-03-30 | 2016-10-11 | Intel Corporation | Efficient locking of memory pages |
US9417873B2 (en) | 2012-12-28 | 2016-08-16 | Intel Corporation | Apparatus and method for a hybrid latency-throughput processor |
US20140189333A1 (en) * | 2012-12-28 | 2014-07-03 | Oren Ben-Kiki | Apparatus and method for task-switchable synchronous hardware accelerators |
US9361116B2 (en) | 2012-12-28 | 2016-06-07 | Intel Corporation | Apparatus and method for low-latency invocation of accelerators |
US10140129B2 (en) | 2012-12-28 | 2018-11-27 | Intel Corporation | Processing core having shared front end unit |
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 |
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 |
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 |
US10176111B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Host page management using active guest page table indicators |
US10248573B2 (en) | 2016-07-18 | 2019-04-02 | International Business Machines Corporation | Managing memory used to back address translation structures |
US10168902B2 (en) | 2016-07-18 | 2019-01-01 | International Business Machines Corporation | Reducing purging of structures associated with address translation |
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 |
US10223281B2 (en) | 2016-07-18 | 2019-03-05 | International Business Machines Corporation | Increasing the scope of local purges of structures associated with address translation |
US10180909B2 (en) | 2016-07-18 | 2019-01-15 | International Business Machines Corporation | Host-based resetting of active use of guest page table indicators |
US10802986B2 (en) | 2016-07-18 | 2020-10-13 | International Business Machines Corporation | Marking to indicate memory used to back address translation structures |
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 |
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 |
US11706127B2 (en) | 2017-01-31 | 2023-07-18 | Vmware, Inc. | High performance software-defined core network |
US20180219765A1 (en) | 2017-01-31 | 2018-08-02 | Waltz Networks | Method and Apparatus for Network Traffic Control Optimization |
US10778528B2 (en) | 2017-02-11 | 2020-09-15 | Nicira, Inc. | Method and system of connecting to a multipath hub in a cluster |
US10127159B1 (en) * | 2017-07-13 | 2018-11-13 | International Business Machines Corporation | Link consistency in a hierarchical TLB with concurrent table walks |
US10686625B2 (en) | 2017-10-02 | 2020-06-16 | Vmware, Inc. | Defining and distributing routes for a virtual network |
US11115480B2 (en) | 2017-10-02 | 2021-09-07 | Vmware, Inc. | Layer four optimization for a virtual network defined over public cloud |
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 |
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 |
US11121985B2 (en) | 2019-08-27 | 2021-09-14 | Vmware, Inc. | Defining different public cloud virtual networks for different entities based on different sets of measurements |
KR102355374B1 (ko) | 2019-09-27 | 2022-01-25 | 에스케이하이닉스 주식회사 | 이종 메모리를 이용하여 메모리 주소 변환 테이블을 관리하는 메모리 관리 유닛 및 이의 메모리 주소 관리 방법 |
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 |
US11709710B2 (en) * | 2020-07-30 | 2023-07-25 | Vmware, Inc. | Memory allocator for I/O operations |
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 |
US11792127B2 (en) | 2021-01-18 | 2023-10-17 | Vmware, Inc. | Network-aware load balancing |
US11979325B2 (en) | 2021-01-28 | 2024-05-07 | VMware LLC | Dynamic SD-WAN hub cluster scaling with machine learning |
US11388086B1 (en) | 2021-05-03 | 2022-07-12 | Vmware, Inc. | On demand routing mesh for dynamically adjusting SD-WAN edge forwarding node roles to facilitate routing through an SD-WAN |
US12009987B2 (en) | 2021-05-03 | 2024-06-11 | VMware LLC | Methods to support dynamic transit paths through hub clustering across branches in 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 |
US12015536B2 (en) | 2021-06-18 | 2024-06-18 | VMware LLC | Method and apparatus for deploying tenant deployable elements across public clouds based on harvested performance metrics of types of resource elements in the public clouds |
US12047282B2 (en) | 2021-07-22 | 2024-07-23 | VMware LLC | Methods for smart bandwidth aggregation based dynamic overlay selection among preferred exits 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***及其地址转换方法 |
US12034587B1 (en) | 2023-03-27 | 2024-07-09 | VMware LLC | Identifying and remediating anomalies in a self-healing network |
Family Cites Families (7)
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 |
US6553477B1 (en) | 2000-11-06 | 2003-04-22 | Fujitsu Limited | Microprocessor and address translation method for microprocessor |
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 | 富士通株式会社 | マイクロプロセッサ |
-
2005
- 2005-08-23 US US11/210,526 patent/US7426626B2/en active Active
-
2006
- 2006-08-22 EP EP06789946.8A patent/EP1934753B1/en active Active
- 2006-08-22 JP JP2008528104A patent/JP4567789B2/ja not_active Expired - Fee Related
- 2006-08-22 KR KR1020087006678A patent/KR100959014B1/ko not_active IP Right Cessation
- 2006-08-22 CN CN2006800388152A patent/CN101292228B/zh active Active
- 2006-08-22 WO PCT/US2006/032902 patent/WO2007024937A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP1934753B1 (en) | 2018-08-08 |
CN101292228B (zh) | 2012-02-08 |
JP2009506434A (ja) | 2009-02-12 |
CN101292228A (zh) | 2008-10-22 |
WO2007024937A1 (en) | 2007-03-01 |
JP4567789B2 (ja) | 2010-10-20 |
US20070050594A1 (en) | 2007-03-01 |
US7426626B2 (en) | 2008-09-16 |
EP1934753A1 (en) | 2008-06-25 |
KR100959014B1 (ko) | 2010-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100959014B1 (ko) | Tlb 록 표시자 | |
JP5628404B2 (ja) | キャッシュされたメモリデータを伴うキャッシュメモリ属性インジケータ | |
US5493660A (en) | Software assisted hardware TLB miss handler | |
US7287140B1 (en) | System and technique for fine-grained computer memory protection | |
US7461209B2 (en) | Transient cache storage with discard function for disposable data | |
US20180060246A1 (en) | Linear to physical address translation with support for page attributes | |
US6216214B1 (en) | Apparatus and method for a virtual hashed page table | |
KR101563659B1 (ko) | 집성된 소페이지들을 사용한 페이지 사이즈 확장 | |
US6006312A (en) | Cachability attributes of virtual addresses for optimizing performance of virtually and physically indexed caches in maintaining multiply aliased physical addresses | |
US7797509B2 (en) | Systems and methods for utilizing an extended translation look-aside buffer having a hybrid memory structure | |
US5003459A (en) | Cache memory system | |
US4825412A (en) | Lockout registers | |
US20160140042A1 (en) | Instruction cache translation management | |
BRPI0710171A2 (pt) | cache de instruções marcada virtualmente com comportamento marcado fisicamente | |
JPH0619793A (ja) | キャッシュ・アクセスのための仮想アドレス変換予測の履歴テーブル | |
US20230401161A1 (en) | Translation support for a virtual cache | |
EP1869557B1 (en) | Global modified indicator to reduce power consumption on cache miss | |
WO1992022867A1 (en) | Improving computer performance by simulated cache associativity | |
US20210311997A1 (en) | Binary search procedure for control table stored in memory system | |
Khalidi et al. | Improving the address translation performance of widely shared pages | |
MX2008005091A (en) | Caching memory attribute indicators with cached memory data | |
Talluri | Improving the Address Translation Performance of Widely Shared Pages |
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 |