KR101768828B1 - 메모리 물리 어드레스 조회 방법 및 장치 - Google Patents

메모리 물리 어드레스 조회 방법 및 장치 Download PDF

Info

Publication number
KR101768828B1
KR101768828B1 KR1020167005743A KR20167005743A KR101768828B1 KR 101768828 B1 KR101768828 B1 KR 101768828B1 KR 1020167005743 A KR1020167005743 A KR 1020167005743A KR 20167005743 A KR20167005743 A KR 20167005743A KR 101768828 B1 KR101768828 B1 KR 101768828B1
Authority
KR
South Korea
Prior art keywords
buffer
page table
table entries
stored
thread
Prior art date
Application number
KR1020167005743A
Other languages
English (en)
Other versions
KR20160040665A (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 KR20160040665A publication Critical patent/KR20160040665A/ko
Application granted granted Critical
Publication of KR101768828B1 publication Critical patent/KR101768828B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB

Abstract

메모리 물리 어드레스 조회 방법 및 장치. 방법은 어드레싱될 제2 스레드의, 예비 버퍼 내에 저장된 페이지 테이블 엔트리를 사전 인출 버퍼에 저장하는 단계 - 예비 버퍼는 변환 색인 버퍼 내에서 설정 시간 내에 조회가 수행되지 않은 페이지 테이블 엔트리를 저장함 -; 제2 스레드에 의해 전송되고 가상 어드레스를 지닌 메모리 어드레싱 요청 메시지를 수신하는 단계; 및 가상 어드레스에 따라 대응하는 물리 어드레스에 대해 변환 색인 버퍼 및 사전 인출 버퍼에 조회하는 단계를 포함한다. 제공되는 메모리 물리 어드레스 조회 방법 및 장치에서, 변환 색인 버퍼 및 사전 인출 버퍼 양자가 어드레싱될 제2 스레드의 가상 어드레스에 따라 조회되고, 사전 인출 버퍼는 변환 색인 버퍼 내의 제2 스레드의, 설정 시간 내에 조회가 수행되지 않은 페이지 테이블 엔트리를 저장하며, 따라서 가상 어드레스에 대응하는 물리 어드레스의 조회 적중률이 향상되고, 어드레싱 시간이 단축된다.

Description

메모리 물리 어드레스 조회 방법 및 장치{MEMORY PHYSICAL ADDRESS QUERY METHOD AND APPARATUS}
삭제
삭제
본 발명은 정보 기술 분야에 관한 것으로서, 구체적으로는 물리 메모리 어드레스를 조회하기 위한 방법 및 장치에 관한 것이다.
현재, 프로세서들은 주로 가상 어드레스(Virtual Address, VA로 약칭)를 이용하여, 메모리 어드레싱을 수행하며, 실제 물리 어드레스(Physical Address, PA로 약칭) 공간보다 훨씬 큰 어드레싱 공간이 가상 어드레스 기술을 이용하여 생성될 수 있다. 가상 메모리를 이용하는 프로세서들은 주로 페이징(Paging) 메커니즘을 이용한다. 가상 어드레스 공간은 페이지(Page)의 단위로 분할된다. 따라서, 물리 어드레스 공간도 페이지(Page)의 단위로 분할된다. 가상 어드레스를 이용하여 메모리 어드레싱을 수행하는 프로세스에서, 프로세서 내의 메모리 관리 유닛(Memory Management Unit, MMU로 약칭)은 수신된 가상 어드레스를 물리 어드레스로 변환해야 한다. 현재, 프로세서들은 주로 우회 변환 버퍼, 즉 프로세서들에 의해 최근에 액세스된 메모리의 가상 어드레스와 물리 어드레스 간의 맵핑 관계를 포함하는 변환 색인 버퍼(Translation Lookaside Buffer, TLB로 약칭)를 이용한다. TLB 내에 버퍼링된 데이터는 메모리 페이지 테이블 영역 내에 저장된 데이터와 일치하며, 메모리 페이지 테이블 영역에서, 가상 어드레스와 물리 어드레스 간의 맵핑 관계를 포함하는 각각의 레코드는 페이지 테이블 엔트리(Page Table Entry, PTE로 약칭)로 지칭된다. 유사하게, TLB는 또한 페이지 테이블 엔트리들(PTE들)의 일부 또는 심지어는 전부를 버퍼링한다.
메모리 어드레싱이 가상 어드레스를 이용하여 수행될 때, 애플리케이션 프로그램에 의해 전송된 가상 어드레스를 수신한 후, 먼저, 메모리 관리 유닛(MMU)은 우회 변환 버퍼의 TLB에서 검색을 수행한다. TLB가 가상 어드레스에 대응하는 페이지 테이블 엔트리를 버퍼링하는 경우, 즉, TLB가 적중(Hit)되는 경우, 메모리 관리 유닛은 페이지 테이블 엔트리 내의 물리 어드레스를 이용하여 레벨 1 캐시(Level 1 Cache)에서 데이터 액세스를 수행하며; 물리 어드레스에 대응하는 데이터가 레벨 1 캐시 내에 존재하지 않는 경우, 메모리 관리 유닛은 레벨 2 캐시(Level 2 Cache)에서 데이터 액세스를 수행하고; 물리 어드레스에 대응하는 데이터가 레벨 2 캐시 내에 존재하지 않는 경우, 메모리 관리 유닛은 메모리에서 데이터 액세스를 수행한다. TLB가 가상 어드레스에 대응하는 페이지 테이블 엔트리를 포함하지 않는 경우, 즉 TLB가 비적중(Miss)되는 경우, 소프트웨어 또는 운영 체제(Operating System, OS로 약칭)는 가상 어드레스에 대응하는 물리 어드레스를 검색하고, 가상 어드레스와 물리 어드레스 간의 맵핑 관계를 페이지 테이블 엔트리로서 이용하고, 페이지 테이블 엔트리를 TLB 내에 저장해야 하며, 따라서 메모리 관리 유닛(MMU)은 후속 검색을 수행할 수 있다.
종래 기술에서는, 사전 인출 버퍼(Prefetch Buffer, PB로 약칭)가 메모리 관리 유닛(MMU) 내에 배치되며, PB는 다수의 페이지 테이블 엔트리를 저장한다. 물리 메모리 어드레스의 어드레싱이 수행될 때, 먼저, TLB가 대응하는 물리 어드레스에 대해 검색되며, TLB가 비적중된 후, PB는 대응하는 물리 어드레스에 대해 계{속 검색되고; 대응하는 물리 어드레스가 PB 내에 존재하는 경우, 물리 어드레스를 이용하여 데이터 액세스가 수행되고, 적중된 페이지 테이블 엔트리가 TLB 내에 저장되며, 대응하는 물리 어드레스가 PB 내에 존재하지 않는 경우, 메모리 내의 다수의 페이지 테이블 엔트리를 PB 내에 저장하여, PB 내에 현재 저장된 데이터를 개서한다.
그러나, 다중 스레드 프로세서의 경우, 다수의 하드웨어 스레드가 하나의 TLB를 공유하며, TLB의 용량이 제한되므로, 하드웨어 스레드들의 양이 비교적 클 때, TLB 내의 페이지 테이블 엔트리들의 양은 다중 스레드 요구를 충족시키지 못한다. 결과적으로, 각각의 하드웨어 스레드가 가상 어드레스를 이용하여 메모리 어드레싱을 수행할 때, TLB의 비적중률은 비교적 높으며; TLB가 비적중된 후에만, 가상 어드레스에 대응하는 페이지 테이블 엔트리가 메모리로부터 획득된 후에 버퍼링될 수 있고, 따라서 어드레싱 시간이 비교적 길다.
발명의 요약
본 발명은 종래 기술에서 어드레싱 시간이 비교적 긴 문제를 해결하기 위해 물리 메모리 어드레스를 조회하기 위한 방법 및 장치를 제공한다.
제1 양태에 따르면, 본 발명은 물리 메모리 어드레스를 조회하기 위한 방법으로서,
사전 설정된 스레드 스위칭 정책에 따라, 메모리 어드레싱 동작이 미래의 설정 시간 내에 제1 스레드로부터 제2 스레드로 스위칭될 것으로 결정하는 단계;
예비 버퍼 내에 저장된 상기 제2 스레드의 페이지 테이블 엔트리들을 사전 인출 버퍼 내에 저장하는 단계 - 상기 예비 버퍼는 우회 변환 버퍼 내에 저장된 변환 색인 버퍼(TLB) 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 저장함 -;
상기 제2 스레드에 의해 전송된 메모리 어드레싱 요청 메시지를 수신하는 단계 - 상기 메모리 어드레싱 요청 메시지는 가상 어드레스를 지님 -; 및
상기 가상 어드레스에 따라 그리고 상기 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들 및 상기 사전 인출 버퍼 내에 저장된 상기 페이지 테이블 엔트리들 내에서, 상기 가상 어드레스에 대응하는 물리 어드레스를 조회하는 단계
를 포함하는 방법을 제공한다.
제1 양태의 제1의 가능한 구현 방식에서, 상기 가상 어드레스에 따라 그리고 상기 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들 및 상기 사전 인출 버퍼 내에 저장된 상기 페이지 테이블 엔트리들 내에서, 상기 가상 어드레스에 대응하는 물리 어드레스를 조회하는 상기 단계는
상기 가상 어드레스에 대응하는 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하는 경우, 데이터 액세스를 수행하기 위해 상기 제1 물리 어드레스를 이용하여 메모리에 액세스하는 단계; 또는
상기 가상 어드레스에 대응하는 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않지만, 상기 가상 어드레스에 대응하는 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하는 경우에, 데이터 액세스를 수행하기 위해 상기 제2 물리 어드레스를 이용하여 메모리에 액세스하는 단계
를 포함한다.
제1 양태의 제1의 가능한 구현 방식에 따르면, 제2의 가능한 구현 방식에서, 상기 방법은
상기 가상 어드레스에 대응하는 상기 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않고, 상기 가상 어드레스에 대응하는 상기 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하지 않는 경우, 상기 가상 어드레스에 대응하는 제3 물리 어드레스에 대해 상기 메모리에 조회하는 단계를 더 포함한다.
제1 양태의 제1의 가능한 구현 방식 및 제2의 가능한 구현 방식에 따르면, 제3의 가능한 구현 방식에서, 상기 가상 어드레스에 대응하는 상기 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않지만, 상기 가상 어드레스에 대응하는 상기 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하는 경우, 상기 방법은
상기 가상 어드레스 및 상기 제2 물리 어드레스에 대응하고 상기 사전 인출 버퍼 내에 저장된 페이지 테이블 엔트리를 상기 우회 변환 버퍼 내에 저장하고, 상기 가상 어드레스 및 상기 제2 물리 어드레스에 대응하는 상기 페이지 테이블 엔트리를 상기 사전 인출 버퍼로부터 삭제하는 단계를 더 포함한다.
제1 양태의 제2의 가능한 구현 방식에 따르면, 제4의 가능한 구현 방식에서, 상기 방법은
상기 가상 어드레스 및 상기 제3 물리 어드레스에 대응하고 상기 메모리에서 발견된 페이지 테이블 엔트리를 상기 우회 변환 버퍼 내에 저장하는 단계를 더 포함한다.
제1 양태의 제1의 가능한 구현 방식, 제2의 가능한 구현 방식, 제3의 가능한 구현 방식 및 제4의 가능한 구현 방식에 따르면, 제5의 가능한 구현 방식에서, 예비 버퍼 내에 저장된 상기 제2 스레드의 페이지 테이블 엔트리들을 사전 인출 버퍼 내에 저장하는 상기 단계 전에, 상기 방법은
상기 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 상기 우회 변환 버퍼의 저장 용량을 초과하는 경우, 상기 우회 변환 버퍼 내에서 상기 설정 시간 내에 조회되지 않은 상기 페이지 테이블 엔트리들을 상기 예비 버퍼 내에 저장하고, 상기 설정 시간 내에 조회되지 않은 상기 페이지 테이블 엔트리들을 상기 우회 변환 버퍼로부터 삭제하는 단계를 더 포함한다.
제1 양태의 제5의 가능한 구현 방식에 따르면, 제6의 가능한 구현 방식에서, 상기 우회 변환 버퍼 내에서 상기 설정 시간 내에 조회되지 않은 상기 페이지 테이블 엔트리들을 상기 예비 버퍼 내에 저장하는 상기 단계 후에, 상기 방법은
상기 예비 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 상기 예비 버퍼의 저장 용량을 초과하는 경우, 상기 예비 버퍼로부터 가장 긴 저장 시간을 가진 페이지 테이블 엔트리를 삭제하는 단계를 더 포함한다.
제1 양태의 제1의 가능한 구현 방식, 제2의 가능한 구현 방식, 제3의 가능한 구현 방식, 제4의 가능한 구현 방식, 제5의 가능한 구현 방식 및 제6의 가능한 구현 방식에 따르면, 제7의 가능한 구현 방식에서, 예비 버퍼 내에 저장된 상기 제2 스레드의 페이지 테이블 엔트리들을 사전 인출 버퍼 내에 저장하는 상기 단계는
상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들의 양이 상기 사전 인출 버퍼의 저장 용량 이하인 경우, 상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들 모두를 상기 사전 인출 버퍼 내에 저장하고, 상기 사전 인출 버퍼 내에 현재 저장된 데이터를 개서하는 단계; 또는
상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들의 양이 상기 사전 인출 버퍼의 저장 용량보다 큰 경우, 상기 예비 버퍼 내에 저장된 상기 제2 스레드의 페이지 테이블 엔트리들 - 상기 페이지 테이블 엔트리들의 양은 상기 사전 인출 버퍼의 상기 저장 용량과 동일함 -을 상기 사전 인출 버퍼 내에 저장하고, 상기 사전 인출 버퍼 내에 현재 저장된 데이터를 개서하는 단계
를 포함한다.
제1 양태의 제7의 가능한 구현 방식에 따르면, 제8의 가능한 구현 방식에서, 상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들의 상기 양이 상기 사전 인출 버퍼의 상기 저장 용량보다 큰 경우, 상기 방법은
상기 가상 어드레스에 대응하는 상기 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않지만, 상기 가상 어드레스에 대응하는 상기 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하는 경우, 상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들 중 상기 사전 인출 버퍼 내에 저장된 상기 페이지 테이블 엔트리들을 제외한 페이지 테이블 엔트리를 상기 사전 인출 버퍼 내에 저장하는 단계를 더 포함한다.
제2 양태에 따르면, 본 발명은 물리 메모리 어드레스를 조회하기 위한 장치로서,
사전 설정된 스레드 스위칭 정책에 따라, 메모리 어드레싱 동작이 미래의 설정 시간 내에 제1 스레드로부터 제2 스레드로 스위칭되는 것으로 결정하도록 구성되는 결정 모듈;
예비 버퍼 내에 저장된 상기 제2 스레드의 페이지 테이블 엔트리들을 사전 인출 버퍼 내에 저장하도록 구성되는 실행 모듈 - 상기 예비 버퍼는 우회 변환 버퍼 내에 저장된 변환 색인 버퍼(TLB) 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 저장함 -;
상기 제2 스레드에 대응하는 메모리 어드레싱 요청 메시지를 수신하도록 구성되는 수신 모듈 - 상기 메모리 어드레싱 요청 메시지는 가상 어드레스를 지님 -; 및
상기 가상 어드레스에 따라 그리고 상기 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들 및 상기 사전 인출 버퍼 내에 저장된 상기 페이지 테이블 엔트리들 내에서, 상기 가상 어드레스에 대응하는 물리 어드레스를 조회하도록 구성되는 조회 모듈
을 포함하는 장치를 제공한다.
제2 양태의 제1의 가능한 구현 방식에서, 상기 조회 모듈은
상기 가상 어드레스에 대응하는 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하는 경우, 데이터 액세스를 수행하기 위해 상기 제1 물리 어드레스를 이용하여 메모리에 액세스하거나;
상기 가상 어드레스에 대응하는 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않지만, 상기 가상 어드레스에 대응하는 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하는 경우에, 데이터 액세스를 수행하기 위해 상기 제2 물리 어드레스를 이용하여 메모리에 액세스하도록 특별히 구성된다.
제2 양태의 제1의 가능한 구현 방식에 따르면, 제2의 가능한 구현 방식에서, 상기 조회 모듈은
상기 가상 어드레스에 대응하는 상기 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않고, 상기 가상 어드레스에 대응하는 상기 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하지 않는 경우, 상기 가상 어드레스에 대응하는 제3 물리 어드레스에 대해 상기 메모리에 조회하도록 더 구성된다.
제2 양태의 제1의 가능한 구현 방식 및 제2의 가능한 구현 방식에 따르면, 제3의 가능한 구현 방식에서, 상기 조회 모듈은
상기 가상 어드레스에 대응하는 상기 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않지만, 상기 가상 어드레스에 대응하는 상기 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하는 경우, 상기 가상 어드레스 및 상기 제2 물리 어드레스에 대응하고 상기 사전 인출 버퍼 내에 저장된 페이지 테이블 엔트리를 상기 우회 변환 버퍼 내에 저장하고, 상기 가상 어드레스 및 상기 제2 물리 어드레스에 대응하는 상기 페이지 테이블 엔트리를 상기 사전 인출 버퍼로부터 삭제하도록 더 구성된다.
제2 양태의 제2의 가능한 구현 방식에 따르면, 제4의 가능한 구현 방식에서, 상기 조회 모듈은
상기 가상 어드레스 및 상기 제3 물리 어드레스에 대응하고 상기 메모리에서 발견된 페이지 테이블 엔트리를 상기 우회 변환 버퍼 내에 저장하도록 더 구성된다.
제2 양태의 제1의 가능한 구현 방식, 제2의 가능한 구현 방식, 제3의 가능한 구현 방식 및 제4의 가능한 구현 방식에 따르면, 제5의 가능한 구현 방식에서, 상기 실행 모듈은
상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들이 상기 사전 인출 버퍼 내에 저장되기 전에, 상기 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 상기 우회 변환 버퍼의 저장 용량을 초과하는 경우, 상기 우회 변환 버퍼 내에서 상기 설정 시간 내에 조회되지 않은 상기 페이지 테이블 엔트리들을 상기 예비 버퍼 내에 저장하고, 상기 설정 시간 내에 조회되지 않은 상기 페이지 테이블 엔트리들을 상기 우회 변환 버퍼로부터 삭제하도록 더 구성된다.
제2 양태의 제5의 가능한 구현 방식에 따르면, 제6의 가능한 구현 방식에서, 상기 실행 모듈은
상기 우회 변환 버퍼 내에서 상기 설정 시간 내에 조회되지 않은 상기 페이지 테이블 엔트리들이 상기 예비 버퍼 내에 저장된 후에, 상기 예비 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 상기 예비 버퍼의 저장 용량을 초과하는 경우, 상기 예비 버퍼로부터 가장 긴 저장 시간을 가진 페이지 테이블 엔트리를 삭제하도록 더 구성된다.
제2 양태의 제1의 가능한 구현 방식, 제2의 가능한 구현 방식, 제3의 가능한 구현 방식, 제4의 가능한 구현 방식, 제5의 가능한 구현 방식 및 제6의 가능한 구현 방식에 따르면, 제7의 가능한 구현 방식에서, 상기 실행 모듈은
상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들의 양이 상기 사전 인출 버퍼의 저장 용량 이하인 경우, 상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들 모두를 상기 사전 인출 버퍼 내에 저장하고, 상기 사전 인출 버퍼 내에 현재 저장된 데이터를 개서하거나;
상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들의 양이 상기 사전 인출 버퍼의 저장 용량보다 큰 경우, 상기 예비 버퍼 내에 저장된 상기 제2 스레드의 페이지 테이블 엔트리들 - 상기 페이지 테이블 엔트리들의 양은 상기 사전 인출 버퍼의 상기 저장 용량과 동일함 -을 상기 사전 인출 버퍼 내에 저장하고, 상기 사전 인출 버퍼 내에 현재 저장된 데이터를 개서하도록 특별히 구성된다.
제2 양태의 제7의 가능한 구현 방식에 따르면, 제8의 가능한 구현 방식에서, 상기 실행 모듈은
상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들의 상기 양이 상기 사전 인출 버퍼의 상기 저장 용량보다 크고, 상기 가상 어드레스에 대응하는 상기 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않지만, 상기 가상 어드레스에 대응하는 상기 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하는 경우, 상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들 중 상기 사전 인출 버퍼 내에 저장된 상기 페이지 테이블 엔트리들을 제외한 페이지 테이블 엔트리를 상기 사전 인출 버퍼 내에 저장하도록 더 구성된다.
제3 양태에 따르면, 본 발명은 물리 메모리 어드레스를 조회하기 위한 장치로서, 메모리, 우회 변환 버퍼, 예비 버퍼, 사전 인출 버퍼, 및 프로세서를 포함하고,
상기 메모리는 명령어를 저장하도록 구성되고;
상기 우회 변환 버퍼는 변환 색인 버퍼(TLB)를 저장하도록 구성되고;
상기 예비 버퍼는 상기 우회 변환 버퍼 내에 저장된 상기 TLB 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 저장하도록 구성되고;
상기 사전 인출 버퍼는 상기 예비 버퍼 내에 저장된 대응하는 스레드의 페이지 테이블 엔트리들을 저장하도록 구성되고;
상기 프로세서는 제1 양태에 따른 물리 메모리 어드레스를 조회하기 위한 방법을 수행하기 위해 상기 메모리 내에 저장된 상기 명령어를 실행하도록 구성되는 장치를 제공한다.
본 발명에서 제공되는 물리 메모리 어드레스를 조회하기 위한 방법 및 장치에 따르면, 제2 스레드의 어드레싱될 가상 어드레스에 따라 우회 변환 버퍼 및 사전 인출 버퍼가 동시에 조회되며, 상기 사전 인출 버퍼는 상기 우회 변환 버퍼 내에서 설정 시간 내에 조회되지 않은 상기 제2 스레드의 페이지 테이블 엔트리들을 저장하고, 따라서 가상 어드레스에 대응하는 물리 어드레스를 조회하는 적중률이 향상되고, 어드레싱 시간이 단축된다.
본 발명의 실시예들에서의 또는 종래 기술에서의 기술적 해법들을 더 명확히 설명하기 위해, 아래에서는 실시예들 또는 종래 기술을 설명하는 데 필요한 첨부 도면들이 간단히 소개된다. 분명히, 아래의 설명에서의 첨부 도면들은 본 발명의 일부 실시예들을 도시하며, 이 분야의 통상의 기술자들은 창조적인 노력 없이도 이러한 첨부 도면들로부터 다른 도면들을 도출할 수 있다.
도 1은 본 발명에 따른, 물리 메모리 어드레스를 조회하기 위한 방법의 일 실시예의 개략 흐름도이다.
도 2는 본 발명에 따른, 물리 메모리 어드레스를 조회하기 위한 방법의 다른 실시예의 개략 흐름도이다.
도 3은 우회 변환 버퍼의 변환 색인 버퍼(TLB) 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 대응하는 스레드의 예비 버퍼 내에 저장하는 개략도이다.
도 4는 대응하는 스레드의 예비 버퍼 내의 페이지 테이블 엔트리들을 사전 인출 버퍼(PB) 내에 저장하는 개략도이다.
도 5는 가상 어드레스(VA)에 따라 물리 메모리 어드레스에 어드레싱하는 개략도이다.
도 6은 본 발명에 따른, 물리 메모리 어드레스를 조회하기 위한 장치의 일 실시예의 개략 구조도이다.
도 7은 본 발명에 따른, 물리 메모리 어드레스를 조회하기 위한 장치의 다른 실시예의 개략 구조도이다.
본 발명의 실시예들의 목적들, 기술적 해법들 및 장점들을 더 명확하게 하기 위해, 아래에서는 본 발명의 실시예들 내의 첨부 도면들을 참조하여 본 발명의 실시예들에서의 기술적 해법들이 명확하고 완전하게 설명된다. 분명히, 설명되는 실시예들은 본 발명의 실시예들의 전부가 아니라 일부이다. 창조적인 노력 없이 본 발명의 실시예들에 기초하여 이 분야의 통상의 기술자들에 의해 얻어지는 모든 다른 실시예들은 본 발명의 보호 범위 내에 속해야 한다.
도 1은 본 발명에 따른, 물리 메모리 어드레스를 조회하기 위한 방법의 일 실시예의 개략 흐름도이다. 도 1에 도시된 바와 같이, 아래의 방법 실시예에서 제공되는 방법은 PC, PAD 및 이동 전화와 같은 다양한 타입의 단말기 디바이스들에 적용 가능할 수 있다. 아래의 단계들은 전술한 다양한 단말기 디바이스들 내의 중앙 처리 유닛(Central Processing Unit, CPU로 약칭)에 의해 수행될 수 있으며, 구체적으로는 CPU 내의 메모리 관리 유닛(MMU) 등에 의해 수행될 수 있다. 방법은 구체적으로 아래의 단계들을 포함할 수 있다.
S101: 사전 설정된 스레드 스위칭 정책에 따라, 메모리 어드레싱 동작이 미래의 설정 시간 내에 제1 스레드로부터 제2 스레드로 스위칭되는 것으로 결정한다.
구체적으로, 스레드 스위칭 정책은 단말기 디바이스의 실행 동안 각각의 기간 내에 어느 스레드들을 이용하여 메모리 어드레싱 동작을 수행할지를 포함한다. 본 발명의 이 실시예에서, 제1 스레드는 이전 기간 내에 메모리 어드레싱 동작을 수행한 스레드이고, 제2 스레드는 제1 스레드 후에 메모리 어드레싱 동작을 수행하는 스레드, 즉 어드레싱을 수행할 스레드이다.
S102: 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들을 사전 인출 버퍼에 저장하며, 예비 버퍼는 우회 변환 버퍼 내에 저장된 변환 색인 버퍼(TLB) 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 저장한다.
구체적으로, S101에 따라 결정된, 어드레싱을 수행할 스레드, 즉 제2 스레드는 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들을 사전 인출 버퍼(PB)에 저장하며, 예비 버퍼는 우회 변환 버퍼 내에 저장된 변환 색인 버퍼(TLB) 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 저장한다. 옵션으로서, 예비 버퍼 내에 저장된 페이지 테이블 엔트리들은 구체적으로 가상 어드레스와 물리 어드레스 간의 대응, 및 각각의 대응하는 스레드의 식별을 포함할 수 있고; 유사하게, 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들은 또한 구체적으로 가상 어드레스와 물리 어드레스 간의 대응, 및 각각의 대응하는 스레드의 식별을 포함할 수 있으며; 사전 인출 버퍼(PB) 내에 저장된 페이지 테이블 엔트리들은 가상 어드레스와 물리 어드레스 간의 대응, 및 어드레싱을 수행할 대응하는 스레드의 식별을 포함할 수 있다.
여기서, 예비 버퍼들의 양은 하나 또는 다수일 수 있다는 점에 유의해야 한다. 예를 들어, 각각의 스레드는 하나의 예비 버퍼에 대응할 수 있으며, 예비 버퍼는 우회 변환 버퍼 내에서 설정 시간 내에 조회되지 않은 스레드의 페이지 테이블 엔트리들을 저장하는 데 사용된다. 유사하게, 우회 변환 버퍼들의 양 및 사전 인출 버퍼들의 양 양자는 하나 또는 다수일 수 있다. 예컨대, 각각의 스레드는 하나의 우회 변환 버퍼 및 하나의 사전 인출 버퍼에 대응할 수 있다.
S103: 제2 스레드에 의해 전송된 메모리 어드레싱 요청 메시지를 수신하며, 메모리 어드레싱 요청 메시지는 가상 어드레스를 지닌다.
구체적으로, 어드레싱을 수행할 스레드, 즉 제2 스레드에 의해 전송된 메모리 어드레싱 요청 메시지가 수신되며, 메모리 어드레싱 요청 메시지는 어드레싱될 가상 어드레스(VA)를 지닌다.
S104: 가상 어드레스에 따라 그리고 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들 및 사전 인출 버퍼 내에 저장된 페이지 테이블 엔트리들 중에서 가상 어드레스에 대응하는 물리 어드레스를 조회한다.
구체적으로, 가상 어드레스(VA)에 따라 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들 및 사전 인출 버퍼(PB) 내에 저장된 페이지 테이블 엔트리들을 동시에 조회할 수 있으며; 가상 어드레스(VA)에 대응하는 물리 어드레스가 우회 변환 버퍼 또는 사전 인출 버퍼(PB) 내에 존재하는 경우, 이 물리 어드레스를 이용하여 데이터 액세스를 수행하고; 가상 어드레스(VA)에 대응하는 물리 어드레스가 우회 변환 버퍼 내에도 사전 인출 버퍼(PB) 내에도 존재하지 않는 경우, 가상 어드레스(VA)에 대응하는 물리 어드레스를 획득하기 위해 메모리에 조회한다.
이 실시예에서 제공되는 물리 메모리 어드레스를 조회하기 위한 방법에 따르면, 제2 스레드의 어드레싱될 가상 어드레스에 따라 우회 변환 버퍼 및 사전 인출 버퍼가 동시에 조회되며, 사전 인출 버퍼는 우회 변환 버퍼 내에서 설정 시간 내에 조회되지 않은 제2 스레드의 페이지 테이블 엔트리들을 저장하고, 따라서 가상 어드레스에 대응하는 물리 어드레스를 조회하는 적중률이 향상되고, 어드레싱 시간이 단축된다.
도 2는 본 발명에 따른, 물리 메모리 어드레스를 조회하기 위한 방법의 다른 실시예의 개략 흐름도이다. 도 2에 도시된 바와 같이, 아래의 방법 실시예에서 제공되는 방법은 PC, PAD 및 이동 전화와 같은 다양한 타입의 단말기 디바이스들에 적용 가능할 수 있다. 아래의 단계들은 중앙 처리 유닛(CPU)에 의해 수행될 수 있으며, 구체적으로는 CPU 내의 메모리 관리 유닛(MMU) 등에 의해 수행될 수 있다. 방법은 구체적으로 아래의 단계들을 포함할 수 있다.
S201: 사전 설정된 스레드 스위칭 정책에 따라, 메모리 어드레싱 동작이 미래의 설정 시간 내에 제1 스레드로부터 제2 스레드로 스위칭되는 것으로 결정한다.
구체적으로, 스레드 스위칭 정책은 단말기 디바이스의 실행 동안 각각의 기간 내에 어느 스레드들을 이용하여 메모리 어드레싱 동작을 수행할지를 포함한다. 본 발명의 이 실시예에서, 제1 스레드는 이전 기간 내에 메모리 어드레싱 동작을 수행한 스레드이고, 제2 스레드는 제1 스레드 후에 메모리 어드레싱 동작을 수행하는 스레드, 즉 어드레싱을 수행할 스레드이다.
S202: 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들을 사전 인출 버퍼에 저장하며, 예비 버퍼는 우회 변환 버퍼 내에 저장된 변환 색인 버퍼(TLB) 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 저장한다.
여기서, 아래의 단계 S203 또는 S204는 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들의 양과 사전 인출 버퍼(PB)의 저장 용량 간의 관계에 따라 선택적으로 수행될 수 있다.
S203: 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들의 양이 사전 인출 버퍼의 저장 용량 이하인 경우, 예비 버퍼 내에 저장된 제2 스레드의 모든 페이지 테이블 엔트리들을 사전 인출 버퍼 내에 저장하여, 사전 인출 버퍼 내에 현재 저장된 데이터를 개서한다.
S204: 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들의 양이 사전 인출 버퍼의 저장 용량보다 큰 경우, 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들 - 이들의 양은 사전 인출 버퍼의 저장 용량과 동일함 -을 사전 인출 버퍼 내에 저장하여, 사전 인출 버퍼 내에 현재 저장된 데이터를 개서한다.
구체적으로, S201에 따라 결정된, 어드레싱을 수행할 스레드, 즉 제2 스레드는 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들의 일부 또는 전부를 사전 인출 버퍼(PB) 내에 저장하고, PB 내에 현재 저장된 데이터를 삭제하며, 예비 버퍼는 우회 변환 버퍼 내에 저장된 변환 색인 버퍼(TLB) 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 저장한다.
옵션 구현 방식으로서, 각각의 스레드는 하나의 예비 버퍼에 대응할 수 있고, 각각의 예비 버퍼 내에 저장된 페이지 테이블 엔트리들은 TLB 내에서 설정 시간 내에 조회되지 않은 대응하는 스레드의 페이지 테이블 엔트리들일 수 있다. 도 3은 우회 변환 버퍼의 변환 색인 버퍼(TLB) 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 대응하는 스레드의 예비 버퍼 내에 저장하는 개략도이다. 도 3에 도시된 바와 같이, 우회 변환 버퍼의 변환 색인 버퍼(TLB) 내에 저장된 페이지 테이블 엔트리들은 구체적으로 가상 어드레스와 물리 어드레스 간의 대응, 및 각각의 대응하는 스레드의 식별을 포함할 수 있고, 각각의 스레드에 대응하는 예비 버퍼 내에 저장된 페이지 테이블 엔트리들은 구체적으로 가상 어드레스와 물리 어드레스 간의 대응을 포함할 수 있다. 예비 버퍼 선택 유닛이 설정 시간 내에 조회되지 않고 TLB 내에 저장된 페이지 테이블 엔트리들 및 대응하는 스레드 식별을 수신하고, 스레드 식별에 따라 페이지 테이블 엔트리들을 대응하는 스레드의 예비 버퍼 내에 저장한다.
도 4는 대응하는 스레드의 예비 버퍼 내의 페이지 테이블 엔트리들을 사전 인출 버퍼(PB) 내에 저장하는 개략도이다. 도 4에 도시된 바와 같이, 예비 버퍼 선택 유닛은 어드레싱을 수행할 결정된 스레드에 따라 대응하는 스레드 식별, 및 어드레싱을 수행할 스레드의 예비 버퍼 내의 페이지 테이블 엔트리들의 일부 또는 전부를 사전 인출 버퍼(PB) 내에 저장하며, 따라서 사전 인출 버퍼(PB)는 TLB 내에서 대체되는, 어드레싱을 수행할 스레드의 페이지 테이블 엔트리들을 저장한다. TLB 내에서 대체되는 이러한 페이지 테이블 엔트리들의 대부분이 대체되는 이유는 페이지 테이블 엔트리들이 필요하지 않기 때문이 아니라, TLB의 저장 용량이 제한되고, 스레드들의 양이 크고, 일부 스레드들의 공통으로 사용되는 페이지 테이블 엔트리들이 대체되기 때문이다.
여기서, 32개의 스레드가 128 페이지 테이블 엔트리의 저장 용량을 갖는 하나의 우회 변환 버퍼를 공유하고, 각각의 스레드에 대응하는 예비 버퍼의 저장 용량 및 각각의 스레드에 대응하는 사전 인출 버퍼(PB)의 저장 용량이 32 페이지 테이블 엔트리로 설정될 수 있고, 어드레싱을 수행할 스레드가 어드레싱을 수행하기 전에, 어드레싱을 수행할 스레드에 대응하는 예비 버퍼 내의 모든 페이지 테이블 엔트리들이 사전 인출 버퍼(PB) 내에 저장될 수 있고, 사전 인출 버퍼(PB) 내에 현재 저장된 데이터가 삭제될 수 있는 것으로 가정한다. 우회 변환 버퍼 및 사전 인출 버퍼(PB)는 콘텐츠 어드레싱 가능 메모리(Content Addressable Memory, CAM로 약칭)를 이용하여 가상 어드레스들(VA들) 간의 비교를 완료할 수 있다. 사전 인출 버퍼(PB)의 저장 용량의 증가는 칩 전력 소비를 증가시킬 수 있으며, 따라서 비교적 작은 저장 용량을 갖는 사전 인출 버퍼(PB), 예를 들어 8 페이지 테이블 엔트리의 저장 용량을 갖는 사전 인출 버퍼(PB)가 선택될 수 있고, 따라서 어드레싱을 수행할 스레드가 어드레싱을 수행하기 전에, 어드레싱을 수행할 스레드에 대응하는 예비 버퍼 내의 가장 짧은 저장 시간을 갖는 8개의 페이지 테이블 엔트리가 사전 인출 버퍼(PB) 내에 저장될 수 있고, 사전 인출 버퍼(PB) 내에 현재 저장된 데이터가 삭제될 수 있다.
S205: 제2 스레드에 의해 전송된 메모리 어드레싱 요청 메시지를 수신하며, 메모리 어드레싱 요청 메시지는 가상 어드레스를 지닌다.
구체적으로, 어드레싱을 수행할 스레드, 즉 제2 스레드에 의해 전송된 메모리 어드레싱 요청 메시지가 수신되며, 메모리 어드레싱 요청 메시지는 어드레싱될 가상 어드레스(VA)를 지닌다.
S206: 가상 어드레스에 따라 그리고 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들 및 사전 인출 버퍼 내에 저장된 페이지 테이블 엔트리들 중에서 가상 어드레스에 대응하는 물리 어드레스를 조회한다.
여기서, 아래의 단계 S207, S208 또는 S209는 우회 변환 버퍼 및 사전 인출 버퍼(PB)에서의 어드레싱 결과에 따라 선택적으로 수행될 수 있다.
S207: 가상 어드레스에 대응하는 제1 물리 어드레스가 우회 변환 버퍼 내에 존재하는 경우, 제1 물리 어드레스를 이용하여 메모리에 액세스하여 데이터 액세스를 수행한다.
S208: 가상 어드레스에 대응하는 제1 물리 어드레스가 우회 변환 버퍼 내에 존재하지 않지만, 가상 어드레스에 대응하는 제2 물리 어드레스가 사전 인출 버퍼 내에 존재하는 경우, 제2 물리 어드레스를 이용하여 메모리에 액세스하여 데이터 액세스를 수행하며, 가상 어드레스 및 제2 물리 어드레스에 대응하고 사전 인출 버퍼 내에 저장된 페이지 테이블 엔트리를 우회 변환 버퍼 내에 저장하고, 가상 어드레스 및 제2 물리 어드레스에 대응하는 페이지 테이블 엔트리를 사전 인출 버퍼로부터 삭제한다.
예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들의 양이 사전 인출 버퍼의 저장 용량보다 큰 경우, 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들 중 사전 인출 버퍼 내에 저장된 페이지 테이블 엔트리들을 제외한 페이지 테이블 엔트리가 사전 인출 버퍼 내에 저장된다.
S209: 가상 어드레스에 대응하는 제1 물리 어드레스가 우회 변환 버퍼 내에 존재하지 않고, 가상 어드레스에 대응하는 제2 물리 어드레스가 사전 인출 버퍼 내에 존재하지 않는 경우, 가상 어드레스에 대응하는 제3 물리 어드레스에 대해 메모리에 조회하고, 가상 어드레스 및 제3 물리 어드레스에 대응하고 메모리에서 발견된 페이지 테이블 엔트리를 우회 변환 버퍼 내에 저장한다.
구체적으로, 도 5는 가상 어드레스(VA)에 따라 물리 메모리 어드레스에 어드레싱하는 개략도이다. 도 5에 도시된 바와 같이, 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들 및 사전 인출 버퍼(PB) 내에 저장된 페이지 테이블 엔트리들이 가상 어드레스(VA)에 따라 동시에 조회될 수 있다.
가상 어드레스(VA)에 대응하는 물리 어드레스가 우회 변환 버퍼 내에 존재할 때, 즉 우회 변환 버퍼의 TLB가 적중(TLB-적중)될 때, 가상 어드레스(VA)에 대응하는 물리 어드레스가 사전 인출 버퍼(PB) 내에 존재하는지에 관계없이, 즉 사전 인출 버퍼(PB)가 적중(PB-적중) 또는 비적중(PB-비적중)되는지에 관계없이, 우회 변환 버퍼 내에서 발견된 물리 어드레스, 즉 제1 물리 어드레스(PA1)에 따라 데이터 액세스가 수행된다.
가상 어드레스(VA)에 대응하는 물리 어드레스가 우회 변환 버퍼 내에 존재하지 않을 때, 즉 우회 변환 버퍼의 TLB가 비적중(TLB-비적중)될 때, 그러나 가상 어드레스(VA)에 대응하는 물리 어드레스가 사전 인출 버퍼(PB) 내에 존재할 때, 즉 사전 인출 버퍼(PB)가 적중(PB-적중)될 때, 사전 인출 버퍼(PB) 내에서 발견된 물리 어드레스, 즉 제2 물리 어드레스(PA2)에 따라 데이터 액세스가 수행되며, 발견된 페이지 테이블 엔트리, 즉 적중된 페이지 테이블 엔트리가 우회 변환 버퍼의 TLB 내에 저장된다. 사전 인출 버퍼(PB)가 예비 버퍼 내의 제2 스레드의 페이지 테이블 엔트리들의 일부만을 저장할 때, 예를 들어 전술한 사전 인출 버퍼(PB)가 제2 스레드의 예비 버퍼 내의 가장 짧은 저장 시간을 갖는 8개의 페이지 테이블 엔트리만을 저장할 때, 사전 인출 버퍼(PB) 내의 적중된 페이지 테이블 엔트리가 TLB 내에 저장된 후, 제2 스레드의 비교적 짧은 저장 시간을 갖는 다음 페이지 테이블 엔트리가 예비 버퍼로부터 추출되어 사전 인출 버퍼(PB) 내에 저장될 수 있다.
가상 어드레스(VA)에 대응하는 물리 어드레스가 우회 변환 버퍼 내에도 사전 인출 버퍼(PB) 내에도 존재하지 않을 때, 즉 우회 변환 버퍼 및 사전 인출 버퍼(PB) 양자가 비적중(TLB-비적중 및 PB-비적중)될 때, 가상 어드레스(VA) 및 가상 어드레스(VA)에 대응하는 물리 어드레스, 즉 제3 물리 어드레스(PA3)에 대한 대응하는 스레드 식별에 따라 페이지 테이블 스캐닝 유닛을 이용하여 메모리가 조회되고; 발견된 제3 물리 어드레스(PA3)에 따라 데이터 액세스가 수행되고; 발견된 페이지 테이블 엔트리, 즉 적중된 페이지 테이블 엔트리 및 대응하는 스레드 식별이 우회 변환 버퍼의 TLB 내에 동시 저장된다.
단계 S208 또는 S209에 대해, 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 우회 변환 버퍼의 저장 용량을 초과하는 경우, 우회 변환 버퍼 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들이 예비 버퍼 내에 저장되고, 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들이 우회 변환 버퍼로부터 삭제된다.
구체적으로, 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 우회 변환 버퍼의 저장 용량을 초과할 때, 가장 낮은 적중률을 갖는 페이지 테이블 엔트리, 즉 설정 시간 내에 비적중된 페이지 테이블 엔트리가 예비 버퍼 내에 우선적으로 저장되며, 설정 시간 내에 비적중된 페이지 테이블 엔트리가 삭제된다.
예비 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 예비 버퍼의 저장 용량을 초과하는 경우, 가장 긴 저장 시간을 갖는 페이지 테이블 엔트리가 예비 버퍼로부터 삭제된다.
구체적으로, 예비 버퍼 내의 페이지 테이블 엔트리의 더 긴 저장 시간은 페이지 테이블 엔트리의 더 낮은 적중률을 지시하며, 따라서 "선입선출(First Input First Output, FIFO로 약칭)"의 저장 모드가 예비 버퍼에서 이용될 수 있는데, 즉 예비 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 예비 버퍼의 저장 용량을 초과할 때, 가장 긴 저장 시간을 갖는 페이지 테이블 엔트리가 우선적으로 삭제된다.
이 실시예에서 제공되는 물리 메모리 어드레스를 조회하기 위한 방법에 따르면, 제2 스레드의 어드레싱될 가상 어드레스에 따라 우회 변환 버퍼 및 사전 인출 버퍼가 동시에 조회되며, 사전 인출 버퍼는 우회 변환 버퍼 내에서 설정 시간 내에 조회되지 않은 제2 스레드의 페이지 테이블 엔트리들을 저장하고, 따라서 가상 어드레스에 대응하는 물리 어드레스를 조회하는 적중률이 향상되고, 어드레싱 시간이 단축된다.
도 6은 본 발명에 따른, 물리 메모리 어드레스를 조회하기 위한 장치의 일 실시예의 개략 구조도이다. 도 6에 도시된 바와 같이, 이 실시예에서 물리 메모리 어드레스를 조회하기 위한 장치(60)는 물리 메모리 어드레스를 조회하기 위한 전술한 방법을 수행하기 위한 특정 엔티티이며, 구체적으로 결정 모듈(61), 실행 모듈(62), 수신 모듈(63) 및 조회 모듈(64)을 포함할 수 있다.
결정 모듈(61)은 사전 설정된 스레드 스위칭 정책에 따라, 메모리 어드레싱 동작이 미래의 설정 시간 내에 제1 스레드로부터 제2 스레드로 스위칭되는 것으로 결정하도록 구성된다.
구체적으로, 스레드 스위칭 정책은 단말기 디바이스의 실행 동안 각각의 기간 내에 어느 스레드들을 이용하여 메모리 어드레싱 동작을 수행할지를 포함한다. 본 발명의 이 실시예에서, 제1 스레드는 이전 기간 내에 메모리 어드레싱 동작을 수행한 스레드이고, 제2 스레드는 제1 스레드 후에 메모리 어드레싱 동작을 수행하는 스레드, 즉 어드레싱을 수행할 스레드이다.
실행 모듈(62)은 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들을 사전 인출 버퍼에 저장하도록 구성되며, 예비 버퍼는 우회 변환 버퍼 내에 저장된 변환 색인 버퍼(TLB) 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 저장한다.
구체적으로, 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들의 양과 사전 인출 버퍼(PB)의 저장 용량 간의 관계에 따라 다음의 두 가지 사례가 존재한다.
사례 1: 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들의 양이 사전 인출 버퍼의 저장 용량 이하인 경우, 예비 버퍼 내에 저장된 제2 스레드의 모든 페이지 테이블 엔트리들이 사전 인출 버퍼 내에 저장되고, 사전 인출 버퍼 내에 현재 저장된 데이터가 개서된다.
사례 2: 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들의 양이 사전 인출 버퍼의 저장 용량을 초과하는 경우, 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들 - 이들의 양은 사전 인출 버퍼의 저장 용량과 동일함 -이 사전 인출 버퍼 내에 저장되고, 사전 인출 버퍼 내에 현재 저장된 데이터가 개서된다.
구체적으로, 결정 모듈(61)에 의해 결정된, 어드레싱을 수행할 스레드, 즉 제2 스레드에 따라, 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들의 일부 또는 전부가 사전 인출 버퍼(PB) 내에 저장되며, 사전 인출 버퍼는 우회 변환 버퍼 내에 저장된 변환 색인 버퍼(TLB) 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 저장한다. 옵션으로서, 예비 버퍼 내에 저장된 페이지 테이블 엔트리들은 구체적으로 가상 어드레스와 물리 어드레스 간의 대응, 및 각각의 대응하는 스레드의 식별을 포함할 수 있고; 유사하게, 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들은 또한 구체적으로 가상 어드레스와 물리 어드레스 간의 대응, 및 각각의 대응하는 스레드의 식별을 포함할 수 있으며; 사전 인출 버퍼(PB) 내에 저장된 페이지 테이블 엔트리들은 구체적으로 가상 어드레스와 물리 어드레스 간의 대응, 및 어드레싱을 수행할 대응하는 스레드의 식별을 포함할 수 있다.
여기서, 예비 버퍼들의 양은 하나 또는 다수일 수 있다는 점에 유의해야 한다. 예를 들어, 각각의 스레드는 하나의 예비 버퍼에 대응할 수 있으며, 예비 버퍼는 우회 변환 버퍼 내에서 설정 시간 내에 조회되지 않은 스레드의 페이지 테이블 엔트리들을 저장하는 데 사용된다. 유사하게, 우회 변환 버퍼들의 양 및 사전 인출 버퍼들의 양 양자는 하나 또는 다수일 수 있다. 예컨대, 각각의 스레드는 하나의 우회 변환 버퍼 및 하나의 사전 인출 버퍼에 대응할 수 있다.
수신 모듈(63)은 제2 스레드에 의해 전송된 메모리 어드레싱 요청 메시지를 수신하도록 구성되며, 메모리 어드레싱 요청 메시지는 가상 어드레스를 지닌다.
구체적으로, 어드레싱을 수행할 스레드, 즉 제2 스레드에 의해 전송된 메모리 어드레싱 요청 메시지가 수신되며, 메모리 어드레싱 요청 메시지는 어드레싱될 가상 어드레스(VA)를 지닌다.
조회 모듈(64)은 가상 어드레스에 따라 그리고 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들 및 사전 인출 버퍼 내에 저장된 페이지 테이블 엔트리들 중에서 가상 어드레스에 대응하는 물리 어드레스를 조회하도록 구성된다.
구체적으로, 가상 어드레스(VA)에 따라 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들 및 사전 인출 버퍼(PB) 내에 저장된 페이지 테이블 엔트리들을 동시에 조회할 수 있다. 여기서는, 우회 변환 버퍼 및 사전 인출 버퍼(PB)에서의 어드레싱 결과에 따라 아래의 3개의 사례가 존재할 수 있다.
사례 1: 가상 어드레스에 대응하는 제1 물리 어드레스가 우회 변환 버퍼 내에 존재하는 경우, 제1 물리 어드레스를 이용하여 메모리에 액세스하여 데이터 액세스를 수행한다.
구체적으로, 가상 어드레스(VA)에 대응하는 물리 어드레스가 우회 변환 버퍼 내에 존재할 때, 가상 어드레스(VA)에 대응하는 물리 어드레스가 사전 인출 버퍼(PB) 내에 존재하는지에 관계없이, 우회 변환 버퍼 내에서 발견된 물리 어드레스, 즉 제1 물리 어드레스에 따라 데이터 액세스가 수행된다.
사례 2: 가상 어드레스에 대응하는 제1 물리 어드레스가 우회 변환 버퍼 내에 존재하지 않지만, 가상 어드레스에 대응하는 제2 물리 어드레스가 사전 인출 버퍼 내에 존재하는 경우, 제2 물리 어드레스를 이용하여 메모리에 액세스하여 데이터 액세스를 수행하며, 가상 어드레스 및 제2 물리 어드레스에 대응하고 사전 인출 버퍼 내에 저장된 페이지 테이블 엔트리가 우회 변환 버퍼 내에 저장되고, 가상 어드레스 및 제2 물리 어드레스에 대응하고 사전 인출 버퍼 내에 저장된 페이지 테이블 엔트리가 삭제된다.
예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들의 양이 사전 인출 버퍼의 저장 용량보다 크고, 가상 어드레스에 대응하는 제1 물리 어드레스가 우회 변환 버퍼 내에 존재하지 않지만, 가상 어드레스에 대응하는 제2 물리 어드레스가 사전 인출 버퍼 내에 존재하는 경우, 예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들 중 사전 인출 버퍼 내에 저장된 페이지 테이블 엔트리들을 제외한 페이지 테이블 엔트리가 사전 인출 버퍼 내에 저장된다.
구체적으로, 가상 어드레스(VA)에 대응하는 물리 어드레스가 우회 변환 버퍼 내에 존재하지 않지만, 가상 어드레스(VA)에 대응하는 물리 어드레스가 사전 인출 버퍼(PB) 내에 존재할 때, 사전 인출 버퍼(PB) 내에서 발견된 물리 어드레스, 즉 제2 물리 어드레스에 따라 데이터 액세스가 수행되며, 발견된 페이지 테이블 엔트리, 즉 적중된 페이지 테이블 엔트리가 우회 변환 버퍼의 TLB 내에 저장된다. 사전 인출 버퍼(PB)가 예비 버퍼 내의 제2 스레드의 페이지 테이블 엔트리들의 일부만을 저장할 때, 사전 인출 버퍼(PB) 내의 적중된 페이지 테이블 엔트리가 TLB 내에 저장된 후, 하나의 페이지 테이블 엔트리가 예비 버퍼로부터 판독되어 사전 인출 버퍼(PB) 내에 저장될 수 있다.
사례 3: 가상 어드레스에 대응하는 제1 물리 어드레스가 우회 변환 버퍼 내에 존재하지 않고, 가상 어드레스에 대응하는 제2 물리 어드레스가 사전 인출 버퍼 내에 존재하지 않는 경우, 가상 어드레스에 대응하는 제3 물리 어드레스에 대해 메모리가 조회되며, 가상 어드레스 및 제3 물리 어드레스에 대응하고 메모리에서 발견된 페이지 테이블 엔트리가 우회 변환 버퍼 내에 저장된다.
구체적으로, 가상 어드레스(VA)에 대응하는 물리 어드레스가 우회 변환 버퍼 내에도 사전 인출 버퍼(PB) 내에도 존재하지 않을 때, 즉 우회 변환 버퍼 및 사전 인출 버퍼(PB) 양자가 비적중될 때, 가상 어드레스(VA)에 대응하는 물리 어드레스, 즉 제3 물리 어드레스에 대해 메모리가 조회되어야 하며; 발견된 페이지 테이블 엔트리, 즉 적중된 페이지 테이블 엔트리가 우회 변환 버퍼의 TLB 내에 저장된다.
또한, 실행 모듈(62)은
예비 버퍼 내에 저장된 제2 스레드의 페이지 테이블 엔트리들이 사전 인출 버퍼 내에 저장되기 전에, 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 우회 변환 버퍼의 저장 용량을 초과하는 경우, 우회 변환 버퍼 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 예비 버퍼 내에 저장하고, 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 우회 변환 버퍼로부터 삭제하도록 더 구성될 수 있다.
구체적으로, 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 우회 변환 버퍼의 저장 용량을 초과할 때, 가장 낮은 적중률을 갖는 페이지 테이블 엔트리, 즉 설정 시간 내에 비적중된 페이지 테이블 엔트리가 예비 버퍼 내에 우선적으로 저장되고, 설정 시간 내에 비적중된 페이지 테이블 엔트리가 삭제된다.
또한, 실행 모듈(62)은
우회 변환 버퍼 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들이 예비 버퍼 내에 저장된 후, 예비 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 예비 버퍼의 저장 용량을 초과할 경우, 가장 긴 저장 시간을 갖는 페이지 테이블 엔트리를 예비 버퍼로부터 삭제하도록 더 구성될 수 있다.
구체적으로, 예비 버퍼 내의 페이지 테이블 엔트리의 더 긴 저장 시간은 페이지 테이블 엔트리의 더 낮은 적중률을 지시하며, 따라서 "선입선출(FIFO)"의 저장 모드가 예비 버퍼에서 이용될 수 있는데, 즉 예비 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 예비 버퍼의 저장 용량을 초과할 때, 가장 긴 저장 시간을 갖는 페이지 테이블 엔트리가 우선적으로 삭제된다.
이 실시예에서 제공되는 물리 메모리 어드레스를 조회하기 위한 장치에 따르면, 제2 스레드의 어드레싱될 가상 어드레스에 따라 우회 변환 버퍼 및 사전 인출 버퍼가 동시에 조회되며, 사전 인출 버퍼는 우회 변환 버퍼 내에서 설정 시간 내에 조회되지 않은 제2 스레드의 페이지 테이블 엔트리들을 저장하고, 따라서 가상 어드레스에 대응하는 물리 어드레스를 조회하는 적중률이 향상되고, 어드레싱 시간이 단축된다.
도 7은 본 발명에 따른, 물리 메모리 어드레스를 조회하기 위한 장치의 다른 실시예의 개략 구조이다. 도 7에 도시된 바와 같이, 이 실시예에서 물리 메모리 어드레스를 조회하기 위한 장치는 메모리(71), 우회 변환 버퍼(72), 예비 버퍼(73), 사전 인출 버퍼(74) 및 프로세서(75)를 포함한다.
메모리(71)는 명령어를 저장하도록 구성된다.
우회 변환 버퍼(72)는 변환 색인 버퍼(TLB)를 저장하도록 구성된다.
예비 버퍼(73)는 우회 변환 버퍼 내에 저장된 TLB 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 저장하도록 구성된다.
사전 인출 버퍼(74)는 예비 버퍼 내에 저장된 대응하는 스레드의 페이지 테이블 엔트리들을 저장하도록 구성된다.
프로세서(75)는 도 1 또는 도 2에 도시된 물리 메모리 어드레스를 조회하기 위한 방법을 수행하기 위해 메모리 내에 저장된 명령어를 실행하도록 구성된다.
구체적으로, 메모리(71)는 고속 RAM 메모리를 포함할 수 있거나, 비휘발성 메모리(non-volatile memory), 예를 들어 적어도 하나의 디스크 메모리를 포함할 수 있다. 옵션으로서, 메모리(71)는 적어도 하나의 저장 장치를 포함할 수 있다. 메모리(71)는 명령어를 저장하며, 물리 메모리 어드레스를 조회하기 위한 장치가 동작할 때, 프로세서(75)는 메모리(71)와 통신하고, 프로세서(75)는 명령어를 실행하며, 따라서 물리 메모리 어드레스를 조회하기 위한 장치는 본 발명의 실시예들에서 제공되는 물리 메모리 어드레스를 조회하기 위한 방법들을 수행할 수 있다.
예비 버퍼(73)는 가상 어드레스와 물리 어드레스 간의 대응을 포함하고 각각의 대응하는 스레드의 식별을 포함하는 페이지 테이블 엔트리들을 저장할 수 있으며, 우회 변환 버퍼(72)는 가상 어드레스와 물리 어드레스 간의 대응을 포함하고 각각의 대응하는 스레드의 식별을 포함하는 페이지 테이블 엔트리들을 저장할 수 있으며, 사전 인출 버퍼(74)는 가상 어드레스와 물리 어드레스 간의 대응을 포함하고 어드레싱을 수행할 대응하는 스레드의 식별을 포함하는 페이지 테이블 엔트리들을 저장할 수 있다.
여기서, 예비 버퍼들(73)의 양은 하나 또는 다수일 수 있다는 점에 유의해야 한다. 예를 들어, 각각의 스레드는 하나의 예비 버퍼에 대응할 수 있으며, 예비 버퍼는 우회 변환 버퍼 내에서 설정 시간 내에 조회되지 않은 스레드의 페이지 테이블 엔트리들을 저장하는 데 사용된다. 유사하게, 우회 변환 버퍼들(72)의 양 및 사전 인출 버퍼들(74)의 양 양자는 하나 또는 다수일 수 있다. 예컨대, 각각의 스레드는 하나의 우회 변환 버퍼 및 하나의 사전 인출 버퍼에 대응할 수 있다.
이 실시예의 프로세서는 집적 회로 칩일 수 있으며, 신호 처리 능력을 갖는다. 일 구현 프로세스에서, 전술한 방법들의 단계들은 프로세서 내의 하드웨어의 집적 논리 회로 또는 소프트웨어 형태의 명령어를 이용하여 완료될 수 있다. 전술한 프로세서는 본 발명의 실시예들에서 개시되는 방법들, 단계들 및 논리 블록도들을 구현 또는 수행할 수 있는 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 또는 다른 프로그래밍 가능 논리 컴포넌트, 개별 게이트 또는 트랜지스터 논리 컴포넌트, 또는 개별 하드웨어 컴포넌트일 수 있다. 전술한 프로세서는 마이크로프로세서일 수 있거나, 전술한 프로세서는 임의의 통상적인 프로세서 등일 수 있다. 본 발명의 실시예들과 관련하여 개시되는 방법들의 단계들은 하드웨어 프로세서에 의해 직접 수행되고 완료될 수 있거나, 프로세서 내의 하드웨어 모듈과 소프트웨어 모듈의 조합을 이용하여 수행되고 완료될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리, 플래시 메모리, 판독 전용 메모리, 프로그래밍 가능 판독 전용 메모리, 전기적으로 소거 및 프로그래밍 가능한 메모리 또는 레지스터와 같은 현장의 완성된 저장 매체 내에 배치될 수 있다. 저장 매체는 메모리 내에 배치되며, 프로세서는 메모리 내의 정보를 판독하고, 프로세서의 하드웨어와 함께 전술한 방법들의 단계들을 완료한다.
본 발명의 이 실시예는 칩을 더 제공하며, 칩은 물리 메모리 어드레스를 조회하도록 구성되고, 칩은 전술한 프로세서를 포함할 수 있다.
이 실시예에서 제공되는 물리 메모리 어드레스를 조회하기 위한 장치에 따르면, 프로세서(75)는 메모리(71) 내의 명령어를 실행하고, 제2 스레드의 어드레싱될 가상 어드레스에 따라 우회 변환 버퍼 및 사전 인출 버퍼에 동시에 조회하며, 사전 인출 버퍼는 우회 변환 버퍼 내에서 설정 시간 내에 조회되지 않은 제2 스레드의 페이지 테이블 엔트리들을 저장하고, 따라서 가상 어드레스에 대응하는 물리 어드레스를 조회하는 적중률이 향상되고, 어드레싱 시간이 단축된다.
이 분야의 통상의 기술자들은 전술한 방법 실시예들의 단계들의 전부 또는 일부가 관련 하드웨어에 명령하는 프로그램에 의해 구현될 수 있다는 것을 이해할 수 있다. 전술한 프로그램은 컴퓨터 판독 가능 저장 매체 내에 저장될 수 있다. 프로그램이 실행될 때, 전술한 방법 실시예들의 단계들이 수행된다. 전술한 저장 매체는 프로그램 코드를 저장할 수 있는 임의의 매체, 예로서 ROM, RAM, 자기 디스크 또는 광 디스크를 포함한다.
마지막으로, 전술한 실시예들은 본 발명을 한정하는 것이 아니라, 본 발명의 기술적 해법들을 설명하는 것을 의도할 뿐이라는 점에 유의해야 한다. 본 발명은 전술한 실시예들과 관련하여 상세히 설명되었지만, 이 분야의 통상의 기술자들은 그들이 전술한 실시예들에서 설명된 기술적 해법들을 변경할 수도 있거나 그러한 해법들의 일부 또는 모든 기술적 특징들에 대한 등가적인 대체들을 행할 수 있지만, 이러한 변경들 및 대체들은 대응하는 기술적 해법들의 본질이 본 발명의 실시예들의 기술적 해법들의 범위로부터 벗어나게 하지 않는다는 것을 이해해야 한다.

Claims (19)

  1. 메모리에서 물리 어드레스를 조회하기 위한 방법으로서,
    사전 설정된 스레드 스위칭 정책에 따라, 메모리 어드레싱 동작이 미래의 설정 시간 내에 제1 스레드로부터 제2 스레드로 스위칭될 것으로 결정하는 단계;
    예비 버퍼 내에 저장된 상기 제2 스레드의 페이지 테이블 엔트리들을 사전 인출 버퍼 내에 저장하는 단계 - 상기 예비 버퍼는 우회 변환 버퍼 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 저장함 -;
    상기 제2 스레드에 의해 전송된 메모리 어드레싱 요청 메시지를 수신하는 단계 - 상기 메모리 어드레싱 요청 메시지는 가상 어드레스를 지님 -; 및
    상기 가상 어드레스에 따라 그리고 상기 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들 및 상기 사전 인출 버퍼 내에 저장된 상기 페이지 테이블 엔트리들 내에서, 상기 가상 어드레스에 대응하는 물리 어드레스를 조회하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 가상 어드레스에 따라 그리고 상기 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들 및 상기 사전 인출 버퍼 내에 저장된 상기 페이지 테이블 엔트리들 내에서, 상기 가상 어드레스에 대응하는 물리 어드레스를 조회하는 상기 단계는
    상기 가상 어드레스에 대응하는 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하는 경우, 데이터 액세스를 수행하기 위해 상기 제1 물리 어드레스를 이용하여 상기 메모리에 액세스하는 단계; 또는
    상기 가상 어드레스에 대응하는 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않지만, 상기 가상 어드레스에 대응하는 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하는 경우에, 데이터 액세스를 수행하기 위해 상기 제2 물리 어드레스를 이용하여 상기 메모리에 액세스하는 단계
    를 포함하는 방법.
  3. 제2항에 있어서,
    상기 가상 어드레스에 대응하는 상기 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않고, 상기 가상 어드레스에 대응하는 상기 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하지 않는 경우, 상기 가상 어드레스에 대응하는 제3 물리 어드레스에 대해 상기 메모리에 조회하는 단계를 더 포함하는 방법.
  4. 제2항에 있어서,
    상기 가상 어드레스에 대응하는 상기 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않지만, 상기 가상 어드레스에 대응하는 상기 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하는 경우, 상기 방법은
    상기 가상 어드레스 및 상기 제2 물리 어드레스에 대응하고 상기 사전 인출 버퍼 내에 저장된 페이지 테이블 엔트리를 상기 우회 변환 버퍼 내에 저장하고, 상기 가상 어드레스 및 상기 제2 물리 어드레스에 대응하는 상기 페이지 테이블 엔트리를 상기 사전 인출 버퍼로부터 삭제하는 단계를 더 포함하는 방법.
  5. 제3항에 있어서,
    상기 가상 어드레스 및 상기 제3 물리 어드레스에 대응하고 상기 메모리에서 발견된 페이지 테이블 엔트리를 상기 우회 변환 버퍼 내에 저장하는 단계를 더 포함하는 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    예비 버퍼 내에 저장된 상기 제2 스레드의 페이지 테이블 엔트리들을 사전 인출 버퍼 내에 저장하는 상기 단계 전에, 상기 방법은
    상기 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 상기 우회 변환 버퍼의 저장 용량을 초과하는 경우, 상기 우회 변환 버퍼 내에서 상기 설정 시간 내에 조회되지 않은 상기 페이지 테이블 엔트리들을 상기 예비 버퍼 내에 저장하고, 상기 설정 시간 내에 조회되지 않은 상기 페이지 테이블 엔트리들을 상기 우회 변환 버퍼로부터 삭제하는 단계를 더 포함하는 방법.
  7. 제6항에 있어서,
    상기 우회 변환 버퍼 내에서 상기 설정 시간 내에 조회되지 않은 상기 페이지 테이블 엔트리들을 상기 예비 버퍼 내에 저장하는 상기 단계 후에, 상기 방법은
    상기 예비 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 상기 예비 버퍼의 저장 용량을 초과하는 경우, 상기 예비 버퍼로부터 가장 긴 저장 시간을 가진 페이지 테이블 엔트리를 삭제하는 단계를 더 포함하는 방법.
  8. 제7항에 있어서,
    예비 버퍼 내에 저장된 상기 제2 스레드의 페이지 테이블 엔트리들을 사전 인출 버퍼 내에 저장하는 상기 단계는
    상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들의 양이 상기 사전 인출 버퍼의 저장 용량 이하인 경우, 상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들 모두를 상기 사전 인출 버퍼 내에 저장하고, 상기 사전 인출 버퍼 내에 현재 저장된 데이터를 개서하는 단계; 또는
    상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들의 양이 상기 사전 인출 버퍼의 저장 용량보다 큰 경우, 상기 예비 버퍼 내에 저장된 상기 제2 스레드의 페이지 테이블 엔트리들 - 상기 페이지 테이블 엔트리들의 양은 상기 사전 인출 버퍼의 상기 저장 용량과 동일함 -을 상기 사전 인출 버퍼 내에 저장하고, 상기 사전 인출 버퍼 내에 현재 저장된 데이터를 개서하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서,
    상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들의 상기 양이 상기 사전 인출 버퍼의 상기 저장 용량보다 큰 경우, 상기 방법은
    상기 가상 어드레스에 대응하는 상기 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않지만, 상기 가상 어드레스에 대응하는 상기 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하는 경우, 상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들 중 상기 사전 인출 버퍼 내에 저장된 상기 페이지 테이블 엔트리들을 제외한 페이지 테이블 엔트리를 상기 사전 인출 버퍼 내에 저장하는 단계를 더 포함하는 방법.
  10. 메모리에서 물리 어드레스를 조회하기 위한 장치로서,
    사전 설정된 스레드 스위칭 정책에 따라, 메모리 어드레싱 동작이 미래의 설정 시간 내에 제1 스레드로부터 제2 스레드로 스위칭될 것으로 결정하도록 구성되는 결정 모듈;
    예비 버퍼 내에 저장된 상기 제2 스레드의 페이지 테이블 엔트리들을 사전 인출 버퍼 내에 저장하도록 구성되는 실행 모듈 - 상기 예비 버퍼는 우회 변환 버퍼 내에서 설정 시간 내에 조회되지 않은 페이지 테이블 엔트리들을 저장함 -;
    상기 제2 스레드에 의해 전송된 메모리 어드레싱 요청 메시지를 수신하도록 구성되는 수신 모듈 - 상기 메모리 어드레싱 요청 메시지는 가상 어드레스를 지님 -; 및
    상기 가상 어드레스에 따라 그리고 상기 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들 및 상기 사전 인출 버퍼 내에 저장된 상기 페이지 테이블 엔트리들 내에서, 상기 가상 어드레스에 대응하는 물리 어드레스를 조회하도록 구성되는 조회 모듈
    을 포함하는 장치.
  11. 제10항에 있어서,
    상기 조회 모듈은
    상기 가상 어드레스에 대응하는 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하는 경우, 데이터 액세스를 수행하기 위해 상기 제1 물리 어드레스를 이용하여 상기 메모리에 액세스하거나;
    상기 가상 어드레스에 대응하는 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않지만, 상기 가상 어드레스에 대응하는 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하는 경우에, 데이터 액세스를 수행하기 위해 상기 제2 물리 어드레스를 이용하여 상기 메모리에 액세스하도록 특별히 구성되는 장치.
  12. 제11항에 있어서,
    상기 조회 모듈은
    상기 가상 어드레스에 대응하는 상기 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않고, 상기 가상 어드레스에 대응하는 상기 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하지 않는 경우, 상기 가상 어드레스에 대응하는 제3 물리 어드레스에 대해 상기 메모리에 조회하도록 더 구성되는 장치.
  13. 제12항에 있어서,
    상기 조회 모듈은
    상기 가상 어드레스에 대응하는 상기 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않지만, 상기 가상 어드레스에 대응하는 상기 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하는 경우, 상기 가상 어드레스 및 상기 제2 물리 어드레스에 대응하고 상기 사전 인출 버퍼 내에 저장된 페이지 테이블 엔트리를 상기 우회 변환 버퍼 내에 저장하고, 상기 가상 어드레스 및 상기 제2 물리 어드레스에 대응하는 상기 페이지 테이블 엔트리를 상기 사전 인출 버퍼로부터 삭제하도록 더 구성되는 장치.
  14. 제12항에 있어서,
    상기 조회 모듈은
    상기 가상 어드레스 및 상기 제3 물리 어드레스에 대응하고 상기 메모리에서 발견된 페이지 테이블 엔트리를 상기 우회 변환 버퍼 내에 저장하도록 더 구성되는 장치.
  15. 제10항 내지 제14항 중 어느 한 항에 있어서,
    상기 실행 모듈은
    상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들이 상기 사전 인출 버퍼 내에 저장되기 전에, 상기 우회 변환 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 상기 우회 변환 버퍼의 저장 용량을 초과하는 경우, 상기 우회 변환 버퍼 내에서 상기 설정 시간 내에 조회되지 않은 상기 페이지 테이블 엔트리들을 상기 예비 버퍼 내에 저장하고, 상기 설정 시간 내에 조회되지 않은 상기 페이지 테이블 엔트리들을 상기 우회 변환 버퍼로부터 삭제하도록 더 구성되는 장치.
  16. 제15항에 있어서,
    상기 실행 모듈은
    상기 우회 변환 버퍼 내에서 상기 설정 시간 내에 조회되지 않은 상기 페이지 테이블 엔트리들이 상기 예비 버퍼 내에 저장된 후에, 상기 예비 버퍼 내에 저장된 페이지 테이블 엔트리들의 양이 상기 예비 버퍼의 저장 용량을 초과하는 경우, 상기 예비 버퍼로부터 가장 긴 저장 시간을 가진 페이지 테이블 엔트리를 삭제하도록 더 구성되는 장치.
  17. 제16항에 있어서,
    상기 실행 모듈은
    상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들의 양이 상기 사전 인출 버퍼의 저장 용량 이하인 경우, 상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들 모두를 상기 사전 인출 버퍼 내에 저장하고, 상기 사전 인출 버퍼 내에 현재 저장된 데이터를 개서하거나;
    상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들의 양이 상기 사전 인출 버퍼의 저장 용량보다 큰 경우, 상기 예비 버퍼 내에 저장된 상기 제2 스레드의 페이지 테이블 엔트리들 - 상기 페이지 테이블 엔트리들의 양은 상기 사전 인출 버퍼의 상기 저장 용량과 동일함 -을 상기 사전 인출 버퍼 내에 저장하고, 상기 사전 인출 버퍼 내에 현재 저장된 데이터를 개서하도록 특별히 구성되는 장치.
  18. 제17항에 있어서,
    상기 실행 모듈은
    상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들의 상기 양이 상기 사전 인출 버퍼의 상기 저장 용량보다 크고, 상기 가상 어드레스에 대응하는 상기 제1 물리 어드레스가 상기 우회 변환 버퍼 내에 존재하지 않지만, 상기 가상 어드레스에 대응하는 상기 제2 물리 어드레스가 상기 사전 인출 버퍼 내에 존재하는 경우, 상기 예비 버퍼 내에 저장된 상기 제2 스레드의 상기 페이지 테이블 엔트리들 중 상기 사전 인출 버퍼 내에 저장된 상기 페이지 테이블 엔트리들을 제외한 페이지 테이블 엔트리를 상기 사전 인출 버퍼 내에 저장하도록 더 구성되는 장치.
  19. 삭제
KR1020167005743A 2013-08-20 2014-08-07 메모리 물리 어드레스 조회 방법 및 장치 KR101768828B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201310364417.1A CN104424117B (zh) 2013-08-20 2013-08-20 内存物理地址查询方法和装置
CN201310364417.1 2013-08-20
PCT/CN2014/083875 WO2015024451A1 (zh) 2013-08-20 2014-08-07 内存物理地址查询方法和装置

Publications (2)

Publication Number Publication Date
KR20160040665A KR20160040665A (ko) 2016-04-14
KR101768828B1 true KR101768828B1 (ko) 2017-08-16

Family

ID=52483060

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167005743A KR101768828B1 (ko) 2013-08-20 2014-08-07 메모리 물리 어드레스 조회 방법 및 장치

Country Status (6)

Country Link
US (1) US10114762B2 (ko)
EP (1) EP3023878B1 (ko)
JP (1) JP6198952B2 (ko)
KR (1) KR101768828B1 (ko)
CN (2) CN107608912B (ko)
WO (1) WO2015024451A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10503661B2 (en) 2014-05-21 2019-12-10 Qualcomm Incorporated Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system
US10838862B2 (en) 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods
US9740621B2 (en) * 2014-05-21 2017-08-22 Qualcomm Incorporated Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods
US9672159B2 (en) * 2015-07-02 2017-06-06 Arm Limited Translation buffer unit management
CN109684238A (zh) * 2018-12-19 2019-04-26 湖南国科微电子股份有限公司 一种固态硬盘映射关系的存储方法、读取方法及固态硬盘
CN111552653B (zh) * 2020-05-14 2021-01-29 上海燧原科技有限公司 页表的读取方法、装置、设备及计算机存储介质
CN114238167B (zh) * 2021-12-14 2022-09-09 海光信息技术股份有限公司 信息预取方法、处理器、电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060206686A1 (en) 2005-03-08 2006-09-14 Mips Technologies, Inc. Three-tiered translation lookaside buffer hierarchy in a multithreading microprocessor
US20070067602A1 (en) 2005-09-16 2007-03-22 Callister James R Mitigating context switch cache miss penalty

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5998367A (ja) * 1982-11-26 1984-06-06 Nec Corp アドレス変換バツフア方式
JPH0652058A (ja) * 1992-07-30 1994-02-25 Matsushita Electric Ind Co Ltd アドレス変換装置
US7181590B2 (en) * 2003-08-28 2007-02-20 Intel Corporation Method for page sharing in a processor with multiple threads and pre-validated caches
US8213393B2 (en) * 2006-08-21 2012-07-03 Citrix Systems, Inc. Methods for associating an IP address to a user via an appliance
CN100487660C (zh) * 2007-05-28 2009-05-13 中兴通讯股份有限公司 一种多线程处理器动态内存管理系统及方法
US8868847B2 (en) * 2009-03-11 2014-10-21 Apple Inc. Multi-core processor snoop filtering
US8161246B2 (en) * 2009-03-30 2012-04-17 Via Technologies, Inc. Prefetching of next physically sequential cache line after cache line that includes loaded page table entry
US8397049B2 (en) * 2009-07-13 2013-03-12 Apple Inc. TLB prefetching
JP5428617B2 (ja) * 2009-07-28 2014-02-26 富士通株式会社 プロセッサ及び演算処理方法
US8880844B1 (en) * 2010-03-12 2014-11-04 Trustees Of Princeton University Inter-core cooperative TLB prefetchers
CN101833440B (zh) * 2010-04-30 2013-01-02 西安交通大学 编译器支持下的推测多线程内存数据同步执行方法及装置
EP2743833B1 (en) * 2011-09-02 2016-12-21 Huawei Technologies Co., Ltd. Method and apparatus for querying and traversing virtual memory area
CN102708211A (zh) * 2012-05-30 2012-10-03 福建星网视易信息系统有限公司 一种基于多线程检索并加载数据的方法
US20140108766A1 (en) * 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Prefetching tablewalk address translations
US9349386B2 (en) * 2013-03-07 2016-05-24 Analog Device Global System and method for processor wake-up based on sensor data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060206686A1 (en) 2005-03-08 2006-09-14 Mips Technologies, Inc. Three-tiered translation lookaside buffer hierarchy in a multithreading microprocessor
US20070067602A1 (en) 2005-09-16 2007-03-22 Callister James R Mitigating context switch cache miss penalty

Also Published As

Publication number Publication date
WO2015024451A1 (zh) 2015-02-26
CN104424117B (zh) 2017-09-05
EP3023878A1 (en) 2016-05-25
CN104424117A (zh) 2015-03-18
US10114762B2 (en) 2018-10-30
US20160170904A1 (en) 2016-06-16
JP2016528640A (ja) 2016-09-15
EP3023878B1 (en) 2019-01-30
CN107608912B (zh) 2020-10-16
EP3023878A4 (en) 2016-07-06
KR20160040665A (ko) 2016-04-14
JP6198952B2 (ja) 2017-09-20
CN107608912A (zh) 2018-01-19

Similar Documents

Publication Publication Date Title
KR101768828B1 (ko) 메모리 물리 어드레스 조회 방법 및 장치
KR100562906B1 (ko) 시리얼 플래시 메모리에서의 xip를 위한 우선순위기반의 플래시 메모리 제어 장치 및 이를 이용한 메모리관리 방법, 이에 따른 플래시 메모리 칩
US10474580B2 (en) Memory management supporting huge pages
US8566563B2 (en) Translation table control
US7353361B2 (en) Page replacement policy for systems having multiple page sizes
US7793070B2 (en) Processing system implementing multiple page size memory organization with multiple translation lookaside buffers having differing characteristics
JP6088951B2 (ja) キャッシュメモリシステムおよびプロセッサシステム
JP2017138852A (ja) 情報処理装置、記憶装置およびプログラム
KR20170100003A (ko) 가상 주소들을 사용하여 액세스된 캐시
JP2009020881A (ja) 可変のページサイズのメモリ編成を実装する処理システム
JP2012212440A (ja) キャッシュされたメモリデータを伴うキャッシュメモリ属性インジケータ
US8335908B2 (en) Data processing apparatus for storing address translations
US20150143045A1 (en) Cache control apparatus and method
CN111061655B (zh) 存储设备的地址转换方法与设备
WO2015125971A1 (ja) キャッシュ存在情報を有するtlb
US8543791B2 (en) Apparatus and method of reducing page fault rate in virtual memory system
CN112631962A (zh) 存储管理装置、存储管理方法、处理器和计算机系统
KR102482516B1 (ko) 메모리 어드레스 변환
US8688952B2 (en) Arithmetic processing unit and control method for evicting an entry from a TLB to another TLB
US10140217B1 (en) Link consistency in a hierarchical TLB with concurrent table walks
Bletsch ECE 650 Systems Programming & Engineering Spring 2018
WO2011018105A1 (en) Management of physical memory space

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