KR100880685B1 - 공유 메모리를 이용하여 가상 메모리를 실시하는멀티프로세서 시스템, 및 페이징된 메모리 코히런시를유지하기 위한 페이지 교환 방법 - Google Patents
공유 메모리를 이용하여 가상 메모리를 실시하는멀티프로세서 시스템, 및 페이징된 메모리 코히런시를유지하기 위한 페이지 교환 방법 Download PDFInfo
- Publication number
- KR100880685B1 KR100880685B1 KR1020037013898A KR20037013898A KR100880685B1 KR 100880685 B1 KR100880685 B1 KR 100880685B1 KR 1020037013898 A KR1020037013898 A KR 1020037013898A KR 20037013898 A KR20037013898 A KR 20037013898A KR 100880685 B1 KR100880685 B1 KR 100880685B1
- Authority
- KR
- South Korea
- Prior art keywords
- page
- processor
- memory
- page table
- storage device
- 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/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- 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
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/302—In image processor or graphics adapter
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 프로세서(102)와, 이 제 1 프로세서(102)와 통신하는 제 2 프로세서(104)와, 상기 제 1, 2 프로세서들(102, 104)에 결합된 메모리(즉, 공유 메모리)와, 그리고 상기 제 1 프로세서(102)에 결합된 저장 장치(110 또는 112)를 포함하는 컴퓨터 시스템(100)이 개시된다. 상기 제 1, 2 프로세서들(102, 104)은 상기 메모리(106)를 이용하여 가상 메모리를 실시한다. 상기 제 1 프로세서(102)는 메모리 내에 제 1 페이지 테이블들의 세트 및 제 2 페이지 테이블들의 세트를 유지한다. 상기 제 1 프로세서(102)는 상기 제 1 페이지 테이블들의 세트를 이용하여 상기 메모리(106) 내의 메모리 위치들을 액세스한다. 상기 제 2 프로세서(104)는, 상기 제 1 프로세서(102)가 유지하는 제 2 페이지 테이블들의 세트를 이용하여, 상기 메모리(106) 내의 메모리 위치들을 액세스한다. 또한, 상기 컴퓨터 시스템(100)에서 이용하기 위한 가상 메모리 페이지 교체 방법이 개시된다.
멀티프로세서, 가상 메모리, 메모리 페이지, 페이지 테이블, 엔트리
Description
본 발명은 일반적으로 컴퓨터 시스템들에 관한 것으로서, 특히 다수의 프로세서들이 가상 메모리를 실시하고 공유 메모리를 액세스하는 멀티프로세서 시스템들에 관한 것이다.
전형적인 컴퓨터 시스템은 비교적 저비용으로 비교적 고레벨의 성능을 달성하기 위해 메모리 계층 구조를 포함한다. 몇 개의 서로 다른 소프트웨어 프로그램들의 명령들은 전형적으로, 비교적 크지만 느린 비휘발성 저장 유닛(예를 들어, 디스크 드라이브 유닛)에 저장된다. 사용자가 실행을 위해 프로그램들중 하나를 선택하면, 선택된 프로그램의 명령들은 주 메모리 내에 복사되며, 프로세서(예를 들어, 중앙 처리 유닛 또는 CPU)는 주 메모리로부터 상기 선택된 프로그램의 명령들을 얻는다. 잘 알려져있는 가상 메모리 관리 기술들에 의해, 프로세서는 어떠한 소정의 시간에 주 메모리에 데이터 구조들의 일부 만을 저장함으로써, 주 메모리 내의 것 보다 크기가 더 큰 데이터 구조들을 액세스할 수 있게 된다. 나머지 데이터 구조들 은, 비교적 크지만 느린 비휘발성 저장 유닛 내에 저장된 다음, 필요할 때에만 주 메모리 내에 복사된다.
가상 메모리는 전형적으로 프로세서의 어드레스 공간을, 프레임들 또는 "페이지들"이라 칭하는 다수의 블록들로 분할함으로써 실시된다. 페이지의 일부에 대응하는 데이터 만이 어떠한 소정 시간에 주 메모리에 저장된다. 프로세서가 소정 페이지 내에서 어드레스를 발생시키고, 그 페이지의 복사본이 주 메모리 내에 위치하지 않을 때, 필요한 데이터 페이지는, 비교적 크지만 느린 비휘발성 저장 유닛으로부터 주 메모리 내에 복사된다. 이 과정에서, 다른 데이터 페이지가 주 메모리로부터 비휘발성 저장 유닛에 복사되어, 요구되는 페이지에 대한 공간을 만들 수 있다.
대중적인 프로세서 아키텍쳐들(예를 들어, 80 ×86 또는 "×86" 프로세서 아키텍쳐)은 전형적으로 가상 메모리의 실시를 지원하도록 전문화된 하드웨어 요소들을 포함한다. 예를 들어, ×86 프로세서 아키텍쳐는 보호 가상 어드레스 모드(즉, 보호 모드)를 지원하도록 전문화된 하드웨어 요소들을 포함한다. 이러한 프로세서들은 가상 어드레스들을 생성하고, 가상 물리 어드레스 변환 메커니즘들을 실시하여, 가상 어드레스들을 주 메모리의 메모리 위치들의 물리 어드레스들에 "맵핑(mapping)"시킨다. 이러한 어드레스 변환 메커니즘들은 전형적으로 계층 구조를 형성하도록 배열된 1개 이상의 데이터 구조들(즉, "페이지 테이블들(page tables)")을 포함한다. 이 페이지 테이블들은 전형적으로 주 메모리에 저장되며, 소프트웨어 프로그램(즉, 운영 프로그램)을 동작시킴으로써 유지된다. 최상위(highest ordered) 페이지 테이블(예를 들어, ×86 페이지 디렉토리)은 항상 주 메모리 내에 위치한다. 어떠한 부가적인 페이지 테이블들이 저장 유닛으로부터 얻어진 다음, 필요할 때 주 메모리에 저장될 수 있다.
최상위 페이지 테이블(예를 들어, ×86 페이지 디렉토리)을 포함하는 메모리 페이지의 베이스 어드레스(base address)는 전형적으로 레지스터에 저장된다. 상기 최상위 페이지 테이블은 다수의 엔트리(entry)들을 포함한다. 이 엔트리들은 다른 페이지 테이블들의 베이스 어드레스들, 또는 가상 어드레스들에 대응하는 물리 어드레스들을 포함하는 페이지들의 베이스 어드레스들이 될 수 있다. 가상 물리 어드레스 변환을 수행하기 위해 다수의 페이지 테이블들이 이용되는 경우, 최상위 페이지 테이블의 엔트리들은 다른 페이지 테이블들의 베이스 어드레스들이다. 프로세서에 의해 생성된 가상 어드레스는 다수의 부분들로 분할되는바, 이 부분들은 페이지 테이블들 내에서 인덱스들로서 이용된다.
최하위 페이지 테이블은 가상 어드레스에 대응하는 물리 어드레스를 포함하는 페이지의 베이스 어드레스를 포함한다. 이 물리 어드레스는 최하위 페이지 테이블의 선택된 엔트리의 베이스 어드레스에 가상 어드레스의 최하위 또는 "오프셋" 부분을 부가함으로써 형성된다.
상기 설명된 가상 물리 어드레스 변환 메커니즘은 주 메모리의 1개 이상의 페이지 테이블들의 액세스(페이지 테이블 "룩업(lookup)" 또는 "워크(walk)")를 필요로 한다. 이러한 페이지 테이블 액세스들은 상당량의 시간을 필요로 하며, 프로세서의 성능에 부정적인 영향을 미친다. 따라서, 프로세서들은 전형적으로 가장 최근에 이용된 페이지 테이블 엔트리들을 저장하기 위한 변환 색인 버퍼(translation look-aside buffer, TLB)를 포함한다. TLB 엔트리들은 전형적으로 운영 시스템에 의해 유지된다. 이 TLB를 포함하게 되면, 프로세서의 성능을 상당히 증가시킨다.
가상 메모리의 잇점들을 다수의 프로세서들을 포함하는 멀티프로세서 시스템들로 확장하는 것이 유익하다. 이러한 멀티프로세서 시스템들은 유익하게는 모든 프로세서들에 의해 공유되는 주 메모리를 갖는다. 이 공유되는 주 메모리에 저장된 명령들 및 데이터(즉, "코드")를 모든 프로세서들이 액세스할 수 있기 때문에, 하나의 프로세서에 의해 독점적으로 액세스되는 하나의 메모리로부터 다른 프로세서에 의해 독점적으로 액세스되는 다른 메모리로 코드를 복사할 필요가 없다. 또한, 공유되는 주 메모리의 일부는 프로세스간 통신(interprocess communication)에 이용될 수 있다.
가상 메모리를 실시하며 공유되는 주 메모리를 갖는 멀티프로세서 시스템들에는 몇 개의 문제들이 있다. 한 문제는, 가상 메모리 데이터 구조들(예를 들어, 페이지 테이블들)을 생성하고 유지하는 방법, 및 주 메모리와 1개 이상의 저장 유닛들 간에 페이지들의 이동을 조정하는 방법이다. 본원에서 "TLB 코히런시 문제"라 칭하는 다른 문제는, 다수의 프로세서들 각각이 그 자신의 성능 강화 TLB를 갖는 것으로 기대될 때에 발생한다. 상기 설명한 바와 같이, 각 페이지 테이블 엔트리는 공유되는 주 메모리 내의 별개의 페이지에 대응한다. 프로세서들중 하나가 공유되는 주 메모리 내의 한 페이지를 저장 유닛으로부터의 페이지로 교체할 때, 다른 프 로세서들 내의 교체되는 페이지에 대응하는 TLB 엔트리들은 무효화된다. 1개 이상의 다른 프로세서들은 그들의 TLB들 내의 이러한 무효화된 페이지 테이블 엔트리들을 이용하여 가상 물리 어드레스 변환들을 수행함으로써, 메모리 내의 잘못된 페이지들을 액세스하며, 부정확한 결과들을 생성하고 그리고/또는 시스템 동작에 있어서 다른 에러들을 생성할 수도 있다.
또한, 주 메모리 내에서의 페이지 테이블 액세스들을 막기 위해, 공유되는 주 메모리 내의 대응하는 페이지 테이블 엔트리들의 더티 비트들(dirty bits)을 액세스해야한다기 보다는, 주 메모리 내의 페이지들에 대한 기록 액세스들이 TLB들에 저장된 "더티" 비트들에 기록될 수 있다. 다른 프로세서들의 TLB들 안을 볼 수 없기 때문에, 공유되는 주 메모리의 페이지를 교체하는 프로세서는 다른 프로세서들중 하나가 그 교체된 페이지에 대해 이전에 기록했다는 것을 알지 못할 수 있으며, 이에 따라 교체된 페이지를 저장 장치에 다시 기록할 수 없다. 결과적으로, 교체된 페이지의 데이터는 정확하지 않을 수 있고, 잘못된 결과들을 생성하며 그리고/또는 시스템 동작에 있어서 다른 에러들을 발생시킬 수도 있다.
EP 0 766 177은 1개 이상의 보조 프로세서들을 위한 효과적인 어드레스 변환을 포함하는 정보 처리 시스템을 개시한다. 이 시스템은 1개 이상의 프로세서들, 메모리 및 저장 장치를 포함한다. 상기 프로세서들은 가상 메모리를 실시하도록 구성된다. 상기 프로세서들중 하나는 페이지 테이블 버퍼 및 변환 색인 버퍼를 포함하는 단일의 페이지 테이블들의 세트를 생성하고 유지하도록 구성된다. 모든 프로세서들은 상기 단일의 페이지 테이블들의 세트를 이용한다.
WO 98 14878 A는 인접 메모리의 버퍼를 얻고 페이지 테이블을 형성하는 방법을 개시한다. 제 1 프로세서는 그래픽 버퍼를 액세스할 수 있도록 그래픽 장치 페이지 테이블을 형성한다. 페이지 스와핑(page swapping)을 막기 위해 그래픽 버퍼를 포함하는 물리 메모리 블록들을 록킹(locking)함으로써, 코히런시 문제들을 피할 수 있다.
EP 0 766 177은 1개 이상의 보조 프로세서들을 위한 효과적인 어드레스 변환을 포함하는 정보 처리 시스템을 개시한다. 이 시스템은 1개 이상의 프로세서들, 메모리 및 저장 장치를 포함한다. 상기 프로세서들은 가상 메모리를 실시하도록 구성된다. 상기 프로세서들중 하나는 페이지 테이블 버퍼 및 변환 색인 버퍼를 포함하는 단일의 페이지 테이블들의 세트를 생성하고 유지하도록 구성된다. 모든 프로세서들은 상기 단일의 페이지 테이블들의 세트를 이용한다.
WO 98 14878 A는 인접 메모리의 버퍼를 얻고 페이지 테이블을 형성하는 방법을 개시한다. 제 1 프로세서는 그래픽 버퍼를 액세스할 수 있도록 그래픽 장치 페이지 테이블을 형성한다. 페이지 스와핑(page swapping)을 막기 위해 그래픽 버퍼를 포함하는 물리 메모리 블록들을 록킹(locking)함으로써, 코히런시 문제들을 피할 수 있다.
본 발명은 상기 문제들중 일부 또는 전부를 해결하거나 또는 적어도 줄일 수 있는 방법을 실시하는 시스템에 관련된 것이다.
본 발명은, 제 1 프로세서와, 이 제 1 프로세서와 통신하는 제 2 프로세서와, 상기 제 1, 2 프로세서들에 결합되며 다수의 메모리 위치들을 포함하는 메모리(즉, 공유 메모리)와, 그리고 상기 제 1 프로세서에 결합된 저장 장치를 포 함하는 컴퓨터 시스템을 제공한다. 상기 제 1, 2 프로세서들은 상기 메모리를 이용하여 가상 메모리를 실시한다. 상기 제 1 프로세서는 메모리 내에 제 1 페이지 테이블들의 세트 및 제 2 페이지 테이블들의 세트를 유지하고, 상기 제 1 페이지 테이블들의 세트를 이용하여 메모리 내의 메모리 위치들을 액세스한다. 제 2 프로세서는, 제 1 프로세서가 유지하는 제 2 페이지 테이블들의 세트를 이용하여, 메모리 내의 메모리 위치들을 액세스한다.
제 1, 2 페이지 테이블들의 세트들은 적어도 1개의 페이지 테이블을 포함할 수 있다. 제 1 프로세서는 제 1 페이지 테이블들의 세트를 이용하여, 자신 내에서 생성된 가상 어드레스를 메모리 내의 메모리 위치의 대응하는 물리 어드레스로 변환할 수 있으며, 메모리 위치의 물리 어드레스를 이용하여 메모리 위치를 액세스할 수 있다. 유사하게, 제 2 프로세서는 제 2 페이지 테이블들의 세트를 이용하여, 자신 내에서 생성된 가상 어드레스를 메모리 내의 메모리 위치의 대응하는 물리 어드레스로 변환할 수 있으며, 메모리 위치의 물리 어드레스를 이용하여 메모리 위치를 액세스할 수 있다.
제 2 페이지 테이블들의 세트는 다수의 페이지 테이블 엔트리들을 포함할 수 있다. 페이지 테이블 엔트리들 각각은, 대응하는 메모리 페이지가 메모리 내에 존재할 때, 대응하는 메모리 페이지의 베이스 어드레스를 저장하는 데에 이용될 수 있다. 제 2 프로세서는 버퍼를 포함하는바, 이 버퍼는 다수의 엔트리들을 포함한다. 이 엔트리들은 최근에 이용된 페이지 테이블 엔트리들을 저장하고, 대응하는 메모리 페이지들로의 제 2 프로세서에 의한 기록 액세스를 기록한다. 메모리 내에 존재하는 메모리 페이지를 저장 장치에 저장된 메모리 페이지로 교체하기 전에, 제 1 프로세서는 교체될 메모리 페이지의 물리 어드레스 범위에 대응하는 버퍼의 모든 엔트리들의 제거 필요성을 제 2 프로세서에게 알린다.
제 1, 2 프로세서를 포함하는 컴퓨터 시스템에서 이용하기 위한 가상 메모리 페이지 교체 방법이 설명되는바, 이 방법은 멀티프로세서 컴퓨터 내에서 페이지된 메모리 코히런시의 유지를 돕도록 설계된다. 일 실시예에서, 이 방법은 제 2 프로세서의 페이지 테이블 엔트리들의 세트의 각 페이지 테이블 엔트리를 액세스하는 단계를 포함한다. 페이지 테이블 엔트리들의 세트의 각 페이지 테이블 엔트리는 제 2 프로세서의 페이지들의 세트의 서로 다른 메모리 페이지(즉, 페이지)에 대응한다. 제 2 프로세서의 페이지들의 세트의 각 페이지는 메모리에 저장되며, 메모리로부터 제거될 제 1 프로세서의 제 1 페이지에 대응한다. 제 2 프로세서의 각 페이지 테이블 엔트리는, 제 2 프로세서의 대응하는 페이지가 저장 장치에 기록될 필요가 있는 지를 나타내는 더티(D) 비트들을 포함한다.
페이지 테이블 엔트리들의 세트의 각 페이지 테이블 엔트리는, 제 2 프로세서의 대응하는 페이지가 메모리 내에 존재하지 않음을 나타내도록 마크(mark)된다. 페이지 테이블 엔트리들의 세트의 각 페이지 테이블 엔트리의 존재(Present, P) 비트는, 제 2 프로세서의 대응하는 페이지가 메모리 내에 존재하지 않음을 나타내도록 변경될 수 있다(예를 들어, "지워지거나(cleared)" 또는 논리 '0'으로 설정된다). 제 2 프로세서는 페이지들의 세트의 페이지에 대응하는 제 2 프로세서의 버퍼의 어느 엔트리의 제거 필요성을 통보받는바, 상기 버퍼는 최근에 이용된 페이지 테이블 엔트리들을 저장하는 다수의 엔트리들을 포함한다. 이 버퍼의 각 엔트리는 제 2 프로세서의 대응하는 페이지가 저장 장치에 기록될 필요가 있는 지의 여부를 나타내는 더티(D) 비트를 포함할 수 있다.
페이지 테이블 엔트리들의 세트의 각 페이지 테이블 엔트리의 판독은, 상기 설명된 제 2 프로세서에게 통지하는 단계 이후 수행된다. 제 1 프로세서의 제 1 페이지에 대응하는 페이지 테이블 엔트리의 판독이 수행되는바, 이 페이지 테이블 엔트리는 제 1 비트가 저장 장치에 기록될 필요가 있는 지의 여부를 나타내는 더티(D) 비트를 포함한다. 제 1 프로세서의 제 1 페이지는, (ⅰ) 페이지 테이블 엔트리들의 세트의 각 페이지 테이블 엔트리를 판독하는 동안 얻어진 적어도 하나의 페이지 테이블 엔트리의 더티(D) 비트가, 제 2 프로세서의 대응하는 페이지가 저장 장치에 기록될 필요가 있음을 나타내거나, (ⅱ) 제 1 프로세서의 페이지 테이블 엔트리를 판독하는 동안 얻어진 페이지 테이블 엔트리의 더티(D) 비트가, 제 1 프로세서의 제 1 페이지가 저장 장치에 기록될 필요가 있음을 나타내는 경우, 메모리로부터 저장 장치에 기록된다.
다른 실시예들에서, 페이지 테이블 엔트리들의 세트의 각 페이지 테이블 엔트리의 존재(P) 비트 및 더티(D) 비트는 모두 상기 설명된 마킹(marking) 단계 동안 지워질 수 있다. 이러한 실시예들에서, 페이지 테이블 엔트리들의 세트의 각 페이지 테이블 엔트리를 액세스하는 단계는 제 1 판독 동작을 포함할 수 있으며, 상기 통지 단계 이후 수행되는, 상기 설명된 페이지 테이블 엔트리들의 세트의 각 페이지 테이블 엔트리를 판독하는 단계는 제 2 판독 동작을 구성할 수 있다. 제 1 프 로세서의 제 1 페이지는, (ⅰ) 제 1 판독 동작 동안 얻어진 적어도 하나의 페이지 테이블 엔트리의 더티(D) 비트가, 제 2 프로세서의 대응하는 페이지가 저장 장치에 기록될 필요가 있음을 나타내거나, 또는 (ⅱ) 제 2 판독 동작 동안 얻어진 적어도 하나의 페이지 테이블 엔트리의 더티(D) 비트가, 제 2 프로세서의 대응하는 페이지가 저장 장치에 기록될 필요가 있음을 나타내거나, 또는 (ⅲ) 제 1 프로세서의 페이지 테이블 엔트리를 판독하는 동안 얻어진 페이지 테이블 엔트리의 더티(D) 비트가, 제 1 프로세서의 제 1 페이지가 저장 장치에 기록될 필요가 있음을 나타내는 경우, 메모리로부터 저장 장치에 기록될 수 있다.
상기 가상 메모리 페이지 교체 방법은, (ⅰ) 페이지들의 세트의 한 페이지에 대응하는 버퍼의 엔트리의 위치를 정하고; (ⅱ) 상기 페이지들의 세트의 한 페이지에 대응하는 엔트리의 더티(D) 비트가, 페이지들의 세트의 페이지가 저장 장치에 기록될 필요가 있음을 나타내는 경우, 상기 페이지들의 세트의 페이지가 저장 장치에 기록될 필요가 있음을 나타내기 위해, 상기 페이지들의 세트의 페이지에 대응하는 제 2 프로세서의 페이지 테이블 엔트리의 더티(D) 비트를 갱신하며; 그리고 (ⅲ) 상기 페이지들의 세트의 페이지에 대응하는 엔트리를 지움으로써, 상기 설명된 제 2 프로세서에게 통지하는 단계에 응답하는 단계를 포함할 수 있다.
상기 설명된 제 2 프로세서에게 통지하는 단계는, 상기 페이지들의 세트의 한 페이지에 대응하는 제 2 프로세서의 버퍼의 어느 엔트리의 제거 필요성을 나타내는 메세지를 제 2 프로세서에게 전송하는 단계를 포함한다.
상기 가상 메모리 페이지 교체 방법은 또한, (ⅰ) 제 2 프로세서의 페이지 폴트 조건 표시(indication of a page fault condition)를 수신하는 단계, 및 (ⅱ) 상기 제 2 프로세서의 페이지 폴트 조건을 지우기 위해, 메모리에 저장된 제 1 프로세서의 제 1 페이지가 저장 장치에 저장된 제 1 프로세서의 제 2 페이지에 의해 교체되어야 함을 결정하는 단계를 포함할 수 있다. 상기 설명된 표시 수신 단계는 제 2 프로세서로부터, 제 2 프로세서의 페이지 폴트 조건을 나타내는 메세지를 수신하는 단계를 포함할 수 있다. 상기 가상 메모리 페이지 교체 방법은 또한, 상기 제 2 프로세서의 페이지 폴트 조건이 소멸되었을 때, 페이지 폴트 조건의 소멸을 나타내는 메세지를 제 2 프로세서에 전송하는 단계를 포함할 수 있다.
상기 가상 메모리 페이지 교체 방법을 수행하기 위한 프로그램 명령들을 포함하는 캐리어 매체(carrier medium)가 설명된다. 이 캐리어 매체는, 예를 들어 컴퓨터 판독가능한 저장 매체(예를 들어, 플로피 디스크 또는 컴팩 디스크 판독 전용 메모리(CD-ROM) 디스크)가 될 수 있다.
본 발명은 첨부 도면들을 참조하여 설명되는 하기의 상세한 설명으로부터 보다 명확히 이해될 것이다. 도면들에서, 동일한 참조 부호들은 같은 요소들을 나타낸다.
도 1은 주 프로세서, 보조 프로세서(co-processor) 및 공유 메모리를 포함하는 멀티프로세서 컴퓨터 시스템의 일 실시예의 블록도이다.
도 2는 도 1의 공유 메모리의 일 실시예의 블록도로서, 상기 공유 메모리는 주 프로세서 페이지 테이블들, 보조 프로세서 페이지 테이블들, 프로세스부(a process portion) 및 주 프로세서 운영 시스템을 포함한다.
도 3은 도 2의 주 프로세서 페이지 테이블들 및 프로세스부의 일 실시예의 블록도로서, 상기 프로세스부는 주 프로세서의 다수의 페이지들을 포함하고, 상기 주 프로세서 페이지 테이블들의 페이지 테이블의 다수의 페이지 테이블 엔트리들(PTE들) 각각은 주 프로세서의 다수의 페이지들의 별개의 것에 대응하며, 대응하는 페이지의 베이스 어드레스를 포함한다.
도 4는 도 2의 보조 프로세서 페이지 테이블들 및 프로세스부의 일 실시예의 블록도로서, 상기 프로세스부는 보조 프로세서의 다수의 페이지들을 포함하고, 상기 보조 프로세서 페이지 테이블들의 페이지 테이블의 다수의 페이지 테이블 엔트리들(PTE들) 각각은 보조 프로세서의 다수의 페이지들의 별개의 것에 대응하며, 대응하는 페이지의 베이스 어드레스를 포함한다.
도 5는 도 3 및 4의 페이지 테이블 엔트리들(PTE들) 각각의 포맷의 일 실시예의 블록도로서, 페이지 테이블 엔트리들 각각은 페이지 베이스 어드레스 필드, 더티(D) 비트 및 존재(P) 비트를 포함한다.
도 6은 도 2의 주 프로세서 페이지 테이블들, 보조 프로세서 페이지 테이블들 및 프로세스부의 예시적인 실시예로서, 상기 주 프로세서의 각 페이지는 보조 프로세서의 각 페이지의 크기의 2배이다.
도 7A-7B는 멀티프로세서 컴퓨터 시스템에서 이용하기 위한 가상 메모리 페이지 교체 방법의 일 실시예의 흐름도이다.
본 발명은 많은 변형들 및 대안적인 형태들을 가질 수 있지만, 도면들에는 특정한 실시예들이 도시되어 있으며, 본원에서는 이에 대해 상세히 설명한다. 그러나, 이러한 특정한 실시예들은 본 발명을 개시된 형태들로 한정하지 않으며, 본 발명은 첨부된 청구항들에 의해 정의되는 본 발명의 정신 및 범위 내에 있는 모든 변형들, 등가들 및 대안들을 포함한다.
이하, 본 발명의 예시적인 실시예들에 대해 설명한다. 명확성을 위해, 본원에서는 실제 실시에 있어서의 모든 특징들을 모두 설명하지는 않는다. 물론, 주목할 사항으로서, 이러한 모든 실제 실시예의 개발시, 예를 들어 시스템 관련 및 사업 관련 제약들을 따르는 것과 같이, 개발자의 특정한 목표들을 달성하기 위해서는 실시마다 특정한 많은 결정들이 이루어져야 하는바, 이는 실시 마다 달라질 것이다. 또한, 주목할 사항으로서, 이러한 개발 노력은 복잡하고 시간을 소모하지만, 그럼에도 불구하고 본원의 개시의 이득을 갖는 당업자들이 수행해야 하는 일상적인 작업이다.
도 1은 주 프로세서(102), 보조 프로세서(104), 공유 메모리(106), 제 1 장치(110) 및 제 2 장치(112)를 포함하는 -이들 모두는 버스(108)에 결합된다- 멀티프로세서 컴퓨터 시스템(100)의 일 실시예의 블록도이다. 주 프로세서(102) 및 보조 프로세서(104)는 모두 명령들을 실행하도록 구성된다. 주 프로세서(102) 및 보조 프로세서(104)는 버스(108)를 통해 공유 메모리(106)로부터 데이터를 판독하고 이 공유 메모리(106)에 데이터를 기록한다(즉, 액세스한다). 주 프로세서(102)는 버스(108) 그리고/또는 공유 메모리(106)를 통해 통해 보조 프로세서(104)와 통신 한다. 주 프로세서(102) 그리고/또는 보조 프로세서(104)는 버스(108)를 통해 제 1, 2 장치들(110 및 112)과 통신한다. 제 1 장치(110)는, 예를 들어 저장 장치(예를 들어, 하드 디스크 드라이브)가 될 수 있다. 제 2 장치(112)는, 예를 들어 통신 장치(예를 들어, 모뎀, 네트워크 인터페이스 카드 등), 입/출력 장치(예를 들어, 키보드, 포인팅 장치, 프린터, 스캐너 등), 또는 다른 저장 장치(예를 들어, 다른 하드 디스크 드라이브)가 될 수 있다. 버스(108)는 어떠한 적절한 버스 구조가 될 수 있다.
도 1의 실시예에서, 주 프로세서(102)는 보조 프로세서(104)의 활동들을 명령하는바, 이에 따라 보조 프로세서(104)는 주 프로세서(102)를 돕는 다고 말한다. 주 프로세서(102) 및 보조 프로세서(104)는 동일한 타입의 프로세서이거나, 실질적으로 유사한 타입의 프로세서들이 될 수 있으며, 유사한 아키텍쳐들 및 기능적인 성능들을 가질 수 있다. 또한, 주 프로세서(102) 및 보조 프로세서(104)는 다른 타입의 프로세서들이 될 수 있으며, 다른 아키텍쳐들 그리고/또는 다른 기능적인 성능들을 가질 수 있다. 주 프로세서(102) 및 보조 프로세서(104)는 동일한 명령 세트로부터의 명령들 또는 다른 명령 세트들로부터의 명령들을 실행할 수 있다.
하기에서 설명되는 바와 같이, 주 프로세서(102)는 동작하는 동안 공유 메모리(106)에 저장된 운영 시스템 소프트웨어의 명령들을 실행시킨다. 이 운영 시스템 소프트웨어는 공유 메모리(106)와 제 1 장치(110) 그리고/또는 제 2 장치(112)를 이용하여 가상 메모리를 실시하며, 가상 물리 어드레스 변환 메커니즘을 구현한다. 상기 운영 시스템 소프트웨어는 주 프로세서(102) 내에서 가상 물리 어드레스 변환들을 수행하는 데에 이용되는 주 프로세서 페이지 테이블들의 세트를 생성하여 공유 메모리(106)에 유지한다. 공유 메모리(106)에 저장된, 주 프로세서(102)의 최하위 페이지 테이블은 다수의 페이지 테이블 엔트리들을 포함한다. 주 프로세서(102)의 최하위 페이지 테이블로부터 페이지 테이블 엔트리들을 얻는 데에 필요한 메모리 액세스들의 수를 줄여 주 프로세서(102)의 성능을 향상시키기 위해, 주 프로세서(102)는 바람직하게는 최근에 이용된 페이지 테이블 엔트리들을 저장하는 선택적인 변환 색인 버퍼(TLB)(114)를 포함한다.
도 1의 실시예에서, 보조 프로세서(104)는 커널(kernel)(116) 및 TLB(118)를 포함한다. 커널(116)은 명령들 및 데이터(즉, 코드)를 포함하는바, 이에 의해 보조 프로세서(104)는 주 프로세서(102)가 자신에게 발행한 프로세스들을 실행할 수 있게 된다. 동작하는 동안, 보조 프로세서(104)는 커널(116)의 명령들을 실행하며, 주 프로세서(102)가 자신에게 발행한 프로세스들을 실행한다. 보조 프로세서(104)에 발행되는 각 프로세스는 공유 메모리(106) 내에 존재하며, 전형적으로 코드를 포함한다.
하기에서 설명되는 바와 같이, 커널(116)은 가상 물리 어드레스 변환 메커니즘을 실시하며, 보조 프로세서 페이지 테이블들의 세트를 이용하여 공유 메모리(106) 내의 물리 어드레스들을 액세스한다. 보조 프로세서 페이지 테이블들의 세트는 주 프로세서(102)에 의해 실행되는 운영 시스템 소프트웨어에 의해 생성되어 유지된다. 공유 메모리(106)에 저장된, 보조 프로세서(104)의 최하위 페이지 테이블은 다수의 페이지 테이블 엔트리들을 포함한다. TLB(118)는 최근에 이용된 페이지 테이블 엔트리들을 저장하는 데에 이용되며, 그리고 보조 프로세서(104)의 최하위 페이지 테이블로부터 페이지 테이블 엔트리들을 얻는 데에 필요한 메모리 액세스들의 수를 줄여 보조 프로세서(104)의 성능을 향상시키기 위해 보조 프로세서(104)에 포함된다.
도 2는 도 1의 공유 메모리(106)의 일 실시예의 블록도이다. 도 2의 실시예에서, 공유 메모리(106)는 주 프로세서 페이지 테이블들(200), 보조 프로세서 페이지 테이블들(202), 프로세스부(204) 및 주 프로세서 운영 시스템(206)을 포함한다. 상기 설명한 바와 같이, 주 프로세서(102)(도 1)는 동작하는 동안 주 프로세서 운영 시스템(206)의 명령들을 실행시킨다. 하기에서 상세히 설명되는 바와 같이, 주 프로세서 운영 시스템(206)은 공유 메모리(106), 제 1 장치(110) 그리고/또는 제 2 장치(112)(도 1)를 이용하여 주 프로세서(102) 및 보조 프로세서(104)(도 1) 내에서 가상 메모리를 실시한다. 프로세스부(204)는 주 프로세서(102) 및 보조 프로세서(104) 모두에 의해 액세스가능한 메모리 페이지들을 포함하며, 프로세스 코드를 저장하는 데에 이용된다. 동작하는 동안, 보조 프로세서(104)는 주 프로세서(102)로부터의 명령들에 따라 프로세스부(204) 내에 저장된 프로세스 코드를 액세스하여 실행시킨다.
주 프로세서 운영 시스템(206)은 주 프로세서 페이지 테이블들(200) 및 보조 프로세서 페이지 테이블들(202) 모두를 생성하여 유지하며, 주 프로세서(102) 및 보조 프로세서(104) 모두의 가상 물리 어드레스 변환 메커니즘을 실시한다. 주 프로세서(102)는 주 프로세서 페이지 테이블들(200)을 이용하여, 주 프로세서(102) 내에서 생성된 가상 어드레스들을 공유 메모리(106) 내의 물리 어드레스들로 변환한다. 보조 프로세서(104)는 보조 프로세서 페이지 테이블들(202)을 이용하여, 보조 프로세서(104) 내에서 생성된 가상 어드레스들을 공유 메모리(106) 내의 물리 어드레스들로 변환한다. 주 프로세서(102) 및 보조 프로세서(104)는 공유 메모리(105) 내의 공동의 물리 어드레스 공간을 공유한다. 동작을 단순화하기 위해, 주 프로세서(102) 및 보조 프로세서(104)는 또한 공동의 가상 어드레스 공간을 공유할 수 있다.
도 2의 캐리어 매체(208)는 주 프로세서 운영 시스템(206)을 공유 메모리(106)로 전달하는 데에 이용될 수 있다. 예를 들어, 장치(112)(도 1)는 제거가능한 디스크들을 받는 디스크 드라이브(예를 들어, 플로피 디스크 드라이브, 컴팩 디스크 판독 전용 메모리 또는 CD-ROM 드라이브 등)가 될 수 있으며, 캐리어 매체(208)는 주 프로세서 운영 시스템(206)을 실시하는 디스크(예를 들어, 플로피 디스크, CD-ROM 디스크 등)가 될 수 있다. 주 프로세서(102)(도 1)는 장치(112)를 통해 캐리어 매체(208)로부터 주 메모리 운영 시스템(206)의 코드를 판독한 다음, 이 코드를 공유 메모리(106)에 저장할 수 있다.
대안적으로, 캐리어 매체(208)는 주 프로세서 운영 시스템(206)에 전달하는 데에 이용되는 신호(예를 들어, 캐리어 신호)가 될 수 있다. 예를 들어, 장치(112)는 네트워크 인터페이스 카드가 될 수 있으며, 캐리어 매체(208)는 장치(112)에 결합된 전송 매체를 통해 전달되는 신호(예를 들어, 전기 신호 또는 광학 신호)가 될 수 있다. 주 프로세서(102)는 장치(112) 및 캐리어 매체(208)를 통해 주 프로세서 운영 시스템(206)의 코드를 수신한 다음, 이 코드를 공유 메모리(106)에 저장할 수 있다.
주 프로세서 페이지 테이블들(200) 그리고/또는 보조 프로세서 페이지 테이블들(202)은 페이지 테이블 계층 구조를 형성하도록 배열된 다수의 페이지 테이블들을 포함할 수 있다. 도 3은 도 2의 주 프로세서 페이지 테이블들(200) 및 프로세스부(204)의 일 실시예의 블록도이다. 도 3의 실시예에서, 주 프로세서 페이지 테이블들(200)은 페이지 테이블(300)을 포함한다. 이 페이지 테이블(300)은, 예를 들어 주 프로세서 페이지 테이블 계층 구조 내의 최하위 페이지 테이블이 될 수 있다. 이 페이지 테이블(300)은 다수의 페이지 테이블 엔트리들(PTE들)(302)을 포함하며, 프로세스부(204)는 주 프로세서(102)(도 1)의 다수의 메모리 페이지들(즉, 페이지들)(304)을 포함한다. 페이지 테이블 엔트리들(302) 각각은 주 프로세서(102)의 페이지들(304)의 별개의 것에 대응하며, 대응하는 페이지(304)의 베이스 어드레스를 포함한다.
도 4는 도 2의 보조 프로세서 페이지 테이블들(202) 및 프로세스부(204)의 일 실시예의 블록도이다. 도 4의 실시예에서, 보조 프로세서 페이지 테이블들(202)은 페이지 테이블(400)을 포함한다. 이 페이지 테이블(400)은, 예를 들어 보조 프로세서 페이지 테이블 계층 구조 내의 최하위 페이지 테이블이 될 수 있다. 이 페이지 테이블(400)은 다수의 페이지 테이블 엔트리들(PTE들)(402)을 포함하며, 프로세스부(204)는 보조 프로세서(104)(도 1)의 다수의 페이지들(404)을 포함한다. 페이지 테이블 엔트리들(402) 각각은 보조 프로세서(104)의 페이지들(404)의 별개의 것에 대응하며, 대응하는 페이지(404)의 베이스 어드레스를 포함한다.
도 5는 페이지 테이블 엔트리들(PTE들)(도 3의 302 및 도 4의 402) 각각의 포맷의 일 실시예의 블록도이다. 도 5의 실시예에서, 페이지 테이블 엔트리들(302/402) 각각은 페이지 베이스 어드레스 필드, 더티(D) 비트 및 존재(P) 비트를 포함한다. 존재(P) 비트는 대응하는 페이지(304/404)가 프로세스부(204) 내에 존재하는 지를 나타낸다. 대응하는 페이지(304/404)가 프로세스부(204) 내에 존재할 때, 페이지 베이스 어드레스 필드는 그 대응하는 페이지(304/404)의 베이스 어드레스를 특정한다. 더티(D) 비트는, 장치(110) 그리고/또는 장치(112)(도 1)로부터 공유 메모리(106)로 복사된 이후, 대응하는 페이지(304/404)가 수정(또는 기록)되었는 지를 나타내며, 그리고 장치(110) 그리고/또는 장치(112)로부터 다른 페이지에 의해 교체될 때, 장치(110) 그리고/또는 장치(112)에 다시 기록될 필요가 있다.
도 6은 도 2의 주 프로세서 페이지 테이블들(200), 보조 프로세서 페이지 테이블들(202) 및 프로세스부(204)의 예시적인 실시예를 도시한 것으로서, 여기서 주 프로세서(102)(도 1)의 각 페이지의 크기는 보조 프로세서(104)(도 1)의 각 페이지 크기의 2배이다. 도 6의 실시예에서, 주 프로세서 페이지 테이블(200)의 페이지 테이블(300)은 페이지 테이블 엔트리(302A)를 포함하고, 보조 프로세서 페이지 테이블들(202)의 페이지 테이블(400)은 2개의 페이지 테이블 엔트리들(402A 및 402B)을 포함한다. 페이지 테이블 엔트리(302A)는 프로세스부(204)에 위치하는 주 프로세서 메모리 페이지의 베이스 어드레스를 포함한다(즉, "지시한다(points to)"). 도 6에 도시된 바와 같이, 보조 프로세서(104)의 2개의 인접하는 메모리 페이지들은 주 프로세서 메모리 페이지와 동일한 물리적인 메모리 공간을 차지한다. 보조 프로세서 페이지 테이블들(202)의 페이지 테이블 엔트리들(402A 및 402B)은 주 프로세서 메모리 페이지에 대응하는 보조 프로세서(104)의 2개의 인접하는 메모리 페이지들의 베이스 어드레스들을 포함한다(즉, "지시한다"). 페이지 테이블 엔트리들(402A 및 402B)은 도 6에 나타낸 바와 같이 보조 프로세서 페이지 테이블들(202)의 인접하는 페이지 테이블 엔트리들이 될 수 있다.
주목할 사항으로서, 도 1 내지 6의 실시예에서는, 프로세스부(204)(도 2 내지 4 및 도 6) 내의 메모리 페이지들(도 3의 304 및 도 4의 404) 및 대응하는 페이지 테이블 엔트리들(도 3의 302 및 도 4의 402) 만을 나타내었지만, 가상 메모리 및 관련된 가상 물리 어드레스 변환 메커니즘들에 의해 주 프로세서(102)(도 1) 및 보조 프로세서(104)(도 1)가 공유 메모리(106)의 전체 물리 어드레스 공간을 액세스할 수 있다.
일반적으로, 보조 프로세서(104)(도 1) 및 주 프로세서(102)(도 1)의 메모리 페이지의 크기들은 전형적으로 서로의 정수 배수들이다. 즉, 주 프로세서(102)의 메모리 페이지 크기들은 보조 프로세서(104)의 메모리 페이지 크기들의 i배이다. 여기서, i는 정수이며, i ≥1이다. 반대로, 보조 프로세서(104)의 메모리 페이지 크기들은 주 프로세서(102)의 메모리 페이지 크기의 i배이다. 여기서, i는 정수이며, i ≥ 1이다. i = 1일 경우, 주 프로세서(102)와 보조 프로세서(104)의 메모리 페이지 크기들은 같다. 그러나, 본원에서 설명되는 방법들 및 시스템들은, 주 프로 세서(102) 및 보조 프로세서(104)의 메모리 페이지 크기들이 다르고, 주 프로세서(102)의 메모리 페이지 크기들이 보조 프로세서(104)의 i 또는 1/i배인 경우에 특히 적용될 수 있는바, 여기서 i는 정수이며, i ≥2이다. 주 프로세서(102)의 메모리 페이지 크기들이 보조 프로세서(104)의 메모리 페이지 크기들의 i배인 경우, 주 프로세서(102)의 각 메모리 페이지 및 보조 프로세서(104)의 i개의 메모리 페이지들은 상기 설명한 바와 같이 프로세스부(204)(도 2 내지 4)의 동일한 물리 어드레스 영역을 차지할 수 있다. 반면, 주 프로세서(102)의 메모리 페이지 크기들이 보조 프로세서(104)의 1/i배인 경우, 보조 프로세서(104)의 각 메모리 페이지 및 주 프로세서(102)의 i개의 메모리 페이지들은 프로세스부(204)의 동일한 물리 어드레스 영역을 차지할 수 있다.
주목할 사항으로서, 메모리 페이지 크기들은 전형적으로 비트들의 수에 의해 결정되는바, 전형적으로는 2의 멱(power)이다. 따라서, 주 프로세서(102)의 메모리 페이지 크기들은 보조 프로세서(104)의 메모리 페이지 크기들의 2i 또는 1/2i배이다.
상기 설명한 바와 같이, 보조 프로세서(104)(도 1)는 주 프로세서(102)(도 1)가 갖지 않는 기능적인 성능들을 가질 수 있다. 이러한 상황에서, 장치(110) 그리고/또는 장치(112)(도 1)에 저장된, 프로세스의 명령들 및 데이터(즉, 코드)는, 프로세스 코드의 실행이 보조 프로세서(104)의 기능적인 성능들을 요구함을 나타내는 마커(marker)를 가질 수 있다. 프로세스 코드가 주 프로세서 운영 시스템(206) 의 적재 루틴(loader routine)에 의해 공유 메모리(106)의 프로세스부(204) 내에 적재되면, 적재 루틴은 프로세스 코드의 실행이 보조 프로세서(104)의 기능적인 성능들을 요구한다는 것을 주 프로세서 운영 시스템(206)에게 통지할 수 있다.
적재 루틴이, 프로세스부(204) 내에 적재되는 프로세스 코드가 보조 프로세서(104)의 기능적인 성능들을 요구한다는 것을 주 프로세서 운영 시스템(206)에게 통지하면, 주 프로세서 운영 시스템(206)은 보조 프로세서(104)의 기능적인 성능들을 요구하는 프로세스 코드의 1개 이상의 부분들을 결정할 수 있으며, 주 프로세서 페이지 테이블들(200) 및 보조 프로세서 페이지 테이블들(202)을 동시에(즉, 병렬로) 갱신할 수 있다.
이하에서, 보조 프로세서(104)의 기능적인 성능들을 요구하는 프로세스 코드의 1개 이상의 부분들은 이들 자체가 개별적인 프로세스들로 고려될 것이다. 주 프로세서(102)는 (예를 들어, 어떠한 적절한 프로세스간 통신 방법에 의해) 1개 이상의 코드 실행 메세지들을 보조 프로세서(104)로 전송할 수 있다. 각 코드 실행 메세지는, 예를 들어 실행(즉, "런(run)")될 프로세스에 관련된 보조 프로세스 페이지 테이블들(202)의 최상위 페이지 테이블의 베이스 어드레스, 및 그 프로세스의 제 1 명령의 가상 어드레스를 포함할 수 있다. 소정의 코드 실행 메세지에 응답하여, 보조 프로세서(104)는 관련된 프로세스를 실행을 위해 스케쥴링(sheduling)한다.
보조 프로세서(104)는 보조 프로세서 페이지 테이블들(202)의 최상위 페이지 테이블의 베이스 어드레스를 저장하기 위한 페이지 테이블 레지스터를 포함할 수 있다. 보조 프로세서(104)가 소정의 프로세스를 실행하기 시작할 때, 이 보조 프로세서(104)는 먼저 대응하는 코드 실행 메세지에 포함된 보조 프로세서 페이지 테이블들(202)의 최상위 페이지 테이블의 어드레스를 페이지 테이블 레지스터 내에 적재시킬 수 있다.
어떠한 실시예들에서, 주 프로세서 운영 시스템(206)은 보조 프로세서 페이지 테이블들(202)의 최상위 페이지 테이블 만을 공유 메모리(106)의 "로크된(locked)" 부분 내에 적재시킬 수 있으며, 그리고 보조 프로세서(104)가 보조 프로세서 페이지 테이블들(202)의 어떠한 부가적인 페이지 테이블들을 공유 메모리(106) 내에 적재하기 위해 페이지 폴트를 신호할 때 까지 기다린다. 주목할 사항으로서, 보조 프로세서 페이지 테이블들(202)의 어떠한 부가적인 페이지 테이블들도 "록된" 메모리에 유지될 필요가 없다. 보조 프로세서 페이지 테이블들(202)의 페이지 테이블을 포함하는 어느 페이지가 공유 메모리(106)로부터 제거(즉, "페이지 아웃(page out)")되는 경우, 이러한 제거 동작은 보조 프로세서 페이지 테이블 계층 구조의 다음의 최고 레벨로 반영되어야 한다.
주 프로세서 운영 시스템(206)에 의해 생성되며, 보조 프로세서(104)(도 1)에 의해 실행될 각 프로세스에 대해 보조 프로세서 페이지 테이블들(202)에 포함되는 상기 설명된 "애플리케이션(application)" 가상 어드레스 공간 맵핑에 부가하여, 주 프로세서 운영 시스템(206)(도 2)은 또한 각 프로세스에 대해 "관리자 모드(supervisor mode)" 가상 어드레스 공간 맵핑을 생성한다. 이 관리자 모드 가상 어드레스 공간 맵핑은 관련된 프로세스를 작동하는 동안 보조 프로세서(104)의 커널(116)(도 1)에 의해 액세스될 수 있다. 보조 프로세서(104)가 관련된 프로세스를 작동하는 동안 폴트 또는 인터럽트 신호를 수신하면, 커널(116)은 상기 폴트 및 인터럽트를 서비스하기 위해 관리자 모드 가상 어드레스 공간 맵핑에 의해 공유 메모리(106)의 프로세스부(204)에 저장된 코드를 액세스한다. 관리자 모드 가상 어드레스 공간 맵핑은 모든 프로세스들에 대해 같을 수 있으며, 이에 따라 각 프로세스에 대해 주 프로세서 운영 시스템(206)에 의해 생성된 보조 프로세서 페이지 테이블들(202)에 같은 관리자 모드 가상 어드레스 공간 맵핑이 포함될 수 있다.
프로세스를 실행하는 동안, 보조 프로세서(104)는 공유 메모리(106)에 존재하지 않는 메모리 페이지 내의 코드를 액세스하고자 할 수 있다. 이러한 상황에서, 보조 프로세서 페이지 테이블들(202)의 대응하는 페이지 테이블 엔트리(402)(도 4)의 존재(P) 비트는, 대응하는 페이지가 공유 메모리(106)에 존재하지 않음을 나타낸다. 보조 프로세서(104)의 커널(116)(도 1)은 페이지 폴트를 야기시켰던 프로세스를 중지하고, (예를 들어, 프로세스간 통신에 의해 전달되는 인터럽트 또는 메세지에 의해) 주 프로세서 운영 시스템(206)에게 페이지 폴트를 통지한다.
보조 프로세서(104)의 페이지 폴트 조건에 응답하여, 주 프로세서 운영 시스템(206)은 보조 프로세서(104)에 의해 요구되는 페이지를 주 프로세서(102)의 대응하는 메모리 페이지에 "맵핑"시킨다. 주 프로세서 운영 시스템(206)은 장치(110) 그리고/또는 장치(112)(도 1)로부터 대응하는 메모리 페이지를 공유 메모리(106) 내에 복사하고, 주 프로세서 페이지 테이블들(200) 및 보조 프로세서 페이지 테이블들(202)을 모두 갱신한다. 이후, 주 프로세서 운영 시스템(206)은 (예를 들어, 프로세스간 통신에 의해 전달되는 메세지를 통해) 보조 프로세서(104)에게, 요구되는 페이지가 이제 공유 메모리(106)에 존재함을 통지한다. 보조 프로세서(104)의 커널(116)이 메세지를 수신하면, 커널(116)은 중지된 프로세스를 준비한 다음, 이 프로세스를 재개한다.
상기 설명한 바와 같이, 보조 프로세서(104)는 최근에 이용된 페이지 테이블 엔트리들(402)(도 4)을 저장하기 위한 TLB(118)(도 1)를 포함한다. 이 TLB(118)는 보조 프로세서 페이지 테이블들(202)의 페이지 테이블(400)로부터 페이지 테이블 엔트리들(402)을 얻는 데에 필요한 공유 메모리(106)에 대한 액세스들의 수를 감소시켜, 보조 프로세서(104)의 성능을 향상시킨다. 상기 설명한 바와 같이, 메모리에 저장된 페이지 테이블들로의 액세스들을 또한 막기 위해, TLB들은 전형적으로 메모리에 저장된 페이지에 대한 기록 액세스들을 기록하기 위한 더티(D) 비트들을 포함한다. 이 더티(D) 비트들의 내용은 전형적으로 TLB의 바깥에서는 볼 수 없다.
도 1 내지 6의 실시예에서, 보조 프로세서(104)의 커널(116)(도 1)은 보조 프로세서(104) 내의 TLB(118)의 동작을 제어한다. TLB(118)는 보조 프로세서(104)의 가장 최근에 이용된 페이지 테이블 엔트리들을 저장하기 위한 다수의 엔트리들을 갖는다. TLB(118)의 각 엔트리는, 공유 메모리(106) 내에 있는 동안 대응하는 메모리 페이지가 (보조 프로세서(104)에 의해) 변경되었는 지를 나타내는 더티(D) 비트를 가질 수 있다. 예를 들어, 커널(116)이 (예를 들어, 보다 최근에 이용된 페이지 테이블 엔트리(402)를 위한 공간을 만들기 위해) TLB(118)의 엔트리를 제거(또는 제거를 지시)하면, 커널(116)은 그 엔트리의 더티(D) 비트의 값을 체크할 수 있다. 더티(D) 비트가 공유 메모리(106) 내에 있는 동안 대응하는 메모리 페이지가 (보조 프로세서(104)에 의해) 변경되었음을 나타내는 경우, 커널(116)은, 대응하는 메모리 페이지가 공유 메모리(106) 내에 있는 동안 변경되었으며, 공유 메모리(106)로부터 제거될 때 저장 장치(즉, 도 1의 장치(100) 그리고/또는 장치(112))에 기록될 필요가 있음을 나타내기 위해, 페이지 테이블(400) 내의 대응하는 페이지 테이블 엔트리(402)의 더티(D) 비트를 갱신할 수 있다.
보조 프로세서(104) 내에 TLB(108)가 존재하기 때문에, 보조 프로세서(104)는 주 프로세서 운영 시스템(206)이 보조 프로세서 페이지 테이블들(202)의 페이지 테이블(400)로부터 대응하는 메모리 페이지를 제거한 후 조차도, TLB(118)에 저장된 페이지 테이블 엔트리들(402)중 하나를 계속해서 이용할 수 있다. 이러한 이유로, 주 프로세서 운영 시스템(206)이 공유 메모리(206)로부터 메모리 페이지를 제거하고자 할 때, 주 프로세서 운영 시스템(206)은 먼저 커널(116)에게, 공유 메모리(106)로부터 제거될 메모리 페이지에 대응하는 TLB(118)의 어떠한 엔트리가 TLB(118)로부터 제거되어야 함을 통지해야 한다. 주목할 사항으로서, 공유 메모리(106)로부터 제거될 메모리 페이지에 대응하는 TLB(118)의 엔트리들은 공유 메모리(106)로부터 제거될 메모리 페이지의 물리 어드레스 범위에 대응한다.
상기 설명한 바와 같이, 커널(116)이 TLB(118)로부터 대응하는 엔트리를 제거할 때, 이 대응하는 엔트리의 더티(D) 비트의 값이, 공유 메모리(106)로부터 제거될 메모리 페이지가 공유 메모리(106) 내에 있는 동안 (보조 프로세서(104)에 의해) 변경되었음을 나타내면, 커널(116)은, 공유 메모리(106)로부터 제거될 메모리 페이지가 공유 메모리(106) 내에 있는 동안 변경되었으며, 이 공유 메모리(106)로부터 제거될 때 저장 장치(즉, 도 1의 장치(110) 그리고/또는 장치(112))에 기록될 필요가 있음을 나타내기 위해, 보조 프로세서 페이지 테이블들(202)의 페이지 테이블(400) 내의 대응하는 페이지 테이블 엔트리(402)의 더티(D) 비트를 갱신한다.
이후, 주 프로세서 운영 시스템(206)은 공유 메모리(106)로부터 메모리 페이지의 제거를 계속할 수 있다. 주 프로세서 운영 시스템(206)은, (ⅰ) 주 프로세서 페이지 테이블들(200)의 페이지 테이블(300) 내의 제거될 페이지에 대응하는 1개 이상의 페이지 테이블 엔트리들(302) 및 (ⅱ) 보조 프로세서 페이지 테이블들(202)의 페이지 테이블(400) 내의 제거될 페이지에 대응하는 1개 이상의 페이지 테이블 엔트리들(402)의 더티(D) 비트의 값들을 체크한다. 더티(D) 비트들중 어느 것이 공유 메모리(106)로부터 제거될 메모리 페이지가 공유 메모리(106) 내에 있는 동안 변경되었음을 나타내는 경우, 주 프로세서 운영 시스템(206)은 공유 메모리(106)로부터 제거될 메모리 페이지를 저장 장치(즉, 도 1의 장치(110) 그리고/또는 장치(112))에 다시 기록한다.
주목할 사항으로서, 일단 대응하는 엔트리가 TLB(118)로부터 제거되면, 공유 메모리(106)로부터 제거될 페이지를 액세스하고자 하는 보조 프로세서(104)에 의한 어떠한 시도는, 공유 메모리(106)로부터 제거될 페이지에 대응하는 페이지 테이블 엔트리(402)를 얻기 위해 페이지 테이블(400)을 액세스할 것을 요구할 것이다. 일단 공유 메모리(106)로부터 제거될 페이지가 공유 메모리(106)로부터 제거되면, 제거된 페이지를 액세스하고자 하는 보조 프로세서(104)에 의한 시도는 (바람직하게 는) 페이지 폴트를 야기시킬 것이다.
보조 프로세서(104)가 제 1 프로세스의 실행에서 제 2 프로세스의 실행으로 변경하면, 이 보조 프로세서(104)는 제 2 프로세스와 관련된 새로운 페이지 테이블 베이스 어드레스를 페이지 테이블 레지스터 내에 적재하며, 제 1 프로세스와 관련된 TLB(118)의 모든 엔트리들은 TLB(118)로부터 제거된다. 결과적으로, 성능 특징으로서, 보조 프로세서(104)가 공유 메모리(106)로부터 제거될 페이지에 대한 맵핑을 갖지 않는 프로세스를 현재 실행하고 있지 않는 한, 주 프로세서 운영 시스템(206)은 보조 프로세서(104)의 커널(116)에게 공유 메모리(106)로부터 제거될 페이지를 통지할 필요가 없다.
도 7A 및 7B는 멀티프로세서 컴퓨터 시스템에서 이용하기 위한 가상 메모리 페이지 교체 방법(700)의 일 실시예의 흐름도이다. 이 가상 메모리 페이지 교체 방법(700)은 멀티프로세서 시스템 내에서 페이지된 메모리 코히런시를 유지하는 것을 돕도록 설계된다. 본원에서는 도 1의 멀티프로세서 컴퓨터 시스템(100)에 관련하여 방법(700)을 설명할 것이지만, 방법(700)은 어떠한 멀티프로세서 컴퓨터 시스템에서도 실시될 수 있다. 도 1의 멀티프로세서 컴퓨터 시스템(100)에 관련하여, 이 방법(700)은 주 프로세서 운영 시스템(206)(도 2) 내에서 실시될 수 있다.
방법(700)의 단계(702) 동안, 주 프로세서(102)의 메모리 페이지에 대응하는 보조 프로세서(104)의 각 페이지 테이블 엔트리(402)(도 4)(이는 현재 공유 메모리(106)에 저장되어 있으며, 교체될 것이다)가 액세스된다. 교체될 주 프로세서(102)의 메모리 페이지에 대응하는 보조 프로세서(104)의 각 페이지 테이블 엔트 리(402)는, 보조 프로세서(104)의 대응하는 페이지가 단계(704) 동안 공유 메모리(106)에 존재하지 않음을 나타내도록 마크된다.
예를 들어, 교체될 주 프로세서(102)의 메모리 페이지에 대응하는 보조 프로세서(104)의 각 페이지 테이블 엔트리(402)는 단계(702) 동안(예를 들어, 제 1 판독 동작 동안) 공유 메모리(106)로부터 판독될 수 있다. 소정의 페이지 테이블 엔트리(402)를 판독한 후(예를 들어, 단계(702) 동안), 소정의 페이지 테이블 엔트리(402)의 존재(P) 비트의 값은, 보조 프로세서(104)의 대응하는 페이지가 공유 메모리(106)에 존재하지 않음을 나타내도록 변경될 수 있다(예를 들어, "지워지거나" 논리 '0'으로 설정될 수 있다). 이후, 소정의 페이지 테이블 엔트리(402)는 (예를 들어, 단계(704) 동안) 공유 메모리(106)에 다시 기록될 수 있다. 보조 프로세서(104)가 소정의 페이지 테이블 엔트리(402)를 액세스할 수 있다는 사실로 인해, 소정 페이지 테이블 엔트리(402)의 판독 및 기록은 "원자(atomic)" 트랜잭션으로서 이루어질 수 있다.
단계(706) 동안, 보조 프로세서(104)는 교체될 주 프로세서(102)의 메모리 페이지에 대응하는 보조 프로세서(104)의 페이지 테이블 엔트리들(402) 각각에 대응하는 TLB(118)의 엔트리들의 제거 필요성을 통보받는다. 예를 들어, 주 프로세서(102)는 교체될 주 프로세서(102)의 메모리 페이지에 대응하는 보조 프로세서(104)의 메모리 페이지에 대응하는 TLB(118)의 어느 엔트리의 제거 필요성을 나타내는 메세지(예를 들어, "PageRemoval" 메세지)를 보조 프로세서(104)로 전송할 수 있다. TLB(118)의 이러한 어떤 엔트리들을 제거한 후, 보조 프로세서(104)는 제거의 완료를 나타내는 메세지를 주 프로세서(102)에 전송할 수 있다.
이후, 단계(708) 동안, 교체될 주 프로세서(102)의 메모리 페이지에 대응하는 보조 프로세서(104)의 페이지 테이블 엔트리들(402)의 판독이 수행된다. 단계(710) 동안에는, 교체될 주 프로세서(102)의 메모리 페이지에 대응하는 페이지 테이블 엔트리(302)(도 3)의 판독이 수행된다. 단계(712) 동안에는, (ⅰ) 단계(708)의 판독 동안 얻어진 페이지 테이블 엔트리들(402)중 하나의 더티 비트가, 보조 프로세서(104)의 대응하는 메모리 페이지가 저장 장치에 기록될 필요가 있음을 나타내거나, 또는 (ⅱ) 단계(710)의 판독 동안 얻어진, 교체될 주 프로세서(102)의 메모리 페이지에 대응하는 페이지 테이블 엔트리들(302)중 하나의 더티 비트가, 교체될 주 프로세서(102)의 메모리 페이지가 저장 장치에 기록될 필요가 있음을 나타내는 경우, 교체될 주 프로세서(102)의 메모리 페이지가 공유 메모리(106)로부터 저장 장치(즉, 도 1의 장치(110) 그리고/또는 장치(112))에 기록된다.
상기 설명한 바와 같이, 교체될 주 프로세서(102)의 메모리 페이지에 대응하는 보조 프로세서(104)의 각 페이지 테이블 엔트리(402)는 단계(702) 동안(예를 들어, 제 1 판독 동작 동안) 공유 메모리(106)로부터 판독될 수 있다. 소정의 페이지 테이블 엔트리(402)를 판독한 후(예를 들어, 단계(702) 동안), 소정의 페이지 테이블 엔트리(402)의 존재(P) 비트의 값은, 보조 프로세서(104)의 대응하는 페이지가 공유 메모리(106) 내에 존재하지 않음을 나타내도록 변경될 수 있다(즉, "지워지거나" 논리 '0'으로 설정될 수 있다). 이후, 소정의 페이지 테이블 엔트리(402)는 ( 예를 들어, 단계(704) 동안) 공유 메모리(106)에 다시 기록될 수 있다. 존재(P) 비트가 변경될 때 소정의 페이지 테이블 엔트리(402)의 더티(D) 비트의 값을 변경하지 않는 것이 유익하기는 하지만, 반드시 이 경우와 같을 필요는 없다.
어떤 실시예들에서, 소정의 페이지 테이블 엔트리(402)의 존재(P) 비트 및 더티(D) 비트 모두는, 그 소정의 페이지 테이블 엔트리(402)가 공유 메모리(106)에 다시 기록되기 전에 지워질 수 있다. 이러한 실시예들에서, 교체될 주 프로세서(102)의 메모리 페이지에 대응하는 보조 프로세서(104)의 각 페이지 테이블 엔트리(402)는 단계(702)의 제 1 판독 동작 동안 판독될 수 있으며, 단계(708)의 판독 동작은 제 2 판독 동작을 구성할 수 있다. 상기 단계(712) 동안, (ⅰ) (예를 들어, 단계(702)의) 제 1 판독 동작 동안 얻어진 페이지 테이블 엔트리들(402)중 하나의 더티 비트가, 보조 프로세서(104)의 대응하는 메모리 페이지가 저장 장치에 기록될 필요가 있음을 나타내거나, 또는 (ⅱ) (예를 들어, 단계(708)의) 제 2 판독 동작 동안 얻어진 페이지 테이블 엔트리들(402)중 하나의 더티 비트가, 보조 프로세서(104)의 대응하는 메모리 페이지가 저장 장치에 기록될 필요가 있음을 나타내거나, 또는 (ⅲ) 단계(710)의 판독 동안 얻어진, 교체될 주 프로세서(102)의 메모리 페이지에 대응하는 페이지 테이블 엔트리들(302)중 하나의 더티 비트가, 교체될 주 프로세서(102)가 저장 장치에 기록될 필요가 있음을 나타내는 경우, 교체될 주 프로세서(102)의 메모리 페이지가 공유 메모리(106)로부터 저장 장치(즉, 도 1의 장치(110) 그리고/또는 장치(112))에 기록될 수 있다.
상기 설명한 바와 같이, 보조 프로세서(104)는 단계(706) 동안, 교체될 주 프로세서(102)의 메모리 페이지에 대응하는 보조 프로세서(104)의 페이지 테이블 엔트리들(402) 각각에 대응하는 TLB(118)의 엔트리들의 제거 필요성을 통보받는다. 커널(116)의 코드를 실행하는 보조 프로세서(104)는 교체될 주 프로세서(102)의 메모리 페이지에 대응하는 보조 프로세서(104)의 페이지 테이블 엔트리들(402)중 하나에 대응하는 TLB(118)의 엔트리들중 하나의 위치를 정함으로써 응답할 수 있다. TLB(118)의 엔트리들중 하나의 더티 비트가, 보조 프로세서(104)의 대응하는 메모리페이지가 저장 장치에 기록될 필요가 있음을 나타내는 경우, 보조 프로세서(104)는 보조 프로세서(104)의 대응하는 메모리 페이지가 저장 장치에 기록될 필요가 있음을 나타내기 위해, 공유 메모리(106) 내의 페이지 테이블 엔트리들(402)중 대응하는 하나의 더티 비트를 갱신할 수 있다. 이후, 보조 프로세서(104)는 TLB(118)의 엔트리들중 하나를 지울 수 있다. 보조 프로세서(104)는 교체될 주 프로세서(102)의 메모리 페이지에 대응하는 보조 프로세서(104)의 페이지 테이블 엔트리들(402) 각각에 대응하는 TLB(118)의 모든 엔트리들에 대해 상기 실행들을 반복할 수 있다.
주 프로세서(102)의 메모리 페이지(예를 들어, 주 프로세서(102)의 제 1 메모리 페이지)가 교체될 필요가 있음을 결정함에 있어서, 주 프로세서(102)는 보조 프로세서(104)의 페이지 폴트 조건의 표시(예를 들어, 보조 프로세서(104)의 페이지 폴트를 나타내는, 보조 프로세서(104)로부터의 메세지)를 수신할 수 있다. 주 프로세서(102)는 보조 프로세서(104)의 페이지 폴트 조건을 없애기 위해, 공유 메모리(106)에 저장된 주 프로세서(102)의 제 1 페이지가, 저장 장치(즉, 도 1의 장치(110) 그리고/또는 장치(112))에 저장된 주 프로세서(102)의 제 2 페이지로 교체 되어야 함을 결정할 수 있다.
도 1로 돌아가서, 멀티프로세서 컴퓨터 네트워크(100)의 주 프로세서(102)는 (예를 들어, 상기 설명한 바와 같이 버스(108) 그리고/또는 공유 메모리(106)에 의해) 보조 프로세서(104)와 통신한다. 주 프로세서(102) 및 보조 프로세서(104)는, 예를 들어 메세지들을 통해 통신할 수 있다. 주 프로세서(102)와 보조 프로세서(104) 간에 교환되는 메세지들은, 예를 들어 "CreateProcess" 메세지를 포함할 수 있다. 주 프로세서(102)는 실행을 위해 스케쥴링될 프로세스를 나타내는 "CreateProcess" 메세지를 보조 프로세서(104)에 전송할 수 있다. 이 "CreateProcess" 메세지는 프로세스를 식별하는 "Process Id", 및 주 프로세서 운영 시스템(206)(도 2)에 의해 발생되며 그 프로세스에 관련된 최상위 페이지 테이블의 베이스 어드레스를 포함할 수 있다. 프로세스가 실행되고자 할 때(즉, 능동이 될 때), 보조 프로세서(104)의 커널(116)은 상기 설명된 보조 프로세서(104)의 페이지 테이블 베이스 어드레스 레지스터 내의 최상위 페이지 테이블의 베이스 어드레스를 저장할 수 있다.
주 프로세서(102)는 또한 보조 프로세서(104)의 특정 메모리 페이지가 공유 메모리(106) 내에 저장(즉, 부가)되었음을 나타내는 "PageAdded" 메세지를 보조 프로세서(104)에 전송할 수 있다. 이 "PageAdded" 메세지는 상기 부가된 메모리 페이지로의 액세스를 요구할 수 있는 프로세스를 식별하는 "Process Id", 및 상기 부가된 메모리 페이지의 베이스 어드레스를 포함할 수 있다. "Process Id"를 갖는 프로세스가 실행되면, 보조 프로세서(104)의 커널(116)은 상기 부가된 메모리 페이지의 베이스 어드레스에 대응하는 TLB(118) 내의 어느 엔트리를 제거(또는 제거를 지시)할 수 있다. 상기 부가된 메모리 페이지가, 프로세스를 실행하는 동안 페이지 폴트 조건으로 인해 부가되었다면, 커널(116)은 프로세스의 실행을 재개할 수 있다.
주 프로세서(102)는 또한 보조 프로세서(104)의 특정 메모리 페이지가 공유 메모리(106)로부터 제거되었음을 나타내는 "PageRemoved" 메세지를 보조 프로세서(104)에 전송할 수 있다. 이 "PageRemoved" 메세지는 상기 제거된 메모리 페이지에 대한 맵핑을 가질 수 있는 프로세스를 식별하는 "Process Id", 및 상기 제거된 메모리 페이지의 베이스 어드레스를 포함할 수 있다. "Process Id"를 갖는 프로세스가 실행될 때, 보조 프로세서(104)의 커널(116)은 상기 제거된 메모리 페이지의 베이스 어드레스에 대응하는 TLB(118) 내의 어느 엔트리를 제거(또는 제거를 지시)할 수 있다.
보조 프로세서(104)는 어떠한 프로세스의 실행이 페이지 폴트 조건으로 인해 중지되었음을 나타내는 "ProcessStoppedDueToPageFault" 메세지를 주 프로세서(102)에 전송할 수 있다. 이 "ProcessStoppedDueToPageFault" 메세지는 페이지 폴트로 인해 중지된 프로세스를 식별하는 "Process Id", 페이지 폴트 조건을 야기시켰던 가상 어드레스, 및 페이지 폴트 조건을 없애기 위해 부가된 페이지에 대한 액세스가 판독 전용일 필요가 있는지 아니면 판독-기록일 필요가 있는 지를 나타내는 기록 플래그를 포함할 수 있다.
보조 프로세서(104)로부터의 "ProcessStoppedDueToPageFault" 메세지에 응답하여, 주 프로세서 운영 시스템(206)은 페이지 폴트를 야기시켰던 가상 어드레스에 대응하는 물리 어드레스를 포함하는 물리 어드레스 범위를 갖는 공유 메모리(106)로 가져올 수 있다. 주 프로세서 운영 시스템(206)은 요구되는 액세스에 대해 페이지를 마크하고, 주 프로세서 페이지 테이블들(200) 및 보조 프로세서 페이지 테이블들(202)을 갱신할 수 있다. 상기 설명한 바와 같이, 주 프로세서(102)의 부가된 메모리 페이지는 보조 프로세서(104)의 1개 이상의 "부가된" 메모리 페이지들에 대응할 수 있다. 주 프로세서(102)는 자신의 부가된 메모리 페이지에 대응하는 보조 프로세서(104)의 1개 이상의 부가된 메모리 페이지들을 식별하는 1개 이상의 "PageAdded" 메세지들을 보조 프로세서(104)에 전송할 수 있다.
주목할 사항으로서, 보조 프로세서(104)의 TLB(118)(도 1)의 엔트리들은 도 7A-B의 방법(700)이 이용될 수 있도록 하기 위해 더티(D) 비트들을 포함할 필요는 없다. 또한, 보조 프로세서(104)의 커널(116)(도 1)의 동작들은 하드웨어(예를 들어, 디지털 논리 회로)에 의해 수행될 수 있다.
상기 개시된 특정한 실시예들은 단지 예시적인 것으로서, 본 발명은 다르지만 등가의 방법들, 즉 본원의 개시의 이득을 갖는 당업자들에게 명백한 방법들로 변형 및 실행될 수 있다. 또한, 하기의 청구항들에 정의되는 것 외에는, 본원에 개시된 구성 또는 설계의 세부 사항들에 대한 어떠한 한정도 의도되지 않는다. 따라서, 상기 개시된 특정 실시예들은 변경 또는 수정될 수 있으며, 이러한 모든 변경들은 본 발명의 범위 및 정신 내에 있는 것으로 간주된다. 따라서, 본원의 보호하고자 하는 바는 하기의 청구항들에서 설명된다.
Claims (15)
- 제 1 프로세서 및 제 2 프로세서를 포함하는 멀티프로세서 시스템에서 이용하기 위한 가상 메모리 페이지 교체 방법으로서,상기 제 2 프로세서의 페이지 테이블 엔트리들의 세트를 액세스하는 단계와, 여기서 상기 페이지 테이블 엔트리들의 세트 각각은 상기 제 2 프로세서의 페이지들의 세트의 별개의 페이지에 대응하며, 상기 제 2 프로세서의 페이지들의 세트의 각 페이지는 메모리에 저장되고, 상기 메모리로부터 제거될 상기 제 1 프로세서의 제 1 페이지에 대응하며, 상기 제 2 프로세서의 각 페이지 테이블 엔트리는 존재 비트 및 더티 비트를 포함하고, 상기 존재 비트는 상기 제 2 프로세서의 대응하는 페이지가 상기 메모리 내에 존재하는지를 나타내는 값을 가지며, 그리고 상기 더티 비트는 상기 제 2 프로세서의 대응하는 페이지가 저장 장치에 기록될 필요가 있는지를 나타내는 값을 갖고;상기 제 2 프로세서의 대응하는 페이지가 상기 메모리 내에 존재하지 않음을 나타내기 위해 상기 페이지 테이블 엔트리들의 세트 각각의 상기 존재비트의 값을 변경하는 단계와, 여기서 상기 변경 단계는 상기 페이지 테이블 엔트리들의 세트 각각의 상기 더티 비트의 값이 변경되지 않도록 수행되며;상기 페이지들의 세트의 한 페이지에 대응하는 상기 제 2 프로세서의 버퍼의 어느 엔트리의 제거 필요성을 상기 제 2 프로세서에게 통지하는 단계와, 여기서 상기 버퍼는 다수의 엔트리들을 포함하고;상기 페이지 테이블 엔트리들의 세트 각각을 판독하는 단계와, 여기서 상기 판독은 상기 통지 단계 이후 수행되며;상기 제 1 프로세서의 상기 제 1 페이지에 대응하는 페이지 테이블 엔트리를 판독하는 단계와, 여기서 상기 페이지 테이블 엔트리는 제 1 비트가 상기 저장 장치에 기록될 필요가 있는지를 나타내는 더티 비트를 포함하며; 그리고(ⅰ) 상기 페이지 테이블 엔트리들의 세트 각각의 판독 단계 동안 얻어진 상기 페이지 테이블 엔트리들의 세트중 적어도 하나의 더티 비트가, 상기 제 2 프로세서의 대응하는 페이지가 상기 저장 장치에 기록될 필요가 있음을 나타내는 경우, 또는 (ⅱ) 상기 제 1 프로세서의 상기 페이지 테이블 엔트리의 판독 단계 동안 얻어진 상기 페이지 테이블 엔트리의 더티 비트가, 상기 제 1 프로세서의 상기 제 1 페이지가 상기 저장 장치에 기록될 필요가 있음을 나타내는 경우, 상기 제 1 프로세서의 상기 제 1 페이지를 상기 메모리로부터 상기 저장 장치에 기록하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 1 항에 있어서, 상기 통지 단계는,상기 페이지들의 세트의 한 페이지에 대응하는 상기 제 2 프로세서의 버퍼의 어느 엔트리의 제거 필요성을 상기 제 2 프로세서에게 통지하는 단계를 포함하고, 상기 버퍼는 다수의 엔트리들을 포함하며, 상기 버퍼의 각 엔트리는 상기 제 2 프로세서의 대응하는 페이지가 상기 저장 장치에 기록될 필요가 있는지를 나타내는 더티 비트를 포함하고,상기 가상 메모리 페이지 교체 방법은,상기 페이지들의 세트의 한 페이지에 대응하는 상기 버퍼의 엔트리의 위치를 정하고,상기 페이지들의 세트의 상기 페이지에 대응하는 상기 엔트리의 더티 비트가, 상기 페이지들의 세트의 상기 페이지가 상기 저장 장치에 기록될 필요가 있음을 나타내는 경우, 상기 페이지들의 세트의 상기 페이지가 상기 저장 장치에 기록될 필요가 있음을 나타내기 위해 상기 페이지들의 세트의 상기 페이지에 대응하는 상기 제 2 프로세서의 상기 페이지 테이블 엔트리의 더티 비트를 갱신하며; 그리고상기 페이지들의 세트의 상기 페이지에 대응하는 상기 엔트리를 지움으로써,상기 통지 단계에 응답하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 1 항에 있어서,상기 통지 단계는, 상기 페이지들의 세트의 한 페이지에 대응하는 상기 제 2 프로세서의 버퍼의 어느 엔트리의 제거 필요성을 나타내는 메세지를 상기 제 2 프로세서로 전송하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 1 항에 있어서,상기 제 2 프로세서의 페이지 폴트 조건의 표시를 수신하는 단계와; 그리고상기 제 2 프로세서의 상기 페이지 폴트 조건을 없애기 위해, 상기 메모리에 저장된 상기 제 1 프로세서의 제 1 페이지가, 상기 저장 장치에 저장된 상기 제 1 프로세서의 제 2 페이지로 교체되어야 함을 결정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 4 항에 있어서,상기 표시를 수신하는 단계는 상기 제 2 프로세서 내의 페이지 폴트 상태를 나타내는 메세지를 상기 제 2 프로세서로부터 수신하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 1 프로세서 및 제 2 프로세서를 포함하는 멀티프로세서 시스템에서 이용하기 위한 가상 메모리 페이지 교체 방법으로서,상기 제 2 프로세서의 페이지 테이블 엔트리들의 세트 각각의 제 1 리드(read)를 수행하는 단계와, 여기서 상기 페이지 테이블 엔트리들의 세트 각각은 상기 제 2 프로세서의 페이지들의 세트의 다른 페이지에 대응하고, 상기 제 2 프로세서의 페이지들의 세트의 각 페이지는 메모리에 저장되며 상기 메모리로부터 제거될 상기 제 1 프로세서의 제 1 페이지에 대응하며, 그리고 상기 제 2 프로세서의 각 페이지 테이블 엔트리는 상기 제 2 프로세서의 대응하는 페이지가 저장 장치에 라이트(write)될 필요가 있는지의 여부를 나타내는 더티 비트를 포함하며;상기 제 2 프로세서의 대응하는 페이지가 상기 메모리에 존재하지 않음을 나타내기 위해 상기 페이지 테이블 엔트리들의 세트의 각 페이지 테이블 엔트리를 마킹하는 단계와;상기 페이지들의 세트의 페이지에 대응하는 상기 제 2 프로세서의 버퍼의 어떠한 엔트리의 제거 필요성을 상기 제 2 프로세서에 통지하는 단계와, 여기서 상기 버퍼는 다수의 엔트리들을 포함하고, 상기 버퍼의 각 엔트리는 상기 제 2 프로세서의 대응하는 페이지가 저장 장치에 라이트될 필요가 있는지를 나타내는 더티 비트를 포함하며;상기 페이지 테이블 엔트리들의 세트의 제 2 리드를 수행하는 단계와, 여기서 상기 제 2 리드는 상기 통지 단계 이후에 수행되며;상기 제 1 프로세서의 제 2 페이지에 대응하는 페이지 테이블 엔트리의 리드를 수행하는 단계와, 여기서 상기 페이지 테이블 엔트리는 상기 제 1 비트가 상기 저장 장치에 라이트될 필요가 있는지를 나타내는 더티 비트를 포함하며; 그리고(i) 상기 제 2 프로세서의 페이지 테이블 엔트리들의 세트의 제 1 리드 동안 얻어진 페이지 테이블 엔트리들의 세트중 적어도 하나의 더티 비트가 상기 제 2 프로세서의 대응하는 페이지가 상기 저장 장치에 라이트될 필요가 있음을 나타내거나,(ii) 상기 제 2 프로세서의 페이지 테이블 엔트리들의 세트 각각의 제 2 리드 동안 얻어진 페이지 테이블 엔트리들의 세트의 적어도 하나의 더티 비트가 상기 제 2 프로세서의 대응하는 페이지가 상기 저장 장치에 라이트될 필요가 있음을 나타내는 경우, 또는(iii) 상기 제 1 프로세서의 페이지 테이블 엔트리의 리드 동안 얻어진 페이지 테이블 엔트리의 더티 비트가 상기 제 1 프로세서의 제 1 페이지가 상기 저장 장치에 라이트될 필요가 있음을 나타내는 경우,상기 메모리로부터의 상기 제 1 프로세서의 제 1 페이지를 상기 저장 장치에 라이트하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 6 항에 있어서,상기 페이지들의 세트의 한 페이지에 대응하는 상기 버퍼의 엔트리의 위치를 정하고;상기 페이지들의 세트의 상기 페이지에 대응하는 상기 엔트리의 더티 비트가, 상기 페이지들의 세트의 상기 페이지가 상기 저장 장치에 기록될 필요가 있음을 나타내는 경우, 상기 페이지들의 세트의 상기 페이지가 상기 저장 장치에 기록될 필요가 있음을 나타내기 위해 상기 페이지들의 세트의 상기 페이지에 대응하는 상기 제 2 프로세서의 상기 페이지 테이블 엔트리의 더티 비트를 갱신하며; 그리고상기 페이지들의 세트의 상기 페이지에 대응하는 상기 엔트리를 지움으로써,상기 통지 단계에 응답하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 6 항에 있어서, 상기 제 2 프로세서에게 통지하는 단계는,상기 페이지들의 세트의 페이지에 대응하는 상기 제 2 프로세서의 버퍼의 어느 엔트리의 제거 필요성을 나타내는 메시지를 상기 제 2 프로세서로 전송하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 6 항에 있어서,상기 제 2 프로세서 내의 페이지 폴트 조건의 표시를 수신하는 단계와; 그리고상기 제 2 프로세서 내의 상기 페이지 폴트 조건을 제거하기 위해, 상기 메모리에 저장된 상기 제 1 프로세서의 제 1 페이지가 상기 저장 장치에 저장된 상기 제 1 프로세서의 제 2 페이지로 교체되어야 함을 결정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 9 항에 있어서, 상기 표시를 수신하는 단계는,상기 제 2 프로세서 내의 페이지 폴트 조건을 나타내는 메시지를 상기 제 2 프로세서로부터 수신하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 1 프로세서 및 제 2 프로세서를 포함하는 멀티프로세서 시스템에서 이용하기 위한 가상 메모리 페이지 교체 방법으로서,상기 제 2 프로세서 내의 페이지 폴트 조건을 나타내는 메시지를 상기 제 2 프로세서로부터 수신하는 단계와;상기 제 2 프로세서 내의 상기 페이지 폴트 조건을 제거하기 위해, 상기 메모리에 저장된 상기 제 1 프로세서의 제 1 페이지가 상기 저장장치에 저장된 상기 제 1 프로세서의 제 2 페이지로 교체되어야 함을 결정하는 단계와;상기 제 2 프로세서의 페이지 테이블 엔트리들의 세트 각각의 제 1 리드(read)를 수행하는 단계와, 여기서 상기 페이지 테이블 엔트리들의 세트 각각은 상기 제 2 프로세서의 페이지들의 세트의 다른 페이지에 대응하고, 상기 제 2 프로세서의 페이지들의 세트의 각 페이지는 메모리에 저장되며 상기 메모리로부터 제거될 상기 제 1 프로세서의 제 1 페이지에 대응하며, 그리고 상기 제 2 프로세서의 각 페이지 테이블 엔트리는 상기 제 2 프로세서의 대응하는 페이지가 저장 장치에 라이트(write)될 필요가 있는지의 여부를 나타내는 더티 비트를 포함하며;상기 제 2 프로세서의 대응하는 페이지가 상기 메모리에 존재하지 않음을 나타내기 위해 상기 페이지 테이블 엔트리들의 세트의 각각을 마킹하는 단계와;상기 페이지들의 세트의 페이지에 대응하는 상기 제 2 프로세서의 버퍼의 어떠한 엔트리의 제거 필요성을 나타내는 메세지를 상기 제 2 프로세서로 전송하는 단계와, 여기서 상기 버퍼는 다수의 엔트리들을 포함하고, 상기 버퍼의 각 엔트리는 상기 제 2 프로세서의 대응하는 페이지가 저장 장치에 라이트될 필요가 있는지를 나타내는 더티 비트를 포함하며;상기 페이지 테이블 엔트리들의 세트의 제 2 리드를 수행하는 단계와, 여기서 상기 제 2 리드는 상기 메시지를 전송한 후에 수행되며;상기 제 1 프로세서의 제 2 페이지에 대응하는 페이지 테이블 엔트리의 리드를 수행하는 단계와, 여기서 상기 페이지 테이블 엔트리는 상기 제 1 비트가 상기 저장 장치에 라이트될 필요가 있는지를 나타내는 더티 비트를 포함하며; 그리고(i) 상기 제 2 프로세서의 페이지 테이블 엔트리들의 세트의 제 1 리드 동안 얻어진 페이지 테이블 엔트리들의 세트중 적어도 하나의 더티 비트가 상기 제 2 프로세서의 대응하는 페이지가 상기 저장 장치에 라이트될 필요가 있음을 나타내거나,(ii) 상기 제 2 프로세서의 페이지 테이블 엔트리들의 세트 각각의 제 2 리드 동안 얻어진 페이지 테이블 엔트리들의 세트의 적어도 하나의 더티 비트가 상기 제 2 프로세서의 대응하는 페이지가 상기 저장 장치에 라이트될 필요가 있음을 나타내는 경우, 또는(iii) 상기 제 1 프로세서의 페이지 테이블 엔트리의 리드 동안 얻어진 페이지 테이블 엔트리의 더티 비트가 상기 제 1 프로세서의 제 1 페이지가 상기 저장 장치에 라이트될 필요가 있음을 나타내는 경우,상기 메모리로부터의 상기 제 1 프로세서의 제 1 페이지를 상기 저장 장치에 라이트하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 1 프로세서 및 제 2 프로세서를 포함하는 멀티프로세서 시스템에서 가상 메모리 페이지 교체 방법을 수행하기 위한 프로그램 명령들을 포함하는 캐리어 매체로서, 상기 프로그램 명령들은,상기 제 2 프로세서의 페이지 테이블 엔트리들의 세트를 액세스하고, 여기서 상기 페이지 테이블 엔트리들의 세트 각각은 상기 제 2 프로세서의 페이지들의 세트의 다른 페이지에 대응하고, 상기 제 2 프로세서의 페이지들의 세트의 각 페이지는 메모리에 저장되고 상기 메모리로부터 제거될 상기 제 1 프로세서의 제 1 페이지에 대응하며, 상기 제 2 프로세서의 각 페이지 테이블 엔트리는 존재 비트 및 더티 비트를 포함하고, 상기 존재 비트는 상기 제 2 프로세서의 대응하는 페이지가 상기 메모리에 존재하는지를 나타내는 값을 갖고, 상기 더티 비트는 상기 제 2 프로세서의 대응하는 페이지가 상기 저장 장치에 라이트될 필요가 있는지를 나타내는 값을 가지며;상기 제 2 프로세서의 대응하는 페이지가 상기 메모리에 존재하지 않음을 나타내기 위해 상기 페이지 테이블 엔트리들의 세트 각각의 존재 비트의 값을 변경하며, 여기서 상기 변경은 상기 페이지 테이블 엔트리들의 세트 각각의 더티 비트의 값이 변경되지 않도록 수행되며;상기 페이지들의 세트의 페이지에 대응하는 상기 제 2 프로세서의 버퍼의 어느 엔트리의 제거 필요성을 상기 제 2 프로세서에게 통지하고, 여기서 상기 버퍼는 다수의 엔트리들을 포함하고;상기 페이지 테이블 엔트리들의 세트 각각을 리드하고, 여기서 상기 리드는 상기 통지이후에 수행되며;상기 제 1 프로세서의 제 1 페이지에 대응하는 페이지 테이블 엔트리의 리드를 수행하는 단계와, 여기서 상기 페이지 테이블 엔트리는 상기 제 1 비트가 상기 저장 장치에 라이트될 필요가 있는지를 나타내는 더티 비트를 포함하며; 그리고(i) 상기 페이지 테이블 엔트리들의 세트 각각을 리드하는 동안 얻어진 페이지 테이블 엔트리들의 세트중 적어도 하나의 더티 비트가 상기 제 2 프로세서의 대응하는 페이지가 상기 저장 장치에 라이트될 필요가 있음을 나타내거나,(ii) 상기 제 1 프로세서의 페이지 테이블 엔트리들 리드하는 동안 얻어진 페이지 테이블 엔트리의 더티 비트가 상기 제 1 프로세서의 제 1 페이지가 상기 저장 장치에 라이트될 필요가 있음을 나타내는 경우,상기 메모리로부터의 상기 제 1 프로세서의 제 1 페이지를 상기 저장 장치에 라이트하도록 동작하는 것을 특징으로 하는 캐리어 매체.
- 제12항에 있어서,상기 캐리어 매체는 컴퓨터 판독가능한 저장 매체인 것을 특징으로 하는 캐리어 매체.
- 제13항에 있어서,상기 컴퓨터 판독가능한 저장 매체는 플로피 디스크 또는 컴팩 디스크 판독 전용 메모리(CD-ROM) 디스크인 것을 특징으로 하는 캐리어 매체.
- 제 1 프로세서와;상기 제 1 프로세서와 통신하는 제 2 프로세서와;상기 제 1 프로세서 및 상기 제 2 프로세서에 동작가능하게 결합된 메모리와;상기 제 1 프로세서에 동작가능하게 결합된 저장 장치와;상기 제 2 프로세서의 페이지 테이블 엔트리들의 세트를 액세스하기 위한 수단과, 여기서 상기 페이지 테이블 엔트리들의 세트 각각은 상기 제 2 프로세서의 페이지들의 세트의 다른 페이지에 대응하며, 상기 제 2 프로세서의 페이지들의 세트의 각 페이지는 메모리에 저장되고, 상기 메모리로부터 제거될 상기 제 1 프로세서의 제 1 페이지에 대응하며, 상기 제 2 프로세서의 각 페이지 테이블 엔트리는 존재 비트 및 더티 비트를 포함하고, 상기 존재 비트는 상기 제 2 프로세서의 대응하는 페이지가 상기 메모리 내에 존재하는지를 나타내는 값을 가지며, 그리고 상기 더티 비트는 상기 제 2 프로세서의 대응하는 페이지가 저장 장치에 기록될 필요가 있는지를 나타내는 값을 갖고;상기 제 2 프로세서의 대응하는 페이지가 상기 메모리 내에 존재하지 않음을 나타내기 위해 상기 페이지 테이블 엔트리들의 세트 각각의 상기 존재비트의 값을 변경하기 위한 수단과, 여기서 상기 변경은 상기 페이지 테이블 엔트리들의 세트 각각의 상기 더티 비트의 값이 변경되지 않도록 수행되며;상기 페이지들의 세트의 한 페이지에 대응하는 상기 제 2 프로세서의 버퍼의 어느 엔트리의 제거 필요성을 상기 제 2 프로세서에 통지하기 위한 수단과, 여기서 상기 버퍼는 다수의 엔트리들을 포함하고;상기 페이지 테이블 엔트리들의 세트 각각을 판독하기 위한 수단과, 여기서 상기 판독은 상기 통지 이후에 수행되며;상기 제 1 프로세서의 상기 제 1 페이지에 대응하는 페이지 테이블 엔트리를 판독하기 위한 수단과, 여기서 상기 페이지 테이블 엔트리는 제 1 비트가 상기 저장 장치에 기록될 필요가 있는지를 나타내는 더티 비트를 포함하며; 그리고(i) 상기 페이지 테이블 엔트리들의 세트 각각을 판독하는 동안 얻어진 상기 페이지 테이블 엔트리들의 세트중 적어도 하나의 더티 비트가, 상기 제 2 프로세서의 대응하는 페이지가 상기 저장 장치에 기록된 필요가 있는지를 나타내는 경우, 또는(ii) 상기 제 1 프로세서의 상기 페이지 테이블 엔트리를 판독하는 동안 얻어진 상기 페이지 테이블 엔트리의 더티 비트가, 상기 제 1 프로세서의 상기 제 1 페이지가 상기 저장 장치에 기록될 필요가 있음을 나타내는 경우,상기 제 1 프로세서의 상기 제 1 페이지를 상기 메모리로부터 상기 저장 장치에 기록하기 위한 수단을 포함하는 것을 특징으로 하는 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/841,469 US6684305B1 (en) | 2001-04-24 | 2001-04-24 | Multiprocessor system implementing virtual memory using a shared memory, and a page replacement method for maintaining paged memory coherence |
US09/841,469 | 2001-04-24 | ||
PCT/US2002/002898 WO2002086730A2 (en) | 2001-04-24 | 2002-02-01 | Multiprocessor system implementing virtual memory using a shared memory, and a page replacement method for maintaining paged memory coherence |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20030092101A KR20030092101A (ko) | 2003-12-03 |
KR100880685B1 true KR100880685B1 (ko) | 2009-01-30 |
Family
ID=25284958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020037013898A KR100880685B1 (ko) | 2001-04-24 | 2002-02-01 | 공유 메모리를 이용하여 가상 메모리를 실시하는멀티프로세서 시스템, 및 페이징된 메모리 코히런시를유지하기 위한 페이지 교환 방법 |
Country Status (9)
Country | Link |
---|---|
US (1) | US6684305B1 (ko) |
EP (1) | EP1405191B1 (ko) |
JP (1) | JP4105551B2 (ko) |
KR (1) | KR100880685B1 (ko) |
CN (1) | CN1275163C (ko) |
AU (1) | AU2002242048A1 (ko) |
DE (1) | DE60235984D1 (ko) |
TW (1) | TW574646B (ko) |
WO (1) | WO2002086730A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101441188B1 (ko) | 2011-12-19 | 2014-09-17 | 인텔 코포레이션 | 가상 시스템에서 메모리 중복 제거를 위한 기술 |
Families Citing this family (89)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7006634B1 (en) * | 2000-09-28 | 2006-02-28 | Cisco Technology, Inc. | Hardware-based encryption/decryption employing dual ported key storage |
US6980649B1 (en) * | 2001-12-10 | 2005-12-27 | Cisco Technology, Inc. | Hardware-based encryption/decryption employing dual ported memory and fast table initialization |
US7003630B1 (en) * | 2002-06-27 | 2006-02-21 | Mips Technologies, Inc. | Mechanism for proxy management of multiprocessor storage hierarchies |
US7017025B1 (en) * | 2002-06-27 | 2006-03-21 | Mips Technologies, Inc. | Mechanism for proxy management of multiprocessor virtual memory |
US7529906B2 (en) * | 2003-08-18 | 2009-05-05 | Cray Incorporated | Sharing memory within an application using scalable hardware resources |
US7577816B2 (en) * | 2003-08-18 | 2009-08-18 | Cray Inc. | Remote translation mechanism for a multinode system |
US7197585B2 (en) * | 2002-09-30 | 2007-03-27 | International Business Machines Corporation | Method and apparatus for managing the execution of a broadcast instruction on a guest processor |
US8185602B2 (en) | 2002-11-05 | 2012-05-22 | Newisys, Inc. | Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters |
US20040093536A1 (en) * | 2002-11-12 | 2004-05-13 | Weller Christopher Todd | System and method for providing coherency during the evaluation of a multiprocessor system |
US9454490B2 (en) | 2003-05-12 | 2016-09-27 | International Business Machines Corporation | Invalidating a range of two or more translation table entries and instruction therefore |
US7284100B2 (en) | 2003-05-12 | 2007-10-16 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
US7519771B1 (en) | 2003-08-18 | 2009-04-14 | Cray Inc. | System and method for processing memory instructions using a forced order queue |
US7743223B2 (en) * | 2003-08-18 | 2010-06-22 | Cray Inc. | Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system |
US7334110B1 (en) | 2003-08-18 | 2008-02-19 | Cray Inc. | Decoupled scalar/vector computer architecture system and method |
US7437521B1 (en) | 2003-08-18 | 2008-10-14 | Cray Inc. | Multistream processing memory-and barrier-synchronization method and apparatus |
US7366873B1 (en) | 2003-08-18 | 2008-04-29 | Cray, Inc. | Indirectly addressed vector load-operate-store method and apparatus |
US7543133B1 (en) * | 2003-08-18 | 2009-06-02 | Cray Inc. | Latency tolerant distributed shared memory multiprocessor computer |
US8307194B1 (en) | 2003-08-18 | 2012-11-06 | Cray Inc. | Relaxed memory consistency model |
US7421565B1 (en) | 2003-08-18 | 2008-09-02 | Cray Inc. | Method and apparatus for indirectly addressed vector load-add -store across multi-processors |
US7735088B1 (en) | 2003-08-18 | 2010-06-08 | Cray Inc. | Scheduling synchronization of programs running as streams on multiple processors |
US7503048B1 (en) | 2003-08-18 | 2009-03-10 | Cray Incorporated | Scheduling synchronization of programs running as streams on multiple processors |
JP2005275629A (ja) * | 2004-03-23 | 2005-10-06 | Nec Corp | マルチプロセッサシステム、及び、メモリアクセス方法 |
US20050273571A1 (en) * | 2004-06-02 | 2005-12-08 | Lyon Thomas L | Distributed virtual multiprocessor |
US20060004941A1 (en) * | 2004-06-30 | 2006-01-05 | Shah Hemal V | Method, system, and program for accessesing a virtualized data structure table in cache |
US7490215B2 (en) * | 2004-12-22 | 2009-02-10 | Intel Corporation | Media memory system and method for providing concurrent memory access to a plurality of processors through separate translation table information |
US8667249B2 (en) | 2004-12-22 | 2014-03-04 | Intel Corporation | Systems and methods exchanging data between processors through concurrent shared memory |
US7478769B1 (en) | 2005-03-09 | 2009-01-20 | Cray Inc. | Method and apparatus for cooling electronic components |
US7953980B2 (en) | 2005-06-30 | 2011-05-31 | Intel Corporation | Signed manifest for run-time verification of software program identity and integrity |
US8839450B2 (en) | 2007-08-02 | 2014-09-16 | Intel Corporation | Secure vault service for software components within an execution environment |
US20070005927A1 (en) * | 2005-06-30 | 2007-01-04 | Khosravi Hormuzd M | Systems and methods for remote triggering of page faults |
US7669242B2 (en) * | 2005-06-30 | 2010-02-23 | Intel Corporation | Agent presence monitor configured to execute in a secure environment |
US7739476B2 (en) * | 2005-11-04 | 2010-06-15 | Apple Inc. | R and C bit update handling |
CN100454241C (zh) * | 2006-02-28 | 2009-01-21 | 华为技术有限公司 | 一种在共享内存中存储c++对象的方法及装置 |
US7882318B2 (en) * | 2006-09-29 | 2011-02-01 | Intel Corporation | Tamper protection of software agents operating in a vitual technology environment methods and apparatuses |
US7802050B2 (en) * | 2006-09-29 | 2010-09-21 | Intel Corporation | Monitoring a target agent execution pattern on a VT-enabled system |
KR100827720B1 (ko) | 2006-10-16 | 2008-05-07 | 엠텍비젼 주식회사 | 접근 제어 장치를 가지는 듀얼 포트 메모리, 듀얼 포트메모리를 가지는 메모리 시스템 및 듀얼 포트 메모리의접근 제어 방법 |
KR100787856B1 (ko) | 2006-11-29 | 2007-12-27 | 한양대학교 산학협력단 | 플래시 메모리 저장장치의 페이지 교체 방법 |
KR100866627B1 (ko) | 2007-01-29 | 2008-11-03 | 삼성전자주식회사 | 컨트롤 플로우를 이용한 페이지 프리로드 방법 및 그시스템 |
US8539164B2 (en) * | 2007-04-30 | 2013-09-17 | Hewlett-Packard Development Company, L.P. | Cache coherency within multiprocessor computer system |
US20080307190A1 (en) * | 2007-06-07 | 2008-12-11 | Richard Louis Arndt | System and Method for Improved Virtual Real Memory |
US9710384B2 (en) | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
US8156307B2 (en) * | 2007-08-20 | 2012-04-10 | Convey Computer | Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set |
US8095735B2 (en) * | 2008-08-05 | 2012-01-10 | Convey Computer | Memory interleave for heterogeneous computing |
US9015399B2 (en) * | 2007-08-20 | 2015-04-21 | Convey Computer | Multiple data channel memory module architecture |
US8122229B2 (en) * | 2007-09-12 | 2012-02-21 | Convey Computer | Dispatch mechanism for dispatching instructions from a host processor to a co-processor |
US8561037B2 (en) * | 2007-08-29 | 2013-10-15 | Convey Computer | Compiler for generating an executable comprising instructions for a plurality of different instruction sets |
US8099718B2 (en) * | 2007-11-13 | 2012-01-17 | Intel Corporation | Method and system for whitelisting software components |
US7865675B2 (en) * | 2007-12-06 | 2011-01-04 | Arm Limited | Controlling cleaning of data values within a hardware accelerator |
US20090164715A1 (en) * | 2007-12-20 | 2009-06-25 | International Business Machines Corporation | Protecting Against Stale Page Overlays |
US8775824B2 (en) * | 2008-01-02 | 2014-07-08 | Arm Limited | Protecting the security of secure data sent from a central processor for processing by a further processing device |
US8332660B2 (en) * | 2008-01-02 | 2012-12-11 | Arm Limited | Providing secure services to a non-secure application |
US8667504B2 (en) | 2008-06-20 | 2014-03-04 | Netapp, Inc. | System and method for achieving high performance data flow among user space processes in storage system |
US8205066B2 (en) * | 2008-10-31 | 2012-06-19 | Convey Computer | Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor |
US7930519B2 (en) * | 2008-12-17 | 2011-04-19 | Advanced Micro Devices, Inc. | Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit |
US8364601B2 (en) * | 2008-12-31 | 2013-01-29 | Intel Corporation | Methods and systems to directly render an image and correlate corresponding user input in a secure memory domain |
US8645634B1 (en) * | 2009-01-16 | 2014-02-04 | Nvidia Corporation | Zero-copy data sharing by cooperating asymmetric coprocessors |
US20110167210A1 (en) * | 2009-10-16 | 2011-07-07 | Samsung Electronics Co., Ltd. | Semiconductor device and system comprising memories accessible through dram interface and shared memory region |
US8423745B1 (en) | 2009-11-16 | 2013-04-16 | Convey Computer | Systems and methods for mapping a neighborhood of data to general registers of a processing element |
WO2011140673A1 (en) | 2010-05-11 | 2011-11-17 | Intel Corporation | Recording dirty information in software distributed shared memory systems |
US8392628B2 (en) * | 2010-07-16 | 2013-03-05 | Hewlett-Packard Development Company, L.P. | Sharing memory spaces for access by hardware and software in a virtual machine environment |
KR101233109B1 (ko) * | 2010-09-13 | 2013-02-15 | 한국과학기술원 | 캐쉬 일관성을 맞추기 위해 멀티 코어들 간에 발생하는 통신량을 감소시키는 시스템 및 방법 |
CN104536740B (zh) * | 2010-09-24 | 2018-05-08 | 英特尔公司 | 计算平台的异质处理器之间的共享虚拟存储器中的虚函数共享 |
US8997113B2 (en) | 2010-09-24 | 2015-03-31 | Intel Corporation | Sharing virtual functions in a shared virtual memory between heterogeneous processors of a computing platform |
KR101671494B1 (ko) | 2010-10-08 | 2016-11-02 | 삼성전자주식회사 | 공유 가상 메모리를 이용한 멀티 프로세서 및 주소 변환 테이블 생성 방법 |
US20120233439A1 (en) * | 2011-03-11 | 2012-09-13 | Boris Ginzburg | Implementing TLB Synchronization for Systems with Shared Virtual Memory Between Processing Devices |
US8683175B2 (en) * | 2011-03-15 | 2014-03-25 | International Business Machines Corporation | Seamless interface for multi-threaded core accelerators |
US20120236010A1 (en) * | 2011-03-15 | 2012-09-20 | Boris Ginzburg | Page Fault Handling Mechanism |
US8578142B2 (en) * | 2011-05-13 | 2013-11-05 | Mcafee, Inc. | System and method for shared data storage |
US9767039B2 (en) * | 2011-07-18 | 2017-09-19 | Vmware, Inc. | Increasing granularity of dirty bit information in hardware assisted memory management systems |
US8719464B2 (en) * | 2011-11-30 | 2014-05-06 | Advanced Micro Device, Inc. | Efficient memory and resource management |
US8578129B2 (en) * | 2011-12-14 | 2013-11-05 | Advanced Micro Devices, Inc. | Infrastructure support for accelerated processing device memory paging without operating system integration |
KR101355105B1 (ko) * | 2012-01-03 | 2014-01-23 | 서울대학교산학협력단 | 캐시 일관성 보장을 위한 공유 가상 메모리 관리 장치 |
US10430190B2 (en) | 2012-06-07 | 2019-10-01 | Micron Technology, Inc. | Systems and methods for selectively controlling multithreaded execution of executable code segments |
JP5949188B2 (ja) | 2012-06-08 | 2016-07-06 | 日本電気株式会社 | 密結合マルチプロセッサシステム |
US9182984B2 (en) | 2012-06-15 | 2015-11-10 | International Business Machines Corporation | Local clearing control |
US9405561B2 (en) * | 2012-08-08 | 2016-08-02 | Nvidia Corporation | Method and system for memory overlays for portable function pointers |
GB2504772A (en) | 2012-08-10 | 2014-02-12 | Ibm | Coprocessor providing service address space for diagnostics collection |
US9378572B2 (en) * | 2012-08-17 | 2016-06-28 | Intel Corporation | Shared virtual memory |
US9086987B2 (en) * | 2012-09-07 | 2015-07-21 | International Business Machines Corporation | Detection of conflicts between transactions and page shootdowns |
US9086986B2 (en) * | 2012-09-07 | 2015-07-21 | International Business Machines Corporation | Detection of conflicts between transactions and page shootdowns |
DE102013022169A1 (de) | 2013-03-14 | 2014-09-18 | Nvidia Corporation | Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem |
US10114756B2 (en) * | 2013-03-14 | 2018-10-30 | Qualcomm Incorporated | Externally programmable memory management unit |
US11487673B2 (en) | 2013-03-14 | 2022-11-01 | Nvidia Corporation | Fault buffer for tracking page faults in unified virtual memory system |
US9396513B2 (en) * | 2013-08-05 | 2016-07-19 | Intel Corporation | Using group page fault descriptors to handle context switches and process terminations in graphics processors |
US9411745B2 (en) * | 2013-10-04 | 2016-08-09 | Qualcomm Incorporated | Multi-core heterogeneous system translation lookaside buffer coherency |
US9881592B2 (en) | 2013-10-08 | 2018-01-30 | Nvidia Corporation | Hardware overlay assignment |
US9336413B2 (en) * | 2013-11-22 | 2016-05-10 | Oracle International Corporation | Method and system for fast permission changes for virtual addresses |
TWI489279B (zh) * | 2013-11-27 | 2015-06-21 | Realtek Semiconductor Corp | 虛擬實體位址轉換系統以及虛擬實體位址轉換系統的管理方法 |
US20150301955A1 (en) * | 2014-04-21 | 2015-10-22 | Qualcomm Incorporated | Extending protection domains to co-processors |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0766177A1 (en) * | 1995-09-29 | 1997-04-02 | International Business Machines Corporation | Information handling system including effective address translation for one or more auxiliary processors |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4092715A (en) | 1976-09-22 | 1978-05-30 | Honeywell Information Systems Inc. | Input-output unit having extended addressing capability |
US5497480A (en) * | 1990-12-31 | 1996-03-05 | Sun Microsystems, Inc. | Broadcast demap for deallocating memory pages in a multiprocessor system |
US5987582A (en) | 1996-09-30 | 1999-11-16 | Cirrus Logic, Inc. | Method of obtaining a buffer contiguous memory and building a page table that is accessible by a peripheral graphics device |
US5809563A (en) * | 1996-11-12 | 1998-09-15 | Institute For The Development Of Emerging Architectures, Llc | Method and apparatus utilizing a region based page table walk bit |
US6345352B1 (en) * | 1998-09-30 | 2002-02-05 | Apple Computer, Inc. | Method and system for supporting multiprocessor TLB-purge instructions using directed write transactions |
US6286092B1 (en) * | 1999-05-12 | 2001-09-04 | Ati International Srl | Paged based memory address translation table update method and apparatus |
US6263403B1 (en) * | 1999-10-31 | 2001-07-17 | Hewlett-Packard Company | Method and apparatus for linking translation lookaside buffer purge operations to cache coherency transactions |
-
2001
- 2001-04-24 US US09/841,469 patent/US6684305B1/en not_active Expired - Lifetime
-
2002
- 2002-02-01 KR KR1020037013898A patent/KR100880685B1/ko not_active IP Right Cessation
- 2002-02-01 EP EP02707652A patent/EP1405191B1/en not_active Expired - Lifetime
- 2002-02-01 WO PCT/US2002/002898 patent/WO2002086730A2/en active Application Filing
- 2002-02-01 JP JP2002584181A patent/JP4105551B2/ja not_active Expired - Fee Related
- 2002-02-01 CN CNB028088212A patent/CN1275163C/zh not_active Expired - Lifetime
- 2002-02-01 AU AU2002242048A patent/AU2002242048A1/en not_active Abandoned
- 2002-02-01 DE DE60235984T patent/DE60235984D1/de not_active Expired - Lifetime
- 2002-03-29 TW TW91106272A patent/TW574646B/zh not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0766177A1 (en) * | 1995-09-29 | 1997-04-02 | International Business Machines Corporation | Information handling system including effective address translation for one or more auxiliary processors |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101441188B1 (ko) | 2011-12-19 | 2014-09-17 | 인텔 코포레이션 | 가상 시스템에서 메모리 중복 제거를 위한 기술 |
Also Published As
Publication number | Publication date |
---|---|
JP4105551B2 (ja) | 2008-06-25 |
WO2002086730A2 (en) | 2002-10-31 |
AU2002242048A1 (en) | 2002-11-05 |
CN1524228A (zh) | 2004-08-25 |
TW574646B (en) | 2004-02-01 |
WO2002086730A3 (en) | 2003-03-27 |
US6684305B1 (en) | 2004-01-27 |
KR20030092101A (ko) | 2003-12-03 |
DE60235984D1 (de) | 2010-05-27 |
JP2005500592A (ja) | 2005-01-06 |
EP1405191A2 (en) | 2004-04-07 |
EP1405191B1 (en) | 2010-04-14 |
CN1275163C (zh) | 2006-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100880685B1 (ko) | 공유 메모리를 이용하여 가상 메모리를 실시하는멀티프로세서 시스템, 및 페이징된 메모리 코히런시를유지하기 위한 페이지 교환 방법 | |
US9830276B2 (en) | Replaying memory transactions while resolving memory access faults | |
KR100384852B1 (ko) | 메모리 억세스 인터럽트를 통해 발생되는 프로세서 리셋 방법 | |
EP0423453B1 (en) | Address translation and copying process | |
Appel et al. | Virtual memory primitives for user programs | |
US6895491B2 (en) | Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching | |
CN1877547B (zh) | 提供扩展的存储器保护 | |
US7941631B2 (en) | Providing metadata in a translation lookaside buffer (TLB) | |
US5852738A (en) | Method and apparatus for dynamically controlling address space allocation | |
US8359453B2 (en) | Real address accessing in a coprocessor executing on behalf of an unprivileged process | |
US5390310A (en) | Memory management unit having cross-domain control | |
JPH05233458A (ja) | コンピュータシステムのメモリ管理装置 | |
US20060059317A1 (en) | Multiprocessing apparatus | |
EP2955634B1 (en) | Paravirtualization-based interface for memory management in virtual machines | |
EP2569718B1 (en) | Recording dirty information in software distributed shared memory systems | |
CN111201518B (zh) | 用于管理能力元数据的设备和方法 | |
US11741015B2 (en) | Fault buffer for tracking page faults in unified virtual memory system | |
US6647468B1 (en) | Method and system for optimizing translation buffer recovery after a miss operation within a multi-processor environment | |
US6412056B1 (en) | Extended translation lookaside buffer with fine-grain state bits | |
US7644114B2 (en) | System and method for managing memory | |
US20050182903A1 (en) | Apparatus and method for preventing duplicate matching entries in a translation lookaside buffer | |
JPH0564817B2 (ko) | ||
JPH05210568A (ja) | コンピュータのオペレーティングシステム用のメモリマネージャ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |