KR100233212B1 - 가상 기억장치 변환을 효율적으로 공용하기 위한 장치 및 방법 - Google Patents

가상 기억장치 변환을 효율적으로 공용하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR100233212B1
KR100233212B1 KR1019950034053A KR19950034053A KR100233212B1 KR 100233212 B1 KR100233212 B1 KR 100233212B1 KR 1019950034053 A KR1019950034053 A KR 1019950034053A KR 19950034053 A KR19950034053 A KR 19950034053A KR 100233212 B1 KR100233212 B1 KR 100233212B1
Authority
KR
South Korea
Prior art keywords
address
mask
page
mask value
cpu
Prior art date
Application number
KR1019950034053A
Other languages
English (en)
Other versions
KR960018907A (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 KR960018907A publication Critical patent/KR960018907A/ko
Application granted granted Critical
Publication of KR100233212B1 publication Critical patent/KR100233212B1/ko

Links

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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

컴퓨터에서 가상 기억장치변환을 공용하는 방법 및 장치가 기술된다. 장치(150)는 중앙처리장치(151)에 의해 실행되는 오퍼레이팅 시스템(162)를 포함한다. 오퍼레이팅 시스템(162)은 컴퓨터상에서 실행되는 다수의 별개의 프로세스에 연관되며 하나 이상의 물리적인 공통 메모리 페이지 어드레스에 매핑되는 별개의 가상 기억장치변환 엔트리를 식별하는 어드레스 식별루틴(164)을 포함하여 프로그램된다. 오퍼레이팅 시스템(162)은 별개의 가상 기억장치 변환엔트리에 제1마스크값을 지정하는 마스크 지정루틴(164) 및 변환색인버퍼 또는 페이지표에 제1마스크값에 연관된 단일 어드레스로서 별개의 가상 어드레스 변환엔트리를 기록하는 쓰기루틴을 포함한다. 비교 메커니즘(164)는 제2마스크값이 상기 제1마스크값에 대응하는지의 여부를 결정하기 위해 변환요구 가상 기억장치 변환값의 제2마스크값을 제1마스크값에 비교하기 위해 사용된다. 만일 두 개의 마스크값이 대응한다면, 제1마스크값에 연관된 단일 어드레스는 가상 기억장치 변환 어드레스로서 사용된다.

Description

가상 기억장치 변환을 효율적으로 공용하기 위한 장치 및 방법
제1도는 가상 기억장치구조를 실행하는 종래의 컴퓨터 시스템에 대한 블록도.
제2도는 제1도의 장치에서 페이지표의 오퍼레이션에 대한 블록도.
제3도는 변환색인버퍼와 주기억장치 및 보조기억장치에 관련한 페이지표사이의 관계를 도시한 블록도.
제4도는 동일한 물리적인 페이지 어드레스에 매핑한 별개의 가상 어드레스를 가진 한세트의 별개의 프로세스에 대한 블록도.
제5도는 변환색인버퍼에 대한 블록도.
제6도는 본 발명에 따라 사용된 메모리 변환정보에 대한 블록도.
제7도는 본 발명의 메모리 변환정보를 결합한 변화색인 버퍼에 대한 블록도.
제8도는 변환색인버퍼에서 각각의 비트를 비교하기 위해 사용될 수 있는 회로도.
제9도는 변환색인버퍼에서 워드를 비교하는 회로를 제공하기 위해 유사 회로에 링크된 제8도의 회로도.
제10도는 본 발명의 실시예에 따라 사용될 수 있는 페이지표.
제11도는 본 발명의 일 실시예에 따라 구성된 범용 컴퓨터에 대한 블록도.
* 도면의 주요부분에 대한 부호의 설명
20 : 범용컴퓨터 24 : 물리적인 메모리
28, 154 : 시스템 버스 32 : 컴퓨터 프로그램
36 : 가상어드레스 38 : 가상 페이지수
40 : 페이지표 50 : 물리적인 어드레스
54 : 오프셋 부분 60 : TLB
62 : TLB 변환 엔트리 82 : 메모리 변환엔트리(열)
84 : 등가비트 90 : 비교 하드웨어
92 : 셀 93 : 표준영역
94 : 마스크라인 102 : 모드회로
150 : 컴퓨터
본 발명은 일반적으로 가상 기억장치 어드레스(또는 유사 가상 기억장치 변환 엔트리) 및 물리적인 메모리 어드레스사이의 컴퓨터 시스템 변환 오퍼레이션에 관한 것이다. 특히, 본 발명은 단일 물리적인 어드레스에 매핑하는 다른 프로세스로부터 다른 가상 어드레스에 대한 단일 가상 기억장치 변환 엔트리를 사용하는 컴퓨터 시스템에 관한 것이다.
제1도는 시스템 버스(28)를 통해 주기억장치(일반적으로 랜덤 억세스 메모리)(24) 및 보조기억장치(일반적으로 디스크 기억장치)(26)와 통신하는 중앙처리장치(22)를 포함하는 범용 컴퓨터(20)를 기술한다. 키보드, 모니터, 프린터 또는 데이터 수집카드와 같은 입/출력 장치(30)는 시스템 버스(28)에 접속된다. CPU(22)는 주기억장치(24)에 기억된 하나 이상의 컴퓨터 프로그램을 실행시킨다. 컴퓨터 프로그램에서 대부분의 명령 및 데이터는 대응 가상 어드레스를 가진다. 각각의 가상 어드레스는 주기억장치(24)에 위치한 물리적인 어드레스로 변환된다. 만약 요구된 정보가 주기억장치(24)에 존재하지 않다면, 페이지 결점이 발생하며, CPU(24)는 보조기억장치(26)에서 주기억장치(24)로 요구된 정보를 로드 한다.
컴퓨터에서 가상어드레스의 사용은 통상적으로 “가상 기억장치”로서 언급된 기술이다. 모든 컴퓨터는 실질적으로 가상 기억장치를 사용한다. 가상 기억장치는 컴퓨터가 실제 메모리 기억용량을 초과할 수 있는 범위의 주소를 포함하는 프로그램을 컴퓨터가 실행하게 한다. 따라서, 프로그래머는 메모리의 크기에 제한되지 않으며, 프로그램은 다른 메모리 용량을 가진 하드웨어 사이를 이동할 수 있다.
앞서 기술된 것처럼, 가상 어드레스 및 실제 어드레스사이가 변환되는 것은 필요하다. 가상 어드레스는 프로그램에 의해 국부적으로 사용된 어드레스이다. 물리적인 어드레스는 주기억장치(24)에서 정보에 대한 실제 물리적인 위치를 지정한다.
제2도는 가상어드레스 및 물리적인 어드레스사이의 변환오퍼레이션을 기술한다. 주기억장치(24)에 기억된 컴퓨터 프로그램(32)은 한 세트의 명령을 포함하며, 이같은 명령은 제2도에서 구성요소(32)로서 기술된다. 명령(34)은 가상어드레스 “OOO4734”(36)에 대응하는 메모리의 내용을 레지스터 “R”에 이동(“MOV”)시키기 위한 명령이다. 수는 16진수이다. 가상어드레스(36)는 가상 기억장치 페이지 어드레스라 불리는 가상 페이지수 “OOO4”(38)를 포함하며, 이 가상 페이지 수는 페이지표(40)에 매핑된다. 페이지표(40)는 한세트의 페이지표 변환엔트리(42)를 포함한다. 각각의 페이지표 변환엔트리(42)는 가상 페이지수(44), 유효비트(46) 및 물리적인 페이지수(48)(또한 물리적인 메모리 페이지 어드레스라 불림)를 포함한다. 만일 유효비트가 세트된다면(디지털 비트), 이것은 물리적인 페이지수(48)가 가상 페이지 수(38)에 대응하는 주기억장치(24)에 존재하는 것을 나타낸다. 만일 유효비트가 세트되지 않는다면, 페이지 결점은 발생되지 않으며 물리적인 페이지수(48)는 CPU(22)에 의해 보조기억장치(26)에서 발견되야 한다. 물리적인 페이지수(48)는 주기억장치(24)에서 메모리의 한 페이지를 지정한다. 용어 주기억장치(24) 및 물리적인 메모리는 서로 교환하여 사용할 수 있다.
제2도는 가상 어드레스로서 가상 페이지수의 사용을 기술한다. 가상 페이지수가 가상 어드레스의 유도를 허용하는 엔트리를 대신하는 것은 당업자에게 공지된 사실이다. 가상 페이지수 또는 가상 기억장치 변환엔트리는 임의의 가상 페이지수 시스템 또는 가상 어드레스를 유도하기 위해 사용된 관련구조를 기술하기 위해 사용된다.
완전한 물리적인 어드레스(50)는 물리적인 페이지수(48) 및 페이지 오프셋(52)을 포함한다. 페이지 오프셋(52)은 원하는 어드레스가 발견될 수 있는 메모리의 페이지에 열을 지정한다. 페이지 오프셋(52)은 가상 어드레스(36)의 가상 오프셋 부분(54)으로부터 직접 구해진다(변환없이).
요약하면, 가상 어드레스(36)로부터 물리적인 어드레스(50)를 구하기 위해서, 가상 어드레스의 가상 페이지수(38)(이 실시예에서는 “OOO4”)는 페이지표(40)에서 발견된 페이지표 변환엔트리(42)에 매칭된다. 만일 페이지표 변환엔트리(42)가 1로 세트된 유효비트를 가진다면,가상 페이지수에 대한 대응 물리적인 페이지수가 존재한다. 물리적인 페이지수(이 실시예에서는 “01FD”16진수)는 물리적인 어드레스(50)의 일부분을 형성한다. 물리적인 어드레스(50)의 다른 부분은 가상 어드레스(36)의 가상 오프셋부분(54)으로부터 구해지는 페이지 오프셋 값(52)(이 실시시예에서는 “734”)이다.
제3도는 페이지표(40)에 지정된 물리적인 페이지 및 물리적인 메모리(24)에서 다른 물리적인 위치사이의 대응관계를 기술한다. 제3도의 페이지표(40)에서, 디지털 1로 세트된 유효비트를 가진 각각의 엔트리는 물리적인 메모리(24)의 위치를 나타내는 포인터를 가진다. 디지털 0으로 세트된 유효비트를 가진 페이지표 엔트리로 인하여, 페이지 결점이 발생하며, 메모리 페이지는 보조기억장치(26)에서 물리적인 메모리(24)로 인출되며, 그때, 대응 수정이 페이지표(40)에 만들어진다.
페이지표(40)의 실행을 개선하기 위해서, 현행 컴퓨터는 최근에 사용된 변환의 트랙을 유지하는 특정 캐시 메모리를 포함한다. 최근 변환은 가상 페이지수에 대한 변환이 사용되기 때문에 기억되며, 그것은 유사한 특성으로 다시 사용된다. 이같은 특정 어드레스 변환 캐시는 변환색인버퍼 또는 TLB60으로서 언급된다. 제3도에 있어서, TLB60은 한세트의 TLB 변환엔트리(62)를 포함한다. 전형적으로 TLB 변환엔트리(62)는 가상 페이지수(44), 유효비트(46) 및 물리적인 페이지수(48)를 포함한다.
컴퓨터 프로그램을 실행하는 CPU(22)는 초기에 TLB(60)에서 컴퓨트 프로그램으로부터 엔트리까지 각각의 가상 페이지수를 비교한다. 만일 매칭되지 않는다면(히트라고 불림), TLB(60)으로부터 물리적인 페이지수는 이전에 기술된 방식으로 물리적인 어드레스(50)를 형성하기 위해 사용된다.
TLB(60)는 전형적으로 하드웨어에서 실행되어, 페이지표(40)보다 적은 엔트리를 가진다. TLB(60)의 작은 크기 때문에, TLB 오류가 종종 발견된다. TLB 오류 후에, 페이지표(40)는 물리적인 어드레스를 결정하기 위해 조회된다. 만일 페이지표(40)이 원하는 정보를 가진다면, 그 정보는 페이지표(40)에서 TLB(60)으로 로드된다.
페이지표(40)에서 보다 TLB(60)에서 물리적인 어드레스를 얻는 것이 더 빠르기 때문에, TLB(60)에 위치한 정보의 양을 개선하는 노력이 진행중에 있다. 하나의 분명한 해결점을 물리적으로 보다 큰 TLB(60)를 제공하는 것이다. 물론, 이같은 접근방법은 비용이 많이든다. 다른 기술은 TLB 엔트리의 수를 증가시키지 않고 TLB(60)에 의해 매핑된 메모리의 크기를 최소화시키는 것이다. 이같은 구조는 수퍼페이지 및 부분적인 부블럭의 사용을 포함한다. 많은 상업용 구조는 상표면 SPARC 칩(캘리포니아 마운틴 비어에 위치한 선 마이크로시스템즈), 상표면 Alpha 칩(메사추세츠 메이너드에 위치한 디지털 장비 코포레이션) 및 상표면 powerPC(일리노이즈 스차움베그에 위치한 모토롤라 코포레이션)를 포함하는 한 형태 또는 다른 형태에서 수퍼페이지를 사용한다. 이들구조는 메모리의 주어진 영역을 매핑시키기 위해 필요한 TLB 엔트리(62)수를 감소시키는 기본적인 사상을 공용한다.
수퍼페이지는 동일한 프로세스에 속하는 연속적인 기본 엔트리에 대한 다양한 엔트리대신에 하나의 TLB 엔트리를 사용함으로서 TLB 실행을 개선시킨다. 이와같은 접근방법은 그것이 컴퓨터에서 실행되는 단일 프로세스에서만 적용되기 때문에 제한된다. 상업용 멀티사용자 시스템은 동일한 메모리를 대상으로 하는 많은 프로세스를 가진다. 예를 들어, 대량 라이브러리, 프로그램 텍스트 세그먼트 및 공용 버퍼영역은 단일 물리적인 어드레스에 수백개의 매핑을 가진다. 이와 같은 현상은 제4도에 기술된다.
제4도는 프로세스_i, 프로세스_j 및 컴퓨터 시스템상에서 실행되는 프로세스_k를 기술한다. 프로세스_i에서 각각의 메모리 어드레스는 제4도의 CTX_i로서 도시된 문맥수(프로그램수)로 식별되며, 가상 어드레스는 도면에 도시된 VA_i로 도시된 문맥수로 식별된다. 어드레스(CTX_i, VA_i)는 특정 물리적인 페이지수(48)(물리적인 메모리 페이지 어드레스)를 지시한다. 유사하게, 다른 프로세스에서 실행하는 다른 메모리 어드레스는 동일한 물리적인 페이지수를 지시한다. 특히, CTX_j, 프로세스_j 및 CTX_k의 VA_j, 프로세스_k의 VA_k는 동일한 물리적인 페이지수(48)을 지시한다.
제5도는 제4도의 도시된 오퍼레이션에 대응하는 TLB(60)을 기술한다. 각각의 TLB 변환엔트리(62)(TLB(60)의 각각의 엔트리)는 문맥식별(CTX), 가상 어드레스(VA), 물리적인 페이지(PP) 및 유효비트 및 보호비트와 같은 속성을 포함한다. 물리적인 페이지(물리적인 메모리 페이지 어드레스) PP_X는 TLB(34)의 3배를 나타낸다. 즉, (CTX_i, VA_i), (CTX_j, VA_j) 및 (CTX_k, VA_k)는 동일한 물리적인 페이지 PP_X에 각각 매핑된다. 동일한 물리적인 페이지에 매핑하는 모든 가상 어드레스에 대한 단일 TLB 엔트리가 사용되는 TLB를 제공하는 것은 매우 바람직하다. 이같은 TLB는 TLB에서 단일 엔트리가 다중 가상 어드레스에 사용되기 때문에 단일 TLB에 의해 처리된 정보문맥을 일반적으로 확장한다.
전형적으로, CPU(22)로부터 각각의 어드레스는 문맥수(CTX_CPU)(CPU에서 문맥 레지스터로부터) 및 가상 어드레스(VA_CPU)를 포함한다. TLB에 의해 변환될 CPU로부터 수신된 어드레스 또는 페이지표는 변환요구 가상 기억장치 변환값으로 언급될 것이다.
제5도에 도시된 것처럼, 완전 연관 TLB(60)에서 데이터의 처리는 평행하게 실행된다. 즉, CPU(22)로부터 각각의 어드레스는 TLB(60)에서 각각의 값에 동시에 적용된다. 만일 다음과 같은 방정식이 TLB에서 어던 페이지표 엔트리에 대해 참이라면 TLB 히트가 선언된다.
이와 같은 것은 CPU(CTX_CPU)로부터 문맥식별이 TLB에 제공된 문맥식별(CTX_PTE; 예를 들어, 제5도에서 CTX_i)과 동일하며, CPU(VA_CPU)로부터 TLB에 제공된 가상 어드레스는 TLB에서 가상 어드레스(VA_PTE; 예를 들어, 제5도에서 VA_i)와 동일할 때 TLB 히트가 존재하는 것을 나타낸다. 제5도는 CTX_CPU가 각각의 TLB 엔트리에 적용되며 매칭될 때 히트가 식별되는 것을 기술한다. 공지된 하드웨어는 이같은 오퍼레이션을 실행하기 위해서 사용된다.
한세트의 연관된 TLB에서, CPU(22)로부터 각각의 어드레스는 CTX_CPU 및 VA_CPU 에 의해 식별된 TLB 세트에서 각각의 값에 적용된다. 동일한 물리적인 어드레스에 많은 가상 기억장치 어드레스 변환이 존재할 때, 페이지표(40)는 불필요하게 클필요가 없다. 결과적으로, 기술된 변환에 대해 큰 표를 탐색하는 것은 많은 시간을 소비한다. 따라서, 동일한 물리적인 메모리 페이지 어드레스에 매핑되는 모든 가상 기억장치 페이지 어드레스에 대한 단일 메모리 변환엔트리를 사용하는 주메모리 페이지표(40)를 제공하는 것은 바람직하다.
본 발명은 컴퓨터에서 가상 기억장치변환을 공용하는 장치에 관한 것이다. 이 장치는 중앙처리장치에 관련하여 실행되는 오퍼레이팅 시스템을 포함한다. 오퍼레이팅 시스템은 컴퓨터상에서 실행하는 다수의 별개의 프로세스에 연관된 별개의 가상 기억장치변환을 식별하기 위해서 어드레스 식별루틴를 포함하기 위해 프로그램되며, 별개의 가상 기억장치 변환은 하나 이상의 공통 물리적인 메모리 페이지 어드레스와 매핑된다. 오퍼레이팅시스템은 별개의 가상 기억장치 변환에 제1마스크값을 지정하기 위한 마스크 지정루틴 및 쓰기위한 쓰기루틴을 포함하며, 변환색인버퍼 또는 페이지 테이블에서 단일 어드레스로서 별개의 가상 기억장치변환은 제1마스크값과 연관된다. 비교 메커니즘은 제2마스크값이 제1마스크값에 대응하는 여부를 결정하도록 제1마스크값과 변환요구 가상 기억장치 변환값의 제2마스크값을 비교하기 위해 사용된다. 만일 두 개의 마스크값이 대응한다면, 제1마스크값에 연관된 신호 어드레스는 가상 기억장치 변환 어드레스로서 사용된다.
본 발명은 가상 기억장치변환을 공용하는 방법에 관한 것이다. 본 발명의 방법은 컴퓨터에서 진행하는 다수의 별개의 포로세스에 연관된 다수의 별개의 가상 기억장치환을 식별하는 단계를 포함하며, 별개의 가상 기억장치변환은 물리적인 공통 메모리 페이지 어드레스에 매핑된다. 본 발명은 다수의 별개의 가상 기억장치 변환에 제1마스크값을 지정하며 제1마스크값에 연관된 단일 어드레스로서 다수의 별개의 가상 기억장치 변환을 기억하는 단계를 포함한다. 최종적으로, 본 발명은 제1마스크값과 변환요구 가상 기억장치 변환의 제2마스크값을 비교하는 단계를 포함하여, 제2마스크값이 제1마스크값에 대응하는 여부를 결정하며, 변환요구 가상 기억장치 변환값이 물리적인 공통 메모리 페이지 어드레스에 매칭되는 여부를 결정한다.
본 발명의 변환색인버퍼을 사용하여 실행될 때, 가상 어드레스 변환의 공용은 대용량의 정보를 포함하기 위해서 변환색인버퍼 엔트리의 고정된 수를 허용한다. 본 발명이 페이지표를 사용하여 실행될 때, 페이지표 엔트리의 수 및 그들을 기억하기 위해 요구된 메모리는 감소된다. 따라서, 페이지표의 수 및 페이지표 엔트리를 탐샘하기 위해 요구된 시간이 줄어든다.
이하에 첨부도면을 참조로하여 실시예를 상세히 설명한다.
본 발명은 TLB(60) 및 메모리 페이지표(40)에 사용되는 메모리 변환 엔트리를 재한정하기 위한 방법 및 장치에 관한 것이다. 본 발명에 따르면, 등가 물리적인 메모리 페이지 어드레스에 매핑된 모든 메모리 변환 엔트리는 등가 클래스에 지정된다. 등가 클래스는 다른 가상 기억장치 변환엔트리로부터 등가 물리적인 메모리 페이지 어드레스까지 변환을 허용하는 연관된 마스크구조를 가진다. 결과적으로, 다른 프로세스(예를 들어, 제4도의 프로세스_i, 프로세스_j 및 프로세스_k)는 TLB 또는 메모리 페이지표에서 단일 메모리 변환엔트리를 통해 식별된다.
본 발명의 기술은 단일 TLB 엔트리를 공용하기 위하여 다른 프로세스로부터 페이지에 대한 엔트리를 허용함으로서 TLB 실행을 개선시킨다. 따라서, 각각의 TLB 엔트리는 대용량의 정보를 식별한다. 소프트웨어 표에 적용될 때, 변환 엔트리의공용은 페이지표에 필요한 메모리 크기를 감소시킨다. 더욱이, 페이지표 탐색시간이 줄어든다.
본 발명은 TLB 또는 메모리 페이지표에서 COU 및 메모리 변환엔트리로부터 문맥 데이터를 한정한다. 본 발명에 따라, 그것은 마스크를 한정하는 m 비트 및 식별수를 한정하는 n 비트를 포함하는 다중 비트 워드의 형태에서 CPU 프로세스 문맥 데이터(종래기술에서 사용된 CTX_CPU)이다. 본 발명에 다른 메모리 변환엔트리는 등가 클래스 비트 및 m 비트의 마스크부분 또는 n 비트의 식별부분을 포함하는 다중 비트워드를 가진다. 이같은 시스템은 제6도에 기술된다. CPU(CTX_CPU)로부터 전송된 프로세스 문맥정보는 도면의 왼쪽에 도시되는 반면에, 메모리 변환 엔트리정보(CTX_MTE)는 도면의 오른쪽에 도시된다.
각각의 메모리 변환엔트리는 등가 클래스에 관한 정보를 포함한다. 등가 클래스는 물리적인 공통 메모리 페이지 어드레스를 공용하는 모든 가상 기억장치 대상(메모리 페이지 테이블 엔트리 또는 TLB 엔트리)을 포함한다. 예를 들어, 제5도에는 제4도에 도시된 것처럼 TLB60에서 3개의 메모리가 등가 물리적인 메모리위치를 매핑하는 등가 물리적인 메모리 페이지 어드레스(PP_X)를 가지는 것을 도시한다. 등가 클래스가 이와 같은 경우에 존재하기 때문에, 동일한 비트(제6도에서 EC)는 1로 세트된다. n 비트의 롱마스크는 특정 등가 클래스를 특징지우기 위해 사용된다. 따라서, 제5도의 TLB60에 대한 3개의 엔트리는 1로세트된 등가비트 및 특정 등가 클래스를 한정한 m 비트 워드를 가진 단일 TLB 엔트리로 감소된다. 이같은 상황은 제7도에 도시된다. 제5도의 TLB60와 다르게, 제7도의 TLB80에서는 물리적인 메모리 페이지 어드레스 PP_X가 하나의 메모리 변환엔트리(열)(82)에 연관된다. 열(82)의 CYX_MTE 값은 1로 세트되는 등가비트(84) 및 제2등가 클래스가 지정되는 것을 나타내는 디지털 2값(0010)으로 세트된 4개의 m 비트(86)를 포함한다.
만일 등가클래스가 존재하지 않는다면, 등가비트는 0으로 세트되며, n 비트 롱 식별워드는 CTX_MTE 워드에서 사용된다. 이같은 나중 상황은 종래 기술인 메모리 변환오퍼레이션과 등가이다.
본 발명에 따르면, 가상 페이지 어드레스로부터 등가 클래스에 속한 메모리 항에 대한 물리적인 페이지 어드레스까지 성공적인 메모리 변환오퍼레이션은 CPU(CTX_CPU)로 부터의 문맥값이 메모리 변환엔트리(CTX_MTE)에 대한 문맥값과 대응하며 CPU(VA_CPU)로 부터의 가상 페이지 어드레스가 메모리 변환엔트리(VA_MTE)에서의 가상 페이지 어드레스와 등가일 때 발생한다. CTX_CPU 및 CTX_MTX에 대한 데이터 형식은 제6도에 도시된 형태이다. 즉, 이 엔트리는 이하에 기술된 것처럼, 등가 클래스정보를 처리함으로서 실행된다. 이 오퍼레이션은 다음과 같이 수학적으로 요약된다.
함수 f(CTX_CPU, CTX_MTE)는 다음과 같이 실행될 수 있다.
라인(1)은 CTX_MTE의 등가비트(EC)를 검사한다. 만일 비트가 1로 세트된다면, 오퍼레이션은 (CTX_CPU. 마스크)의 CPU로부터 워드의 마스크 값부분이 메모리 엔트리의 워드에 대한 마스크 값부분(CTX_MTE. 마스크)에 대응하는 여부를 결정하기 위해 실행된다. 이들값은 등가가 아니다. 만일 라인(2)에서 “&”에 의해 지정된 논리 AND 오퍼레이션이 0이아닌 값으로 리턴된다면, “참”의 부울대수값이 리턴되며, 이것은 마스크 매칭을 나타낸다. 예를 들어, 2진 시스템에서, 만일 통과된 CTX_CPU. mask 값이 “0110”이며 CTX_MTE. mask 값이 “0010”이라면, 라인(2)에서 오퍼레이션은 “0010”의 값을 리턴한다. 이것은 참인 부울대수값을 나타내는 0이 아닌 값이다. 다른 한편으로, 만일 통과된 CTX_CPU. mask 값이 “1001”이며, CTX_MTE. mask 값이 “0110”이라면, 라인(2)에서 오퍼레이션은 “0000”의 값을 리턴한다. 이것은 거짓인 부울대수 값을 나타내는 0값이다. 참 부울대수가 매칭되는 것을 나타내는 반면에, 거짓 부울대수값은 매칭되지 않은 값을 나타낸다.
CPU(CTX_CPU. mask)로부터의 마스크값 및 메모리 엔트리(CTX_MTE. mask)로부터의 마스크 값사이는 식별할 필요가 없다. 주어진 등가 클래스에 대한 많은 문맥값이 존재할 수 있다. CTX_MTE. mask 항은 모든 클래스를 매핑한다. 만일 CPU(CTX_CPU. mask)로부터 통과된 임의의 값이 참 부울대수값으로 진행한다면, 등가 클래스는 매칭된다.
코드의 남은 라인은 등가 클래스가 존재하지 않는 상태를 조절한다. 이같은 경우에, 프로세싱은 등가 클래서에서 소비되지 않는 종래 기술과 일치한다. 라인(4)에서는 만일 CPU(CTX_CPU. id)로부터의 식별비트가 메모리 변환 엔트리(CTX_MTE. id)의 식별비트와 등가이면, 부울대수 값이 리턴되는 것을 나타낸다. 제6도를 참조하면, 이같은 값은 n 비트양이다.
제4도의 실시예는 단일 물리적인 페이지 어드레스에 매핑되는 한세트의 3개의 프로세스를 도시한다. 단일 등가 클래스는 이와 같은 상태를 특징지우기 위해 사용될 수 있다. 즉, 단일 등가 클래스는 단일 페이지를 매핑한다. CTX_CPU. mask는 고정된 수의 등가 클래스를 지정할 수 있으며, 본 발명은 등가 클래스가 물리적인 페이지 어드레스의 선택을 매핑하도록 확장될 수 있다. 예를 들어, 하나의 등가 클래스가 <VA_1에 매핑된 libc, VA_2에 매핑된 libnsl, VA_3에 매핑된 libfoo>에 다라 라이브러리 파일을 지정할 수 있다.
CTX_MTS. mask는 하나 이상의 등가 클래스를 지정할 수 있다. 예를 들어, 만일 제2등가 클래스가 파인 <VA_1에 매핑된 libc, VA_4에 매핑된 libx>을 지정한다면, libc에 속한 페이지에 대한 CTX_MTE는 CTX_MTE. mask에 새트된 두 개의 비트를 가짐으로서 양쪽의 등가 클래스를 지정할 수 있다.
제7도는 일반적으로 CPU(CTX_CPU, VA_CPU)로 부터의 값과 TLB(80)에서의 값을 비교하기 위해 사용될 수 있는 비교 하드웨어(90)를 기술한다. 비교 오퍼레이션은 평행하게 실행된다. 제8도는 CTX_MTE 워드로부터 정보의 한 비트를 비교하기 위해 사용될 수 있는 하나의 셀(92)을 기술한다. 제9도는 8비트 CTX_MTE 워드 및 16비트 CTX_CPU 워드를 비교하는 회로를 형성하기 위해 링크된 한세트의 셀(92A-92H)을 기술한다.
제8도는 TLB에서 사용된 셀과 동일한 표준영역(93)을 포함한다. 표준영역(93)의 “워드”입력은 CTX_MTE 워드로부터 m 또는 n 비트를 로드 및 기억시키기 위해 사용되는 반면에, PID 라인은 식별 태그 CTX_CPU 비트를 로드하기 위해 사용되며, PID(역)라인은 PID 비트의 역을 로드한다.
표준영역(93)은 마스크 라인(94), 마스크매칭(역)라인(96), Q1 트랜지스터와 Q2 트랜지스터를 포함하기 위해 추가된다. 마스크라인(94)은 마스크 태그 CTX_CPU 비트를 로드한다. 트랜지스터(Q1, Q2)는 라인(94)상에서 기억된 CTX_MTE 비트 및 마스크비트사이의 논리 NAND 오퍼레이션을 실행한다. 만일 매칭된다면, 마스크매칭(역)은 고신호를 전송한다. 신호가 제9도에 도시된 것처럼 인버터(100)에 의해 반전되어, 논리 AND 오퍼레이션을 실행시킨다.
제9도에 도시된 모드회로(102)는 등가 클래스비트를 읽는다. 만일 등가 클래스비트가 높다면, 마스크매칭(역)라인이 선택되며, 그렇지 않다면 다른 매칭라인이 선택되어, 회로는 CTX_CPU 식별 태그와 CTX_MTE 식별 태그를 비교하기 위해 종래의 방식대오 오퍼레이션한다. 당업자는 본 발명에 따라 요구된 비교오퍼레이션을 실행하기 위해 사용될 수 있는 다수의 하드웨어 구조를 인지해야 할 것이다.
TLB 엔트리가 비교되는 종래의 방법은 전체적으로 연관된 TLB를 한정한다. 이같은 구조에 있어서, TLB에서 임의의 라인은 새로운 TLB 값을 입력하기 위해 사용될 수 있다.
만일 본 발명이 세트연관 TLB 에 관련하여 실행된다면, TLB 로의 입력은 다음과 같은 기술을 사용하여 실행될 수 있다.
이같은 의사코드는 만일 등가비트가 0으로 세트된다면, 해시함수가 식별비트 및 가상 어드레스 “h(id, VA)”상에서 실행되는 것을 기술한다.
공지된 기술에서 처럼, 해시함수에서 키 X는 수로서 처리되며, 해시함수라 불리는 수학함수 fH는 물리적인 어드레스 fH(X)를 계산하기 위해 사용된다. 많은 해시함수가 사용될 수 있다. 하나의 해시함수는 상수 n으로 X를 나누는 것이고 어드레스로서 나머지, 즉 n을 법으로 하는 fH(X, Y) = (X xor Y)를 사용한다.
따라서, 연관세트 TLB에서 본 발명을 실행하는 한 방법은 제6도에 도시된 것처럼, CTX_MTE.id의 n 비트 및 가상 어드레스 VA_MTE 에 의해 한정된 수치값으로 해시 함수를 실행하는 것이다.
전술한 코드의 라인(2)은 등가 클래스가 한정되지 않을 때 해시함수가 가상 어드레스에서만 실행되는 것을 나타낸다.
연관세트 TLB에서 값은 h(id, VA)을 사용하는 TLB 세트를 선택함으로서 구할 수 있다. 이같은 오퍼레이션은 앞의 의사코드 라인(1)과 일치한다. 만일 이같은 해시오퍼레이션이 실행되지 않는다면, 해시함수 h(O, AV)가 사용된다. 이같은 오퍼레이션은 앞의 의사코드 라인(2)과 일치한다. 이같은 오퍼레이션의 순서는 반전된다.
연관세트 TLB 에 관한 선택적인 실시예는 다중 프로브 접근방법을 사용한다. 이같은 기술에 있어서, CTX_CPU 에 세트된 비트에 따라, 한세트의 정수는 C0...Cj로 선택된다(예를 들어, 만일 CTX_CPU에서 몇몇의 고차비트 n/2가 세트된다면, CO가 세트되며, 그렇지 않다면 Cj가 선택된다). 그때, h(id, VA), h'(CO, VA) 및 h'(Cj, VA) 등을 사용하여 조사가 실행된다. 해시함수 h() 및 h'()는 다른 함수일 수 있다.
본 발명의 메모리 변환기술을 TLB 에 관련하여 기술된다. 이 기술을 페이지표로 응용가능하다. 제2 및 3도를 참조하면, 테이블표는 배경기술로 기술된다. 제2 및 3도에 도시된 페이지표 구성은 다른 기술자사이에 포인터를 가진 한세트의 기술자로서 실행된다. 이같은 실행은 제10도에 도시된다. 페이지표(140)는 한세트의 기술자 144A-144C를 지시하는 해시버킷 배열(142)를 포함한다. 다시말해서, 해시함수는 해시 어드레스(버킷)(146)를 발생시킨다. 해시어드레스(146)는 기술자(144B)를 지시하며, 기술자(144B)는 기술자(144C)를 지시한다. 이 형태의 페이지표는 종래에 공지된 기술이다. 다중 페이지 크기를 유지하는 유용한 페이지표 구성은 1993년 10월 20일에 공고된 미합중국 특허 제 08/139, 549호의 “다중 페이지표를 유지하는 가상 기억장치 컴퓨터 시스템 어드레스 변환 메커니즘”에 기술된다. 이 출원은 본 발명의 양수인에게 양도되며 여기에 참조에 의하여 통합된다.
제10도의 각각의 기술자(144)는 한 블록의 가상 기억장치(VA_i, PTE)의 초기 가상 어드레스, 매핑된 어드레스 공간을 가르키는 CTX_PTE, 다음의 기술자의 포인터(다음 ptr), 기술자에 대한 길이(길이_i) 및 페이지표 엔트리의 배열(pte_i,1... pte_i, len)을 포함한다.
이전에 지시된 것처럼, 페이지표는 전형적으로 TLB 미스후 탐색된다. 탐색오퍼레이션은 TLB와 관련하여 기술된 것과 유사하다. 가상 어드레스로 부터의 변환이 요구될 때, CPU는 VA_CPU 워드 및 전류 CPU 문맥 (CTX_CPU)을 기술한 워드를 가진 소프트웨어를 제어한다. 해시함수 (h(CTX_CPU, VA_CPU))는 제10도의 해시버킷(146)과 같이 해시값을 선택하기 위해 이들값을 사용한다. 해시버킷(146)은 기술자(144)를 가르킨다. 해시버킷(146)은 앞서 정의된 것처럼 방전식(1)을 만족시키기 위해 탐색된다.
이같은 탐색은 특정 기술자가 CPU로부터 가상 페이지 어드레스에 대응하는 페이지표를 가지는지의 여부를 결정하는 다음함수를 따른다.
이같은 함수는 원하는 페이지표 엔트리를 가지는 기술자를 찾는다. 앞서 지시된 것처럼, 각각의 기술자는 기본 어드레스 VA_PTE 및 길이를 가진다. 만일 VA_CPU 값이 기술자에 의해 지정된 범위(desc.VA_PTE, desc.VA_PTE_length)내에 존재한다면, 기술자는 VA_CPU 값을 매칭시키기 위해 페이지표 엔트리를 가진다.
코드의 라인(1)은 CPU(VA_CPU) 및 원하는 기술자(desc)로부터 가상 페이지 어드레스가 함수로 패스되는 것을 기술한다. 라인(2)의 “if”절은 CPU(VA_CPU)로부터 가상 페이지 어드레스가 기술자(desc.VA_PTE)에 대한 물리적인 기본 페이지 어드레스보다 큰지를 결정하기 위해 검사한다. 라인(3)은 CPU(VA_CPU)로부터 가상 페이지 어드레스가 기술자(desc.VA_PTE + length)에 대한 가장 큰 어드레스보다 작은지를 결정하기 위해 검사한다. 만일 CPU(VA_CPU)로부터 어드레스가 지정된 범위내에 존재한다면, 등가 함수는 참(1)이며, 만일 그렇지 않다면 거짓(0)이다.
기술자로부터 실제 물리적인 페이지수를 참조하면, 다음과 같은 함수가 사용될 수 있다.
라인(1)에서는, 유효함수가 정의되며, CPU 및 종속 기술자로부터 가상 페이지 어드레스가 함수로 패스된다. 인덱스값은 페이지표(desc.VA_PTE)의 가상 페이지 어드레스수로 CPU(VA_CPU)로부터 수신된 가상 페이지 어드레스수를 감산한 후 페이지 크기로 이 차이를 나눔으로서 정의된다. 예를 들어, 만일 CPU(VA_CPU)로부터 가상 페이지 어드레스수가 8934이면, 등가함수에 의해 선택된 페이지표(desc.VA_PTE)에 대한 가상 페이지 어드레스수는 8000이며, 페이지 크기는 100이며, i=(8934 - 8000)/100 = 9이다(분수항, 34는 중지된다). 라인(3)에 도시된 것처럼, i항은 PTE 배열의 인덱스로 사용된다. 이전 실시예를 따르면, i항은 PTE 배열의 제 10엔트리로 인덱스된다. 라인(4)은 유효비트가 이같은 위치에서 세트되는지의 여부를 결정하기 위해 검사한다. 만일 그렇다면, 참값(1)이 리턴되며, 만약 그렇지 않다면 거짓값(0)이 리턴된다.
페이지표에 관련하여 실행된 전술한 오퍼레이션은 본 발명에 따라 정의된 CTX_CPU 및 CTX_MTE 값을 이용할 수 있다(제6도에 도시됨). 예를 들어, 제10도의 각각의 기술자(144)에 대한 CTXi_PTE 항은 제6도에 기술된 CTX_MTE 항으로 교환된다. 즉, CTXi_MTE 항은 등기 클래스비트 및 m 마스크 비트 또는 n 식별비트를 포함한다. 유사하게, 각각의 페이지표(140)는 m 마스크 비트 또는 n 식별 비트를 포함하는 CTX_CPU 값이 패스된다.
페이지표 매칭을 식별하기 위해서, 각각의 기술자는 다음 논리에 의해 검사된다.
각각의 이들 표현에 대한 오퍼레이션은 앞서 기술됐다. CTX_CPU 및 CTX_MTE 항은 제6도에 관련하여 기술된다. 탐색전략은 소프트웨어로 실행된다. 탐색전략은 전체적으로 연관되거나 또는 세트로 연관된 페이지표로 실행된다. TLB 실행에 관련하여 기술된 탐색전략은 페이지표 실행으로 응용가능하다.
제11도는 일반적으로 범용 컴퓨터(150)로 통합된 본 발명을 기술한다. 컴퓨터(150)는 TLB(152)와 통신하는 CPU(151)를 포함한다. TLB(152)는 바람직하게 제8 및 9도에 관련하여 기술된 TLB와 유사하게 실행된다. CPU(151)는 또한 한세트의 입/출력 장치(156)를 인터페이스하는 시스템버스(154)에 접속된다. CPU(151)는 주기억장치(160)와 통신한다. 주 기억장치(160)는 UNIX 오퍼레이팅 시스템과 같은 오퍼레이팅 시스템(162)을 기억한다. 주기억장치(160)는 또한 가상 어드레스 기억구조를 이용하는 실행 프로그램(161)을 기억한다.
주기억장치(160)는 또한 제6도에 기술된 것처럼 등가 클래스 메모리 변환정의(170)를 기억한다. 표준기술은 오퍼레이팅 시스템(162)이 본 발명에 따라 CTX_CPU 정의를 이용하기 위해 CPU(151)를 제어하도록 이용된다. 오퍼레이팅 시스템(162)은 물리적인 단일 어드레스에 매핑되는 다른 가상 어드레스를 인식하기 위해 수정된다. 즉, 오퍼레이팅 시스템(162)은 어드레스 식별루틴을 포함하기 위해 쉽게 수정된다. 예를 들어, 어드레스 식별루틴은 제5도의 TLB(60)를 주사할 수 있으며 3개의 가상 페이지 어드레스가 동일한 물리적인 페이지 어드레스를 매핑하는 것을 식별한다. 마스크 지정루틴을 3개의 가상 페이지 어드레스가 마스크값에 지정되도록 오퍼레이팅 시스템(162)에 더해진다. 더욱이, 쓰리루틴은 제7도에 도시된 것처럼 3개의 가상 페이지 어드레스가 단일 어드레스로서 기억되도록 오퍼레이팅시스템(162)에 통합될 수 있다.
주기억장치(160)는 페이지표(172), 즉 제10도에 관련하여 기술된 형태를 기억시킨다. 최종적으로, 주기억장치(160)는 본 발명의 기술과 유사한 페이지표 탐색전략을 실행하는 페이지표 탐색프로그램(174)을 기억한다.
본 발명의 특정 실시예에 대한 전술한 기술은 본 발명을 위해 존재한다. 당업자는 본 발명의 권리범위를 벗어나지 않고 본 발명을 변형할 수 있다. 많은 실시예는 본 발명은 설명하기 위해 기술된다.
본 발명의 기술은 전환 및 해시된 페이지표가 적용될 수 있다. 본 발명의 기술이 단일 값으로 다중 “등가”키를 매핑하는 임의의 해시표검사가 적용될 수 있는 것은 당업자에 의해 공지된 사실이다. 따라서, 본 발명은 가상 어드레스 및 물리적인 어드레스에 제한될 필요가 없다. 본 발명은 가상 어드레스 및 물리적인 어드레스사이의 변환 오퍼레이션만을 기술한다. 페이지표 또는 TLB 에 연관된 오퍼레이션은 특성, 보호검사 및 관련함수의 연산을 포함한다. 이들 오퍼레이션은 종래기술에 따라 실행된다. 최종적으로, 본 발명이 다양한 방법으로 실행될 수 있는 것은 당업자에 의해 공지된 사실이다. 예를 들어, 본 발명의 마스크 구조는 TLB 및 페이지표 양쪽에 적용될 수 있다. 이같은 구조에서, TLB 및 페이지표는 본 발명에 따른 마스크구조 엔트리 및 종래기술에 따른 표준엔트리를 포함한다. 본 발명은 마스크 엔트리 및 표준엔트리를 가진 TLB 및 표준엔트리만을 사용하는 페이지표를 사용함으로서 실행된다. 선택적으로, 본 발명은 마스크엔트리 및 표준엔트리를 가진 페이지표 및 표준엔트리만을 사용하는 TLB를 사용하여 실행될 수 있다.
기술된 실시예는 본 발명의 원리 및 본 발명의 실제적인 응용을 설명하기 위해 선택되어, 당업자는 본 발명을 이용할 수 있으며 다양한 실시예는 다양하게 수정될 수 있다. 본 발명은 청구범위의 사상 및 범위에 의해서만 제한된다.

Claims (5)

  1. 가상 기억장치 변환을 공용하는 컴퓨터에 있어서, 중앙처리장치와; 상기 중앙처리장치에 의해 실행되는 오퍼레이팅 시스템을 포함하는데, 상기 오퍼레이팅 시스템은, 상기 컴퓨터에서 실행되는 다수의 별개의 프로세스에 연관되며 하나 이상의 물리적인 공통 메모리 페이지 어드레스에 매핑되는 다수의 별개의 가상 기억장치 변환 엔트리를 식별하는 어드레스 식별루틴, 제1마스크 값을 상기 다수의 별개의 가상 기억장치 변환 엔트리에 할당하는 마스크 지정루틴, 및 상기 제1마스크 값과 연관된 단일 어드레스로서 상기 다수의 별개의 가상 기억장치 변환 엔트리를 기록하는 기록루틴을 포함하도록 프로그램화되며; 제2마스크 값이 상기 제1마스크 값에 대응하는지의 여부를 결정하고 상기 변환 요구 가상 기억장치 변환 값이 상기 물리적인 공통 메모리 페이지 어드레스에 대응하는지의 여부를 결정하기 위해 상기 중앙처리장치 및 상기 오퍼레이팅 시스템과 함께 동작하여 상기 변환요구 가상 기억장치 변환 값의 제2마스크 값을 상기 제1마스크 값에 비교하는 비교 메커니즘을 포함하는 것을 특징으로 하는 가상 기억장치 변환을 공용하는 컴퓨터.
  2. 제1항에 있어서, 상기 오퍼레이팅 시스템은 등가 클래스로서 상기 다수의 별개의 가상 기억장치 변환 엔트리를 규정하도록 프로그램화되는 것을 특징으로 가상 기억장치 변환을 공용하는 컴퓨터.
  3. 제2항에 있어서, 상기 오퍼레이팅 시스템은 상기 등가 클래스와 등가 클래스 비트를 동일시하도록 프로그램화되는 것을 특징으로 가상 기억장치 변환을 공용하는 컴퓨터.
  4. 제3항에 있어서, 상기 오퍼레이팅 시스템은 문맥 메모리 변환 엔트리 워드를 형성하기 위해 제1마스크 값과 상기 등가 클래스 비트를 조합하도록 프로그램화되는 것을 특징으로 가상 기억장치 변환을 공용하는 컴퓨터.
  5. 제3항에 있어서, 상기 오퍼레이팅 시스템은 다수의 등가 클래스에 대응하는 문맥 메모리 변환 엔트리 워드를 형성하기 위해 상기 제1마스크 값과 상기 등가 클래스 비트를 조합하도록 프로그램화되는 것을 특징으로 가상 기억장치 변환을 공용하는 컴퓨터.
KR1019950034053A 1994-11-02 1995-10-05 가상 기억장치 변환을 효율적으로 공용하기 위한 장치 및 방법 KR100233212B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8/333,487 1994-11-02
US08/333,487 1994-11-02
US08/333,487 US5630087A (en) 1994-11-02 1994-11-02 Apparatus and method for efficient sharing of virtual memory translations

Publications (2)

Publication Number Publication Date
KR960018907A KR960018907A (ko) 1996-06-17
KR100233212B1 true KR100233212B1 (ko) 1999-12-01

Family

ID=23302995

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950034053A KR100233212B1 (ko) 1994-11-02 1995-10-05 가상 기억장치 변환을 효율적으로 공용하기 위한 장치 및 방법

Country Status (3)

Country Link
US (1) US5630087A (ko)
JP (1) JPH08212136A (ko)
KR (1) KR100233212B1 (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715407A (en) * 1992-03-06 1998-02-03 Rambus, Inc. Process and apparatus for collision detection on a parallel bus by monitoring a first line of the bus during even bus cycles for indications of overlapping packets
FR2717280B1 (fr) * 1994-03-10 1996-04-05 Bull Sa Procédé de gestion de l'héritage multiple d'objets persistants et partagés.
US5754818A (en) * 1996-03-22 1998-05-19 Sun Microsystems, Inc. Architecture and method for sharing TLB entries through process IDS
US5819252A (en) * 1996-04-10 1998-10-06 Digital Equipment Corporation Method and apparatus for handling and detecting an invalid use of a data structure
US6427162B1 (en) * 1996-05-02 2002-07-30 Sun Microsystems, Inc. Separate code and data contexts: an architectural approach to virtual text sharing
JPH10143431A (ja) * 1996-10-29 1998-05-29 Texas Instr Inc <Ti> マイクロプロセッサおよびコンピュータシステムにおけるデータのキャッシング方法
US5913923A (en) * 1996-12-06 1999-06-22 National Semiconductor Corporation Multiple bus master computer system employing a shared address translation unit
US6073226A (en) * 1997-03-19 2000-06-06 Microsoft Corporation System and method for minimizing page tables in virtual memory systems
US6199151B1 (en) * 1998-06-05 2001-03-06 Intel Corporation Apparatus and method for storing a device row indicator for use in a subsequent page-miss memory cycle
US6393544B1 (en) * 1999-10-31 2002-05-21 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for calculating a page table index from a virtual address
US6728859B1 (en) * 2001-07-13 2004-04-27 Mips Technologies, Inc. Programmable page table access
US6782464B2 (en) * 2001-07-17 2004-08-24 International Business Machines Corporation Mapping a logical address to a plurality on non-logical addresses
US7010791B2 (en) * 2001-09-20 2006-03-07 Intel Corporation Method for implementing multiple type hierarchies
US6826671B2 (en) * 2001-10-09 2004-11-30 Sun Microsystems, Inc. Method and device for a context-based memory management system
US20040037556A1 (en) * 2002-02-26 2004-02-26 Matz Bret Allen Systems and methods for active monitoring and management of fiber links
DE10260606B4 (de) * 2002-12-23 2006-03-30 Infineon Technologies Ag Vorrichtung zur Übersetzung mehrerer virtueller Adressen auf eine einzige physikalische Adresse
US7093100B2 (en) * 2003-11-14 2006-08-15 International Business Machines Corporation Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes
US20050144422A1 (en) * 2003-12-30 2005-06-30 Mcalpine Gary L. Virtual to physical address translation
JP4064380B2 (ja) * 2004-07-29 2008-03-19 富士通株式会社 演算処理装置およびその制御方法
US9244855B2 (en) 2007-12-31 2016-01-26 Intel Corporation Method, system, and apparatus for page sizing extension
US7996628B2 (en) * 2008-02-14 2011-08-09 International Business Machines Corporation Cross adapter shared address translation tables
US9208102B2 (en) 2013-01-15 2015-12-08 Qualcomm Incorporated Overlap checking for a translation lookaside buffer (TLB)
US10719451B2 (en) * 2017-01-13 2020-07-21 Optimum Semiconductor Technologies Inc. Variable translation-lookaside buffer (TLB) indexing
KR20200123912A (ko) * 2019-04-23 2020-11-02 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
KR20230168574A (ko) 2022-06-07 2023-12-14 리벨리온 주식회사 뉴럴 프로세싱 장치의 공유 페이지 테이블 사용 방법 및 피지컬 페이지 할당 방법
KR102509472B1 (ko) * 2022-06-07 2023-03-14 리벨리온 주식회사 뉴럴 프로세싱 장치 및 그의 공유 페이지 테이블 사용 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4654790A (en) * 1983-11-28 1987-03-31 Amdahl Corporation Translation of virtual and real addresses to system addresses
US4797814A (en) * 1986-05-01 1989-01-10 International Business Machines Corporation Variable address mode cache
JPH0520197A (ja) * 1991-07-09 1993-01-29 Hitachi Ltd 記憶管理システム及びマイクロプロセツサ
US5386527A (en) * 1991-12-27 1995-01-31 Texas Instruments Incorporated Method and system for high-speed virtual-to-physical address translation and cache tag matching
US5437017A (en) * 1992-10-09 1995-07-25 International Business Machines Corporation Method and system for maintaining translation lookaside buffer coherency in a multiprocessor data processing system
US5440710A (en) * 1994-03-08 1995-08-08 Exponential Technology, Inc. Emulation of segment bounds checking using paging with sub-page validity

Also Published As

Publication number Publication date
US5630087A (en) 1997-05-13
JPH08212136A (ja) 1996-08-20
KR960018907A (ko) 1996-06-17

Similar Documents

Publication Publication Date Title
KR100233212B1 (ko) 가상 기억장치 변환을 효율적으로 공용하기 위한 장치 및 방법
US4903234A (en) Memory system
US6216214B1 (en) Apparatus and method for a virtual hashed page table
US5479627A (en) Virtual address to physical address translation cache that supports multiple page sizes
US6393544B1 (en) Method and apparatus for calculating a page table index from a virtual address
US5230045A (en) Multiple address space system including address translator for receiving virtual addresses from bus and providing real addresses on the bus
US5008811A (en) Control mechanism for zero-origin data spaces
US5375214A (en) Single translation mechanism for virtual storage dynamic address translation with non-uniform page sizes
US6256715B1 (en) System and method of performing gateway access
US5058003A (en) Virtual storage dynamic address translation mechanism for multiple-sized pages
US5123101A (en) Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss
US5265227A (en) Parallel protection checking in an address translation look-aside buffer
EP0213843B1 (en) Digital processor control
US5475827A (en) Dynamic look-aside table for multiple size pages
EP0098168B1 (en) Address translation buffer control system
CA1332984C (en) Dual cache memory
US4241401A (en) Virtual address translator utilizing interrupt level code
EP0149389A2 (en) Address translation control system
JPH0749812A (ja) ページテーブル中のハッシュアドレスタグを用いたメモリアドレス制御装置
EP0805398A1 (en) Memory management system and method for processor having separate code and data contexts
JPH0512126A (ja) 仮想計算機のアドレス変換装置及びアドレス変換方法
US5748486A (en) Breadth-first manipulation of binary decision diagrams
US5319761A (en) Directory look-aside table for a virtual storage system including means for minimizing synonym entries
US20070266199A1 (en) Virtual Address Cache and Method for Sharing Data Stored in a Virtual Address Cache
US7197620B1 (en) Sparse matrix paging system

Legal Events

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

Payment date: 20040823

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee