KR20200107101A - 주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 생성 방법 - Google Patents

주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 생성 방법 Download PDF

Info

Publication number
KR20200107101A
KR20200107101A KR1020190025655A KR20190025655A KR20200107101A KR 20200107101 A KR20200107101 A KR 20200107101A KR 1020190025655 A KR1020190025655 A KR 1020190025655A KR 20190025655 A KR20190025655 A KR 20190025655A KR 20200107101 A KR20200107101 A KR 20200107101A
Authority
KR
South Korea
Prior art keywords
virtual address
hash function
exception
address
virtual
Prior art date
Application number
KR1020190025655A
Other languages
English (en)
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 에스케이하이닉스 주식회사
Priority to KR1020190025655A priority Critical patent/KR20200107101A/ko
Priority to US16/596,104 priority patent/US11397689B2/en
Priority to CN201911000053.2A priority patent/CN111666229B/zh
Publication of KR20200107101A publication Critical patent/KR20200107101A/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
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/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
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • 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
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • 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/1024Latency reduction
    • 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/1028Power efficiency
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency 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/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • 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
    • 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/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Memory System (AREA)

Abstract

본 발명의 실시 예에 따른 메모리 관리 유닛은 적어도 하나의 가상 주소 그룹 및 상기 적어도 하나의 가상 주소 그룹에 맵핑된 해시 함수 타입 정보가 저장된 가상 주소 대 해시 함수(virtual address to hash function, V2H) 테이블 및 상기 가상 주소 그룹 내에서 해시 함수에 의해 물리 주소로 변환되지 않는 적어도 하나의 예외 가상 주소 및 상기 예외 가상 주소에 맵핑된 물리 주소가 저장된 예외 맵핑 테이블을 포함하는 내부 메모리; 및 호스트로부터 가상 주소가 제공되면, 상기 내부 메모리에 포함된 상기 V2H 테이블을 참조하여 상기 가상 주소를 포함하는 가상 주소 그룹에 맵핑된 해시 함수 타입 정보를 확인하고, 상기 해시 함수 타입 정보에 대응하는 해시 함수를 이용하여 상기 가상 주소를 물리 주소로 변환하는 해시 함수 모듈을 포함한다.

Description

주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 생성 방법{Memory management unit having address translation function, data processing structure including the same and method for generating address translation information}
본 발명은 컴퓨터 시스템에 관한 것으로, 보다 구체적으로는 주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 생성 방법 에 관한 것이다.
컴퓨터 시스템은 데이터를 처리하기 위하여 주로 고속의 중앙 처리 장치(CPU, central processing unit)를 사용하며, 오늘날 반도체 공정의 발달로 CPU는 고속의 데이터 처리가 가능해졌다.
그러나, 처리를 위하여 CPU에 제공되는 데이터는 CPU의 동작 속도에 비하여 상대적으로 동작 속도가 느린 외부 메모리에 위치하며, 이로 인해 CPU에서의 데이터 처리가 지연되는 문제가 발생한다. 이러한 문제를 해결하기 위해, CPU 내부에 캐시(cache)를 내장하여, 외부 메모리의 느린 동작 속도를 보완하도록 하였다.
최근에는 처리해야 하는 데이터의 절대적인 양이 증가함에 따라, 잦은 데이터 로딩으로 인한 속도 저하를 보완하기 위하여, 다층의 캐시 구조를 채용하고 있다. 또한, 메모리 내부에서 데이터를 처리하기 위한 데이터 처리 구조(PIM, Processing In-Memory) 및 메모리에 근접하여 데이터를 처리하기 위한 데이터 처리 구조(PNM, Processing Near-Memory)에 관한 연구도 활발히 진행되고 있다.
CPU는 PIM 및 PNM과 같은 데이터 처리 구조에 연산 작업을 위임할 때, 데이터 처리 구조에서 정확한 연산을 수행할 수 있도록 가상 주소를 물리 주소로 변환한 후 변환된 물리 주소를 데이터 처리 구조로 제공한다. 이와 같이, CPU에서 데이터 처리 구조에 작업을 위임할 때마다 가상 주소를 일일이 물리 주소로 변환하기 위한 오버헤드가 발생하는 문제가 있다. 따라서, 데이터 처리 구조 내에서 가상 주소를 물리 주소로 변환하기 위한 연구도 진행되고 있다.
본 발명의 실시 예는 주소 변환 정보를 저장하는 공간의 크기, 주소 변환에 소요되는 시간 및 주소 변환에 소모되는 전력을 줄일 수 있는 주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 테이블 생성 방법을 제공한다.
본 발명의 실시 예에 따른 메모리 관리 유닛은 적어도 하나의 가상 주소 그룹 및 상기 적어도 하나의 가상 주소 그룹에 맵핑된 해시 함수 타입 정보가 저장된 가상 주소 대 해시 함수(virtual address to hash function, V2H) 테이블 및 상기 가상 주소 그룹 내에서 해시 함수에 의해 물리 주소로 변환되지 않는 적어도 하나의 예외 가상 주소 및 상기 예외 가상 주소에 맵핑된 물리 주소가 저장된 예외 맵핑 테이블을 포함하는 내부 메모리; 및 호스트로부터 가상 주소가 제공되면, 상기 내부 메모리에 포함된 상기 V2H 테이블을 참조하여 상기 가상 주소를 포함하는 가상 주소 그룹에 맵핑된 해시 함수 타입 정보를 확인하고, 상기 해시 함수 타입 정보에 대응하는 해시 함수를 이용하여 상기 가상 주소를 물리 주소로 변환하는 해시 함수 모듈을 포함한다.
본 발명의 실시 예에 따른 데이터 처리 구조는 중앙 처리 장치(central processing unit, CPU)로부터 제공되는 명령에 따라 연산을 수행하는 복수의 연산 유닛들로 구성된 연산부; 및 상기 CPU로부터 제공된 가상 주소를 해시 함수를 이용하여 물리 주소로 변환하고, 변환된 물리 주소와 상기 CPU로부터 제공된 명령을 외부에 구비된 외부 메모리에 제공하는 메모리 관리 유닛을 포함한다.
본 발명의 실시 예에 따른 주소 변환 정보 생성 방법은 복수의 해시 함수들 중 선택된 해시 함수를 이용하여 맵핑 대상 가상 주소 그룹에 대한 맵핑 가능 여부를 검사하는 단계; 상기 맵핑 대상 가상 주소 그룹 내의 모든 가상 주소들이 물리 주소들로 변환되는지 여부를 판단하는 단계; 상기 모든 가상 주소들이 물리 주소들로 변환되면, 예외 가상 주소의 존재 여부를 나타내는 정보가 저장되는 예외 필드가 예외 가상 주소가 존재하지 않음을 나타내는 제1 값으로 설정된 가상 주소 대 해시 함수(virtual address to hash function, V2H) 엔트리를 생성하는 단계를 포함한다.
본 실시 예에 따르면, 데이터 처리 구조 내에서 가상 주소를 물리 주소로 변환함에 따라 CPU에서 주소 변환을 수행할 필요가 없으므로, CPU에서 주소 변환을 위한 오버헤드가 발생하는 것을 방지할 수 있다.
또한, 본 실시 예에 따르면, 가상 주소 그룹 별로 주소 변환을 위한 해시 함수가 맵핑된 주소 변환 정보 테이블을 생성하여 저장함으로써, 주소 변환 정보 저장에 요구되는 공간의 크기를 줄일 수 있다.
또한, 본 실시 예에 따르면, 대부분의 가상 주소들은 해시 함수를 이용하여 물리 주소로 변환함에 따라 기존의 TLB(translation lookaside buffer)와 유사한 구조를 갖는 예외 맵핑 테이블에 접근하는 횟수를 크게 감소시킬 수 있으므로, 주소 변환에 소모되는 전력 낭비를 최소화할 수 있다.
도 1은 본 발명의 실시 예에 따른 시스템을 나타낸 도면이다.
도 2는 도 1의 메모리 장치의 구성을 나타낸 도면이다.
도 3은 CPU와 메모리 장치 간의 신호 흐름을 나타낸 도면이다.
도 4a는 본 발명의 실시 예에 따른 메모리 관리 유닛의 구성을 나타낸 도면이다.
도 4b는 본 발명의 실시 예에 따른 V2H(virtual address to hash function) 테이블을 예시적으로 나타낸 도면이다.
도 4c는 본 발명의 실시 예에 따른 예외 맵핑 테이블(exception mapping table)을 예시적으로 나타낸 도면이다.
도 5는 본 발명의 실시 예에 따른 메모리 관리 유닛에서 가상 주소를 물리 주소로 변환하는 과정을 예시적으로 나타낸 도면이다.
도 6은 본 발명의 실시 예에 따른 주소 변환 정보 생성 방법을 나타낸 순서도이다.
도 7은 본 발명의 실시 예에 따른 메모리 장치를 포함하는 시스템의 전반적인 레이아웃을 보여주는 도면이다.
이하, 첨부한 도면에 의거하여 본 발명의 바람직한 실시 예를 설명하도록 한다.
도 1은 본 발명의 실시 예에 따른 시스템(10)을 나타낸 도면이다.
도 1을 참조하면, 시스템(10)은 시스템 버스(300)에 전기적으로 연결되는 중앙 처리 장치(central processing unit, CPU)(100) 및 메모리 장치(200)를 포함할 수 있다. 일 실시 예에 따르면, 시스템(10)은 중앙 처리 장치(100)의 내부에 내장되거나 또는 중앙 처리 장치(100)에 별도로 연결된 캐시를 더 포함할 수 있다. 중앙 처리 장치(CPU)(100)는 호스트(host), 외부 호스트(external host), 외부 장치(external device) 또는 프로세서 호스트(processor host)라 불릴 수 있으며, 이하에서는 주로 “CPU”라 불릴 것이다.
도 1에서 참조 번호 “200”은 메모리 장치(200)의 패키징(packaging) 또는 하우징(housing)을 나타낼 수 있다. 예를 들어, 메모리 장치(200)는 DRAM(dynamic random access memory) 칩들 또는 다른 반도체-기반(semiconductor-based)의 메모리 칩들과 같은 하나 또는 그 이상의 메모리 칩들을 포함하도록 패키징될 수 있다. 본 발명의 기술적 사상을 설명하는데 있어서, 메모리 모듈 당 복수의 다이들(dies)/칩들(chips)의 개수, 칩 당 복수의 메모리 뱅크들(memory banks)의 개수 및 하나의 칩 내의 메모리 뱅크들의 내부 특성들(internal configuration), 또는 각 칩의 저장 용량은 크게 관련이 없으며, 따라서 이에 대한 자세한 내용은 이하에서는 생략될 것이다.
일 실시 예에 있어서, CPU(100)는 일반적인 목적으로 사용되는 마이크로프로세서일 수 있다. 본 출원의 기술적 사상을 설명하는데 있어서, “CPU”와 “프로세서”는 설명의 편의를 위하여 상호 교환적으로 사용될 수 있다. 그러나, CPU를 대신하거나 또는 CPU에 추가하여, 프로세서는 예를 들어 마이크로 컨트롤러(microcontroller), DSP(Digital Signal Processor), GPU(Graphics Processing Unit), 전용 ASIC(dedicated Application Specific Integrated Circuit) 프로세서와 같은 다른 타입의 프로세서들을 포함할 수 있음이 이해될 것이다.
더욱이, 일 실시 예에 있어서, CPU(100)는 분산 처리 환경(distributed processing environment)에서 동작하는 하나 이상의 코어(core)를 포함할 수 있다. CPU(100)는 소정의 명령어 세트 아키텍처(Instruction Set Architecture, ISA)에 따라 명령을 실행하고 데이터를 처리할 수 있다. 예를 들어, 소정의 명령어 세트 아키텍처(ISA)는 x86 instruction set architecture(32-bit 또는 64-bit versions), PowerPC® ISA, 또는 RISC(Reduced Instruction Set Computer) ISA를 필요로 하는 MIPS(Microprocessor without Interlocked Pipeline Stages) 명령어 세트 아키텍처 중 적어도 어느 하나 또는 이들의 조합일 수 있다. 일 실시 예에 있어서, 외부 호스트는 프로세서 또는 CPU 기능에 더하여 추가적인 기능을 갖는 시스템 온 칩(SoC, System on Chip)일 수 있다.
설명의 편의상, 도 1에서는 시스템(10)의 일부로서 오직 하나의 메모리 장치(200)만이 도시되어 있다. 그러나, 실제로 구현됨에 있어서, 시스템(10)은 하나 이상의 메모리 장치를 포함할 수 있고, 하나 이상의 메모리 장치는 모두 동일한 타입이거나 또는 서로 다른 타입일 수 있다. 일 실시 예에 있어서, 시스템(10)은 CPU(100)의 동작 제어 하에서 비-3DS 메모리 모듈들뿐만 아니라 3DS 메모리 모듈을 포함할 수 있다. 일반적으로, 메모리 장치(200)는 앞서 언급된 어떠한 반도체-기판의 메모리 또는 스토리지 시스템일 수 있다. 또한, 도 1 또는 도 7의 시스템(10)의 일부로서 도시된 유닛들은 그 자체에 다른 복잡한 소자들을 포함할 수 있음이 이해될 것이다. 다만, 이러한 소자들은 본 발명의 기술적 사상과 큰 상관이 없기에 도면의 간략화 및 설명의 편의를 위하여 도 1 및 도 7에서는 생략되었다.
도 2는 도 1의 메모리 장치(200)의 구성을 나타낸 도면이고, 도 3은 CPU(100)와 메모리 장치(200) 사이 및 메모리 장치(200)의 데이터 처리 구조(210)와 메모리(250) 사이의 신호 흐름을 예시적으로 나타낸 도면이다. 여기에서, 신호는 명령, 가상 주소, 데이터, 연산 결과 등을 통칭하는 용어로서 사용되었다.
도 2를 참조하면, 본 실시 예에 따른 메모리 장치(200)는 데이터 처리 구조(210) 및 메모리(250)를 포함할 수 있다. 설명의 편의상, 도 2에서는 데이터 처리 구조(210)와 메모리(250)가 분리되어 있는 것으로 도시되어 있다. 그러나, 본 실시 예에서, 데이터 처리 구조(210)는 메모리(250)의 내부에 내장되어 데이터를 처리하는 PIM(Processing In-Memory) 또는 메모리(250)에 근접하게 배치되어 데이터를 처리하는 PNM(Processing Near-Memory) 중 적어도 하나로 구현될 수 있다. 도 2에는 도시하지 않았으나, 데이터 처리 구조(210)와 메모리(250)는 내부 버스 또는 TSV(Through Silicon Via)를 통해 전기적으로 연결되어 데이터 및 신호 등을 주고 받을 수 있다.
데이터 처리 구조(210)는 연산부(220) 및 메모리 관리 유닛(230)을 포함할 수 있다. 연산부(220)는 복수의 연산 유닛들(1 내지 N)을 포함할 수 있다. 도 2에서는 복수의 연산 유닛들(1 내지 N)이 일차원배열로 배치된 것을 예로써 도시하였으나, 특별히 이에 한정되는 것은 아니며, 복수의 연산 유닛들(1 내지 N)은 다차원배열로 배치될 수도 있다. 복수의 연산 유닛들(1 내지 N)은 각각 CPU(100)로부터 제공된 명령과 메모리(250)로부터 전송된 데이터에 근거하여 연산을 수행할 수 있다. 복수의 연산 유닛들(1 내지 N)은 동시에 연산을 수행할 수 있으며, 따라서 동시에 많은 양의 데이터를 연산할 수 있다.
메모리 관리 유닛(230)은 CPU(100)로부터 제공된 가상 주소를 물리 주소로 변환하고, 변환된 물리 주소를 메모리(250)로 제공하도록 구성될 수 있다. 가상 주소는 가상 페이지 번호로 불릴 수 있고, 물리 주소는 물리 페이지 번호로 불릴 수 있다. 본 출원의 기술적 사상을 설명하는데 있어서, “가상 주소”와 “가상 페이지 번호” 및 “물리 주소”와 “물리 페이지 번호”는 설명의 편의를 위하여 상호 교환적으로 사용될 수 있다.
일 실시 예에서, 메모리 관리 유닛(230)은 해시 함수를 이용하여 가상 주소를 물리 주소로 변환할 수 있다. 또한, 메모리 관리 유닛(230)은 해시 함수로 변환할 수 없는 가상 주소에 대해서는 예외 맵핑 테이블(233, 도 4a 참조) 또는 페이지 맵핑 테이블(255, 도 5 참조)을 참조하여 물리 주소로 변환할 수 있다. 또한, 메모리 관리 유닛(230)은 변환된 물리 주소를 메모리(250)로 제공할 수 있다. 메모리 관리 유닛(230)의 내부 구성 및 동작은 이후 도면들을 참조하여 상세히 설명한다.
메모리(250)는 메모리 관리 유닛(230)으로부터 제공된 물리 주소에 근거하여 대응하는 위치에 저장된 데이터를 읽거나 또는 대응하는 위치에 데이터를 쓰는 동작을 수행할 수 있다.
도 3을 참조하면, CPU(100)는 데이터 처리 구조(210)의 연산부(220)로 명령을 제공하고, 연산부(220)로부터 연산 결과를 제공받을 수 있다. 또한, CPU(100)는 메모리 관리 유닛(230)으로 가상 주소를 제공할 수 있다. 일 실시 예에서, 메모리(250)에 데이터를 써야 하는 경우, CPU(100)는 메모리(250)로 데이터를 제공할 수 있다.
연산부(220)는 CPU(100)로부터 제공된 명령을 메모리 관리 유닛(230)에 제공할 수 있다. 메모리 관리 유닛(230)은 CPU(100)로부터 제공된 가상 주소를 물리 주소로 변환하고, 변환된 물리 주소와 연산부(230)로부터 제공된 명령을 메모리(250)로 제공할 수 있다. 메모리(250)는 메모리 관리 유닛(230)으로부터 제공된 물리 주소 및 명령에 근거하여 데이터를 읽거나 쓰는 동작을 수행할 수 있다.
예를 들어, 제공된 명령이 읽기 명령인 경우, 메모리(250)는 제공된 물리 주소에 대응하는 위치에 저장된 데이터를 읽고, 읽은 데이터를 연산부(220)의 각 연산 유닛(1 내지 N)으로 제공할 수 있다. 한편, 제공된 명령이 쓰기 명령인 경우, 메모리(250)는 제공된 물리 주소에 대응하는 위치에 CPU(100)로부터 제공된 데이터를 쓸 수 있다.
도 4a는 본 발명의 실시 예에 따른 메모리 관리 유닛(230)의 구성을 나타낸 도면이고, 도 4b는 본 발명의 실시 예에 따른 V2H 테이블(virtual address to hash function table, V2HT)을 예시적으로 나타낸 도면이고, 도 4c는 본 발명의 실시 예에 따른 예외 맵핑 테이블(exception mapping table, EMT)을 예시적으로 나타낸 도면이다.
도 4a를 참조하면, 메모리 관리 유닛(230)은 내부 메모리(231) 및 해시 함수 모듈(235)을 포함할 수 있다. 메모리 관리 유닛(230)은 도 4a에 도시된 구성들 외에 다른 구성들을 포함할 수 있음이 이해될 것이다. 다만, 이러한 다른 구성들은 본 발명의 기술적 사상과 큰 상관이 없기에 도면의 간략화 및 설명의 편의를 위하여 도 4a에서는 생략되었다.
내부 메모리(231)는 SRAM(static random access memory)일 수 있으나, 특별히 이에 한정되는 것은 아니다. 내부 메모리(231)에는 V2H 엔트리(virtual address to hash function entry)들로 구성된 V2H 테이블(V2HT)(232) 및 EV2P 엔트리(exception virtual address to physical address entry)들로 구성된 예외 맵핑 테이블(exception mapping table, EMT)(233)을 포함할 수 있다.
V2H 테이블(V2HT)(232) 및 예외 맵핑 테이블(exception mapping table, EMT)(233)은 CPU(100)에 의해 생성 및 저장될 수 있다. 일 실시 예에서, CPU(100) 상에서 실행되는 운영 시스템(Operation System, OS)은 복수의 가상 주소들을 그룹핑하여 복수의 가상 주소 그룹들을 생성하고, 복수의 가상 주소 그룹들 각각에 대하여 맵핑 가능한 해시 함수를 결정하고, 각 가상 주소 그룹 별로 결정된 해시 함수를 맵핑한 V2H 테이블(V2HT)(232)을 생성할 수 있다. 또한, 운영 시스템(OS)은 생성된 V2H 테이블(V2HT)(232)을 메모리 장치(200)의 메모리 관리 유닛(230) 내의 내부 메모리(231)에 저장하도록 메모리 관리 유닛(230)을 제어할 수 있다.
이와 같이, 실제로 구현됨에 있어서는, CPU(100) 상에서 실행되는 운영 시스템(OS)에 의해 V2H 테이블(V2HT)(232) 및 예외 맵핑 테이블(exception mapping table, EMT)(233)이 생성 및 저장될 수 있으나, 설명의 편의상, CPU(100)에 의해 생성 및 저장되는 것으로 설명한다.
본 실시 예에서, “V2H 엔트리”는 가상 주소 및 가상 주소에 맵핑된 해시 함수 타입을 포함하는 엔트리를 나타내는 용어로서 사용될 수 있다. 도 4b를 참조하면, “V2H 엔트리”는 베이스 가상 주소(base virtual address) 필드(Base VA), 가상 주소 크기 필드(Size), 해시 함수 타입 필드(HF type) 및 예외 가상 주소의 존재 여부를 나타내는 필드 ‘E’를 포함할 수 있다. 즉, “V2H 엔트리”는 복수의 가상 주소들을 포함하는 가상 주소 그룹의 정보(베이스 가장 주소와 크기), 가상 주소 그룹에 맵핑된 해시 함수의 타입 정보 및 가상 주소 그룹 중 맵핑된 해시 함수에 의해 물리 주소로 변환되지 않는 가상 주소(즉, 예외 가상 주소)의 존재 여부에 대한 정보를 포함할 수 있다.
본 실시 예에서, CPU(100)는 사용되는 모든 해시 함수들에 대하여 각각 인덱스를 정의하고, 정의된 인덱스를 “V2H 엔트리”에 포함되는 해시 함수의 타입 정보로서 사용할 수 있다. 또한, CPU(100)는 “V2H 엔트리”의 필드 ‘E’에 제1 값 또는 제2 값을 저장할 수 있다. 여기에서, 제1 값은 ‘0’이고, 제2 값은 ‘1’일 수 있으나, 특별히 이에 한정되는 것은 아니다.
예를 들어, 특정 가상 주소 그룹에 해시 함수가 맵핑되고, 해당 가상 주소 그룹 내의 모든 가상 주소들이 맵핑된 해시 함수에 의해 물리 주소들로 변환되면, CPU(100)는 특정 가상 주소 그룹 내에 예외 가상 주소가 없는 것으로 판단하고, “V2H 엔트리”의 필드 ‘E’에 제1 값을 저장할 수 있다. 반면, 특정 가상 주소 그룹에 해시 함수가 맵핑되고, 해당 가상 주소 그룹 내의 가상 주소들 중 맵핑된 해시 함수에 의해 물리 주소들로 변환되지 않는 가상 주소가 있으면, CPU(100)는 특정 가상 주소 그룹 내에 예외 가상 주소가 있는 것으로 판단하고, “V2H 엔트리”의 필드 ‘E’에 제2 값을 저장할 수 있다.
또한, 특정 가상 주소 그룹에 맵핑되는 해시 함수가 없는 경우, CPU(100)는 해당 가상 주소 그룹에 대한 “V2H 엔트리”의 필드 ‘HF type’에 맵핑되는 해시 함수가 없음을 나타내는 정보 예컨대, ‘None’을 저장할 수 있다. 또한, 특정 가상 주소 그룹에 맵핑되는 해시 함수는 있으나, 해당 가상 주소 그룹에 존재하는 예외 가상 주소의 개수가 예외 맵핑 테이블(EMT)의 남은 엔트리 개수보다 큰 경우, CPU(100)는 해당 가상 주소 그룹에 대한 “V2H 엔트리”의 필드 ‘HF type’에 맵핑되는 해시 함수가 없음을 나타내는 정보 ‘None’을 저장할 수 있다.
또한, 본 실시 예에서, “EV2P 엔트리”는 예외 가상 주소 및 예외 가상 주소에 맵핑된 물리 주소를 포함하는 엔트리를 나타내는 용어로서 사용될 수 있다. 도 4c를 참조하면, “EV2P 엔트리”는 예외 가상 주소 필드(EVA), 물리 주소 필드(PA) 및 예외 가상 주소가 해시 함수와 관련이 있는지 여부를 나타내는 필드 ‘HF’를 포함할 수 있다. 즉, “EV2P 엔트리”는 예외 가상 주소의 정보, 예외 가상 주소에 맵핑된 물리 주소의 정보 및 예외 가상 주소가 해시 함수에 의해 물리 주소로 변환되지 않는 가상 주소에 해당하는지 여부에 대한 정보를 포함할 수 있다. 본 실시 예에서, “예외 가상 주소”는 가상 주소 그룹에 포함된 복수의 가상 주소들 중 해당 가상 주소 그룹에 맵핑된 해시 함수를 이용하여 물리 주소로 변환되지 않는 가상 주소를 의미할 수 있다.
도 4c를 참조하면, CPU(100)는 “EV2P 엔트리”의 필드 ‘HF’에 제1 값 또는 제2 값을 저장할 수 있다. 여기에서, 제1 값은 ‘0’이고, 제2 값은 ‘1’일 수 있으나, 특별히 이에 한정되는 것은 아니다. 예를 들어, 예외 가상 주소(예컨대, ‘0xd120’)가 해시 함수가 맵핑된 가상 주소 그룹 내에 포함되는 가상 주소인 경우, CPU(100)는 “EV2P 엔트리”의 필드 ‘HF’에 제1 값을 저장할 수 있다. 한편, 예외 가상 주소(예컨대, ‘0x8fbc’)가 해시 함수가 맵핑된 가상 주소 그룹 내에 포함되는 가상 주소가 아닌 경우, CPU(100)는 “EV2P 엔트리”의 필드 ‘HF’에 제2 값을 저장할 수 있다.
해시 함수 모듈(235)은 해시 함수를 이용하여 CPU(100)로부터 제공된 가상 주소를 물리 주소로 변환할 수 있다. 예를 들어, 해시 함수 모듈(235)은 해시 함수의 입력 값으로 가상 주소를 사용하고, 해시 함수의 출력 값을 물리 주소로서 사용할 수 있다. 본 실시 예에서, 해시 함수 모듈(235)은 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 해시 함수 모듈(235)은 복수의 해시 함수들을 이용하여 주소 변환을 수행하도록 구성될 수 있다. 예를 들어, 해시 함수 모듈(235)은 서로 다른 타입의 해시 함수로 구현된 복수의 해시 함수 연산 유닛(도시되지 않음)들을 포함할 수 있다. 해시 함수 모듈(235)에서 사용되는 해시 함수들은 레프트 시프트(left shift) 연산, 배타적논리합(exclusive OR) 연산, 모듈러(modular) 연산, 비트 셔플링(bit shuffling) 연산 등을 수행하는 해시 함수들일 수 있으나, 특별히 이에 한정되는 것은 아니며, 이외에 하드웨어 또는 소프트웨어로 간단하게 구현 가능한 다양한 해시 함수들일 수 있다.
도 5는 본 발명의 실시 예에 따른 메모리 관리 유닛(230)에서 가상 주소를 물리 주소로 변환하는 과정을 예시적으로 나타낸 도면이다.
도 5를 참조하면, CPU(100)로부터 가상 페이지 번호(virtual page number) 및 오프셋(offset)을 포함하는 가상 주소(virtual address)가 제공되면, 메모리 관리 유닛(230)은 V2H 테이블(V2HT)(232)에서 제공된 가상 주소를 포함하는 가상 주소 그룹을 검색할 수 있다.
일 실시 예에서, 제공된 가상 주소를 포함하는 가상 주소 그룹에 맵핑된 해시 함수가 없으면(HF type = None), 메모리 관리 유닛(230)은 V2H 테이블(V2HT)(232) 및 예외 맵핑 테이블(EMT)(233)을 이용하지 않고, 메모리(250) 내에 저장된 페이지 맵핑 테이블(255)을 참조하여 가상 주소를 대응하는 물리 주소로 변환할 수 있다. 메모리(250) 내에 저장된 페이지 맵핑 테이블(255)은 메모리(250)의 저장 영역 전체에 대한 물리 주소들 및 물리 주소들에 맵핑된 가상 주소들을 포함한다.
다른 실시 예에서, 제공된 가상 주소를 포함하는 가상 주소 그룹에 맵핑된 해시 함수가 존재하고(HF type = HF 1) 해당 가상 주소 그룹 내에 예외 가상 주소가 없으면(E = 0), 메모리 관리 유닛(230)은 가상 주소와 해시 함수 타입 정보를 해시 함수 모듈(235)로 제공하고, 해시 함수 모듈(235)은 제공된 해시 함수 타입 정보(HF 1)에 대응하는 해시 함수를 이용하여 가상 주소를 물리 주소로 변환할 수 있다.
또 다른 실시 예에서, 제공된 가상 주소를 포함하는 가상 주소 그룹에 맵핑된 해시 함수가 존재하고(HF type = HF 4) 해당 가상 주소 그룹 내에 예외 가상 주소가 있으면(E = 1), 메모리 관리 유닛(230)은 예외 맵핑 테이블(EMT)(233)에서 가상 주소를 검색할 수 있다. 예외 맵핑 테이블(EMT)(233)에 가상 주소가 있으면, 메모리 관리 유닛(230)은 제공된 가상 주소를 예외 맵핑 테이블(EMT)(233)에서 가상 주소에 맵핑된 물리 주소로 변환할 수 있다. 만일, 예외 맵핑 테이블(EMT)(233)에 가상 주소가 없으면, 메모리 관리 유닛(230)은 가상 주소와 해시 함수 타입 정보를 해시 함수 모듈(235)로 제공하고, 해시 함수 모듈(235)은 제공된 해시 함수 타입 정보(HF 4)에 대응하는 해시 함수를 이용하여 가상 주소를 물리 주소로 변환할 수 있다.
이때, 메모리 관리 유닛(230)은 제공된 가상 주소를 예외 맵핑 테이블(EMT)(233)에서 검색하는 동작과 해시 함수를 이용하여 물리 주소로 변환하는 동작을 동시에 수행하거나 또는 순차적으로 수행할 수 있다.
상술한 바와 같이, 변환된 물리 주소는 메모리(250)로 제공될 수 있다.
도 6은 본 발명의 실시 예에 따른 주소 변환 정보 테이블 생성 방법을 나타낸 순서도이다. 도 6을 참조하여, 본 실시 예에 따른 주소 변환 정보 테이블 생성 방법을 설명함에 있어서, 도 1 내지 도 5 중 적어도 하나 이상의 도면이 참조될 수 있다. 본 실시 예에서는, 설명의 편의상, 각 단계의 수행 주체를 CPU(100)로 기재할 것이나, 실제로는 각 단계의 수행 주체가 CPU(100) 상에서 실행되는 운영 시스템(OS)임이 이해될 것이다. 그리고, 본 실시 예에서 사용되는 용어들에 대한 정의는 위에서 상세히 설명하였으므로, 여기에서는 생략한다. 또한, 설명의 편의상, 도 6에는 복수의 가상 주소 그룹들 중 하나의 가상 주소 그룹에 대한 주소 변환 정보 테이블 생성 방법이 도시되었다. 복수의 가상 주소 그룹들 각각에 대하여 도 6에 도시된 S601 단계 내지 S629 단계가 반복적으로 수행됨이 이해될 것이다.
S601 단계에서, CPU(100)는 복수의 해시 함수들 중 맵핑 대상 가상 주소 그룹에 대한 맵핑 가능 여부를 검사하지 않은 해시 함수를 선택할 수 있다. 전술한 바와 같이, 본 실시 예에서는 주소 변환 즉, 가상 주소를 물리 주소로 변환하기 위해 다양한 복수의 해시 함수들이 사용될 수 있으며, 하나의 가상 주소 그룹에 맵핑될 최적의 해시 함수를 결정하기 위해 해당 가상 주소 그룹에 대하여 모든 해시 함수들의 적합성을 검사할 수 있다.
S603 단계에서, CPU(100)는 S601 단계에서 선택된 해시 함수를 이용하여 맵핑 대상 가상 주소 그룹 내의 복수의 가상 주소들에 대한 맵핑 가능 여부를 검사할 수 있다. 여기에서, 맵핑 가능 여부를 검사하는 것은 선택된 해시 함수를 이용하여 복수의 가상 주소들 각각을 물리 주소로 변환하는 과정에서 물리 주소로 변환이 되는지 여부, 변환된 물리 주소가 유효한 물리 주소인지 여부 등을 검사하는 것일 수 있다.
S605 단계에서, CPU(100)는 S603 단계에서 진행된 검사 결과에 근거하여 선택된 해시 함수를 이용하여 맵핑 대상 가상 주소 그룹에 대한 맵핑 가능 여부를 판단할 수 있다. 여기에서, 맵핑 가능 여부는 맵핑 대상 가상 주소 그룹 내의 가상 주소들이 예외 및 충돌 없이 선택된 해시 함수에 의해 물리 주소들로 모두 변환되는지 여부를 의미할 수 있다. 맵핑이 가능한 것으로 판단되면(Yes), 프로세스는 S611 단계로 진행될 수 있다. 맵핑이 불가능한 것으로 판단되면(No), 프로세스는 S607 단계로 진행될 수 있다.
S607 단계에서, CPU(100)는 S601 단계에서 선택된 해시 함수를 이용한 주소 변환 시 맵핑 대상 가상 주소 그룹 내에 존재하는 예외 가상 주소의 개수를 대응하는 해시 함수와 매칭시켜 저장할 수 있다. 예를 들어, CPU(100)는 메모리 관리 유닛(230)의 내부 메모리(231) 내에 해시 함수 별 예외 가상 주소 개수를 저장할 수 있다. 이때, 해시 함수 별 예외 가상 주소 개수는 0을 포함하는 자연수일 수 있다.
S609 단계에서, CPU(100)는 모든 해시 함수에 대한 검사가 완료되었는지 여부를 판단할 수 있다. 모든 해시 함수에 대한 검사가 완료되지 않은 경우(No), 프로세스는 S601 단계로 진행될 수 있다. 모든 해시 함수에 대한 검사가 완료된 경우(Yes), 프로세스는 S613 단계로 진행될 수 있다.
S611 단계에서, CPU(100)는 예외 가상 주소 필드 ‘E’(도 4b 참조)가 제1 값으로 설정되고, S601 단계에서 선택된 해시 함수의 타입 정보를 포함하는 V2H(virtual address to hash function) 엔트리를 생성하고, 생성된 V2H 엔트리를 메모리 관리 유닛(230)의 내부 메모리(231) 내의 V2H 테이블에 저장할 수 있다. 이때, 생성된 V2H 엔트리는 맵핑 대상 가상 주소 그룹의 시작 가상 주소 및 크기 정보를 포함할 수 있다.
S613 단계에서, CPU(100)는 예외 맵핑 테이블(EMT)(233, 도 4c 참조)의 남은 엔트리 수를 확인할 수 있다. 여기에서, 예외 맵핑 테이블(EMT)(233)의 남은 엔트리 수는 예외 맵핑 테이블(EMT)(233)에서 EV2P(exception virtual address to physical address) 엔트리들이 저장되지 않은 공간(또는 영역)의 크기로 이해될 수 있다.
S615 단계에서, CPU(100)는 해시 함수 별 예외 가상 주소 개수를 비교하여 예외 가상 주소 개수가 최소인 해시 함수(이하, ‘제1 해시 함수’라 함)를 선택할 수 있다.
S617 단계에서, CPU(100)는 선택된 제1 해시 함수 이용 시 예외 처리 후 맵핑이 가능한지 여부를 판단할 수 있다. 예를 들어, CPU(100)는 제1 해시 함수를 이용하여 맵핑 대상 가상 주소 그룹 내의 가상 주소들 중 예외 가상 주소를 제외한 나머지 가상 주소들이 충돌 없이 모두 물리 주소로 변환되는지에 근거하여 예외 처리 후 맵핑 가능 여부를 판단할 수 있다. 여기에서, 예외 처리는 맵핑 대상 가상 주소 그룹 내에 존재하는 예외 가상 주소에 대한 EV2P(exception virtual address to physical address) 엔트리를 생성하여 예외 맵핑 테이블(EMT)에 저장하는 것을 의미할 수 있다. 예외 처리 후에도 맵핑이 불가능하면, 프로세스는 S621 단계로 진행될 수 있다. 예외 처리 후 맵핑이 가능하면, 프로세스는 S619 단계로 진행될 수 있다.
S619 단계에서, CPU(100)는 예외 가상 주소 필드 ‘E’가 제2 값으로 설정되고, S601 단계에서 선택된 해시 함수의 타입 정보를 포함하는 V2H(virtual address to hash function) 엔트리를 생성하고, 생성된 V2H 엔트리를 메모리 관리 유닛(230)의 내부 메모리(231) 내의 V2H 테이블에 저장할 수 있다. 이때, 생성된 V2H 엔트리는 맵핑 대상 가상 주소 그룹의 시작 가상 주소 및 크기 정보를 포함할 수 있다.
S621 단계에서, CPU(100)는 예외 맵핑 테이블(EMT)을 참조하여 충돌 물리 페이지가 존재하는지 여부를 확인할 수 있다. 여기에서, 충돌 물리 페이지는 S617 단계에서 맵핑 대상 가상 주소 그룹에서 예외 가상 주소를 제외한 나머지 가상 주소들을 제1 해시 함수를 이용하여 변환한 물리 주소와 동일한 물리 주소를 갖는 페이지를 의미할 수 있다.
S623 단계에서, CPU(100)는 충돌 물리 페이지 중 해시 함수와 무관한 노멀 물리 페이지에 저장된 데이터를 다른 물리 페이지로 이동시킬 수 있다. 예를 들어, CPU(100)는 도 4c에 도시된 예외 맵핑 테이블(EMT)에서 충돌 물리 페이지에 대응하는 필드 ‘HF’를 참조하여 충돌 물리 페이지가 해시 함수가 결정된 다른 가상 주소 그룹의 예외 가상 주소에 맵핑된 물리 주소인지 여부 즉, 해시 함수와 관련되었는지 여부를 판단할 수 있다. 또한, CPU(100)는 해시 함수와 관련된 충돌 물리 페이지에 저장된 데이터는 이동시키지 않고, 해시 함수와 무관한 충돌 물리 페이지(즉, 노멀 물리 페이지)에 저장된 데이터만을 다른 물리 페이지로 이동시킬 수 있다.
S625 단계에서, CPU(100)는 맵핑 대상 가상 주소 그룹에서 예외 가상 주소 및 노멀 물리 페이지에 대응하는 가상 주소를 제외한 나머지 가상 주소들이 제1 해시 함수에 의해 모두 물리 주소들로 변환되는지 여부, 즉, 맵핑 가능 여부를 판단할 수 있다. 맵핑이 가능한 것으로 판단되면(Yes), 프로세스는 S629 단계로 진행될 수 있다. 맵핑이 불가능한 것으로 판단되면(No), 프로세스는 S627 단계로 진행될 수 있다.
S627 단계에서, CPU(100)는 해시 함수 타입 필드 ‘HF type’(도 4b 참조)가 ‘None’으로 설정된 V2H(virtual address to hash function) 엔트리를 생성하고, 생성된 V2H 엔트리를 메모리 관리 유닛(230)의 내부 메모리(231) 내의 V2H 테이블에 저장할 수 있다. 이때, 생성된 V2H 엔트리는 맵핑 대상 가상 주소 그룹의 시작 가상 주소 및 크기 정보를 포함할 수 있다.
S629 단계에서, CPU(100)는 맵핑 대상 가상 주소 그룹에 포함된 예외 가상 주소가 0개인지 여부를 판단할 수 있다. 예외 가상 주소가 0개이면(Yes), 프로세스는 S611 단계로 진행될 수 있다. 예외 가상 주소가 0개가 아니면(No), 프로세스는 S619 단계로 진행될 수 있다.
설명의 편의상, 도 6에서는 예외 가상 주소 개수가 최소인 하나의 해시 함수를 선택하여(S615) 맵핑 대상 가상 주소 그룹에 대한 맵핑 가능 여부를 검사하고, 검사 결과에 따라 맵핑 대상 가상 주소 그룹에 대한 주소 변환 정보를 생성하는 것만을 도시하였으나, 예외 맵핑 테이블(EMT)의 남은 엔트리 수보다 적은 가상 주소 개수를 갖는 해시 함수들을 모두 선택하고 맵핑 가능한 해시 함수가 결정될 때까지 S615 단계 내지 S629 단계를 선택된 해시 함수들의 개수만큼 반복적으로 수행할 수 있다.
도 7은 본 발명의 실시 예에 따른 도 1의 (메모리 장치를 포함하는) 시스템의 전반적인 레이아웃을 보여주는 도면이다. 따라서, 참조 및 설명의 편의를 위하여, 도 7에서는 공통의 시스템 소자들 및 유닛들에 대하여는 도 1과 동일한 참조번호를 사용할 것이다.
도 7에서, 호스트 프로세서 유닛(host processor unit)(100)이 시스템 메모리 유닛(system memory unit)(107), 주변 스토리지 유닛(peripheral storage unit)(109), 하나 또는 그 이상의 입력 장치들(111), 하나 또는 그 이상의 출력 장치들(112), 그리고 네트워크 인터페이스 유닛(network interface unit)(114)에 연결되는 것으로 도시되어 있다. 몇몇의 실시 예들에 있어서, 시스템(10)은 도시된 장치들 또는 유닛들에 대한 하나 이상의 예들을 포함할 것이다. 시스템(10)에 대한 몇몇의 실시 예들에 있어서, 시스템(10)은 컴퓨터 시스템(데스크톱(desktop) 또는 랩톱(laptop)), 태블릿 컴퓨터, 모바일 장치, 휴대폰, 비디오 게임 유닛 또는 콘솔, M2M(machine-to-machine) 통신 유닛, 국경이 없는 “thin” 클라이언트 시스템 또는 다른 타입의 컴퓨팅 또는 데이터 처리 장치를 포함할 것이다. 다양한 실시 예들에 있어서, 시스템(10)은 랙-마운터블(rack-mountalbe) 서비 시스템, 단독형 시스템(standalone system), 또는 다른 적절한 폼 팩터(form factor)로써의 특성을 가질 것이다. 몇몇의 실시 예들에 있어서, 시스템(10)은 서버 시스템 보다는 클라이언트 시스템으로써의 특성을 가질 것이다.
구체적인 실시 예들에 있어서, 호스트 프로세서 유닛(100)은 하나 이상의 CPU를 포함할 것이며, 시스템(10)은 하나 이상의 호스트 프로세서 유닛들(100)을 포함할 것이다. 예를 들어, 하나 이상의 호스트 프로세서 유닛들(100)은 분산하여 처리할 수 있는 특성을 가질 수 있을 것이다. 시스템(10)이 멀티 프로세서 시스템인 경우에, 하나 이상의 CPU 또는 프로세서의 예들이 있을 것이다. 앞서 설명된 바와 같이, 호스트 프로세서 유닛(100)은 SoC(System on Chip)일 것이다.
시스템 메모리 유닛(107)은 도 1의 메모리 장치(200)와 같은 적어도 하나의 메모리 장치를 포함할 것이다. 앞서 설명된 바와 같이, 메모리 장치(200)는, 예를 들어 DRAM, SRAM, PRAM, RRAM, CBRAM, MRAM, STT-MRAM 등과 같은, 반도체 기반의 스토리지 시스템(storage system)일 것이다.
몇몇의 실시 예들에 있어서, 시스템 메모리 유닛(107)은 도 1의 메모리 장치(200)와 같은 적어도 하나의 메모리 장치를 포함할 것이다. 앞서 설명된 바와 같이, 메모리 장치(200)는 하나 또는 그 이상의 비-3DS 메모리 장치들 및 적어도 하나의 3DS 메모리 장치를 포함할 것이다. 비-3DS 메모리(non-3DS memory)는 DDR/DDR2/DDR3/DDR4 SDRAM, Rambus® DRAM, flash memory, 그리고 다양한 타입들의 ROM(Read Only Memory)을 포함할 것이다. 또한, 몇몇의 실시 예들에 있어서, 시스템 메모리 유닛(107)은 하나의 메모리 타입이 아닌, 복수의 서로 다른 타입들의 반도체 메모리들을 포함할 수 있다. 또한 본 발명의 실시 예에 있어서, 시스템 메모리 유닛(107)은 호스트 프로세서 유닛(100)으로부터 제공된 가상 주소를 대응하는 물리 주소로 변환할 수 있는 도 2 내지 도 4a의 메모리 관리 유닛(230)을 포함할 수 있다.
다양한 실시 예들에 있어서, 주변 스토리지 유닛(peripheral storage unit)(109)은 자성(magnetic), 광학(optical), 광자기(magneto-optical), 하드 드라이브와 같은 솔리드-스테이트 스토리지 미디어(solid-state stage media), CD 또는 DVD 등과 같은 광학 디스크, 비-휘발성 RAM 장치들을 지원하기 위한 구성을 포함할 것이다. 몇몇의 실시 예들에 있어서, 주변 스토리지 유닛(109)은 좀더 복잡한 스토리지 장치들/시스템들을 포함할 것이다. 예를 들어, 주변 스토리지 유닛(109)은 RAID(Redundant Array of Independent Disks) 특성에 적합할 수 있는 디스크 어레이들(disk arrays) 또는 표준 SCSI(Small Computer System Interface)를 통하여 프로세서(14)에 연결되는 스토리지 영역 네트워크(SANs, Storage Area Networks), Fibre 채널 인터페이스, a Firewire® (IEEE 1394), 또는 다른 적당한 인터페이스를 포함할 것이다. 일 실시 예에 있어서, 주변 스토리지 유닛(109)은, 예를 들어 PCI Express??(Peripheral Component Interface Express) 표준 기반의 인터페이스, USB(Universal Serial Bus) 프로토콜 기반의 인터페이스 또는 IEEE 1394 (Firewire®) 프로토콜 기반의 인터페이스와 같은 표준 주변 인터페이스를 경유하여 호스트 프로세서 유닛(100)에 연결될 것이다.
구체적인 실시 예에 있어서, 입력 장치들(input devices)(111)은 컴퓨터 키보드, 마우스, 또는 다른 포인팅 장치(pointing device), 터치패드, 조이스틱 또는 다른 타입의 데이터 입력 장치를 포함할 것이다. 출력 장치들(output devices)(112)은 그래픽(graphics)/디스플레이(display) 장치, 컴퓨터 스크린, 오디오 스피커, 알람(alarm) 시스템, CAD/CAM (Computer Aided Design/Computer Aided Machining) 시스템, 비디오 게임 스테이션, 또는 다른 타입의 데이터 출력 또는 프로세스 제어 장치를 포함할 것이다. 몇몇의 실시 예들에 있어서, 입력 장치들(111)은 및 출력 장치들(112)은 I/O 또는 주변 인터페이스들을 통하여 호스트 프로세서 유닛(100)에 연결될 것이다.
일 실시 예에 있어서, 네트워크 인터페이스(network interface)(114)는 시스템(10)을 활성화하여 네트워크와 연결하기 위하여 호스트 프로세서 유닛(100)과 통신할 것이다. 다른 실시 예에 있어서, 네트워크 인터페이스(114)는 구비도지 않을 수도 있다. 네트워크 인터페이스(114)는 시스템(10)을 유선 또는 무선으로 네트워크와 연결하기 위한 적당한 장치들, 미디어 및/또는 프로토콜 컨텐츠들을 포함할 것이다. 다양한 실시 예들에 있어서, 네트워크는 LAN(Local Area Networks), WAN(Wide Area Networks), 유선 또는 무선 이더넷(Ethernet) 유선통신 네트워크(telecommunication networks), 또는 다른 적당한 타입이 네트워크를 포함할 것이다.
시스템(10)은 도 7에 도시된 다양한 시스템 소자들에 파워를 공급하기 위하여 온-보드(on-board)의 파워 공급 유닛(power supply unit)(115)을 포함할 것이다. 파워 공급 유닛(115)은 배터리들을 수용할 수 있거나 또는 AC 전기 콘센트에 연결 가능하도록 구현될 수 있다. 일 실시 예에 있어서, 파워 공급 유닛(115)은 태양열 에너지를 전기 에너지로 변환할 수 있다.
한편, 앞선 설명들은 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위한 목적으로 다소 구체적인 실시 예를 들어 설명된 것임이 이해될 것이다. 그러나, 본 발명의 기술 분야에서 통상의 지식을 가진 자는 본 출원의 기술적 사상을 벗어나지 않고 다양하게 적용 및 응용할 수 있음이 이해될 것이다. 즉, 본 출원의 기술 분야에서 통상의 지식을 가진 자는, 본 출원의 실시 예에서 명시적으로 설명되어 있지 않을 지라도, 본 출원의 기술적 사상의 범주 내에서 다양하게 재배열, 재배치, 치환 등의 방법으로 응용 및 적용할 수 있을 것이다. 또한 몇몇의 실시 예들에 있어서, 본 출원의 기술적 사상을 간단하고 명료하게 설명하기 위하여 잘 알려진 장치, 회로, 방법 등은 생략되었다. 그러나 본 출원의 기술적 사상은 이러한 생략된 잘 알려진 장치 등을 모두 포괄할 수 있는 것임이 이해될 것이다, 이에 더하여 본 출원의 실시 예와 기술적 사상이 동일 또는 유사한 것들 모두 본 출원의 기술적 사상의 범주 내에 속하는 것이 자명함이 또한 이해될 것이다.
따라서, 예를 들어, 도 1 내지 도 3, 도 4a, 도 5에 도시된 블록 다이어그램은 본 출원 기술의 주요 원리들을 설명하기 위하여 개념적으로 회로 또는 다른 기능 유닛들을 나타내는 것임이 이해될 것이다. 도 6의 순서도는, 예를 들어 호스트 프로세서 유닛(100)에 의하여 수행되는 다양한 처리들 또는 혁신적인 측면들을 나타내는 것임이 이해될 것이다.
좀더 구체적인 실시 예에 있어서, CPU 또는 호스트 프로세서 유닛은 일반적인 목적의 프로세서, 특수 목적의 프로세서, 일반적인 프로세서, DSP(digital signal processor), 복수의 마이크로프로세서들, DSP 코어와 관련된 하나 또는 그 이상의 마이크로프로세서들, 마이크로 컨트롤러, ASIC(Application Specific Integrated Circuits), FPGA(Field Programmable Gate Arrays) 회로s, 모든 타입의 집적 회로 및/또는 상태 머신(state machine)을 포함할 수 있다.
소정 발명의 일 측면이 소프트웨어-기반으로 처리될 필요가 있을 때, 이러한 소프트웨어 또는 프로그램 코드는 컴퓨터 판독 가능한 데이터 스토리지 매체(computer-readable data storage medium)에 내장될 것이다. 이러한 데이터 스토리지 매체는 도 7의 실시 예의 주변 스토리지 유닛(109)의 일부일 수 있으며, 또는 도 4a의 메모리 관리 유닛(230)의 내부 메모리의 일부일 수 있다. 호스트 프로세서 유닛(100)은 소프트웨어 기반의 프로세싱을 수행하기 위하여 이러한 매체에 저장된 관련된 명령들(instructions)을 처리할 것이다.
이러한 관련된 명령들은, 예를 들어, PNM 기능을 효과적으로 하기 위하여 필요한 보조적인 프로그램 코드뿐만 아니라, 앞서 설명된 다른 API-제공 기능들을 포함할 것이다. 컴퓨터 판독 가능한 데이터 스토리지 매체는 복수의 프로그램, 소프트웨어, 펌웨어, 일반적인 목적의 컴퓨터 또는 앞서 설명된 프로세서에 의하여 실행되는 마이크로 코드를 포함하는 비-일시적(non-transitory) 데이터 스토리지 매체일 것이다. 컴퓨터 판독 가능한 스토리지 매체의 예들은 ROM(Read Only Memory), RAM(Random Access Memory), 디지털 레지스터, 캐시 메모리, 반도체 메모리 장치, 내부 하드 디스크와 같은 마그네틱 미디어, 마그네틱 테이프(magnetic tape), 및 제거 가능한 디스크, 광자기 미디어, CD-ROM 디스크 및 DVD(Digital Versatile Disk)와 같은 광학 미디어를 포함한다.
본 발명의 다른 실시 예는, 앞서 설명된 것으로부터 특징 지을 수 있는 기능들 또는 본 출원으로부터 예상 가능한 문제에 대한 솔루션을 제공하기 위한 기능들을 포함하여, 다른 추가적인 기능들을 제공하기 위한 추가적인 소자들을 포함할 것이다. 비록 앞선 설명에서는 복수의 특징들 또는 소자들을 결합하여 설명하였다고 하더라도, 각 특징 또는 소자는 다른 특징 또는 소자와 결합됨이 없이 단독으로 사용되거나, 앞선 설명 이외에도 다양한 방식으로 조합되어 사용될 수 있음이 이해될 것이다. 앞서 설명된 바와 같이, 호스트 프로세서 유닛(100)과 같은 시스템(10) 내의 몇몇 소자들의 특징들은 논리 회로들과 같은 하드웨어를 사용하여 제공되거나 또는 코디드(coded) 명령들 또는 컴퓨터 판독 가능한 스토리지 매체에 저장된 마이크로 코드의 형태로 소프트웨어/펌웨어를 실행하는 것이 가능한 하드웨어를 통하여 제공될 것이다. 따라서, 이러한 기능들 또는 기능 블록들은 하드웨어-실행(hardware-implemented) 및/또는 컴퓨터-실행(computer-implemented)된다고 할 수 있으며, 따라서 머신-실행(machine-implemented)된다고 할 수 있음이 이해될 것이다.
앞서 설명된 가상 주소를 물리 주소로 변환하는 동작은 CPU(100)가 아닌 메모리 장치(200) 내에서 실행될 수 있다. 따라서, CPU(100) 내에서 주소 변환을 수행하기 위한 오버헤드가 발생하는 것을 방지할 수 있다. 또한, 가상 주소 그룹 별로 주소 변환을 위한 해시 함수가 맵핑된 주소 변환 정보 테이블은 종래 CPU(100)에서 주소 변환을 위해 사용하던 TLB(translation lookaside buffer)에 비해 크기가 매우 작으므로, 주소 변환 정보를 저장하는데 필요한 공간의 크기를 줄일 수 있다. 또한, 대부분의 가상 주소들은 해시 함수를 이용하여 물리 주소로 변환되므로, 기존의 TLB(translation lookaside buffer)와 유사한 구조를 갖는 예외 맵핑 테이블에 접근하는 횟수를 크게 감소시켜 주소 변환에 소모되는 전력 낭비를 최소화할 수 있다.
메모리 장치는 반도체 메모리일 것이다. 메모리 장치(200) 내의 메모리 관리 유닛(230)은 호스트(100)와 인터페이스를 하도록 동작하고, 내부 메모리(231)에 저장된 주소 변환 정보 테이블을 이용하여 호스트(100)로부터 제공되는 가상 주소를 물리 주소로 변환할 수 있다. 이에 따라, 전술한 바와 같이, CPU(100)는 가상 주소를 물리 주소로 변환하는 동작을 수행하지 않아도 되므로, CPU(100)의 부담을 경감시켜 시스템(10)의 성능이 크게 개선될 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 시스템 100: CPU
200: 메모리 장치 210: 데이터 처리 구조
220: 연산 장치 230: 메모리 관리 유닛
231: 내부 메모리 235: 해시 함수 모듈
250: 메모리 255: 페이지 맵핑 테이블

Claims (17)

  1. 적어도 하나의 가상 주소 그룹 및 상기 가상 주소 그룹에 맵핑된 해시 함수 타입 정보가 저장된 가상 주소 대 해시 함수(virtual address to hash function, V2H) 테이블 및 상기 가상 주소 그룹 내에서 해시 함수에 의해 물리 주소로 변환되지 않는 적어도 하나의 예외 가상 주소 및 상기 예외 가상 주소에 맵핑된 물리 주소가 저장된 예외 맵핑 테이블을 포함하는 내부 메모리; 및
    호스트로부터 가상 주소가 제공되면,상기 내부 메모리에 포함된 상기 V2H 테이블을 참조하여 상기 가상 주소를 포함하는 가상 주소 그룹에 맵핑된 해시 함수 타입 정보를 확인하고, 상기 해시 함수 타입 정보에 대응하는 해시 함수를 이용하여 상기 가상 주소를 물리 주소로 변환하는 해시 함수 모듈
    을 포함하는 메모리 관리 유닛.
  2. 제1항에 있어서,
    상기 V2H 테이블은, 적어도 하나의 V2H 엔트리들을 포함하고,
    상기 V2H 엔트리는 베이스 가상 주소 필드, 가상 주소 크기 필드, 해시 함수 타입 정보 필드 및 예외 가상 주소 존재 여부를 나타내는 예외 필드를 포함하는 메모리 관리 유닛.
  3. 제2항에 있어서,
    상기 V2H 엔트리의 상기 예외 필드는 상기 예외 가상 주소가 존재하지 않음을 나타내는 제1 값 또는 상기 예외 가상 주소가 존재함을 나타내는 제2 값으로 설정되고,
    상기 호스트로부터 제공된 상기 가상 주소에 대응하는 V2H 엔트리의 상기 예외 필드가 상기 제1 값으로 설정된 경우, 상기 메모리 관리 유닛은, 상기 해시 함수 모듈만을 이용하여 상기 가상 주소를 물리 주소로 변환하는 메모리 관리 유닛.
  4. 제3항에 있어서,
    상기 호스트로부터 제공된 상기 가상 주소에 대응하는 V2H 엔트리의 상기 예외 필드가 상기 제2 값으로 설정된 경우, 상기 메모리 관리 유닛은, 상기 예외 맵핑 테이블 및 상기 해시 함수 모듈을 모두 이용하여 상기 가상 주소를 물리 주소로 변환하는 메모리 관리 유닛.
  5. 제3항에 있어서,
    상기 호스트로부터 제공된 상기 가상 주소에 대응하는 V2H 엔트리의 상기 해시 함수 타입 필드에, 맵핑되는 해시 함수가 없음을 나타내는 정보가 저장된 경우, 상기 메모리 관리 유닛은, 외부 메모리에 저장된 페이지 맵핑 테이블을 참조하여 상기 가상 주소를 물리 주소로 변환하는 메모리 관리 유닛.
  6. 제1항에 있어서,
    상기 예외 맵핑 테이블은, 적어도 하나의 예외 가상 주소 대 물리 주소(exception virtual address to physical address, EV2P) 엔트리로 구성되고,
    상기 EV2P 엔트리는, 예외 가상 주소 필드, 물리 주소 필드 및 상기 예외 가상 주소 필드에 저장된 예외 가상 주소가 해시 함수에 관련된 것인지 여부를 나타내는 해시 함수 필드를 포함하는 메모리 관리 유닛.
  7. 중앙 처리 장치(central processing unit, CPU)로부터 제공되는 명령에 따라 연산을 수행하는 복수의 연산 유닛들로 구성된 연산부; 및
    상기 CPU로부터 제공된 가상 주소를 해시 함수를 이용하여 물리 주소로 변환하고, 변환된 물리 주소와 상기 CPU로부터 제공된 명령을 외부 메모리에 제공하는 메모리 관리 유닛
    을 포함하는 데이터 처리 구조.
  8. 제7항에 있어서,
    상기 외부 메모리는 상기 메모리 관리 유닛으로부터 제공된 상기 물리 주소 및 상기 명령에 따라 데이터를 독출하여 상기 연산부의 상기 복수의 연산 유닛들 각각에 제공하고,
    상기 복수의 연산 유닛들은 각각 상기 외부 메모리로부터 제공된 상기 데이터에 대하여 상기 명령에 대응하는 연산을 수행하는 데이터 처리 구조.
  9. 제7항에 있어서,
    상기 메모리 관리 유닛은,
    적어도 하나의 가상 주소 그룹 및 상기 가상 주소 그룹에 맵핑된 해시 함수 타입 정보가 저장된 가상 주소 대 해시 함수(virtual address to hash function, V2H) 테이블 및 상기 가상 주소 그룹에서 해시 함수에 의해 물리 주소로 변환되지 않는 적어도 하나의 예외 가상 주소가 저장된 예외 맵핑 테이블을 포함하는 내부 메모리; 및
    상기 CPU로부터 가상 주소가 제공되면, 상기 내부 메모리에 포함된 상기 V2H 테이블을 참조하여 상기 가상 주소를 포함하는 가상 주소 그룹에 맵핑된 해시 함수 타입 정보를 확인하고, 상기 해시 함수 타입 정보에 대응하는 해시 함수를 이용하여 상기 가상 주소를 물리 주소로 변환하는 해시 함수 모듈을 포함하는 데이터 처리 구조.
  10. 제9항에 있어서,
    상기 V2H 테이블은, 적어도 하나의 V2H 엔트리를 포함하고,
    상기 V2H 엔트리는 베이스 가상 주소 필드, 가상 주소 크기 필드, 해시 함수 타입 정보 필드 및 예외 가상 주소 존재 여부를 나타내는 예외 필드를 포함하는 데이터 처리 구조.
  11. 제9항에 있어서,
    상기 예외 맵핑 테이블은, 상기 적어도 하나의 예외 가상 주소 및 상기 적어도 하나의 예외 가상 주소에 맵핑된 물리 주소로 구성된 예외 가상 주소 대 물리 주소(exception virtual address to physical address, EV2P) 엔트리를 포함하는 데이터 처리 구조.
  12. 제11항에 있어서,
    상기 EV2P 엔트리는, 예외 가상 주소 필드, 물리 주소 필드, 및 상기 예외 가상 주소 필드에 저장된 예외 가상 주소가 해시 함수에 관련된 것인지 여부를 나타내는 해시 함수 필드를 포함하는 데이터 처리 구조.
  13. 복수의 해시 함수들 중 선택된 제1 해시 함수를 이용하여 맵핑 대상 가상 주소 그룹에 대한 맵핑 가능 여부를 검사하는 단계;
    상기 맵핑 대상 가상 주소 그룹 내의 모든 가상 주소들이 상기 선택된 제1 해시 함수에 의해 물리 주소들로 변환되는지 여부를 판단하는 단계;
    상기 모든 가상 주소들이 물리 주소들로 변환되면, 예외 가상 주소의 존재 여부를 나타내는 정보를 저장하는 예외 필드가 예외 가상 주소가 존재하지 않음을 나타내는 제1 값으로 설정된 가상 주소 대 해시 함수(virtual address to hash function, V2H) 엔트리를 생성하는 단계
    를 포함하는 주소 변환 정보 생성 방법.
  14. 제13항에 있어서,
    상기 모든 가상 주소들이 상기 물리 주소들로 변환되는지 여부를 판단하는 단계 이후,
    상기 모든 가상 주소들이 물리 주소들로 변환되지 않으면, 상기 맵핑 대상 가상 주소 그룹 내에 포함된 상기 예외 가상 주소의 개수를 저장하는 단계; 및
    상기 복수의 해시 함수들을 전부 이용하여 상기 맵핑 대상 가상 주소 그룹에 대한 맵핑 가능 여부의 검사가 완료되었는지 여부를 판단하는 단계
    를 더 포함하는 주소 변환 정보 생성 방법.
  15. 제14항에 있어서,
    상기 맵핑 대상 가상 주소 그룹에 대한 맵핑 가능 여부의 검사가 완료된 경우,
    상기 복수의 해시 함수 별로 저장된 상기 예외 가상 주소의 개수를 비교하여 최소의 예외 가상 주소 개수를 갖는 제2 해시 함수를 선택하는 단계;
    상기 맵핑 대상 가상 주소 그룹에서 상기 예외 가상 주소를 제외한 나머지 가상 주소들이 상기 제2 해시 함수에 의해 모두 물리 주소로 변환되는지 여부를 판단하는 단계; 및
    상기 나머지 가상 주소들이 상기 제2 해시 함수에 의해 모두 물리 주소로 변환되면, 상기 예외 필드가 상기 예외 가상 주소가 존재함을 나타내는 제2 값으로 설정된 V2H 엔트리를 생성하는 단계
    를 더 포함하는 주소 변환 정보 생성 방법.
  16. 제15항에 있어서,
    상기 나머지 가상 주소들이 상기 제2 해시 함수에 의해 모두 물리 주소로 변환되는지 여부를 판단하는 단계 이후에,
    상기 나머지 가상 주소들이 상기 제2 해시 함수에 의해 모두 물리 주소로 변환되지 않으면, 상기 제2 해시 함수에 의해 변환된 물리 주소와 동일한 물리 주소가 맵핑된 예외 가상 주소가 존재하는지 여부를 확인하는 단계;
    상기 제2 해시 함수에 의해 변환된 물리 주소와 동일한 물리 주소가 맵핑된 상기 예외 가상 주소가 존재하면, 상기 예외 가상 주소에 맵핑된 상기 물리 주소가 상기 제2 해시 함수를 제외한 다른 해시 함수들에 의해 변환된 물리 주소인지 여부를 판단하는 단계; 및
    상기 예외 가상 주소에 맵핑된 상기 물리 주소가 상기 다른 해시 함수들과 무관한 물리 주소이면, 해당 물리 주소에 대응하는 위치에 저장된 데이터를 다른 위치로 이동시키는 단계
    를 더 포함하는 주소 변환 정보 생성 방법.
  17. 제16항에 있어서,
    상기 맵핑 대상 가상 주소 그룹에서 상기 예외 가상 주소 및 상기 다른 위치로 데이터가 이동된 물리 주소에 대응하는 가상 주소를 제외한 나머지 가상 주소들이 상기 제2 해시 함수에 의해 모두 물리 주소로 변환되는지 여부를 판단하는 단계; 및
    상기 나머지 가상 주소들이 상기 제2 해시 함수에 의해 모두 물리 주소로 변환되지 않으면, 해시 함수 타입 필드가 맵핑되는 해시 함수가 존재하지 않음을 나타내는 값으로 설정된 V2H 엔트리를 생성하는 단계
    를 더 포함하는 주소 변환 정보 생성 방법.
KR1020190025655A 2019-03-06 2019-03-06 주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 생성 방법 KR20200107101A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190025655A KR20200107101A (ko) 2019-03-06 2019-03-06 주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 생성 방법
US16/596,104 US11397689B2 (en) 2019-03-06 2019-10-08 Memory manager having an address translation function, data processing structure including the same, and method for generating address translation information
CN201911000053.2A CN111666229B (zh) 2019-03-06 2019-10-21 存储器管理器、数据处理装置和生成地址转换信息的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190025655A KR20200107101A (ko) 2019-03-06 2019-03-06 주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 생성 방법

Publications (1)

Publication Number Publication Date
KR20200107101A true KR20200107101A (ko) 2020-09-16

Family

ID=72335257

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190025655A KR20200107101A (ko) 2019-03-06 2019-03-06 주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 생성 방법

Country Status (3)

Country Link
US (1) US11397689B2 (ko)
KR (1) KR20200107101A (ko)
CN (1) CN111666229B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102020212897A1 (de) * 2020-10-13 2022-04-14 Robert Bosch Gesellschaft mit beschränkter Haftung Zugriffsverfahren auf Daten in einem externen Speicher eines Mikrocontrollers
CN112632069B (zh) * 2020-12-22 2021-08-31 中科驭数(北京)科技有限公司 哈希表数据存储管理方法、装置、介质和电子设备
CN114238929B (zh) * 2021-12-20 2022-09-13 深圳市德仪电子科技有限公司 一种内置运放的mcu芯片及其在变频系统中的应用
TWI796912B (zh) * 2021-12-30 2023-03-21 新唐科技股份有限公司 控制裝置及存取方法
CN115964310B (zh) * 2023-03-16 2023-07-04 芯动微电子科技(珠海)有限公司 一种非线性多存储信道数据交织方法及交织模块

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7330942B2 (en) * 2004-07-31 2008-02-12 Hewlett-Packard Development Company, L.P. Method for efficient virtualization of physical memory in a virtual-machine monitor
US7872657B1 (en) 2006-06-16 2011-01-18 Nvidia Corporation Memory addressing scheme using partition strides
US20080005504A1 (en) 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
CN102662860B (zh) * 2012-03-15 2015-07-01 天津国芯科技有限公司 用于进程切换的旁路转换缓冲器(tlb)及在其中地址匹配的方法
WO2014031540A1 (en) * 2012-08-20 2014-02-27 Cameron Donald Kevin Processing resource allocation
US9148387B2 (en) * 2013-05-10 2015-09-29 Brocade Communications Systems, Inc. Hardware hash table virtualization in multi-packet processor networking systems
US20170124497A1 (en) * 2015-10-28 2017-05-04 Fractal Industries, Inc. System for automated capture and analysis of business information for reliable business venture outcome prediction
US10255197B2 (en) * 2016-07-20 2019-04-09 Oracle International Corporation Adaptive tablewalk translation storage buffer predictor
US11157422B2 (en) * 2017-03-31 2021-10-26 Intel Corporation Shared memory for intelligent network interface cards

Also Published As

Publication number Publication date
CN111666229B (zh) 2023-04-18
US11397689B2 (en) 2022-07-26
US20200285590A1 (en) 2020-09-10
CN111666229A (zh) 2020-09-15

Similar Documents

Publication Publication Date Title
KR20200107101A (ko) 주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 생성 방법
KR102191229B1 (ko) 실시간 분석을 지원하는 인-메모리 팝 카운트
US9892058B2 (en) Centrally managed unified shared virtual address space
US20140040532A1 (en) Stacked memory device with helper processor
KR100705171B1 (ko) 어드레스 변환 장치 및 방법
TWI524185B (zh) 使用多重分頁表執行之技術
JPH11161547A (ja) データ処理装置用記憶装置、および記憶場所にアクセスする方法
JP2011258189A (ja) プロセッサ・メインメモリのための持続性メモリ
US8930672B2 (en) Multiprocessor using a shared virtual memory and method of generating a translation table
US20190026231A1 (en) System Memory Management Unit Architecture For Consolidated Management Of Virtual Machine Stage 1 Address Translations
EP4315041A1 (en) Processing-in-memory concurrent processing system and method
KR20230094964A (ko) 이종 메모리 타겟의 인터리빙
KR20220001016A (ko) 게스트 운영체제에 입출력 메모리 관리 유닛 레지스터 복사본을 제공하는 방법
CN114270317B (zh) 层次型存储器系统
CN114341816A (zh) 三层层次型存储器系统
US11386012B1 (en) Increasing address space layout randomization entropy via page remapping and rotations
CN115933965A (zh) 存储器存取控制
CN114258528A (zh) 阶层式存储器设备
JP2010026969A (ja) データ処理装置
CN114341817A (zh) 分层存储器系统
CN114258534B (zh) 阶层式存储器系统
US11907141B1 (en) Flexible dual ranks memory system to boost performance
US20170031633A1 (en) Method of operating object-oriented data storage device and method of operating system including the same
CN114341818B (zh) 分级存储器设备
US20240211293A1 (en) Efficient queue shadowing for virtual machines