KR20170029594A - 메모리 관리 방법 및 장치, 및 메모리 컨트롤러 - Google Patents

메모리 관리 방법 및 장치, 및 메모리 컨트롤러 Download PDF

Info

Publication number
KR20170029594A
KR20170029594A KR1020177003800A KR20177003800A KR20170029594A KR 20170029594 A KR20170029594 A KR 20170029594A KR 1020177003800 A KR1020177003800 A KR 1020177003800A KR 20177003800 A KR20177003800 A KR 20177003800A KR 20170029594 A KR20170029594 A KR 20170029594A
Authority
KR
South Korea
Prior art keywords
virtual address
page
page table
memory
address
Prior art date
Application number
KR1020177003800A
Other languages
English (en)
Other versions
KR101893966B1 (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 KR20170029594A publication Critical patent/KR20170029594A/ko
Application granted granted Critical
Publication of KR101893966B1 publication Critical patent/KR101893966B1/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/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/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
    • 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/684TLB miss handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

메모리 관리 방법 및 장치가 개시된다. 방법은, 스토리지 관리 장치가, 메모리를 관리하는 단계, 그리고 페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함하지 않은 것으로 결정하는 때, 메모리 관리 장치가, 운영 시스템의 인터럽트를 트리거링하는 대신에 메모리를 관리하는 단계를 포함하므로, 운영 시스템의 부하가 감소될 수 있다. 가상 어드레스가 유효한 것으로 결정하는 때, 메모리 관리 장치는 블랭크 페이지를 신청한다. 메모리 관리 장치는 메모리 컨트롤러 내에 위치하고 물리 메모리에 더 가깝기 때문에, 메모리 관리 효율이 효과적으로 향상될 수 있다.

Description

메모리 관리 방법 및 장치, 및 메모리 컨트롤러{MEMORY MANAGEMENT METHOD AND DEVICE, AND MEMORY CONTROLLER}
본 발명은 컴퓨터 분야에 관한 것으로, 특히, 메모리 관리 방법 및 장치, 및 메모리 컨트롤러에 관한 것이다.
컴퓨터 시스템에서, 메모리 컨트롤러는 주로 CPU와 메모리 간의 데이터 교환을 담당하고, 메모리의 물리 어드레스 관리는 운영 시스템에 의해 구현된다. 운영 시스템은 가상 어드레스를 프로세스에 할당한다. 변환 색인 버퍼(TLB: translation look-aside buffer)가 가상 어드레스를 캐싱하지 않고, 메모리 관리 유닛(MMU: Memory Management Unit)이 가상 어드레스의 페이지 테이블 엔트리를 찾지 않으면, 페이지 폴트(page fault)가 발생하고 CPU가 운영 시스템의 커널에 트랩핑(trapped)된다. 페이지 폴트가 발생하는 때, 운영 시스템은 인터럽트 서비스 루틴(interrupt service routine)에 진입하고, 사이트 보호(site protection)를 수행하며, 프로그램 카운터(program counter)와 같은 현재 명령의 다양한 상태 정보를 스택(stack)에 푸싱(push)하고, 가상 어드레스의 유효성을 확인한다. 액세스가 유효하지 않다고 판단되면, 운영 시스템은 대개 프로세스에 신호를 피드백하거나 직접 프로세스를 종료한다.
종래 기술에서, MMU가 가상 어드레스의 페이지 테이블 엔트리를 찾지 않으면, MMU는 페이지 폴트를 직접 트리거링하고, 오랜 시간 동안 CPU가 운영 시스템의 커널에 트랩핑되도록 야기한다. 페이지 폴트가 발생하는 때, 운영 시스템은 일련의 처리를 수행해야 하므로, 운영 시스템의 부하가 증가하고, 관리 효율성은 상대적으로 낮다.
본 발명의 실시예는 메모리 관리 방법 및 장치, 및 메모리 컨트롤러를 제공하여, 메모리 관리 효율을 개선한다.
제1 양태에 따르면, 본 발명은 메모리 관리 방법을 제공하고, 여기서 방법은 메모리 컨트롤러 내에 위치하는 메모리 관리 장치에 적용되며, 방법은 프로세서에 의해 전송된, 가상 어드레스를 운반하는 페치 요청(fetch request)을 수신하는 단계, 변환 색인 버퍼(TLB: translation look-aside buffer)가 페치 요청 내에서 운반된 가상 어드레스에 대응하는 페이지 테이블을 캐싱(cache)하는지 여부를 결정하고, TLB가 페이지 테이블을 캐싱하면, 페이지 테이블로부터 가상 어드레스에 대응하는 물리 어드레스를 획득하거나, 또는 TLB가 페이지 테이블을 캐싱하지 않으면, 페이지 테이블의 베이스 어드레스 필드를 획득하고 페이지 테이블을 검색하며, 페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함하면, 가상 어드레스에 대응하는 물리 어드레스를 획득하는 단계, 그리고 페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함하지 않으면, 가상 어드레스가 유효(valid)한지 여부를 결정하고, 가상 어드레스가 유효한 것으로 결정되는 때 블랭크 페이지를 신청하는 단계를 포함하고, 페이지 테이블은 가상 어드레스와 물리 어드레스 간 대응관계를 포함하고, TLB는 메모리 관리 장치 내에 있다.
제1 양태의 첫 번째 가능한 구현 방식으로, 방법은 블랭크 페이지에 대한 신청이 성공하면, 메모리 판독 및 기록을 시작하는 단계, 그리고 블랭크 페이지에 대한 신청이 실패하면, 대체 페이지를 선택하고 운영 시스템이 페이지를 대체할 수 있도록, 대체 페이지를 운영 시스템에 제공하는 단계를 더 포함한다.
제1 양태, 또는 제1 양태의 첫 번째 가능한 구현 방식를 참조하여, 두 번째 가능한 구현 방식으로, 가상 어드레스가 유효한지 여부를 결정하는 것은 구체적으로, 가상 어드레스가 할당된 가상 어드레스 공간 내에 있는지 여부를 결정하고, 가상 어드레스가 할당된 가상 어드레스 공간 내에 있으면, 가상 어드레스가 유효한 것으로 결정하는 단계, 또는 가상 어드레스가 할당된 가상 어드레스 공간 내에 있지 않으면, 가상 어드레스가 가상 메모리 어드레스(VMA: virtual memory address) 내에 존재하는지 여부를 결정하고, 가상 어드레스가 VMA 내에 존재하면 가상 어드레스가 유효한 것으로 결정하는 단계를 포함한다.
제1 양태, 또는 제1 양태의 첫 번째 가능한 구현 방식 또는 두 번째 가능한 구현 방식를 참조하여, 세 번째 가능한 구현 방식으로, 블랭크 페이지를 신청하는 단계 이전에, 미리 설정된 기간 내에서 각 캐싱된 블랭크 페이지의 사용 빈도를 카운팅하는 단계, 그리고 블랭크 페이지를 신청할 때 미리 설정된 기간 내에서 최저 사용 빈도를 가진 블랭크 페이지를 선택하는 단계를 더 포함한다.
제1 양태의 첫 번째 가능한 구현 방식을 참조하여, 네 번째 가능한 구현 방식으로, 블랭크 페이지에 대한 신청이 성공한 후에, 페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함할 수 있도록 페이지 테이블을 업데이트하고 TLB에 페이지 테이블을 저장하는 단계를 더 포함한다.
제1 양태, 또는 제1 양태의 첫 번재 내지 네 번째 가능한 구현 방식 중 어느 하나를 참조하여, 다섯 번째 가능한 구현 방식으로, 페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함하는 것으로 결정되면, 가상 어드레스에 대응하는 물리 어드레스를 획득하기 이전에, 페이지 테이블을 TLB에 저장하는 단계를 더 포함한다.
제2 양태에 따르면 본 발명은 메모리 컨트롤러 내에 위치하는 메모리 관리 장치를 제공하고, 메모리 관리 장치는 변환 색인 버퍼(TLB: translation look-aside buffer), 메모리 관리 유닛(MMU: memory management unit), 및 마이크로 컨트롤러를 포함하고, TLB는, 프로세서에 의해 전송된, 가상 어드레스를 운반하는 페치 요청(fetch request)을 수신하고, TLB가 페치 요청 내에서 운반된 가상 어드레스에 대응하는 페이지 테이블을 캐싱(cache)하는지 여부를 결정하며, TLB가 페이지 테이블을 캐싱하면, 가상 어드레스들 및 물리 어드레스들 사이의 대응관계를 포함하는 페이지 테이블로부터 가상 어드레스에 대응하는 물리 어드레스를 획득하도록 구성되며, MMU는, TLB가 패치 요청 내에서 운반된 가상 어드레스에 대응하는 페이지 테이블을 캐싱하지 않는 때, 페이지 테이블의 베이스 어드레스 필드를 획득하고 페이지 테이블을 검색하며, 페이지 테이블이 가상 어드레스를 포함하면, 가상 어드레스에 대응하는 물리 어드레스를 획득하도록 구성되고, 마이크로 컨트롤러는, 페이지 테이블이 가상 어드레스를 포함하지 않는 때, 가상 어드레스가 유효(valid)한지 여부를 결정하고, 가상 어드레스가 유효한 것으로 결정되는 때, 블랭크 페이지를 신청하도록 구성된다.
제2 양태의 첫 번째 가능한 구현 방식으로, 마이크로 컨트롤러는, 블랭크 페이지에 대한 신청이 성공하는 때, 메모리 판독 및 기록을 시작하고, 블랭크 페이지에 대한 신청이 실패하는 때, 대체 페이지를 선택하고 운영 시스템이 페이지를 대체할 수 있도록, 대체 페이지를 운영 시스템에 제공하도록 더 구성된다.
제2 양태, 또는 제2 양태의 첫 번째 가능한 구현 방식을 참조하여, 두 번째 가능한 구현 방식으로, 마이크로 컨트롤러는 구체적으로, 가상 어드레스가 할당된 가상 어드레스 공간 내에 있는지 여부를 결정하고, 가상 어드레스가 할당된 가상 어드레스 공간 내에 있으면, 가상 어드레스가 유효한 것으로 결정하거나, 또는 가상 어드레스가 할당된 가상 어드레스 공간 내에 있지 않으면, 가상 어드레스가 가상 메모리 어드레스(VMA: virtual memory address) 내에 존재하는지 여부를 결정하고, 가상 어드레스가 VMA 내에 존재하면 가상 어드레스가 유효한 것으로 결정하도록 구성된다.
제2 양태, 또는 제2 양태의 첫 번째 가능한 구현 방식 또는 두 번째 가능한 구현 방식을 참조하여, 세 번째 가능한 구현 방식으로, 마이크로 컨트롤러는, 페치 요청을 수신하고, 페치 요청 내에서 운반된 가상 어드레스에 대응하는 프로세스의 페이지 테이블의 베이스 어드레스 필드를 획득하며, MMU가 베이스 어드레스 필드에 따라 페이지 테이블을 검색할 수 있도록, MMU에 베이스 어드레스 필드를 전송하도록 더 구성된다.
제2 양태, 또는 제2 양태의 첫 번째 내지 세 번재 가능한 구현 방식 중 어느 하나를 참조하여, 네 번째 가능한 구현 방식으로, 마이크로 컨트롤러는, 미리 설정된 기간 내에서 각 캐싱된 블랭크 페이지의 사용 빈도를 카운팅하고, 블랭크 페이지를 신청할 때 미리 설정된 기간 내에서 최저 사용 빈도를 가진 블랭크 페이지를 선택하도록 더 구성된다.
제3 양태에 따르면, 본 발명은 제2 양태에 따른 임의의 메모리 관리 장치를 포함하는 메모리 컨트롤러를 제공한다.
전술한 기술적 솔루션으로부터 본 발명의 실시예는 다음과 같은 이점을 갖는다는 것을 알 수 있다.
본 발명의 기술적 솔루션에서, 메모리는 스토리지 관리 장치에 의해 관리되므로, 운영 시스템의 부하가 감소될 수 있다. 스토리지 관리 장치는 페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함하지 않는 것으로 결정하는 때, 운영 시스템의 인터럽트를 트리거링하지 않는 대신에, 메모리 관리 장치가 메모리를 관리하고, 가상 어드레스가 유효한 것으로 결정하는 때, 블랭크 페이지를 신청한다. 메모리 관리 장치는 메모리 컨트롤러 내에 위치하고 물리 메모리에 더 가깝기 때문에, 메모리 관리 효율이 효과적으로 향상될 수 있다.
본 발명의 실시예에서의 기술적 솔루션을 보다 명확하게 설명하기 위해, 실시예를 설명하기 위해 요구되는 첨부 도면을 간단히 설명한다. 명백하게, 다음의 설명에서의 첨부된 도면은 본 발명의 단지 일부 실시예를 도시하고, 당업자는 창조적인 노력없이 여전히 이들 도면으로부터 다른 도면을 도출할 수 있다.
도 1은 본 발명의 일 실시예가 적용 가능한 아키텍처의 개략도이다.
도 2는 본 발명의 일 실시예에 따른 메모리 관리 방법의 개략적인 순서도이다.
도 3(a) 및 도 3b는 본 발명의 일 실시예에 따른 메모리 관리 방법의 다른 개략적인 순서도이다.
도 4는 본 발명의 일 실시예에 따른 메모리 관리 장치의 개략적인 구조도이다.
이하에서는 본 발명의 실시예의 기술적 솔루션을, 본 발명의 실시예의 첨부 도면을 참조하여 명확하고 완전하게 설명한다. 명백하게, 기술된 실시예는 본 발명의 일부 실시예에 불과하지만 전부는 아니다. 창의적인 노력없이 본 발명의 실시예에 기초하여 당업자에 의해 획득된 다른 모든 실시예는 본 발명의 보호 범위 내에 속한다.
첫째, 본 발명의 실시예에서 제공되는 메모리 관리 방법은 통신 시스템에 적용될 수 있다. 메모리 관리 방법은 메모리 관리 장치에 적용될 수 있고, 메모리 관리 장치는 메모리 컨트롤러에 위치한다.
자세하게, 도 1을 참조한다. 도 1은 본 발명의 일 실시예가 적용 가능한 아키텍처의 개략도이다. 본 발명에 제공된 메모리 컨트롤러(100)는 메모리 관리 장치(101), 맵핑 스케줄러(102), 및 물리 계층 프로토콜(PHY)(103)를 포함할 수 있다. 맵핑 스케줄러(102)는 주로 어드레스 맵핑(예를 들어, 선형 어드레스를 다이나믹 랜덤 액세스 메모리의 랭크, 뱅크, 로우, 및 컬럼 등으로 변환하는 것), 스케줄링 요구, 및 리프레시(refresh) 제어와 같은 기능을 담당한다. PHY(103)는 메모리 컨트롤러(100)와 메모리 칩 사이의 물리적 링크의 확립을 담당한다. 맵핑 스케줄러(102) 및 PHY(103)의 구체적인 구현을 위해, 종래 기술을 참조하고, 상세한 설명은 여기서 기술되지 않는다.
프로세서에 의해 요청된 캐싱된 리소스가 히팅(hit)되지 않는 때, 메모리에 액세스하기 위해 페치 요청이 요청 채널을 통해 메모리 컨트롤러(100)에 전송될 수 있다. 메모리는 버퍼 요청에 따라 메모리 컨트롤러(100) 내의 메모리 관리 장치(101)에 의해 주로 관리된다.
메모리 관리 방법은 메모리 관리 장치(101)에 적용된다. 메모리 관리 장치(101)는 메모리 컨트롤러(100)에 위치한다. 방법은 프로세서에 의해 전송된, 가상 어드레스를 운반하는 페치 요청(fetch request)을 수신하는 단계, 변환 색인 버퍼(TLB: translation look-aside buffer)가 페치 요청 내에서 운반된 가상 어드레스에 대응하는 페이지 테이블을 캐싱(cache)하는지 여부를 결정하고, TLB가 페이지 테이블을 캐싱하면, 페이지 테이블로부터 가상 어드레스에 대응하는 물리 어드레스를 획득하거나, 또는 TLB가 페이지 테이블을 캐싱하지 않으면, 페이지 테이블의 베이스 어드레스 필드를 획득하고 페이지 테이블을 검색하며, 페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함하면, 가상 어드레스에 대응하는 물리 어드레스를 획득하는 단계, 그리고 페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함하지 않으면, 가상 어드레스가 유효(valid)한지 여부를 결정하고, 가상 어드레스가 유효한 것으로 결정되는 때 블랭크 페이지를 신청하는 단계를 포함하고, 페이지 테이블은 가상 어드레스와 물리 어드레스 간 대응관계를 포함하고, TLB는 메모리 관리 장치 내에 있다.
도 2는 본 발명의 일 실시예에 따른 메모리 관리 방법의 개략적인 순서도이다. 방법은 다음을 포함할 수 있다.
단계(S201): 프로세서에 의해 전송된, 가상 어드레스를 운반하는 페치 요청을 수신한다.
프로세서에 의해 요청된 캐싱된 리소스가 히팅되지 않는 때, 메모리에 액세스하기 위해 페치 요청이 요청 채널을 통해 메모리 컨트롤러(100)의 메모리 관리 장치(101)에 전송될 수 있다. 페치 요청은 가상 어드레스를 운반한다. 메모리 관리 장치(101) 내의 변환 색인 버퍼 및 마이크로 컨트롤러는 프로세서에 의해 전송된 페치 요청을 수신할 수 있다. TLB는 고속 어드레스 변환 및 페이지 테이블 검색을 주로 담당하며 마이크로 컨트롤러는 메모리 관리(페치 요청의 유효성 확인 등을 포함함)를 주로 담당한다. 즉, 마이크로 컨트롤러는 TLB가 관련 페이지 테이블을 캐싱하지 않는 경우에만 메모리 관리와 같은 동작을 수행해야 한다.
본 발명을 설명하기 위한 일례로서의 컴퓨터 시스템으로서, 프로세서는 CPU 코어일 수 있다.
단계(S202): 변환 색인 버퍼 TLB가 페치 요청에서 운반된 가상 어드레스에 대응하는 페이지 테이블을 캐싱하는지 여부를 결정하고, TLB가 페이지 테이블을 캐싱하지 않으면, 단계(S203)가 실행되거나, 또는 TLB가 페이지 테이블을 캐싱하면, 단계(S205)가 실행되고, 여기서 페이지 테이블은 가상 어드레스와 물리 어드레스 사이의 대응관계를 포함한다.
페이지 테이블은 일반적으로 주 저장소(primary storage)에 저장되고, 페이지 테이블은 가상 어드레스와 물리 어드레스 사이의 대응관계를 저장한다. TLB는 페이지 테이블 파일을 캐싱할 수 있다. 따라서, TLB가 TLB를 캐싱하면, 가상 어드레스에 대응하는 물리 어드레스가 TLB로부터 직접 획득될 수 있다. TLB가 페이지 테이블을 캐싱하지 않으면, 메모리 관리 장치(101)의 메모리 관리 유닛(MMU: Memory Management Unit)을 사용하여 페이지 테이블이 검색될 수 있다.
단계(S203): TLB가 페치 요청에 포함된 가상 어드레스에 대응하는 페이지 테이블을 캐싱하지 않으면, 페이지 테이블의 베이스 어드레스 필드를 획득한다.
페이지 테이블은 일반적으로 주 저장소(primary storage)에 저장되기 때문에, MMU는 페이지 테이블의 베이스 어드레스 필드를 획득하는 것을 실패할 수 있으므로 페이지 테이블을 직접 검색할 수 없다. 이 경우, 이 페이지 테이블의 베이스 어드레스 필드는 마이크로 컨트롤러에 의해 MMU에 제공될 수 있으며, 여기서 페이지 테이블 포털 어드레스의 포털 어드레스 = 베이스 어드레스 필드 + 가상 어드레스의 몇몇 최상위 비트들이다.
구체적으로, MMU가 페이지 테이블을 검색하고 마이크로 컨트롤러가 캐싱 요청을 수신한 후, 페치 요청 내에서 운반된 가상 어드레스에 대응하는 프로세스의 페이지 테이블의 베이스 어드레스 필드가 획득될 수 있고, 페이지 테이블의 베이스 어드레스 필드는 MMU에 제공되어, MMU가 페이지 테이블의 베이스 어드레스 필드에 따라 페이지 테이블을 검색한다. 구현 방식에서, 마이크로 컨트롤러는 프로세스 테이블을 검색하여 가상 어드레스에 대응하는 프로세스의 페이지 테이블의 베이스 어드레스 필드를 획득하고, 페이지 테이블의 베이스 어드레스 필드를 MMU에 전송할 수 있다.
단계(S204): 페이지 테이블의 베이스 어드레스 필드에 따라 페이지 테이블을 검색하고, 페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함하는 것으로 결정되면, 단계(S205)를 실행하거나, 또는 그렇지 않으면, 단계(S206)를 실행한다.
페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함하면, 단계(S205)가 실행되고, 가상 어드레스에 대응하는 물리 어드레스가 획득된 후, 메모리 데이터는 물리 어드레스에 따라 판독될 수 있다. 페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함하지 않으면, 단계(S206)이 실행된다.
단계(S205): 페치 요청 내에서 운반된 가상 어드레스에 대응하는 물리 어드레스를 획득한다.
단계(S202)에서, 변환 색인 버퍼(TLB)가 페치 요청 내에서 운반된 가상 어드레스에 대응하는 페이지 테이블을 캐싱하는 것으로 결정되면, 단계(S205)에서 페이지 테이블로부터 가상 어드레스에 대응하는 물리 어드레스가 TLB에 의해 획득되고, 단계(S204)에서 MMU가 페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함하는 것으로 결정하면, 단계(S205)에서 페치 요청 내에서 운반된 가상 어드레스에 대응하는 물리 어드레스가 MMU에 의해 획득된다.
단계(S206): 페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함하지 않는 것으로 결정되면, 가상 어드레스가 유효한지 여부를 결정하고, 가상 어드레스가 유효한 것으로 결정되는 때 블랭크 페이지를 신청한다.
TLB가 페이지 테이블을 캐싱하지 않고, MMU 내의 페이지 테이블이 히팅되지 않으면, 마이크로 컨트롤러는 페치 요청 내에서 운반된 가상 어드레스가 유효한지 여부를 결정할 수 있다. 페치 요청 내에서 운반된 가상 어드레스가 유효한지 여부를 결정하는 단계는 구체적으로, 가상 어드레스가 할당된 가상 어드레스 공간 내에 있는지 여부를 결정하고, 가상 어드레스가 할당된 가상 어드레스 공간 내에 있으면, 가상 어드레스가 유효한 것으로 결정하는 단계, 또는 가상 어드레스가 할당된 가상 어드레스 공간 내에 있지 않으면, 가상 어드레스가 가상 메모리 어드레스(VMA: virtual memory address) 내에 존재하는지 여부를 결정하거나, 또는 가상 어드레스가 VMA 내에 존재하면, 가상 어드레스가 유효한 것으로 결정하는 단계를 포함한다.
가상 어드레스가 VMA 공간에 존재하는 것으로 결정한 후, 페이지 폴트가 운영 시스템으로 피드백될 수 있고, 마이크로 컨트롤러는 블랭크 페이지를 신청할 수 있다.
가상 어드레스가 유효하면, 마이크로 컨트롤러가 블랭크 페이지를 신청하고, 블랭크 페이지에 대한 신청이 성공하면, 메모리 읽기 및 쓰기가 직접 시작될 수 있다. 블랭크 페이지에 대한 신청이 실패하면, 대체 페이지가 선택되고, 대체 페이지가 운영 시스템에 제공되며, 데이터는 운영 시스템에 의해 메모리의 하드 디스크에 기록된다. 대체된 페이지가 "clean"이면, 운영 시스템은 대체된 페이지의 페이지 테이블 엔트리를 수정한 후 대체된 페이지를 직접 사용할 수 있다. 또는 대체된 페이지가 "dirty"이면, 운영 시스템은 자기 디스크에 "dirty" 페이지를 먼저 기록하고, 컨텍스트 스위치를 생성하며, 자기 디스크의 동작이 끝날 때까지 이 프로세스를 일시 중단하고, 그 다음 스택(stack)으로부터 페이지 폴트(page fault)가 발생하기 전에 상태를 팝핑(pop)해야 한다. 그 이후부터, 프로세스는 준비 모드로 진입하고, 언제든지 운영 시스템에 의해 실행이 스케줄링될 수 있다.
또한, 블랭크 페이지에 대한 신청이 성공한 후, 방법은, 신청된 블랭크 페이지가 처음으로 유효하게 액세스되는지 여부를 결정하는 단계를 더 포함하고, 신청된 블랭크 페이지가 처음으로 유효하게 액세스되면, 메모리 읽기 및 쓰기 동작이 직접 시작될 수 있거나, 또는 신청된 블랭크 페이지가 처음으로 유효하게 액세스되지 않으면, 블랭크 페이지가 준비되었음을 지시하도록 피드백이 운영 시스템에 전송되어, 프로세서 내의 운영 시스템이 하드 디스크로부터의 데이터를 메모리에 기록한다.
단계(S206)에서 가상 어드레스가 VMA 공간 내에 존재하지 않는 것으로 결정되면, 가상 어드레스는 유효하지 않은 것으로 결정되고, 즉, 페치 요청이 유효하지 않은 액세스로서 결정되며, 운영 시스템에 폴트가 피드백되고, 운영 시스템은 다음 단계를 실행한다.
상기로부터 알 수 있듯이, 본 발명의 기술적 솔루션에 있어서, 스토리지 관리 장치는 페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함하지 않는 것으로 결정하는 때, 스토리지 관리 장치는 운영 시스템의 인터럽트(interrupt)를 트리거링(trigger)하지 않지만, 대신에 메모리 관리 장치는 메모리를 관리하고, 가상 어드레스가 유효한 것으로 판단하는 때, 블랭크 페이지를 신청한다. 메모리 관리 장치는 메모리 컨트롤러에 위치하고 물리 메모리에 더 가까우므로, 메모리 관리 효율성이 효과적으로 개선될 수 있다.
전술한 솔루션을 더 잘 이해하기 위해, 본 발명의 실시예는 구체적인 구현 예를 사용하여 상세히 설명될 것이다. 자세하게, 도 3a 및 도 3b를 참조한다. 도 3a 및 도 3b는 본 발명의 실시예에 따른 메모리 관리 방법의 다른 개략적인 순서도이다.
단계(S301): TLB는 프로세서에 의해 전송된, 가상 어드레스를 운반하는 페치 요청을 수신한다.
단계(S302): TLB는 TLB가 페치 요청 내에서 운반된 가상 어드레스에 대응하는 페이지 테이블을 캐싱하는지 여부를 결정하고, TLB가 페치 요청 내에서 운반된 가상 어드레스에 대응하는 페이지 테이블을 캐싱하지 않으면, 단계(S303)를 실행하거나, 또는 TLB가 페치 요청 내에서 운반된 가상 어드레스에 대응하는 페이지 테이블을 캐싱하면, 단계(S305)를 실행한다.
단계(S303): 마이크로 컨트롤러는 프로세서에 의해 전송된, 가상 어드레스를 운반하는 페치 요청을 수신하고, 마이크로 컨트롤러는 프로세스 테이블을 검색하여 가상 어드레스에 대응하는 프로세스의 페이지 테이블의 베이스 어드레스 필드를 획득하며, 페이지 테이블의 베이스 어드레스 필드를 MMU에 전송하고, 단계(S304)를 실행한다.
프로세스 테이블은 메모리 관리 프로세서 코어에 의해 국부적으로(locally) 유지되는, 온-칩 SRAM에 저장될 수 있는 데이터 구조 테이블이고, 프로세스 테이블은 구체적으로, 프로세스 ID, 프로세서 코어 ID, 물리적 공간 할당량 및 관리 정책과 같은 테이블 엔트리를 포함할 수 있다. 테이블 엔트리는 프로세스 스위칭 동안 인터랙션 채널(interaction channel)을 사용하여 메모리 컨트롤러에 전송되고, 페이지 테이블의 포털 베이스 어드레스는 메모리 관리 프로세서에 의해 생성되고 유지되며, 프로세스 테이블은 운영 시스템에서 볼 수 없다. 특정 구현 방식에 대한 자세한 내용은 표 1을 참조한다.
Figure pct00001
마이크로 컨트롤러는 프로세서에 의해 전송된 페치 요청을 수신하고, 여기서 버퍼 요청은 프로세스 ID를 운반할 수 있고, 마이크로 컨트롤러는 프로세스 ID에 따라 프로세스에 대응하는 페이지 테이블의 위치를 결정하고, 페이지 테이블의 베이스 어드레스 필드를 획득하고 MMU에 베이스 어드레스 필드를 제공하여, MMU가 페치 요청 내에서 운반된 가상 어드레스에 따라 페이지 테이블을 검색할 수 있다.
단계(S301)와 단계(S303) 사이에는 시간 관계가 존재하지 않는다는 것이 이해될 수 있으며, 마이크로 컨트롤러와 TLB는 프로세서에 의해 전송된 페치 요청을 동시에 수신할 수 있다.
단계(S304): MMU는 마이크로 컨트롤러에 의해 전송된 페이지 테이블의 베이스 어드레스 필드에 따라 페이지 테이블을 검색한다. 페이지 테이블이 히팅되면, 단계(S305)를 실행하거나, 또는 페이지 테이블이 히팅되지 않으면, 단계(S306)를 실행한다.
MMU는 마이크로 컨트롤러에 의해 전송된 페이지 테이블의 베이스 어드레스 필드에 따라 페이지 테이블을 검색하고, 페이지 테이블이 히팅되면, 이는 페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함하는 것을 나타내므로, 가상 어드레스에 대응하는 물리 어드레스가 획득될 수 있다.
단계(S305): 가상 어드레스에 대응하는 물리 어드레스를 획득한다.
프로세스가 단계(S302)로부터 단계(S305)까지 진행되면, 가상 어드레스에 대응하는 물리 어드레스는 TLB에 의해 획득되고, 메모리 데이터는 물리 어드레스를 사용하여 액세스될 수 있다. 그리고 프로세스가 단계(S304)로부터 단계(S305)까지 진행되면, 가상 어드레스에 대응하는 물리 어드레스가 MMU에 의해 획득되고, 그 물리 어드레스를 사용하여 메모리 데이터가 액세스될 수 있다.
단계(S306): 마이크로 컨트롤러는 페치 요청에서 운반된 가상 어드레스가 최근에 할당된 가상 어드레스 공간 내에 있는지 여부를 확인하고, 페치 요청에서 운반된 가상 어드레스가 최근에 할당된 가상 어드레스 공간 내에 있지 않으면, 단계(S307)를 실행하거나, 또는 페치 요청에서 운반된 가상 어드레스가 최근에 할당된 가상 어드레스 공간 내에 있으면, 마이크로 컨트롤러는 가상 어드레스가 유효하다고 결정하고, 단계(S310)을 실행한다.
예를 들어, 메모리 할당 테이블은 메모리 컨트롤러에 통합될 수 있고, 메모리 할당 테이블의 테이블 엔트리에 기록된 콘텐츠는 프로세스 ID, 프로세스(Malloc)의 가상 어드레스 및 가상 어드레스의 크기를 포함할 수 있다. 이 정보는 프로세스가 Malloc 함수를 호출하는 때 운영 시스템에 의해 인터랙티브(interactive) 인터페이스를 사용하여 메모리 컨트롤러에 전송된다.
TLB 또는 MMU가 모두 히팅되지 않는 때, 마이크로 컨트롤러는 메모리 할당 테이블을 검색한다. 또한, 페치 요청을 수신한 후 마이크로 컨트롤러는 메모리 할당 테이블을 검색할 수 있으며, 즉, TLB 및 MMU의 처리 중에, 마이크로 컨트롤러는 동시에 처리를 수행한다. TLB 또는 MMU가 모두 히팅되지 않지만, 메모리 할당 테이블이 히팅되는 때, 이는 페치 요청이 유효하고 처음으로 액세스되며, 아직 페이지가 할당되지 않았음을 나타낸다. 마이크로 컨트롤러는 블랭크 페이지를 직접 신청하여 요청에 사용할 수 있다.
TLB, MMU 및 메모리 할당 테이블 중 어느 것도 히팅되지 않으면, 단계(S307)가 실행되고, 마이크로 컨트롤러는 메모리 내의 프로세스의 VMA 공간을 확인해야 하므로, MMU가 히팅되지 않은 이유를 더 결정해야 한다.
이 경우, 자원이 거의 점유되지 않으며, 논리가 간단하고 신속하게 결정될 수 있다. Malloc 엔트리가 증가한 후, 메모리 할당 테이블은 특정 대체 정책, 예를 들어, 가장 간단한 선입 선출(FIFO) 정책을 구현할 수 있다.
단계(S307): 마이크로 컨트롤러는 메모리 내의 프로세스의 가상 메모리 어드레스 VMA 공간을 찾고, 가상 어드레스가 존재하는지 여부를 결정하며, 가상 어드레스가 존재하면, 단계(S309)를 실행하거나, 또는 가상 어드레스가 존재하지 않으면, 단계(S308)를 실행한다.
단계(S308): 마이크로 컨트롤러는 요청을 유효하지 않은 액세스로서 결정하고, 운영 시스템에 인터럽트를 피드백한다.
다음 동작이 운영 시스템에 의해 실행되고, 프로세스가 종료된다.
단계(S309): 마이크로 컨트롤러는 요청의 가상 어드레스 데이터가 SWAP 파티션 또는 파일 내에 있는지 여부를 결정하고, 페이지 폴트를 운영 시스템에 피드백하며, 단계(S310)를 실행한다.
단계(S310): 마이크로 컨트롤러는 빈 리스트(free list)를 검색하고 블랭크 페이지를 신청한다. 신청이 실패하면, 프로세스는 단계(S311)로 진행하거나, 또는 신청이 성공하면, 프로세스는 단계(S313)로 진행한다.
단계(S311): 마이크로 컨트롤러는 페이지 대체 알고리즘을 실행하여 페이지를 선택하고 메모리 내의 페이지를 대체한다.
단계(S312): 마이크로 컨트롤러는 페이지 테이블 엔트리 및 TLB를 업데이트하고, 선택된 대체 대상 페이지의 어드레스를 피드백 공간의 레지스터에 기록하며, 대체 페이지가 준비되었음을 나타내는 신호를 운영 시스템에 피드백한다.
대체 페이지가 선택되면, 새로운 페이지에 대한 페이지 테이블 엔트리가 구성되어야 하고, 마이크로 컨트롤러는 페이지 테이블 및 TLB를 업데이트해야 한다.
마이크로 컨트롤러가 대체 페이지가 준비되었다는 신호를 운영 시스템에 피드백한 후, 다음 동작이 운영 시스템에 의해 실행되고, 프로세스가 종료된다.
단계(S313): 마이크로 컨트롤러는 TLB 및 페이지 테이블 엔트리를 업데이트한다.
블랭크 페이지에 대한 신청이 성공하면, 새 페이지에 대해 페이지 테이블 엔트리가 구성되어야 하며, 마이크로 컨트롤러는 페이지 테이블과 TLB를 업데이트해야 한다.
단계(S314): 마이크로 컨트롤러는 블랭크 페이지가 처음으로 신청되는지 여부를 결정하고, 페치 요청이 첫 번째 유효 액세스가 아니면, 프로세스는 단계(S315)로 진행하거나, 또는 페치 요청이 첫 번째 유효 액세스이면, 단계(S316)을 실행한다.
단계(S315): 마이크로 컨트롤러는 레지스터 값을 피드백 공간에 기록하고, 대체 페이지가 준비되었다는 신호를 운영 시스템에 전송한다.
운영체제는 피드백 공간의 여러 정보를 판독한 후 다음 작업을 결정한다.
단계(S316): 마이크로 컨트롤러는 메모리 기록 및 판독 동작을 직접 시작한다.
상기로부터 알 수 있듯이, 본 발명의 기술적 솔루션에서, 운영 시스템이 페이지 테이블을 수정하거나 검색할 필요가 있는 때, 운영 시스템은 마이크로 컨트롤러에 명령을 전송하면 되고, 마이크로 컨트롤러는 프로세스 ID에 따라 메모리 내의 페이지 테이블의 위치를 결정하며, 대응하는 동작을 자동으로 수행할 수 있다. 메모리 관리 장치에 의해 메모리가 관리되기 때문에, 운영 시스템의 부하가 감소될 수 있고 메모리 관리 효율이 효과적으로 개선될 수 있다.
본 발명의 실시예들에서 제공되는 메모리 관리 방법을 보다 잘 구현하기 위해, 본 발명의 실시예는 전술한 메모리 관리 방법에 기초한 장치를 더 제공한다. 용어의 의미는 전술한 메모리 관리에서의 의미와 동일하고, 구현의 세부 사항에 대해서는 방법 실시예에서의 설명을 참조한다.
메모리 관리 장치(101)는 메모리 컨트롤러 내에 위치한다. 메모리 관리 장치(101)는 구체적으로 변환 색인 버퍼 TLB(1011), 메모리 관리 유닛(MMU)(1012) 및 마이크로 컨트롤러(1013)를 포함한다. 도 4를 참조하면, 도 4는 메모리 관리 장치의 개략적인 구조도이다.
TLB(1011)는, 프로세서에 의해 전송된, 가상 어드레스를 운반하는 페치 요청(fetch request)을 수신하고, TLB가 페치 요청 내에서 운반된 가상 어드레스에 대응하는 페이지 테이블을 캐싱(cache)하는지 여부를 결정하며, TLB가 페이지 테이블을 캐싱하면, 가상 어드레스들 및 물리 어드레스들 사이의 대응관계를 포함하는 페이지 테이블로부터 가상 어드레스에 대응하는 물리 어드레스를 획득하도록 구성된다.
MMU(1012)는, TLB가 페치 요청 내에서 운반된 가상 어드레스에 대응하는 페이지 테이블을 캐싱하지 않는 때, 페이지 테이블의 베이스 어드레스 필드를 획득하고 페이지 테이블을 검색하며, 페이지 테이블이 가상 어드레스를 포함하면, 가상 어드레스에 대응하는 물리 어드레스를 획득하도록 구성된다.
마이크로 컨트롤러(1013)는, 페이지 테이블이 가상 어드레스를 포함하지 않는 때, 가상 어드레스가 유효(valid)한지 여부를 결정하고, 가상 어드레스가 유효한 것으로 결정되는 때, 블랭크 페이지를 신청하도록 구성된다.
일 실시예에서, 마이크로 컨트롤러(1013)는 블랭크 페이지에 대한 신청이 실패하는 때, 대체 페이지를 선택하고 운영 시스템이 페이지를 대체할 수 있도록, 대체 페이지를 운영 시스템에 제공하도록 더 구성된다.
일 실시예에서, 마이크로 컨트롤러(1013)는 구체적으로, 가상 어드레스가 할당된 가상 어드레스 공간 내에 있는지 여부를 결정하고, 가상 어드레스가 할당된 가상 어드레스 공간 내에 있으면, 가상 어드레스가 유효한 것으로 결정하거나, 또는 가상 어드레스가 할당된 가상 어드레스 공간 내에 있지 않으면, 가상 어드레스가 가상 메모리 어드레스(VMA: virtual memory address) 내에 존재하는지 여부를 결정하고, 가상 어드레스가 VMA 내에 존재하면 가상 어드레스가 유효한 것으로 결정하도록 구성된다.
일 실시예에서, 마이크로 컨트롤러(1013)는, 페치 요청을 수신하고, 페치 요청 내에서 운반된 가상 어드레스에 대응하는 프로세스의 페이지 테이블의 베이스 어드레스 필드를 획득하며, MMU가 베이스 어드레스 필드에 따라 페이지 테이블을 검색할 수 있도록, MMU에 베이스 어드레스 필드를 전송하도록 더 구성된다.
일 실시예에서, 마이크로 컨트롤러(1013)는, 미리 설정된 기간 내에서 각 캐싱된 블랭크 페이지의 사용 빈도를 카운팅하고, 블랭크 페이지를 신청할 때 미리 설정된 기간 내에서 최저 사용 빈도를 가진 블랭크 페이지를 선택하도록 더 구성된다.
또한, 메모리 관리 장치(101)는 구성 공간(1014) 및 피드백 공간(1015)을 더 포함할 수 있으며, 여기서 구성 공간 및 피드백 공간은 운영 시스템과 메모리 컨트롤러 간의 직접적인 정보 교환을 위한 공간이다. 예를 들어, 구성 공간 및 피드백 공간은 어드레싱 가능한(addressable) 레지스터들의 파일(pile)로서 구현될 수 있다. 운영 시스템은 인터랙션 채널을 통해 구성 공간에 정보를 전송할 수 있고, 피드백 공간으로부터 정보를 획득할 수 있다. 마이크로 컨트롤러는 구성 공간에서 직접 정보를 판독할 수 있고, 피드백 공간에 정보를 기록할 수 있다.
또한, 메모리 관리 장치(101)는 판독 및 기록의 양방향 데이터를 캐싱하도록 구성된 데이터 캐싱 모듈(1016)을 더 포함할 수 있다.
구현 방식에서, 마이크로 컨트롤러의 코드는 온-칩 SRAM에서 동작할 수 있다.
본 발명의 실시예에서의 TLB 및 MMU는 모두 메모리 컨트롤러에 위치하고 물리 메모리에 더 가깝기 때문에, 하드웨어에 의한 메모리 관리를 용이하게 한다.
상기로부터 알 수 있듯이, 본 발명의 실시예에서, 메모리가 스토리지 관리 장치에 의해 관리되기 때문에, 운영 시스템의 부하를 감소시킬 수 있다. 스토리지 관리 장치는 페이지 테이블이 페치 요청 내에서 운반된 가상 어드레스를 포함하지 않는 것으로 결정하는 때, 운영 시스템의 인터럽트를 트리거링하지 않는 대신에, 메모리 관리 장치가 메모리를 관리하고, 가상 어드레스가 유효한 것으로 결정하는 때, 블랭크 페이지를 신청한다. 메모리 관리 장치는 메모리 컨트롤러에 위치하고 물리 메모리에 더 가깝기 때문에, 메모리 관리 효율을 효과적으로 개선할 수 있다.
본 발명은 또한 메모리 컨트롤러를 제공한다. 자세한 내용은 도 1을 참조한다. 메모리 컨트롤러는 전술한 임의의 메모리 관리 장치를 포함할 수 있으며, 메모리 관리 장치는 변환 색인 버퍼(TLB), 메모리 관리 유닛(MMU) 및 마이크로 컨트롤러를 포함할 수 있다. 구체적인 구현을 위해, 전술한 실시예를 참조하고 상세한 설명은 여기서 다시 기술되지 않을 것이다.
이 실시예의 메모리 컨트롤러는 CPU에 통합될 수 있거나, 독립적인 칩(chip)일 수 있다.
전술한 실시예에서, 각 실시예의 설명은 각각의 초점(focus)을 갖는다. 실시예에서 상세히 설명되지 않은 부분에 대해서는, 다른 실시예에서의 관련 설명을 참조한다.
본원에서 제공된 몇몇 실시예에서, 개시된 시스템, 장치, 및 방법은 다른 방식으로 구현될 수 있음이 이해되어야 한다. 예를 들어, 설명된 장치 실시예는 단지 예시적인 것이다. 예를 들어, 유닛 구분은 논리적인 기능 구분일 뿐이고 실제 구현에서 다른 구분일 수 있다. 예를 들어, 복수의 유닛 또는 구성 요소가 결합되거나 다른 시스템에 통합되거나, 또는 일부 특징이 무시되거나 수행되지 않을 수 있다. 또한, 표시되거나 논의된 상호 연결 또는 직접 연결 또는 통신 연결은 일부 인터페이스를 사용하여 구현될 수 있다. 장치 또는 유닛 간의 간접적 연결 또는 통신 연결은 전자적, 기계적, 또는 다른 형태로 구현될 수 있다.
본 발명의 실시예에서의 기능 유닛은 하나의 처리 유닛에 통합될 수 있거나, 각각의 유닛이 물리적으로 단독으로 존재할 수도 있거나, 또는 둘 이상의 유닛이 하나의 유닛으로 통합될 수도 있다. 통합된 유닛은 하드웨어의 형태로 구현될 수 있거나, 소프트웨어 기능 유닛의 형태로 구현될 수 있다.
본 발명에서 제공되는 메모리 관리 방법 및 장치 및 메모리 컨트롤러는 상술 한 바에 따라 설명되고, 본 발명의 원리 및 구현 방식은 구체적인 예를 통해 여기서 설명된다. 실시예들에 대한 전술한 설명은 단지 본 발명의 방법 및 핵심 사상을 이해하는 것을 돕기 위해 제공된다. 또한, 당업자는 본 발명의 사상에 따라 특정 구현 방식 및 적용 범위를 수정할 수 있다. 결론적으로, 본 명세서의 내용은 본 발명의 제한으로서 해석되어서는 안된다.

Claims (12)

  1. 메모리 컨트롤러 내에 위치하는 메모리 관리 장치에 적용되는 메모리 관리 방법으로서,
    프로세서에 의해 전송된, 가상 어드레스를 운반하는 페치 요청(fetch request)을 수신하는 단계,
    변환 색인 버퍼(TLB: translation look-aside buffer)가 상기 페치 요청 내에서 운반된 상기 가상 어드레스에 대응하는 페이지 테이블을 캐싱(cache)하는지 여부를 결정하고, 상기 TLB가 상기 페이지 테이블을 캐싱하면, 상기 페이지 테이블로부터 상기 가상 어드레스에 대응하는 물리 어드레스를 획득하거나, 또는 상기 TLB가 상기 페이지 테이블을 캐싱하지 않으면, 상기 페이지 테이블의 베이스 어드레스 필드를 획득하고 상기 페이지 테이블을 검색하며, 상기 페이지 테이블이 상기 페치 요청 내에서 운반된 상기 가상 어드레스를 포함하면, 상기 가상 어드레스에 대응하는 물리 어드레스를 획득하는 단계, 그리고
    상기 페이지 테이블이 상기 페치 요청 내에서 운반된 상기 가상 어드레스를 포함하지 않으면, 상기 가상 어드레스가 유효(valid)한지 여부를 결정하고, 상기 가상 어드레스가 유효한 것으로 결정되는 때 블랭크 페이지를 신청하는 단계
    를 포함하고,
    상기 페이지 테이블은 가상 어드레스와 물리 어드레스 간 대응관계를 포함하고, 상기 TLB는 상기 메모리 관리 장치 내에 있는,
    메모리 관리 방법.
  2. 제1항에 있어서,
    상기 블랭크 페이지에 대한 신청이 성공하면, 메모리 판독 및 기록을 시작하는 단계, 그리고
    상기 블랭크 페이지에 대한 신청이 실패하면, 대체 페이지를 선택하고 운영 시스템이 페이지를 대체할 수 있도록, 상기 대체 페이지를 상기 운영 시스템에 제공하는 단계
    를 더 포함하는 메모리 관리 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 가상 어드레스가 유효한지 여부를 결정하는 것은 구체적으로,
    상기 가상 어드레스가 할당된 가상 어드레스 공간 내에 있는지 여부를 결정하고, 상기 가상 어드레스가 상기 할당된 가상 어드레스 공간 내에 있으면, 상기 가상 어드레스가 유효한 것으로 결정하는 단계, 또는
    상기 가상 어드레스가 상기 할당된 가상 어드레스 공간 내에 있지 않으면, 상기 가상 어드레스가 가상 메모리 어드레스(VMA: virtual memory address) 내에 존재하는지 여부를 결정하고, 상기 가상 어드레스가 상기 VMA 내에 존재하면 상기 가상 어드레스가 유효한 것으로 결정하는 단계를 포함하는,
    메모리 관리 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 블랭크 페이지를 신청하는 단계 이전에,
    미리 설정된 기간 내에서 각 캐싱된 블랭크 페이지의 사용 빈도를 카운팅하는 단계, 그리고
    상기 블랭크 페이지를 신청할 때 상기 미리 설정된 기간 내에서 최저 사용 빈도를 가진 블랭크 페이지를 선택하는 단계
    를 더 포함하는 메모리 관리 방법.
  5. 제2항에 있어서,
    상기 블랭크 페이지에 대한 신청이 성공한 후에,
    상기 페이지 테이블이 상기 페치 요청 내에서 운반된 상기 가상 어드레스를 포함할 수 있도록 상기 페이지 테이블을 업데이트하고 상기 TLB에 상기 페이지 테이블을 저장하는 단계
    를 더 포함하는 메모리 관리 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 페이지 테이블이 상기 페치 요청 내에서 운반된 상기 가상 어드레스를 포함하는 것으로 결정되면, 상기 가상 어드레스에 대응하는 물리 어드레스를 획득하기 이전에,
    상기 페이지 테이블을 상기 TLB에 저장하는 단계
    를 더 포함하는 메모리 관리 방법.
  7. 메모리 컨트롤러 내에 위치하는 메모리 관리 장치로서, 변환 색인 버퍼(TLB: translation look-aside buffer), 메모리 관리 유닛(MMU: memory management unit), 및 마이크로 컨트롤러를 포함하고,
    상기 TLB는, 프로세서에 의해 전송된, 가상 어드레스를 운반하는 페치 요청(fetch request)을 수신하고, 상기 TLB가 상기 페치 요청 내에서 운반된 상기 가상 어드레스에 대응하는 페이지 테이블을 캐싱(cache)하는지 여부를 결정하며, 상기 TLB가 상기 페이지 테이블을 캐싱하면, 가상 어드레스들 및 물리 어드레스들 사이의 대응관계를 포함하는 상기 페이지 테이블로부터 상기 가상 어드레스에 대응하는 물리 어드레스를 획득하도록 구성되며,
    상기 MMU는, 상기 TLB가 상기 페치 요청 내에서 운반된 상기 가상 어드레스에 대응하는 페이지 테이블을 캐싱하지 않는 때, 상기 페이지 테이블의 베이스 어드레스 필드를 획득하고 상기 페이지 테이블을 검색하며, 상기 페이지 테이블이 상기 가상 어드레스를 포함하면, 상기 가상 어드레스에 대응하는 물리 어드레스를 획득하도록 구성되고,
    상기 마이크로 컨트롤러는, 상기 페이지 테이블이 상기 가상 어드레스를 포함하지 않는 때, 상기 가상 어드레스가 유효(valid)한지 여부를 결정하고, 상기 가상 어드레스가 유효한 것으로 결정되는 때, 블랭크 페이지를 신청하도록 구성된,
    메모리 관리 장치.
  8. 제7항에 있어서,
    상기 마이크로 컨트롤러는, 상기 블랭크 페이지에 대한 신청이 성공하는 때, 메모리 판독 및 기록을 시작하고, 상기 블랭크 페이지에 대한 신청이 실패하는 때, 대체 페이지를 선택하고 운영 시스템이 페이지를 대체할 수 있도록, 상기 대체 페이지를 상기 운영 시스템에 제공하도록 더 구성된,
    메모리 관리 장치.
  9. 제7항 또는 제8항에 있어서,
    상기 마이크로 컨트롤러는 구체적으로, 상기 가상 어드레스가 할당된 가상 어드레스 공간 내에 있는지 여부를 결정하고, 상기 가상 어드레스가 상기 할당된 가상 어드레스 공간 내에 있으면, 상기 가상 어드레스가 유효한 것으로 결정하거나, 또는 상기 가상 어드레스가 상기 할당된 가상 어드레스 공간 내에 있지 않으면, 상기 가상 어드레스가 가상 메모리 어드레스(VMA: virtual memory address) 내에 존재하는지 여부를 결정하고, 상기 가상 어드레스가 상기 VMA 내에 존재하면 상기 가상 어드레스가 유효한 것으로 결정하도록 구성된,
    메모리 관리 장치.
  10. 제7항 내지 제9항 중 어느 한 항에 있어서,
    상기 마이크로 컨트롤러는, 상기 페치 요청을 수신하고, 상기 페치 요청 내에서 운반된 상기 가상 어드레스에 대응하는 프로세스의 페이지 테이블의 베이스 어드레스 필드를 획득하며, 상기 MMU가 상기 베이스 어드레스 필드에 따라 상기 페이지 테이블을 검색할 수 있도록, 상기 MMU에 상기 베이스 어드레스 필드를 전송하도록 더 구성된,
    메모리 관리 장치.
  11. 제7항 내지 제10항 중 어느 한 항에 있어서,
    상기 마이크로 컨트롤러는, 미리 설정된 기간 내에서 각 캐싱된 블랭크 페이지의 사용 빈도를 카운팅하고, 상기 블랭크 페이지를 신청할 때 상기 미리 설정된 기간 내에서 최저 사용 빈도를 가진 블랭크 페이지를 선택하도록 더 구성된,
    메모리 관리 장치.
  12. 제7항 내지 제11항 중 어느 한 항에 따른 메모리 관리 장치를 포함하는 메모리 컨트롤러.
KR1020177003800A 2014-07-31 2015-07-22 메모리 관리 방법 및 장치, 및 메모리 컨트롤러 KR101893966B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201410373858.2 2014-07-31
CN201410373858.2A CN105446889B (zh) 2014-07-31 2014-07-31 一种内存管理方法、装置以及内存控制器
PCT/CN2015/084798 WO2016015583A1 (zh) 2014-07-31 2015-07-22 一种内存管理方法、装置以及内存控制器

Publications (2)

Publication Number Publication Date
KR20170029594A true KR20170029594A (ko) 2017-03-15
KR101893966B1 KR101893966B1 (ko) 2018-08-31

Family

ID=55216758

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177003800A KR101893966B1 (ko) 2014-07-31 2015-07-22 메모리 관리 방법 및 장치, 및 메모리 컨트롤러

Country Status (6)

Country Link
US (1) US10108553B2 (ko)
EP (1) EP3163451B1 (ko)
KR (1) KR101893966B1 (ko)
CN (1) CN105446889B (ko)
ES (1) ES2704751T3 (ko)
WO (1) WO2016015583A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977577B (zh) * 2016-10-21 2020-03-13 龙芯中科技术有限公司 访存指令访问检测方法及装置
CN110389911A (zh) * 2018-04-23 2019-10-29 珠海全志科技股份有限公司 一种设备内存管理单元的预取方法、装置及系统
CN108710584B (zh) * 2018-05-22 2021-08-31 郑州云海信息技术有限公司 一种提高tlb刷新效率的方法
CN111143900B (zh) * 2019-12-24 2023-09-26 海光信息技术(苏州)有限公司 数据处理、访问控制方法、系统、器件、设备、存储介质
CN118103824A (zh) * 2021-06-09 2024-05-28 安法布里卡公司 通过网络协议的透明远程存储器访问
CN115794667B (zh) * 2023-01-19 2023-04-18 北京象帝先计算技术有限公司 内存管理方法、系统、组件及设备

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5388244A (en) * 1992-09-17 1995-02-07 International Business Machines Corporation Controls for initial diversion of page-frame logical content as part of dynamic virtual-to-real translation of a virtual page address
US5835964A (en) * 1996-04-29 1998-11-10 Microsoft Corporation Virtual memory system with hardware TLB and unmapped software TLB updated from mapped task address maps using unmapped kernel address map
US5897664A (en) * 1996-07-01 1999-04-27 Sun Microsystems, Inc. Multiprocessor system having mapping table in each node to map global physical addresses to local physical addresses of page copies
KR19980072720A (ko) 1997-03-07 1998-11-05 류첸쾅 저주파 복사방지용 전원 전환장치
US6490671B1 (en) * 1999-05-28 2002-12-03 Oracle Corporation System for efficiently maintaining translation lockaside buffer consistency in a multi-threaded, multi-processor virtual memory system
US6961840B2 (en) * 2002-09-30 2005-11-01 International Business Machines Corporation Method and apparatus for managing a dynamic alias page table
US7047320B2 (en) 2003-01-09 2006-05-16 International Business Machines Corporation Data processing system providing hardware acceleration of input/output (I/O) communication
US7080220B2 (en) * 2003-07-03 2006-07-18 International Business Machines Corporation Page replacement with a re-reference indicator
US20070094445A1 (en) * 2005-10-20 2007-04-26 Trika Sanjeev N Method to enable fast disk caching and efficient operations on solid state disks
US7822941B2 (en) * 2006-06-05 2010-10-26 Oracle America, Inc. Function-based virtual-to-physical address translation
CN101013404A (zh) * 2007-01-26 2007-08-08 浙江大学 面向异构多核体系的分页式存储空间管理方法
US8074045B2 (en) * 2008-05-30 2011-12-06 Vmware, Inc. Virtualization with fortuitously sized shadow page tables
CN101539869A (zh) * 2009-04-13 2009-09-23 浙江大学 与调度性能直接相关的内存管理核的硬件化的方法
US9355023B2 (en) * 2011-03-15 2016-05-31 Anirudh Badam Virtual address pager and method for use with a bulk erase memory
KR20120129695A (ko) 2011-05-20 2012-11-28 삼성전자주식회사 메모리 관리 유닛, 이를 포함하는 장치들 및 이의 동작 방법
CN102929796A (zh) * 2012-06-01 2013-02-13 杭州中天微系统有限公司 同时支持软件回填与硬件回填的内存管理模块

Also Published As

Publication number Publication date
US20170132148A1 (en) 2017-05-11
US10108553B2 (en) 2018-10-23
EP3163451A1 (en) 2017-05-03
WO2016015583A1 (zh) 2016-02-04
KR101893966B1 (ko) 2018-08-31
ES2704751T3 (es) 2019-03-19
CN105446889A (zh) 2016-03-30
EP3163451B1 (en) 2018-10-10
CN105446889B (zh) 2019-02-12
EP3163451A4 (en) 2017-07-26

Similar Documents

Publication Publication Date Title
KR101893966B1 (ko) 메모리 관리 방법 및 장치, 및 메모리 컨트롤러
US10802987B2 (en) Computer processor employing cache memory storing backless cache lines
KR102273622B1 (ko) 거대한 페이지들을 지원하는 메모리 관리
US7681020B2 (en) Context switching and synchronization
CN104346294B (zh) 基于多级缓存的数据读/写方法、装置和计算机系统
US8095736B2 (en) Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures
US9792221B2 (en) System and method for improving performance of read/write operations from a persistent memory device
US20150019798A1 (en) Method and Apparatus for Providing Dual Memory Access to Non-Volatile Memory
US8504794B1 (en) Override system and method for memory access management
US8347065B1 (en) System and method for concurrently managing memory access requests
KR102026877B1 (ko) 메모리 관리 유닛 및 그 동작 방법
EP3446223A1 (en) Object tagged memory monitoring method and processing apparatus
US7197605B2 (en) Allocating cache lines
US10467140B2 (en) Apparatus having main TLB and local TLBS, and configured to set selected size for new entry allocated to local TLB to a default size
US20060123197A1 (en) System, method and computer program product for application-level cache-mapping awareness and reallocation
WO2012112710A2 (en) Systems and methods for managing data input/output operations
US8706975B1 (en) Memory access management block bind system and method
WO2023055478A1 (en) Using request class and reuse recording in one cache for insertion policies of another cache

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