KR20200125596A - 메모리 관리 시스템 및 메모리 관리 방법, 그리고 정보 처리 장치 - Google Patents
메모리 관리 시스템 및 메모리 관리 방법, 그리고 정보 처리 장치 Download PDFInfo
- Publication number
- KR20200125596A KR20200125596A KR1020207023718A KR20207023718A KR20200125596A KR 20200125596 A KR20200125596 A KR 20200125596A KR 1020207023718 A KR1020207023718 A KR 1020207023718A KR 20207023718 A KR20207023718 A KR 20207023718A KR 20200125596 A KR20200125596 A KR 20200125596A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- cache
- security state
- processor core
- storage unit
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 460
- 238000007726 management method Methods 0.000 title claims description 79
- 230000010365 information processing Effects 0.000 title claims description 8
- 238000000034 method Methods 0.000 claims abstract description 109
- 238000013519 translation Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 description 48
- 230000008569 process Effects 0.000 description 35
- 238000005516 engineering process Methods 0.000 description 15
- 230000008859 change Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- HBBGRARXTFLTSG-UHFFFAOYSA-N Lithium ion Chemical compound [Li+] HBBGRARXTFLTSG-UHFFFAOYSA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 229910001416 lithium ion Inorganic materials 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
가상 어드레스 캐시 방식의 캐시 메모리 내의 데이터를 효율적으로 보호하는 메모리 관리 시스템을 제공한다. 메모리 관리 시스템은, 프로세서 코어로부터 메모리 액세스 요구된 데이터를 일시 기억하는 캐시 메모리와, 상기 프로세서 코어로부터 메모리 액세스 요구와 동시에 통신된 시큐리티 상태를 기억하는 상태 기억부와, 메인 메모리에 대한 액세스를 관리하는 메모리 관리 유닛을 구비한다. 상기 프로세서 코어로부터 메모리 액세스 요구하였을 때, 시큐리티 상태가 변화하고 있는 경우에는, 히트한 캐시 라인의 캐시 플래시를 실시한다.
Description
본 명세서에서 개시되는 기술은, 가상 어드레스 캐시 방식의 메모리 관리 시스템 및 메모리 관리 방법, 그리고 정보 처리 장치에 관한 것이다.
일반적인 메모리 시스템에 있어서는, 프로세서와 물리 메모리 사이에 메모리 관리 유닛(Memory Management Unit: MMU)이 배치되고, MMU는, 가상 어드레스 공간 전체에 대해 이러한 어드레스 변환을 행함으로써, 프로세스마다의 가상 어드레스 공간을 실현함과 함께, 실제 메모리 용량 이상의 가상 메모리를 제공한다.
또한, 프로세서에 대한 메모리의 속도 부족을 해소하기 위해, 메모리의 계층화가 행해지고 있다. 구체적으로는, 고속의 소용량 메모리를 1차 캐시로서 프로세서와 동일 칩에 내장하고, 다음에 고가이지만 고속인 SRAM(Static Random Access Memory)을 2차 캐시로서 프로세서의 근방에, 또한 비교적 저속이지만 저렴한 DRAM(Dynamic RAM)으로 구성되는 메인 메모리를 배치한다.
여기서, 프로세서가 캐시 메모리를 참조하는 방법으로서, 변환 후의 물리 어드레스로 검색하는 물리 어드레스 캐시 방식과, 가상 어드레스로 검색하는 가상 어드레스 캐시 방식을 들 수 있다. 물리 어드레스 캐시 방식을 채용하는 메모리 시스템에서는, 프로세서와 캐시 메모리 사이에 MMU가 배치되고, 프로세서가 캐시에 액세스할 때마다 어드레스 변환이 실시된다. 또한, 가상 어드레스 캐시 방식을 채용하는 메모리 시스템에서는, 캐시 메모리와 메인 메모리 사이에 MMU가 배치되고, 프로세서는 가상 어드레스를 사용하여 캐시 메모리를 참조하고, 캐시 미스된 경우만 MMU에 의해 어드레스 변환이 실시되어 메인 메모리로의 액세스가 발생된다.
캐시 메모리를 갖는 메모리 시스템에 있어서는, 물리 어드레스 캐시 방식이 주류이다. 그러나, 물리 어드레스 캐시 방식은, 프로세서로부터 캐시 메모리로 액세스할 때마다, MMU에 있어서의 어드레스 변환의 처리가 실행되기 때문에, 전력 효율과 회로 속도가 저하된다고 하는 문제가 있다.
이에 반하여, 가상 어드레스 캐시 방식에서는, 캐시 미스된 경우만 MMU에 있어서의 어드레스 변환과 캐시 메모리의 활성화가 실행되므로, 소비 전력이 삭감된다. 따라서, 배터리로 장기간 가동해야만 하는 초 저소비 전력 IoT(Internet Of Things)나, 저소비 전력화가 불가결한 웨어러블 디바이스에 대해서는, 가상 어드레스 캐시 방식이 유력시된다.
본 명세서에서 개시되는 기술의 목적은, 가상 어드레스 캐시 방식의 캐시 메모리 내의 데이터를 효율적으로 보호하는 메모리 관리 시스템 및 메모리 관리 방법, 그리고 정보 처리 장치를 제공하는 데 있다.
본 명세서에서 개시되는 기술의 제1 측면은,
프로세서 코어로부터 메모리 액세스 요구된 데이터를 일시 기억하는 캐시 메모리와,
상기 프로세서 코어로부터 메모리 액세스 요구와 동시에 통신된 시큐리티 상태를 기억하는 상태 기억부와,
메인 메모리에 대한 액세스를 관리하는 메모리 관리 유닛
을 구비하는 메모리 관리 시스템이다. 상기 캐시 메모리는 가상 어드레스 캐시 방식이다.
단, 여기서 말하는 「시스템」이란, 복수의 장치(또는 특정 기능을 실현하는 기능 모듈)가 논리적으로 집합된 물(物)인 것을 의미하며, 각 장치나 기능 모듈이 단일의 하우징 내에 있는지 여부는 특별히 상관없다.
상기 상태 기억부는, 상기 캐시 메모리 내의 태그 메모리, 상기 캐시 메모리 내에서 태그 메모리와는 별도로 배치된 레지스터, 또는 캐시 라인 본체 외에 실장된 메모리 또는 레지스터의 어느 것을 포함하고, 상기 캐시 메모리의 라인마다의 시큐리티 상태를 기억한다.
제1 측면에 관한 메모리 관리 시스템은, 상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태와 일치하지 않는 경우에는, 히트한 캐시 라인의 캐시 플래시를 실시하도록 되어 있다.
혹은, 제1 측면에 관한 메모리 관리 시스템은, 상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태와 일치하지 않는 경우는, 상기 메모리 관리 유닛에 의한 프로텍션 체크를 실시하여, 이 메모리 액세스 요구가 허가된 경우에는, 히트한 캐시 라인으로의 액세스를 실시함과 함께 상기 상태 기억부에 기억된 시큐리티 상태를 갱신하도록 되어 있다.
혹은, 제1 측면에 관한 메모리 관리 시스템은, 상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태와 일치하지 않지만, 그 상이가 상기 캐시 메모리 내부의 이미 정해진 룰을 만족시키는 경우에는, 히트한 캐시 라인으로의 액세스를 실시함과 함께 상기 상태 기억부에 기억된 시큐리티 상태를 갱신하도록 되어 있다.
또한, 본 명세서에서 개시되는 기술의 제2 측면은,
프로세서 코어로부터 메모리 액세스 요구된 데이터를 메인 메모리로부터 판독하여 캐시 메모리에 일시 기억하는 스텝과,
상기 프로세서 코어로부터 메모리 액세스 요구와 동시에 통신된 시큐리티 상태를 기억하는 상태 기억 스텝과,
상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태와 비교한 결과에 기초하여, 상기 캐시 메모리 및 상기 메인 메모리에 대한 액세스를 제어하는 제어 스텝
을 갖는 메모리 관리 방법이다.
또한, 본 명세서에서 개시되는 기술의 제3 측면은,
프로세서 코어와,
메인 메모리와,
상기 프로세서 코어로부터 메모리 액세스 요구된 데이터를 일시 기억하는 캐시 메모리와,
상기 프로세서 코어로부터 메모리 액세스 요구와 동시에 통신된 시큐리티 상태를 기억하는 상태 기억부와,
상기 메인 메모리에 대한 액세스를 관리하는 메모리 관리 유닛
을 구비하는 정보 처리 장치이다.
본 명세서에서 개시되는 기술에 의하면, 가상 어드레스 캐시 방식의 캐시 메모리 내의 데이터의 보호를, 캐시 메모리 내에 기억하는 적은 정보로 실현할 수 있는 메모리 관리 시스템 및 메모리 관리 방법, 그리고 정보 처리 장치를 제공할 수 있다.
또한, 본 명세서에 기재된 효과는, 어디까지나 예시이며, 본 발명의 효과는 이것에 한정되는 것은 아니다. 또한, 본 발명이, 상기 효과 이외에, 추가로 부가적인 효과를 발휘하는 경우도 있다.
본 명세서에서 개시되는 기술의 또 다른 목적, 특징이나 이점은, 후술하는 실시 형태나 첨부하는 도면에 기초하는 보다 상세한 설명에 의해 명백해질 것이다.
도 1은 내장 기기를 포함하는 시스템의 구성예를 모식적으로 도시한 도면이다.
도 2는 센싱 디바이스(100)의 하드웨어의 구성예를 도시한 도면이다.
도 3은 가상 어드레스 캐시 방식의 메모리 관리 시스템(1)의 구성예를 모식적으로 도시한 도면이다.
도 4는 프로세서 코어(10)로부터의 메모리 액세스 요구와 동시에 통신되는 시큐리티 상태를 캐시 메모리(20) 내에 기억하는 모습을 도시한 도면이다.
도 5는 메모리 관리 시스템(1)에 있어서 메모리 액세스를 제어하기 위한 처리 수순을 도시한 흐름도(전반)이다.
도 6은 메모리 관리 시스템(1)에 있어서 메모리 액세스를 제어하기 위한 처리 수순을 도시한 흐름도(후반)이다.
도 7은 캐시 라인마다 시큐리티 상태를 태그 비트에 보존하도록 구성된 캐시 메모리(20)의 실장예를 도시한 도면이다.
도 8은 메모리 관리 시스템(1)에 있어서 메모리 액세스를 제어하기 위한 처리 수순의 변형성을 도시한 흐름도(전반)이다.
도 9는 메모리 관리 시스템(1)에 있어서 메모리 액세스를 제어하기 위한 처리 수순의 변형예를 도시한 흐름도(후반)이다.
도 10은 메모리 관리 시스템(1)에 있어서 메모리 액세스를 제어하기 위한 처리 수순의 다른 변형예를 도시한 흐름도(전반)이다.
도 11은 메모리 관리 시스템(1)에 있어서 메모리 액세스를 제어하기 위한 처리 수순의 다른 변형예를 도시한 흐름도(후반)이다.
도 12는 MMU(30)로부터 캐시 메모리(20)에 퍼미션 정보를 카피하는 모습을 도시한 도면이다.
도 2는 센싱 디바이스(100)의 하드웨어의 구성예를 도시한 도면이다.
도 3은 가상 어드레스 캐시 방식의 메모리 관리 시스템(1)의 구성예를 모식적으로 도시한 도면이다.
도 4는 프로세서 코어(10)로부터의 메모리 액세스 요구와 동시에 통신되는 시큐리티 상태를 캐시 메모리(20) 내에 기억하는 모습을 도시한 도면이다.
도 5는 메모리 관리 시스템(1)에 있어서 메모리 액세스를 제어하기 위한 처리 수순을 도시한 흐름도(전반)이다.
도 6은 메모리 관리 시스템(1)에 있어서 메모리 액세스를 제어하기 위한 처리 수순을 도시한 흐름도(후반)이다.
도 7은 캐시 라인마다 시큐리티 상태를 태그 비트에 보존하도록 구성된 캐시 메모리(20)의 실장예를 도시한 도면이다.
도 8은 메모리 관리 시스템(1)에 있어서 메모리 액세스를 제어하기 위한 처리 수순의 변형성을 도시한 흐름도(전반)이다.
도 9는 메모리 관리 시스템(1)에 있어서 메모리 액세스를 제어하기 위한 처리 수순의 변형예를 도시한 흐름도(후반)이다.
도 10은 메모리 관리 시스템(1)에 있어서 메모리 액세스를 제어하기 위한 처리 수순의 다른 변형예를 도시한 흐름도(전반)이다.
도 11은 메모리 관리 시스템(1)에 있어서 메모리 액세스를 제어하기 위한 처리 수순의 다른 변형예를 도시한 흐름도(후반)이다.
도 12는 MMU(30)로부터 캐시 메모리(20)에 퍼미션 정보를 카피하는 모습을 도시한 도면이다.
이하, 도면을 참조하면서 본 명세서에서 개시되는 기술의 실시 형태에 대해 상세하게 설명한다.
프로세서가 취급하는 각 데이터에는, 액세스가 허가된 유저나, 허가된 처리(판독, 기입, 실행 등)와 같은, 시큐리티 상태 혹은 보호 속성과 같은 퍼미션 정보가 설정되어 있는 경우가 있다. 이러한 경우, 프로세서가 액세스할 때마다, 퍼미션 체크를 실시하여, 메모리를 보호할 필요가 있다.
예를 들어, MMU는, 페이지 단위로 가상 어드레스로부터 물리 어드레스로 변환하기 위한 정보를 저장하는 트렌스레이션 룩어사이드 버퍼(TLB)를 구비하고, 이 TLB의 엔트리마다 해당 페이지의 퍼미션 정보를 페이지 속성으로서 보유할 수 있다. 따라서, 물리 어드레스 캐시 방식에서는, 프로세서 코어로부터 캐시 메모리로 액세스할 때마다, 용이하게 퍼미션 체크를 행할 수 있다.
이에 비하여, 가상 어드레스 캐시 방식에서는, 캐시 메모리의 후단에 MMU가 배치된다(전술). 이 때문에, 프로세서 코어로부터 캐시 메모리로 액세스할 때에, MMU에 의한 퍼미션 체크를 받을 수 없으므로, 다른 방법(즉, MMU에 구애되지 않는 방법)으로 메모리를 보호할 필요가 있다.
예를 들어, 캐시 미스되어, MMU를 경유하여 캐시 메모리에 데이터를 캐시할 때에, 라인 데이터의 페이지 속성을 캐시 라인마다 기억해 두는 처리 시스템에 대해 제안이 이루어져 있다(예를 들어, 특허문헌 1을 참조). 이 처리 시스템에 의하면, 캐시 히트하였을 때에는 캐시 메모리 내에 있는 정보에 기초하여 퍼미션 체크를 행할 수 있으므로, 가상 어드레스 캐시 방식에 있어서 용이하게 메모리 보호를 실현할 수 있다.
그러나, 이 처리 시스템에서는, 캐시 메모리 내의 라인 분의 퍼미션 정보의 카피를 갖는 용량이, 캐시 메모리 내에 별도 필요하게 된다. 통상 어드레스 변환의 단위인 페이지 사이즈보다도 캐시의 라인 사이즈는 작으므로, 카피한 퍼미션 정보에 용장성이 생긴다. 예를 들어, 캐시 라인이 16Byte이고, 페이지 사이즈가 16KByte, 캐시 메모리의 총 용량이 16KByte라고 하는 메모리 구성의 경우, 캐시 메모리 내의 모든 데이터가 동일한 페이지의 데이터여도, 1024개의 동일한 퍼미션 정보의 카피를 캐시 메모리 내에 보유해야만 되므로, 용장하다.
또한, 이 처리 시스템에서는, MMU로부터 캐시 메모리로 퍼미션 정보를 전달하기 위한 사이드 밴드 신호나 제어 회로가 필요해진다고 사료된다. 일반적으로는, 캐시 메모리로부터 MMU로의 한 방향의 통신밖에 존재하지 않으므로, 이러한 사이드 밴드 회로나 제어 회로를 마련하면, MMU로부터 캐시 메모리로의 정보 통신을 위한 회로 비용이 증가되어 버린다.
또한, 액세스권의 변경을 가하였을 때 캐시 메모리의 내용을 플러쉬하여, 차회 액세스시에는 캐시 미스가 발생되어, 반드시 물리 메모리로부터 데이터를 취득하도록 구성되는 메모리 관리 시스템에 대해 제안이 이루어지고 있다(예를 들어, 특허문헌 2를 참조). 이 메모리 관리 시스템에 의하면, 액세스권이 변경된 후는 MMU 경유로 정확하게 퍼미션 체크를 행하고, 메인 메모리로부터 데이터를 취득할 수 있다. 그러나, 이 메모리 관리 시스템에서는, 외부 신호에 의해 캐시 메모리의 데이터 전체를 한번 플러쉬하여, 메인 메모리와의 사이에서 동기를 취할 필요가 있다.
그래서, 본 명세서에서는, 가상 어드레스 캐시 방식의 캐시 메모리 내의 데이터의 보호를, 캐시 메모리 내에 기억하는 적은 정보로 실현할 수 있는 메모리 관리 시스템에 대해, 이하에 제안한다.
도 1에는, 본 명세서에서 개시하는 메모리 관리 시스템을 적용 가능한 내장 기기를 포함하는 시스템의 구성예를 모식적으로 도시하고 있다. 도시한 시스템은, 내장 기기에 대응하는 센싱 디바이스(100)와, 기지국(200)과, 클라우드(201) 상에 설치된 서버(202)로 구성된다. 센싱 디바이스(100)는, 기지국(200)에 무선 접속하여, 클라우드(201) 경유로 서버(202)에 액세스할 수 있다.
센싱 디바이스(100)는, CPU(Central Processing Unit)(101), MMU(102), SRAM(Static RAM(Random Access Memory))(103)나 플래시 메모리(104) 등의 메모리, 센서(105), 통신 모듈(106)을 구비하고, 전지(107)로 구동되는 기기이다. 또한, CPU(101)와 MMU(102) 사이에는, 가상 어드레스 캐시 방식의 캐시 메모리(L1 캐시 또는 L2 캐시)가 배치되지만, 도 1에서는 도면의 간소화를 위해 생략되어 있다. 또한, 전지(107)는, 충전 가능한 리튬 이온 전지여도 되고, 충전 불가능한 전지여도 된다.
센싱 디바이스(100)는, 예를 들어 장착자에게 장착하여 사용된다. CPU(101)는, 센서(105)의 검출 신호에 기초하여 장착자의 행동(멈추어 있는, 걷고 있는, 달리고 있는 등)을 해석한다. 그리고, 해석 결과를 통신 모듈(106)로부터 기지국(200)으로 무선 송신하고, 클라우드(201) 경유로 서버(202)에 기록된다. 서버(202)는, 센싱 디바이스(100)로부터 수취된 데이터를, 장착자의 지켜 봄 등에 사용한다.
도 2에는, 내장 기기의 일례로서의 센싱 디바이스(100)의 하드웨어의 구성예를 나타내고 있다.
CPU(101)는, MMU(102) 경유로 시스템 버스(110)에 접속되어 있다. 또한, 시스템 버스(110) 상에는, SRAM(103), 플래시 메모리(104), 센서(105), 통신 모듈(106)과 같은 디바이스가 접속되어 있다.
플래시 메모리(104)는, 예를 들어 센서(105)의 신호에 기초하여 장착자의 행동을 추정하는 애플리케이션이나, 애플리케이션을 실행할 때 사용되는 라이브러리, 장착자의 행동을 추정하기 위한 행동 추정 사전 등의 데이터를 저장하고 있다. 또한, 센서(105)는, 가속도 센서, 기압 센서, 자이로, GPS(Global Positioning System), TOF(Time Of Flight) 화상 거리 센서, LIDAR(Light Detection and Ranging) 센서 등, 하나 이상의 센서 디바이스로 구성된다.
시스템 버스(110)에 접속된 이들 디바이스가 배치되는 물리 어드레스 공간이, MMU(102)에 의한 어드레스 변환의 대상으로 된다. 이 물리 어드레스 공간에는, SRAM(103)이 배치되는 것 외, 플래시 메모리(104)가 그 내용이 CPU(101) 혹은 MMU(102)로부터 직접 보이는 형태로 배치되어 있거나, 통신 모듈(106)이나, 센서(105)에 포함되는 각종 센서 디바이스의 I/O 포트가 배치되어 있거나 한다.
센싱 디바이스(100)는, 전지(107)로 장시간 가동해야 되어, 소비 전력의 삭감이 불가결하다. 그래서, 캐시 미스된 경우만 MMU에 있어서의 어드레스 변환이 실행되는 가상 어드레스 캐시 방식이 적용되어, 전력 효율의 향상이 도모되고 있다.
도 3에는, 센싱 디바이스(100)에 있어서 적용되는, 가상 어드레스 캐시 방식의 메모리 관리 시스템(1)의 구성예를 모식적으로 도시하고 있다. 도시한 메모리 관리 시스템(1)은, 프로세서 코어(10)와, 캐시 메모리(20)와, 메모리 관리 유닛(MMU)(30)과, 물리 메모리로서의 메인 메모리(40)로 구성된다. 우선, 메모리 관리 시스템(1)에 있어서의 메모리 액세스 동작에 대해, 간단하게 설명해 둔다.
캐시 메모리(20)는, 가상 어드레스 캐시 방식이며, 프로세서(10)는, 가상 어드레스를 사용하여 캐시 메모리(20)에 액세스한다. 단, 캐시 메모리(20)는, L1 캐시 또는 L2 캐시의 어느 것이어도 된다.
캐시 메모리(20)는, 프로세서 코어(10)로부터 요구된 가상 어드레스가 캐시 히트한 경우에는, 해당되는 캐시 라인에 대해 판독 또는 기입의 조작을 실시한다. 또한, 프로세서 코어(10)로부터 요구된 가상 어드레스가 캐시 미스된 경우에는, 캐시 메모리(20)는, MMU(30)에 대해, 가상 어드레스를 사용하여 메모리 요구를 행한다. 또한, 캐시 메모리(20) 및 MMU(30)의 메모리 액세스 제어 플로우의 상세에 대해서는, 후술로 미룬다.
MMU(30)는, 트렌스레이션 룩어사이드 버퍼(TLB)(31)와, 페이지 워크 기구(32)를 구비하고 있다. TLB(31)는, 페이지 단위로 가상 어드레스로부터 물리 어드레스로 변환하기 위한 정보를 갖기 위해 사용된다. 또한, 페이지 워크 기구(32)는, 메인 메모리 상에 배치된 페이지 테이블(41)을 참조하는 기능을 구비하고 있다. 페이지 테이블(41)에는, 가상 어드레스와 물리 어드레스의 대응 관계가, 페이지 단위로 기술되어 있다.
프로세서 코어(10)로부터 요구된 가상 어드레스(단, 캐시 미스된 경우)에 대응하는 엔트리가 TLB(31) 상에서 보인 경우(즉, TLB 히트한 경우)에는, MMU(30)는, 그 엔트리 정보를 사용하여 가상 어드레스를 물리 어드레스로 변환하고, 그 변환 후의 물리 어드레스를 사용하여 메인 메모리(40)에 액세스한다.
한편, 프로세서 코어(10)로부터 요구된 가상 어드레스에 대응하는 엔트리가 TLB(31) 상에서 보이지 않은 경우(즉, TLB 미스된 경우)에는, 페이지 워크 기구(32)는, 페이지 테이블(41) 상을 탐색하여, 요구된 가상 어드레스에 대응하는 페이지의 물리 어드레스의 정보를 찾아내어, 액세스 요구된 가상 어드레스와 물리 어드레스를 매핑하는 새로운 엔트리를 TLB(31)에 작성한다. 그 후, MMU(30)는, 재차 어드레스 변환 처리를 실시하여, 요구된 가상 어드레스를 물리 어드레스로 변환할 수 있다.
계속해서, 가상 어드레스 캐시 방식의 메모리 관리 시스템(1)에 있어서의 데이터의 보호에 대해 고찰한다.
물리 어드레스 캐시 방식의 캐시 메모리에 있어서는, TLB의 엔트리마다 해당 페이지의 퍼미션 정보를 페이지 속성으로서 보유함으로써, 프로세서 코어로부터 캐시 메모리로 액세스할 때 MMU가 퍼미션 체크를 행하고, 허가된 경우에만 어드레스 변환을 실시하도록 하여, 어드레스 변환시에 데이터의 보호를 실현할 수 있다. 이에 비하여, 가상 어드레스 캐시 방식에서는, 프로세서 코어가 MMU를 통하지 않고 직접 캐시 메모리에 액세스할 수 있기 때문에, 프로세서 코어로부터 캐시 메모리에 액세스할 때 MMU에 의한 퍼미션 체크를 받을 수 없다. 이 때문에, MMU에 구애되지 않는 방법으로 메모리를 보호할 필요가 있다(전술).
예를 들어, 캐시 미스되어, MMU(30)를 경유하여 캐시 메모리(20)에 데이터를 캐시할 때에, 도 12에 도시하는 바와 같이, TLB(31) 내의 해당되는 TLB 엔트리에 페이지 속성으로서 저장되어 있는 퍼미션 정보를, 캐시 메모리(20) 내의 각 라인에 카피해 두는 방법을 들 수 있다.
도 12에 있어서, 프로세서 코어(10)가 메모리 액세스 요구할 때에는, 요구하는 가상 어드레스와 동시에, 프로세스의 시큐리티 상태가, 캐시 메모리(20)로 전달된다. 도시한 예에서는, 프로세스의 종별(「developer」 또는, 「proprietary」의 어느 프로세스이거나), 프로세스의 모드(「user」 모드 또는 「privileged(특권)」 모드의 어느 모드로 실행되고 있거나), 허가된 처리(판독(read), 기입(write) 등)와 같은, 시큐리티에 관계되는 복수의 파라미터의 8가지의 조합을 3bit의 정보로 표현하고 있다.
한편, MMU(30) 내에서는, TLB(31)의 엔트리마다 해당 페이지의 퍼미션 정보를 보유하고 있다. 구체적으로는, 퍼미션 정보는, 상기한 8가지의 시큐리티 상태의 각각에 대한 메모리 액세스의 권한(즉, 액세스를 허가하거나 또는 메모리를 보호하거나)을 각 1bit로 합계 8bit, 즉 8개의 플래그 A 내지 H로 표현하고 있다. TLB(31)의 각 엔트리에서는, 해당되는 가상 어드레스로부터 물리 어드레스로 변환하기 위한 정보(T)와 함께, 대응하는 물리 페이지에 대한 시큐리티 상태에 따른 퍼미션 정보가 메모리 액세스의 가부를 나타내는 8개의 플래그 A 내지 H라고 하는 형태로 보유되어 있다. 예를 들어, 플래그 A는, 시큐리티 상태(developer, user, read)에 대한 해당 페이지로의 메모리 액세스의 가부를 1 또는 0으로 나타내고 있다. 마찬가지로, 플래그 B는 시큐리티 상태(developer, user, write)에 대한 해당 페이지로의 메모리 액세스의 가부를 나타내고, 플래그 C는 시큐리티 상태(developer, privileged, read)에 대한 해당 페이지로의 메모리 액세스의 가부를 나타내고 있다. 그리고, 도 12에 도시하는 예에서는, 캐시 메모리(20) 내에는, 캐시 라인마다, 해당되는 페이지 내의 데이터에 관한 8bit의 퍼미션 정보(플래그 A 내지 H)가 카피된다.
어떤 프로세스를 실행 중인 프로세서 코어(10)가 메모리 액세스 요구하였을 때, 캐시 메모리(20)는, MMU(30)로부터 카피한 8bit의 퍼미션 정보 중, 프로세서 코어(10)가 메모리 액세스 요구와 동시에 통신해 온 시큐리티 상태에 대응하는 플래그를 참조하여, 메모리 액세스를 허가하거나 또는 메모리를 보호할지를 판정할 수 있다. 예를 들어, 시큐리티 상태 「A」로 실행하고 있는 프로세스가 메모리 액세스 요구하였을 때에는, MMU(30)는, 요구된 가상 어드레스에 대응하는 TLB 엔트리에 보유하는 퍼미션 정보 중 플래그 「A」를 참조하여, 액세스의 가부를 판단할 수 있다.
도 12에 도시하는 예에서는, MMU(30)의 TLB(31) 내의 각 엔트리는, 페이지 단위로 가상 어드레스로부터 물리 어드레스로 변환하기 위한 정보(T)와 함께, 해당되는 페이지 내의 데이터에 관한 8bit의 퍼미션 정보(플래그 A 내지 H)를 페이지 속성으로서 보유하고 있다. 예를 들어, 캐시 라인이 16Byte이고, 페이지 사이즈가 16KByte, 캐시 메모리(20)의 총 용량이 16KByte라고 하는 메모리 구성의 경우, 캐시 메모리(20) 내의 모든 데이터가 동일한 페이지의 데이터여도, 동일한 퍼미션 정보의 카피를 위해 1024개×8bit분의 메모리 용량을 캐시 메모리(20) 내에 보유하여야 하며, 용장하다.
요컨대, 도 12에 도시한 바와 같은, MMU(30) 내의 퍼미션 정보를 캐시 메모리(20) 내에 카피함으로써 메모리를 보호하는 방법에 의하면, 캐시 메모리(20) 내의 라인 분의 퍼미션 정보의 카피를 갖는 용량이, 캐시 메모리(20) 내에 별도 필요하게 된다고 하는 문제가 있다. 또한, 통상 어드레스 변환의 단위인 페이지 사이즈보다도 캐시 메모리(20)의 라인 사이즈는 작으므로, 카피한 정보에 용장성이 생긴다. 또한, MMU(30)로부터 캐시 메모리(20)로 퍼미션 정보를 전달하기 위한(역방향의) 사이드 밴드 신호나 제어 회로가 필요하게 된다.
그래서, 본 실시 형태에서는, 페이지 단위로 정의된 퍼미션 정보를 캐시 메모리(20) 내에 카피하는 방법(도 12를 참조) 대신에, 프로세서 코어(10)로부터의 메모리 액세스 요구와 동시에 통신되는 시큐리티 상태를, 캐시 메모리(20) 내에 캐시 라인 단위로 기억함으로써, 가상 어드레스 캐시 방식의 캐시 메모리 내의 데이터의 보호를 실현한다.
도 4에는, 프로세서 코어(10)로부터의 메모리 액세스 요구시와 동시에 통신되는 시큐리티 상태를, 캐시 메모리(20) 내에 캐시 라인 단위로 기억하는 모습을 나타내고 있다.
프로세서 코어(10)가 메모리 액세스 요구할 때에는, 요구하는 가상 어드레스와 동시에, 프로세스의 시큐리티 상태가, 캐시 메모리(20)로 전달된다. 도시한 예에서는, 프로세스의 종별(「developer」 또는, 「proprietary」의 어느 프로세스이거나), 프로세스의 모드(「user」 모드 또는, 「privileged(특권)」 모드의 어느 모드로 실행되고 있거나), 허가된 처리(판독(read), 기입(write) 등)와 같은, 시큐리티에 관계되는 복수의 파라미터의 8가지의 조합을 3bit의 정보로 표현하고 있다. 캐시 메모리(20)는, 시큐리티 상태에 관한 3bit의 정보를, 액세스 요구된 캐시 라인에 대응지어 기억한다. 단, 프로세서 코어(10)와 캐시 메모리(20) 사이는, 메모리 액세스 요구하는 어드레스 버스와 함께, 시큐리티 상태를 통신하는 3bit의 사이드 밴드 신호로 접속되어 있는 것으로 한다.
한편, MMU(30) 내에서는, TLB(31)의 엔트리마다 해당 페이지의 퍼미션 정보를 보유하고 있다. 도 4에 도시하는 예에서는, 퍼미션 정보는, 상기한 8가지의 시큐리티 상태의 각각에 대한 메모리 액세스의 권한(즉, 액세스를 허가할 것인지 또는 메모리를 보호할 것인지)을 각 1bit로 합계 8bit, 즉 8개의 플래그 A 내지 H로 표현하고 있다. TLB(31)의 각 엔트리에서는, 해당되는 가상 어드레스로부터 물리 어드레스로 변환하기 위한 정보(T)와 함께, 대응하는 물리 페이지에 대한 시큐리티 상태에 따른 퍼미션 정보가 메모리 액세스의 가부를 나타내는 8개의 플래그 A 내지 H라고 하는 형태로 보유되어 있다.
예를 들어, 플래그 A는, 시큐리티 상태(developer, user, read)에 대한 해당 페이지로의 메모리 액세스의 가부를 1 또는 0으로 나타내고 있다. 마찬가지로, 플래그 B는 시큐리티 상태(developer, user, write)에 대한 해당 페이지로의 메모리 액세스의 가부를 나타내고, 플래그 C는 시큐리티 상태(developer, privileged, read)에 대한 해당 페이지로의 메모리 액세스의 가부를 나타내고 있다.
어떤 프로세스를 실행 중인 프로세서 코어(10)가 메모리 액세스 요구하였을 때, 프로세서 코어(10)는, 먼저 캐시 메모리(20)에 액세스한다. 캐시 라인에 요구한 가상 어드레스에서 참조되는 데이터가 캐시되어 있는 경우(캐시 히트), 캐시 히트한 캐시 라인에 대응지어 기억되어 있는 시큐리티 상태를, 메모리 액세스 요구와 동시에 프로세서 코어(10)로부터 통신되는 프로세스의 시큐리티 상태와 비교함으로써, 프로세서 코어(10)는, MMU(30)를 통하지 않고, 캐시 메모리(20)에 저장된 메모리의 데이터에 직접 액세스할 수 있다. 캐시 미스가 발생된 경우에만, MMU(30)를 통하여 TLB(31) 내의 퍼미션 참조 기능이 사용된다.
페이지마다의 퍼미션 정보가 8bit로 표시되는 것에 대해(전술), 시큐리티 상태는 3bit로 표현된다. 따라서, 퍼미션 정보 대신에 시큐리티 상태를 캐시 라인마다 유지함으로써, 대폭적인 메모리 용량의 삭감이 된다는 것을 이해하도록 하자. 또한, 프로세서 코어(10)로부터의 통상의 메모리 액세스 요구로 시큐리티 상태가 캐시 메모리(20)로 전달되므로, 캐시 메모리(20) 내에 시큐리티 상태를 유지하기 위한 역방향 사이드 밴드 신호나 제어 회로는 불필요하다.
상기 예에서는, 시큐리티 상태마다 퍼미션 정보를 1비트로 표현하도록 되어 있다. 예를 들어, 「1」이면 그 시큐리티 상태를 허가하고, 「0」이면 그 시큐리티 상태를 거부하는 것을 나타낸다. 그의 변형예로서, 시큐리티 상태마다의 퍼미션 정보를 2비트 이상으로 표현하도록 해도 된다. 더 많은 비트수를 할당함으로써, 부정 액세스의 레벨에 따라 상세한 시스템 동작을 정의할 수 있다. 예를 들어, 시큐리티 상태 「A」의 퍼미션 정보에 2bit를 사용함으로써, 이하의 표 1에 나타내는 바와 같은 상세한 시스템 동작을 정의할 수 있다.
또한, 캐시 라인마다의 시큐리티 상태를 캐시 메모리(20) 내에 기억하는 방법으로서, 각 캐시 라인에 대응지어진 태그 영역을 확장하는 방법, 태그와는 별도의 레지스터 또는 메모리를 실장하는 방법, 캐시 메모리(20) 외에 캐시 라인마다 시큐리티 상태를 유지하는 레지스터 또는 메모리를 실장하는 방법 등을 들 수 있다.
도 5 및 도 6에는, 가상 어드레스 캐시 방식의 메모리 관리 시스템(1)에 있어서 메모리 액세스를 제어하기 위한 처리 수순을 흐름도의 형식으로 나타내고 있다. 단, 캐시 메모리(20) 내에서는, 캐시 라인 단위로 시큐리티 상태를 기억하도록 구성되어 있는 것으로 한다. 또한, 도 5 및 도 6에 도시하는 흐름도 중에서, MMU(30)가 실시하는 처리 스텝은 회색으로 빈틈없이 칠하고, 그 이외의 처리 스텝은 캐시 메모리(20) 내에서 실시되는 것으로 한다.
이 처리 수순은, 프로세서 코어(10)로부터 메모리 액세스 요구가 발행된 것에 응답하여 개시된다.
우선, 캐시 메모리(20) 내를 탐색하여, 프로세서 코어(10)로부터 요구된 가상 어드레스에 해당되는 캐시 라인이 존재하는지 여부, 즉 캐시 히트하는지 여부를 체크한다(스텝 S501).
캐시 히트한 경우에는(스텝 S501의 "예"), 메모리 액세스 요구와 동시에 통신된 시큐리티 상태가, 히트한 캐시 라인에 기억된 시큐리티 상태와 같은지 여부를 추가로 체크한다(스텝 S502).
그리고, 시큐리티 상태에서 변화가 없으면(스텝 S502의 "예"), 메모리 액세스 요구에 따라서, 그 캐시 라인에 대해 판독 처리 또는 기입 처리를 실행하고(스텝 S503), 본 처리를 종료한다.
따라서, 캐시 메모리(20) 내에 저장되어 있는 데이터는, 프로세서 코어(10)의 처리(프로세스)의 시큐리티 상태가 변화되지 않는 한, MMU(30)에 의한 퍼미션의 체크를 생략하고 계속해서 액세스할 수 있다.
한편, 시큐리티 상태에서 변화가 있을 때에는(스텝 S502의 "아니오"), 캐시 히트한 라인이 「dirty」 즉 캐시 라인의 데이터가 갱신되어 있을 때에는(스텝 S504의 "예"), 그 캐시 라인에 대해 기억되어 있는 시큐리티 상태에서, 메인 메모리(40)로의 재기입을 행하기로 한다(스텝 S505). 환언하면, 프로세서 코어(10)로부터의 메모리 액세스 요구한 시큐리티 상태에 변화가 있을 때에는, 데이터가 갱신되어 있는지 여부에 상관없이, 캐시 플래시가 실시되게 되어 있다.
또한, 프로세서 코어(10)로부터 요구된 가상 어드레스가 캐시 미스된 경우에는(스텝 S501의 "아니오"), 계속해서, 캐시 메모리(20)가 가득차서 치환이 필요한지 여부를 체크한다(스텝 S506). 치환이 필요한 경우에는(스텝 S506 "예"), 소정의 치환 알고리즘에 따라서, 버려야 할 데이터, 즉 희생(victim)이 될 캐시 라인을 결정한다. 그리고, 그 victim 라인이 「dirty」 즉 데이터가 갱신되어 있을 때에는(스텝 S507의 "예"), 그 victim 라인에 대해 기억되어 있는 시큐리티 상태에서, 그 victim 라인의 데이터 메인 메모리(40)로의 재기입을 행하기로 한다(스텝 S508).
그리고, 프로세서 코어(10)로부터 요구된 가상 어드레스가 캐시 미스되었을 때(스텝 S501의 "아니오"), 또는 프로세서 코어(10)의 처리 시큐리티 상태가 변화하고 있는 경우에는(스텝 S502의 "아니오"), MMU(30)는, TLB(31)의 해당되는 엔트리 퍼미션 정보를 참조하여, 가상 어드레스를 물리 어드레스로 변환함과 함께, 프로세서 코어(10)의 메모리 액세스 요구를 허가할지 여부를 체크한다(스텝 S509).
MMU(30)가 TLB(31)를 참조하여 어드레스 변환하는 구조, 그리고 TLB 미스가 발생하였을 때 페이지 워크 기구(32)가 메인 메모리(40) 내의 페이지 테이블(41)을 탐색하여 요구된 가상 어드레스에 대응하는 페이지의 물리 어드레스의 정보를 찾아내고, 새로운 TLB 엔트리를 작성하는 구조는, 종래와 마찬가지이므로, 여기서는 상세한 설명은 생략한다.
또한, 처리 스텝 S509에 있어서, MMU(30)는, 요구된 가상 어드레스에 대응하는 TLB 엔트리에 저장된 8bit의 퍼미션 정보 중, 프로세서 코어(10)가 메모리 액세스 요구와 동시에 통신해 온 시큐리티 상태에 대응하는 플래그를 참조하여, 메모리 액세스를 허가할 것인지 또는 메모리를 보호할 것인지를 판정할 수 있다(전술).
여기서, MMU(30)가, 프로세서 코어(10)의 메모리 액세스 요구를 허가하는 경우에는(스텝 S509의 "예"), 메인 메모리(40)의 해당되는 물리 어드레스로부터 데이터를 판독한다(스텝 S510). 그리고, 판독한 데이터를, 캐시 메모리(20) 상의 빈 라인 또는 victim 라인에 기입을 행한다(스텝 S511). 또한, 그 캐시 라인의 태그 정보를 갱신함과 함께, 그 캐시 라인에 기입한 데이터의 시큐리티 상태를 태그에 기억하고(스텝 S512), 본 처리를 종료한다.
또한, MMU(30)는, 프로세서 코어(10)의 메모리 액세스 요구를 허가하지 않는 경우에는(스텝 S509의 "아니오"), 액세스 요구원의 프로세서 코어(10)에 대해 프로텍션 에러를 반환하고(스텝 S513), 본 처리를 종료한다.
도 5 및 도 6에 도시한 메모리 액세스 처리 수순에 의하면, 캐시 메모리(20) 내에 시큐리티 상태라고 하는 적은 정보를 기억함으로써, 가상 어드레스 캐시 방식의 캐시 메모리(20) 내의 데이터 보호를 실현할 수 있다.
또한, 도 5 및 도 6에 도시한 메모리 액세스 처리 수순에 의하면, 한번 캐시 미스가 발생되어 캐시 메모리(20) 내에 저장한 데이터는, 프로세서 코어(10) 상에서 실행될 처리(프로세스)의 시큐리티 상태가 변화하지 않는 한, MMU(30)의 퍼미션 체크 없음에 계속 사용할 수 있다. 이 결과, 메모리 관리 시스템(1)에 있어서의 전력 효율과 회로 속도가 향상된다. 그리고, 프로세서 코어(10) 상에서 실행될 처리의 시큐리티 상태가 변화하였을 때에는, 캐시 메모리(20)에 있어서 그것을 검지하여, 최소한의 오래된 데이터를 플러쉬하고, 재차 MMU(30)에 의해 캐시 미스 시의 처리가 실행되고, 그때 퍼미션 체크도 행해진다.
캐시 라인마다 시큐리티 상태를 캐시 메모리(20) 내에 기억하는 방법으로서, 각 캐시 라인에 대응지어진 태그 영역을 확장하는 방법을 들 수 있다.
도 7에는, 캐시 라인마다 시큐리티 상태를 태그 비트에 보존하도록 구성된 캐시 메모리(20)의 실장예를 나타내고 있다. 단, 도면의 간소화로서, 1way 구성의 캐시 메모리를 나타내고 있지만, 2way 이상이라도 마찬가지로 구성할 수 있다.
도시한 캐시 메모리(20)는, 캐시 라인의 집합을 포함하는 데이터 어레이(71)와, 각 캐시 라인에 태그 메모리를 포함하는 태그 어레이(72)를 포함한다.
도시한 예에서는, 데이터 어레이(71)는, 1 뱅크가 0 내지 63인 64 라인을 포함하는 데이터 RAM으로 구성된다. 또한, 1 라인은, 4워드를 포함한다. 1워드는 32비트이며, 따라서, 1 라인은 128비트를 포함한다.
태그 어레이(72)는, 각각 데이터 어레이(71)의 각 라인에 대응하는, 0 내지 63의 합계64개의 태그 메모리를 포함하는 태그 RAM으로 구성된다. 하나의 태그는 22 비트 길이의 태그 비트를 포함한다.
데이터 어레이(71)의 각 라인에는, 데이터 RAM 어드레스가 각각 할당되어 있다. 또한. 태그 어레이(72)의 각 태그에는, 태그 RAM 어드레스가 각각 할당되어 있다. 데이터 RAM 어드레스와 태그 RAM 어드레스에는 대응 관계가 있다.
각 태그는, 대응하는 캐시 라인이 유효 또는 무효의 어느 것인지를 나타내는 Valid 비트, 캐시 라인 상의 데이터가 갱신되었는지 여부를 나타내는 Dirty 비트를 포함하고 있다. 본 실시 형태에서는, 태그는, 또한 시큐리티 상태(Security state)를 나타내기 때문에, 3비트를 시큐리티 비트에 할당하고 있다.
시큐리티 비트와 퍼미션 정보를 적절하게 정의함으로써(예를 들어, 도 4를 참조), 필요성에 따른 입도로 캐시 메모리 내의 데이터의 시큐리티를 실현할 수 있다. 또한, 오퍼레이팅 시스템과 소프트웨어를 조합함으로써, 간소한 시큐리티 기능밖에 탑재하고 있지 않은 프로세서 코어에 있어서도, 고도의 시큐리티 모델을 실현할 수 있다.
또한, 캐시 라인마다 시큐리티 상태를 캐시 메모리(20) 내에 기억하는 그 밖의 방법으로서, 태그와는 별도의 레지스터 또는 메모리를 실장하는 방법이나, 캐시 라인 외에 캐시 라인마다 시큐리티 상태를 유지하는 레지스터 또는 메모리를 실장하는 방법 등을 들 수 있다(모두 도시하지 않는다).
또한, 캐시 라인마다 시큐리티 상태를 기억할 때, 비트 압축하는 것도 가능하다. 상기 예에서는 시큐리티 상태에 3bit를 할당하고 있지만, 실제의 운용에서는 4종류의 값밖에 사용하지 않는 경우에는, 2bit로 압축하여 기억하도록 해도 된다. 이와 같은 압축 전개의 처리를, 하드웨어 또는 소프트웨어의 어느 것 혹은 양쪽을 이용하여 실장할 수 있다.
상술한 도 5 및 도 6에 도시한 처리 수순에서는, 프로세서 코어(10)로부터 메모리 액세스 요구된 데이터의 시큐리티 상태가 캐시 메모리(20) 내에 기억된 시큐리티 상태와 일치하지 않는 경우에는, 해당되는 캐시 라인을 플러쉬하도록 되어 있다.
이에 비해, 프로세서 코어(10)로부터의 메모리 액세스 요구의 시큐리티 상태가 캐시 메모리(20) 내에 기억된 시큐리티 상태와 일치하지 않는 경우에도, 해당되는 캐시 라인을 바로 플러쉬하지 않고, MMU(30)에 대해 프로텍션 체크만을 요구한다고 하는 변형예도 가능하다. 이 변형예에 의하면, MMU(30)에 의한 프로텍션 체크 결과가 액세스 허가라면, 캐시 메모리(20)에 기억된 시큐리티 상태를 갱신하는 것만으로, 캐시 플래시를 생략할 수 있다.
도 8 및 도 9에는, 메모리 관리 시스템(1)에 있어서 메모리 액세스를 제어하기 위한 처리 수순의 변형예를 흐름도의 형식으로 나타내고 있다. 도시한 처리 수순에서는, 시큐리티 상태가 불일치하는 경우에도, MMU(30)에 의한 프로텍션 체크 결과가 액세스 허가라면, 캐시 메모리(20)에 기억된 시큐리티 상태를 갱신하는 것만으로, 캐시 플래시를 생략할 수 있다.
단, 캐시 메모리(20) 내에서는, 캐시 라인 단위로 시큐리티 상태를 기억하도록 구성되어 있는 것으로 한다. 또한, 도 8 및 도 9에 도시하는 흐름도 중에서, MMU(30)가 실시하는 처리 스텝은 회색으로 빈틈없이 칠하고, 그 이외의 처리 스텝은 캐시 메모리(20) 내에서 실시되는 것으로 한다.
이 처리 수순은, 프로세서 코어(10)로부터 메모리 액세스 요구가 발행된 것에 응답하여 개시된다.
우선, 캐시 메모리(20) 내를 탐색하고, 프로세서 코어(10)로부터 요구된 가상 어드레스에 해당되는 캐시 라인이 존재하는지 여부, 즉 캐시 히트하는지 여부를 체크한다(스텝 S801). 그리고, 캐시 히트한 경우에는(스텝 S801의 "예"), 메모리 액세스 요구와 동시에 통신된 시큐리티 상태가, 히트한 캐시 라인에 기억된 시큐리티 상태와 같은지 여부를 더 체크하고(스텝 S802), 시큐리티 상태에서 변화가 없으면(스텝 S802의 "예"), 메모리 액세스 요구에 따라서, 그 캐시 라인에 대해 판독 처리 또는 기입 처리를 실행하고(스텝 S803), 본 처리를 종료한다.
한편, 시큐리티 상태에 변화가 있을 때에는(스텝 S802의 "아니오"), MMU(30)는, TLB(31)의 해당되는 엔트리 퍼미션 정보를 참조하여, 가상 어드레스를 물리 어드레스로 변환함과 함께, 프로세서 코어(10)의 메모리 액세스 요구를 허가할지 여부를 체크한다(스텝 S814).
MMU(30)가 프로세서 코어(10)의 메모리 액세스 요구를 허가하는 경우에는(스텝 S814의 "예"), 그 캐시 라인에 대해 판독 처리 또는 기입 처리를 실행한 후(스텝 S815), 그 캐시 라인에 기입한 데이터의 시큐리티 상태를 태그에 기억하고(스텝 S816), 본 처리를 종료한다. 환언하면, 프로세서 코어(10)로부터의 메모리 액세스 요구한 시큐리티 상태에 변화가 있을 때에는, MMU(30)에 의한 프로텍션 체크 결과가 액세스 허가라면, 태그에 기억되어 있는 시큐리티 상태를 갱신하는 것만으로, 캐시 플래시를 생략하도록 되어 있다.
또한, MMU(30)가 프로세서 코어(10)의 메모리 액세스 요구를 허가하지 않는 경우에는(스텝 S814의 "아니오"), 캐시 히트한 라인이 「dirty」 즉 캐시 라인의 데이터가 갱신되어 있을 때에는(스텝 S804의 "예"), 그 캐시 라인에 대해 기억되어 있는 시큐리티 상태에서, 메인 메모리(40)에 대한 재기입을 행하기로 한다(스텝 S805).
또한, 프로세서 코어(10)로부터 요구된 가상 어드레스가 캐시 미스된 경우에는(스텝 S801의 "아니오"), 계속해서, 캐시 메모리(20)가 가득차서 치환이 필요한지 여부를 체크한다(스텝 S806). 치환이 필요한 경우에는(스텝 S806 "예"), 소정의 치환 알고리즘에 따라, 버려야 할 데이터, 즉 희생(victim)이 될 캐시 라인을 결정한다. 그리고, 그 victim 라인이 「dirty」 즉 데이터가 갱신되어 있을 때에는(스텝 S807의 "예"), 그 victim 라인에 대해 기억되어 있는 시큐리티 상태에서, 그 victim 라인의 데이터 메인 메모리(40)에 대한 재기입을 행하기로 한다(스텝 S808).
그리고, 프로세서 코어(10)로부터 요구된 가상 어드레스가 캐시 미스하였을 때(스텝 S801의 "아니오"), 또는 프로세서 코어(10)의 처리 시큐리티 상태가 변화한 경우에는(스텝 S802의 "아니오"), MMU(30)는, TLB(31)의 해당되는 엔트리 퍼미션 정보를 참조하여, 가상 어드레스를 물리 어드레스로 변환함과 함께, 프로세서 코어(10)의 메모리 액세스 요구를 허가할지 여부를 체크한다(스텝 S809).
처리 스텝 S809에서는, MMU(30)는, 요구된 가상 어드레스에 대응하는 TLB 엔트리에 저장된 8bit의 퍼미션 정보 중, 프로세서 코어(10)가 메모리 액세스 요구와 동시에 통신해 온 시큐리티 상태에 대응하는 플래그를 참조하여, 메모리 액세스를 허가할 것인지 또는 메모리를 보호할 것인지를 판정할 수 있다(전술).
여기서, MMU(30)가, 프로세서 코어(10)의 메모리 액세스 요구를 허가하는 경우에는(스텝 S809의 "예"), 메인 메모리(40)의 해당되는 물리 어드레스로부터 데이터를 판독한다(스텝 S810). 그리고, 판독한 데이터를, 캐시 메모리(20) 상의 빈 라인 또는 victim 라인에 기입을 행한다(스텝 S811). 또한, 그 캐시 라인의 태그 정보를 갱신함과 함께 스텝 S812), 그 캐시 라인에 기입한 데이터의 시큐리티 상태를 태그에 기억해서(스텝 S816), 본 처리를 종료한다.
또한, MMU(30)는, 프로세서 코어(10)의 메모리 액세스 요구를 허가하지 않는 경우에는(스텝 S809의 "아니오"), 액세스 요구원의 프로세서 코어(10)에 대해 프로텍션 에러를 반환하여(스텝 S813), 본 처리를 종료한다.
도 8 및 도 9에 도시한 처리 수순에 의하면, 프로세서 코어(10)로부터의 메모리 액세스 요구의 시큐리티 상태가 캐시 메모리(20) 내에 기억된 시큐리티 상태와 일치하지 않는 경우에도, MMU(30)에 의한 프로텍션 체크 결과가 액세스 허가라면, 캐시 메모리(20)에 기억된 시큐리티 상태를 갱신하는 것만으로, 메인 메모리(40)에 대한 재기입을 생략할 수 있다.
또한, 퍼미션에 이미 정해진 룰이 존재하는 경우에는, 프로세서 코어(10)로부터의 메모리 액세스 요구의 시큐리티 상태가 캐시 메모리(20) 내에 기억된 시큐리티 상태와 일치하지 않는 경우에는, 캐시 메모리(20) 내부에서 그 이미 정해진 룰에 따라 허가 판단을 실시한다고 하는 변형예도 가능하다. 이 변형예에 의하면, 해당되는 캐시 라인을 바로 플러쉬하지 않고, 또한, MMU(30)에 대해 프로텍션 체크만을 요구할 필요가 없다.
또한, 퍼미션에 이미 정해진 룰이 존재하는 경우에는, 캐시 메모리(20) 내부에서 그 이미 정해진 룰에 따라 허가 판단한다고 하는 메모리 액세스 제어도 가능하다. 프로세서 코어(10)로부터의 메모리 액세스 요구의 시큐리티 상태가 캐시 메모리(20) 내에 기억된 시큐리티 상태와 일치하지 않는 경우에도, 캐시 메모리(20) 내부에서 그 이미 정해진 룰에 따라 허가 판단하므로, MMU(30)에 의한 프로텍션 체크를 행할 필요가 없다. 물론, 해당되는 캐시 라인을 바로 플러쉬하는 일은 없다.
예를 들어, 기입 처리가 이미 MMU(30)의 퍼미션 체크에 의해 허가된 시큐리티 상태이면, 처리를 「판독」으로 치환한 시큐리티 상태도 허가한다라는 이미 정해진 룰이 캐시 메모리(20) 내부에 존재하는 것으로 한다.
구체적으로는, 시큐리티 상태(developer, user, write)가 이미 MMU(30)에 의해 허가되어 있으면, (developer, user, read)도 허가한다고 하는 이미 정해진 룰이 존재하는 것으로 하자. 이러한 경우, 프로세서 코어(10)로부터 메모리 액세스 요구와 동시에 통신된 시큐리티 상태가 (developer, user, write)인 것에 비해, 그 메모리 액세스 요구에 히트한 캐시 라인에 기억되어 있는 시큐리티 상태가 (developer, user, read)이며, 일치하지 않지만, MMU(30)에 의한 퍼미션 체크나 캐시 플래시를 행하지 않고, 히트한 캐시 라인으로의 액세스를 실시하여, 태그에 기억해 둔 시큐리티 상태의 갱신만을 행한다. MMU(30)에 의한 프로텍션 체크를 행할 필요가 없고, 해당되는 캐시 라인을 바로 플러쉬할 일도 없다.
혹은, 이미 정해진 룰은, 권한이 상위인 시큐리티 상태에서의 메모리 액세스 요구는 허가한다고 하는 것이어도 된다. 예를 들어, 혹은 「proprietary」는 「developer」보다도 권한이 상위인 시큐리티 상태이며, 「privileged」는 「user」보다도 권한이 상위인 시큐리티 상태이다. 그리고, 프로세서 코어(10)로부터 메모리 액세스 요구와 동시에 통신된 시큐리티 상태가, 캐시 메모리(20) 내부에 기억해 둔 시큐리티 상태와 일치하지 않는 경우에도, 권한이 상위인 시큐리티 상태이면, 히트한 캐시 라인으로의 액세스를 실시하고, 태그에 기억해 둔 시큐리티 상태의 갱신만을 행한다. MMU(30)에 의한 프로텍션 체크를 행할 필요가 없다. 물론, 해당되는 캐시 라인을 바로 플러쉬하는 일은 없다.
또한, 이러한 이미 정해진 룰에 기초하는 캐시 메모리(20)에 대한 액세스 제어 기능은, 하드웨어 혹은 소프트웨어, 혹은 하드웨어와 소프트웨어의 조합에 의해 실장할 수 있다.
도 10 및 도 11에는, 메모리 관리 시스템(1)에 있어서 메모리 액세스를 제어하기 위한 처리 수순의 변형예를 흐름도의 형식으로 나타내고 있다. 도시한 처리 수순에서는, 시큐리티 상태가 불일치하는 경우에는, 변화된 시큐리티 상태가 캐시 메모리(20) 내부에 존재하는 이미 정해진 룰에 따라 캐시 메모리(20)에 대한 액세스가 제어된다. 캐시 메모리(20)에 대한 액세스가 허가되는 경우에는, 캐시 메모리(20)에 기억된 시큐리티 상태를 갱신하는 것만으로, 캐시 플래시를 생략할 수 있다.
단, 캐시 메모리(20) 내에서는, 캐시 라인 단위로 시큐리티 상태를 기억하도록 구성되어 있는 것으로 한다. 또한, 도 10 및 도 11에 도시하는 흐름도 중에서, MMU(30)가 실시하는 처리 스텝은 회색으로 빈틈없이 칠하고, 그 이외의 처리 스텝은 캐시 메모리(20) 내에서 실시되는 것으로 한다.
이 처리 수순은, 프로세서 코어(10)로부터 메모리 액세스 요구가 발행된 것에 응답하여 개시된다.
우선, 캐시 메모리(20) 내를 탐색하고, 프로세서 코어(10)로부터 요구된 가상 어드레스에 해당되는 캐시 라인이 존재하는지 여부, 즉 캐시 히트하는지 여부를 체크한다(스텝 S1001). 그리고, 캐시 히트한 경우에는(스텝 S1001의 "예"), 메모리 액세스 요구와 동시에 통신된 시큐리티 상태가, 히트한 캐시 라인에 기억된 시큐리티 상태와 동일한지 여부를 더 체크하고(스텝 S1002), 시큐리티 상태에 변화가 없으면(스텝 S1002의 "예"), 메모리 액세스 요구에 따라서, 그 캐시 라인에 대해 판독 처리 또는 기입 처리를 실행하고(스텝 S1003), 본 처리를 종료한다.
한편, 시큐리티 상태에 변화가 있을 때에는(스텝 S1002의 "아니오"), 변화된 시큐리티 상태가 캐시 메모리(20) 내부에 존재하는 이미 정해진 룰을 만족시키는지 여부를 체크한다(스텝 S1014). 예를 들어, 프로세서 코어(10)로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 캐시 메모리(20) 내의 히트한 캐시 라인에 기억되어 있는 시큐리티 상태보다도 권한이 상위인지 여부를 체크한다.
시큐리티 상태의 변화가 이미 정해진 룰을 만족시키는 경우에는(스텝 S1014의 "예"), 그 캐시 라인에 대해 판독 처리 또는 기입 처리를 실행한 후(스텝 S1015), 그 캐시 라인에 기입한 데이터의 시큐리티 상태를 태그에 기억하고(스텝 S1016), 본 처리를 종료한다. 환언하면, 프로세서 코어(10)로부터의 메모리 액세스 요구한 시큐리티 상태에 변화가 있을 때에는, 캐시 메모리(20) 내부에 존재하는 이미 정해진 룰에 따라 허가하는 것으로 판단되면, 태그에 기억되어 있는 시큐리티 상태를 갱신하는 것만으로, 캐시 플래시를 생략하도록 되어 있다.
또한, MMU(30)가 프로세서 코어(10)의 메모리 액세스 요구를 허가하지 않는 경우에는(스텝 S1014의 "아니오"), 캐시 히트한 라인이 「dirty」 즉 캐시 라인의 데이터가 갱신되어 있을 때에는(스텝 S1004의 "예"), 그 캐시 라인에 대해 기억되어 있는 시큐리티 상태에서, 메인 메모리(40)에 대한 재기입을 행하기로 한다(스텝 S1005).
또한, 프로세서 코어(10)로부터 요구된 가상 어드레스가 캐시 미스된 경우에는(스텝 S1001의 "아니오"), 계속해서, 캐시 메모리(20)가 가득차서 치환이 필요한지 여부를 체크한다(스텝 S1006). 치환이 필요한 경우에는(스텝 S1006 "예"), 소정의 치환 알고리즘에 따라, 버려야 할 데이터, 즉 희생(victim)이 될 캐시 라인을 결정한다. 그리고, 그 victim 라인이 「dirty」 즉 데이터가 갱신되어 있을 때에는(스텝 S1007의 "예"), 그 victim 라인에 대해 기억되어 있는 시큐리티 상태에서, 그 victim 라인의 데이터 메인 메모리(40)에 대한 재기입을 행하기로 한다(스텝 S1008).
그리고, 프로세서 코어(10)로부터 요구된 가상 어드레스가 캐시 미스하였을 때(스텝 S1001의 "아니오"), 또는 프로세서 코어(10)의 처리 시큐리티 상태가 변화한 경우에는(스텝 S1002의 "아니오"), MMU(30)는, TLB(31)의 해당되는 엔트리 퍼미션 정보를 참조하여, 가상 어드레스를 물리 어드레스로 변환함과 함께, 프로세서 코어(10)의 메모리 액세스 요구를 허가할지 여부를 체크한다(스텝 S1009).
처리 스텝 S1009에서는, MMU(30)는, 요구된 가상 어드레스에 대응하는 TLB 엔트리에 저장된 8bit의 퍼미션 정보 중, 프로세서 코어(10)가 메모리 액세스 요구와 동시에 통신해 온 시큐리티 상태에 대응하는 플래그를 참조하여, 메모리 액세스를 허가할 것인지 또는 메모리를 보호할 것인지를 판정할 수 있다(전술).
여기서, MMU(30)가, 프로세서 코어(10)의 메모리 액세스 요구를 허가하는 경우에는(스텝 S1009의 "예"), 메인 메모리(40)의 해당되는 물리 어드레스로부터 데이터를 판독한다(스텝 S1010). 그리고, 판독한 데이터를, 캐시 메모리(20) 상의 빈 라인 또는 victim 라인에 기입을 행한다(스텝 S1011). 또한, 그 캐시 라인의 태그 정보를 갱신함과 함께 스텝 S1012), 그 캐시 라인에 기입한 데이터의 시큐리티 상태를 태그에 기억하고(스텝 S1016), 본 처리를 종료한다.
또한, MMU(30)는, 프로세서 코어(10)의 메모리 액세스 요구를 허가하지 않는 경우에는(스텝 S1009의 "아니오"), 액세스 요구원의 프로세서 코어(10)에 대해 프로텍션 에러를 반환하고(스텝 S1013), 본 처리를 종료한다.
도 10 및 도 11에 도시한 처리 수순에 의하면, 프로세서 코어(10)로부터의 메모리 액세스 요구의 시큐리티 상태가 캐시 메모리(20) 내에 기억된 시큐리티 상태와 일치하지 않는 경우에도, 변화된 시큐리티 상태가 캐시 메모리(20) 내부에 존재하는 이미 정해진 룰에 따라 허가되면, 캐시 메모리(20)에 기억된 시큐리티 상태를 갱신하는 것만으로, 메인 메모리(40)에 대한 재기입을 생략할 수 있다.
또한, 상술한 처리 수순(도 5 및 도 6, 도 8 및 도 9, 도 10 및 도 11) 외에, 프로세서 코어(10)의 시큐리티 상태가 변화할 때, 가상 어드레스 방식의 캐시 메모리(20) 내에서 그 변화를 자동적으로 검지하여, 소프트웨어에 의해 캐시 플래시를 생략하도록, 메모리 관리 시스템(1)을 구성할 수도 있다.
본 실시 형태에 관한 메모리 관리 시스템(1)에 의하면, 캐시 메모리(20) 내에 있는 데이터를 보호하기 위해, 캐시 메모리(20) 내에 기억해야 할 정보량을 삭감할 수 있다. 따라서, 태그 메모리에 사용하는 고가의 메모리 리소스(플립플롭 또는 SRAM)을 삭감할 수 있다.
본 명세서에서 개시되는 기술은, 캐시 라인의 설계 변경만으로 용이하게 실현할 수 있고, 캐시 메모리(20)와 MMU(30) 사이를 접속하는 버스에(퍼미션 정보를 카피하기 위한) 사이드 밴드 신호를 추가하거나, MMU(30)를 설계 변경하거나 할 필요가 없다.
따라서, 본 명세서에서 개시되는 기술에 의하면, 가상 어드레스 캐시 방식에 있어서의 캐시 메모리 내의 데이터를 보호하기 위한 메모리 리소스나 제어 회로를 삭감할 수 있고, 또한, 전력 효율이 향상된다고 하는 효과가 있다. 따라서, 본 명세서에서 개시되는 기술은, 초 저소비 전력 IoT나 웨어러블 디바이스에 적합하게 적용할 수 있다.
이상, 특정 실시 형태를 참조하면서, 본 명세서에서 개시되는 기술에 대해 상세하게 설명했다. 그러나, 본 명세서에서 개시되는 기술의 요지를 일탈하지 않는 범위에서 당업자가 해당 실시 형태의 수정이나 대용을 할 수 있는 것은 자명하다.
본 명세서에서 개시하는 메모리 관리 기술은, 예를 들어 소용량의 메모리밖에 갖지 않는 내장 기기에 적용하여, 가상 어드레스 캐시 방식의 캐시 메모리 내의 데이터의 보호를, 캐시 메모리 내에 기억하는 적은 정보로 실현할 수 있다. 물론, 본 명세서에서 개시하는 메모리 관리 기술을, 통상 또는 대용량의 메모리를 장비하고, 가상 어드레스 캐시 방식을 채용하는 다양한 타입의 정보 처리 장치에 적용할 수 있다.
요컨대, 예시라고 하는 형태에 의해 본 명세서에서 개시되는 기술에 대해 설명한 것이며, 본 명세서의 기재 내용을 한정적으로 해석해서는 안된다. 본 명세서에서 개시되는 기술의 요지를 판단하기 위해서는, 특허청구의 범위를 참작해야 한다.
또한, 본 명세서의 개시 기술은, 이하와 같은 구성을 취하는 것도 가능하다.
(1) 프로세서 코어로부터 메모리 액세스 요구된 데이터를 일시 기억하는 캐시 메모리와,
상기 프로세서 코어로부터 메모리 액세스 요구와 동시에 통신된 시큐리티 상태를 기억하는 상태 기억부와,
메인 메모리에 대한 액세스를 관리하는 메모리 관리 유닛
을 구비하는 메모리 관리 시스템.
(2) 상기 상태 기억부는, 상기 캐시 메모리의 캐시 라인 단위로 시큐리티 상태를 기억하는,
상기 (1)에 기재된 메모리 관리 시스템.
(3) 상기 상태 기억부는, 상기 캐시 메모리 내의 태그 메모리, 상기 캐시 메모리 내에서 태그 메모리와는 별도로 배치된 레지스터, 또는 캐시 라인 본체의 밖에 실장된 메모리 또는 레지스터의 어느 것을 포함하고, 상기 캐시 메모리의 라인마다 시큐리티 상태를 기억하는,
상기 (1) 또는 (2) 중 어느 것에 기재된 메모리 관리 시스템.
(4) 상기 메모리 관리 유닛은,
트렌스레이션 룩어사이드 버퍼 내의 페이지 테이블의 각 엔트리에, 시큐리티 상태마다의 액세스 가부를 나타내는 퍼미션 정보를 저장하고,
상기 프로세서 코어로부터 메모리 액세스 요구와 동시에 통신해 온 시큐리티 상태에 대한 액세스의 가부를, 히트한 엔트리에 저장된 퍼미션 정보에 기초하여 판단하는,
상기 (1) 내지 (3) 중 어느 것에 기재된 메모리 관리 시스템.
(5) 상기 프로세서 코어로부터의 메모리 액세스 요구에 대해, 상기 메모리 관리 유닛에 의한 프로텍션 체크를 거쳐, 상기 메인 메모리로부터 판독한 데이터를 상기 캐시 메모리에 기입함과 함께, 상기 상태 기억부는 해당되는 캐시 라인에 대응지어 시큐리티 상태를 기억하는,
상기 (1) 내지 (4) 중 어느 것에 기재된 메모리 관리 시스템.
(6) 상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태와 일치하지 않는 경우에는, 히트한 캐시 라인의 캐시 플래시를 실시하는,
상기 (1) 내지 (5) 중 어느 것에 기재된 메모리 관리 시스템.
(7) 상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태와 일치하지 않는 경우에는, 상기 메모리 관리 유닛에 의한 프로텍션 체크를 실시하여, 이 메모리 액세스 요구가 허가된 경우에는, 히트한 캐시 라인으로의 액세스를 실시함과 함께 상기 상태 기억부에 기억된 시큐리티 상태를 갱신하는,
상기 (1) 내지 (5) 중 어느 것에 기재된 메모리 관리 시스템.
(8) 상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태와 일치하지 않지만, 그 상이가 상기 캐시 메모리 내부의 이미 정해진 룰을 만족시키는 경우에는, 히트한 캐시 라인으로의 액세스를 실시함과 함께 상기 상태 기억부에 기억된 시큐리티 상태를 갱신하는,
상기 (1) 내지 (5) 중 어느 것에 기재된 메모리 관리 시스템.
(9) 상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태보다 권한이 상위인 경우에는, 히트한 캐시 라인으로의 액세스를 실시함과 함께 상기 상태 기억부에 기억된 시큐리티 상태를 갱신하는,
상기 (1) 내지 (5) 중 어느 것에 기재된 메모리 관리 시스템.
(10) 상기 캐시 메모리는 가상 어드레스 캐시 방식인,
상기 (1) 내지 (9) 중 어느 것에 기재된 메모리 관리 시스템.
(11) 프로세서 코어로부터 메모리 액세스 요구된 데이터를 메인 메모리로부터 판독하여 캐시 메모리에 일시 기억하는 스텝과,
상기 프로세서 코어로부터 메모리 액세스 요구와 동시에 통신된 시큐리티 상태를 기억하는 상태 기억 스텝과,
상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태와 비교한 결과에 기초하여, 상기 캐시 메모리 및 상기 메인 메모리에 대한 액세스를 제어하는 제어 스텝,
을 갖는 메모리 관리 방법.
(11-1) 상기 제어 스텝에서는, 상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태와 일치하지 않는 경우에는, 히트한 캐시 라인의 캐시 플래시를 실시하는,
상기 (11)에 기재된 메모리 관리 방법.
(11-2) 상기 제어 스텝에서는, 상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태와 일치하지 않는 경우에는, 상기 메모리 관리 유닛에 의한 프로텍션 체크를 실시하여, 이 메모리 액세스 요구가 허가된 경우에는, 히트한 캐시 라인으로의 액세스를 실시함과 함께 상기 상태 기억부에 기억된 시큐리티 상태를 갱신하는,
상기 (11)에 기재된 메모리 관리 방법.
(11-3) 상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태와 일치하지 않지만, 그 상이가 상기 캐시 메모리 내부의 이미 정해진 룰을 만족시키는 경우에는, 히트한 캐시 라인으로의 액세스를 실시함과 함께 상기 상태 기억부에 기억된 시큐리티 상태를 갱신하는,
상기 (11)에 기재된 메모리 관리 방법.
(12) 프로세서 코어와,
메인 메모리와,
상기 프로세서 코어로부터 메모리 액세스 요구된 데이터를 일시 기억하는 캐시 메모리와,
상기 프로세서 코어로부터 메모리 액세스 요구와 동시에 통신된 시큐리티 상태를 기억하는 상태 기억부와,
상기 메인 메모리에 대한 액세스를 관리하는 메모리 관리 유닛
을 구비하는 정보 처리 장치.
1: 메모리 관리 시스템
10: 프로세서 코어
20: 캐시 메모리
30: MMU
31: TLB
32: 페이지 워크 기구
40: 메인 메모리
41: 페이지 테이블
100: 센싱 디바이스
101: CPU
102: MMU
103: SRAM
104: 플래시 메모리
105: 센서
106: 통신 모듈
107: 전지
110: 버스
200: 기지국
201: 클라우드
202: 서버
10: 프로세서 코어
20: 캐시 메모리
30: MMU
31: TLB
32: 페이지 워크 기구
40: 메인 메모리
41: 페이지 테이블
100: 센싱 디바이스
101: CPU
102: MMU
103: SRAM
104: 플래시 메모리
105: 센서
106: 통신 모듈
107: 전지
110: 버스
200: 기지국
201: 클라우드
202: 서버
Claims (12)
- 프로세서 코어로부터 메모리 액세스 요구된 데이터를 일시 기억하는 캐시 메모리와,
상기 프로세서 코어로부터 메모리 액세스 요구와 동시에 통신된 시큐리티 상태를 기억하는 상태 기억부와,
메인 메모리에 대한 액세스를 관리하는 메모리 관리 유닛
을 구비하는 메모리 관리 시스템. - 제1항에 있어서, 상기 상태 기억부는, 상기 캐시 메모리의 캐시 라인 단위로 시큐리티 상태를 기억하는,
메모리 관리 시스템. - 제1항에 있어서, 상기 상태 기억부는, 상기 캐시 메모리 내의 태그 메모리, 상기 캐시 메모리 내에서 태그 메모리와는 별도로 배치된 레지스터, 또는 캐시 라인 본체의 밖에 실장된 메모리 또는 레지스터의 어느 것을 포함하고, 상기 캐시 메모리의 라인마다 시큐리티 상태를 기억하는,
메모리 관리 시스템. - 제1항에 있어서, 상기 메모리 관리 유닛은,
트렌스레이션 룩어사이드 버퍼 내의 페이지 테이블의 각 엔트리에, 시큐리티 상태마다의 액세스 가부를 나타내는 퍼미션 정보를 저장하고,
상기 프로세서 코어로부터 메모리 액세스 요구와 동시에 통신해 온 시큐리티 상태에 대한 액세스의 가부를, 히트한 엔트리에 저장된 퍼미션 정보에 기초하여 판단하는,
메모리 관리 시스템. - 제1항에 있어서, 상기 프로세서 코어로부터의 메모리 액세스 요구에 대해, 상기 메모리 관리 유닛에 의한 프로텍션 체크를 거쳐, 상기 메인 메모리로부터 판독한 데이터를 상기 캐시 메모리에 기입함과 함께, 상기 상태 기억부는 해당되는 캐시 라인에 대응지어 시큐리티 상태를 기억하는,
메모리 관리 시스템. - 제1항에 있어서, 상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태와 일치하지 않는 경우에는, 히트한 캐시 라인의 캐시 플래시를 실시하는,
메모리 관리 시스템. - 제1항에 있어서, 상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태와 일치하지 않는 경우에는, 상기 메모리 관리 유닛에 의한 프로텍션 체크를 실시하여, 이 메모리 액세스 요구가 허가된 경우에는, 히트한 캐시 라인으로의 액세스를 실시함과 함께 상기 상태 기억부에 기억된 시큐리티 상태를 갱신하는,
메모리 관리 시스템. - 제1항에 있어서, 상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태와 일치하지 않지만, 그 상이가 상기 캐시 메모리 내부의 이미 정해진 룰을 만족시키는 경우에는, 히트한 캐시 라인으로의 액세스를 실시함과 함께 상기 상태 기억부에 기억된 시큐리티 상태를 갱신하는,
메모리 관리 시스템. - 제1항에 있어서, 상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태보다 권한이 상위인 경우에는, 히트한 캐시 라인으로의 액세스를 실시함과 함께 상기 상태 기억부에 기억된 시큐리티 상태를 갱신하는,
메모리 관리 시스템. - 제1항에 있어서, 상기 캐시 메모리는 가상 어드레스 캐시 방식인,
메모리 관리 시스템. - 프로세서 코어로부터 메모리 액세스 요구된 데이터를 메인 메모리로부터 판독하여 캐시 메모리에 일시 기억하는 스텝과,
상기 프로세서 코어로부터 메모리 액세스 요구와 동시에 통신된 시큐리티 상태를 기억하는 상태 기억 스텝과,
상기 프로세서 코어로부터 메모리 액세스 요구하였을 때의 시큐리티 상태가 상기 상태 기억부에 기억된 시큐리티 상태와 비교한 결과에 기초하여, 상기 캐시 메모리 및 상기 메인 메모리에 대한 액세스를 제어하는 제어 스텝
을 갖는 메모리 관리 방법. - 프로세서 코어와,
메인 메모리와,
상기 프로세서 코어로부터 메모리 액세스 요구된 데이터를 일시 기억하는 캐시 메모리와,
상기 프로세서 코어로부터 메모리 액세스 요구와 동시에 통신된 시큐리티 상태를 기억하는 상태 기억부와,
상기 메인 메모리에 대한 액세스를 관리하는 메모리 관리 유닛
을 구비하는 정보 처리 장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JPJP-P-2018-035904 | 2018-02-28 | ||
JP2018035904 | 2018-02-28 | ||
PCT/JP2018/043086 WO2019167360A1 (ja) | 2018-02-28 | 2018-11-21 | メモリ管理システム及びメモリ管理方法、並びに情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200125596A true KR20200125596A (ko) | 2020-11-04 |
Family
ID=67804930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207023718A KR20200125596A (ko) | 2018-02-28 | 2018-11-21 | 메모리 관리 시스템 및 메모리 관리 방법, 그리고 정보 처리 장치 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11392496B2 (ko) |
JP (1) | JPWO2019167360A1 (ko) |
KR (1) | KR20200125596A (ko) |
CN (1) | CN111868700B (ko) |
WO (1) | WO2019167360A1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11438963B2 (en) | 2019-04-29 | 2022-09-06 | Sonicwall Inc. | Method for providing an elastic content filtering security service in a mesh network |
US11540132B2 (en) | 2019-04-29 | 2022-12-27 | Sonicwall Inc. | Method for providing an elastic content filtering security service in a mesh network |
US11310665B2 (en) * | 2019-04-29 | 2022-04-19 | Sonicwall Inc. | Elastic security services and load balancing in a wireless mesh network |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006155516A (ja) | 2004-12-01 | 2006-06-15 | Ntt Docomo Inc | メモリ管理装置、メモリ管理システム及びメモリ管理方法 |
JP2014078248A (ja) | 2005-10-20 | 2014-05-01 | Qualcomm Incorporated | キャッシュされたメモリデータを伴うキャッシュメモリ属性インジケータ |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5265227A (en) * | 1989-11-14 | 1993-11-23 | Intel Corporation | Parallel protection checking in an address translation look-aside buffer |
JPH08110873A (ja) * | 1994-10-11 | 1996-04-30 | Toshiba Corp | キャッシュメモリサブシステム |
JP3866597B2 (ja) * | 2002-03-20 | 2007-01-10 | 株式会社東芝 | 内部メモリ型耐タンパプロセッサおよび秘密保護方法 |
FR2859292A1 (fr) * | 2003-08-27 | 2005-03-04 | St Microelectronics Sa | Dispositif de controle de l'acces a une memoire securisee, comprenant un circuit synchrome de recherche d'attributs |
US7650479B2 (en) * | 2006-09-20 | 2010-01-19 | Arm Limited | Maintaining cache coherency for secure and non-secure data access requests |
US7958320B2 (en) * | 2006-12-05 | 2011-06-07 | Intel Corporation | Protected cache architecture and secure programming paradigm to protect applications |
US20110202740A1 (en) * | 2010-02-17 | 2011-08-18 | Arm Limited | Storing secure page table data in secure and non-secure regions of memory |
US9684601B2 (en) * | 2012-05-10 | 2017-06-20 | Arm Limited | Data processing apparatus having cache and translation lookaside buffer |
GB2516477A (en) * | 2013-07-24 | 2015-01-28 | Ibm | Method and system for handling virtual memory address synonyms in a multi-level cache hierarchy structure |
JP6027562B2 (ja) * | 2014-02-24 | 2016-11-16 | 株式会社東芝 | キャッシュメモリシステムおよびプロセッサシステム |
JP6118285B2 (ja) * | 2014-03-20 | 2017-04-19 | 株式会社東芝 | キャッシュメモリシステムおよびプロセッサシステム |
US20190102324A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corporation | Cache behavior for secure memory repartitioning systems |
-
2018
- 2018-11-21 US US16/971,151 patent/US11392496B2/en active Active
- 2018-11-21 WO PCT/JP2018/043086 patent/WO2019167360A1/ja active Application Filing
- 2018-11-21 JP JP2020502806A patent/JPWO2019167360A1/ja active Pending
- 2018-11-21 CN CN201880090079.8A patent/CN111868700B/zh active Active
- 2018-11-21 KR KR1020207023718A patent/KR20200125596A/ko not_active Application Discontinuation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006155516A (ja) | 2004-12-01 | 2006-06-15 | Ntt Docomo Inc | メモリ管理装置、メモリ管理システム及びメモリ管理方法 |
JP2014078248A (ja) | 2005-10-20 | 2014-05-01 | Qualcomm Incorporated | キャッシュされたメモリデータを伴うキャッシュメモリ属性インジケータ |
Also Published As
Publication number | Publication date |
---|---|
WO2019167360A1 (ja) | 2019-09-06 |
US11392496B2 (en) | 2022-07-19 |
JPWO2019167360A1 (ja) | 2021-02-12 |
US20210117323A1 (en) | 2021-04-22 |
CN111868700A (zh) | 2020-10-30 |
CN111868700B (zh) | 2024-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107111455B (zh) | 电子处理器架构以及缓存数据的方法 | |
US9251095B2 (en) | Providing metadata in a translation lookaside buffer (TLB) | |
JP5580894B2 (ja) | Tlbプリフェッチング | |
JP4447580B2 (ja) | 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ | |
US5003459A (en) | Cache memory system | |
KR101414384B1 (ko) | 연산 장치, 정보 처리 장치 및 연산 방법 | |
US4825412A (en) | Lockout registers | |
US9086991B2 (en) | Solid state drive cache recovery in a clustered storage system | |
KR20200125596A (ko) | 메모리 관리 시스템 및 메모리 관리 방법, 그리고 정보 처리 장치 | |
US8352646B2 (en) | Direct access to cache memory | |
US20190324914A1 (en) | Method, Apparatus, and Non-Transitory Readable Medium for Accessing Non-Volatile Memory | |
US11392508B2 (en) | Lightweight address translation for page migration and duplication | |
US7117312B1 (en) | Mechanism and method employing a plurality of hash functions for cache snoop filtering | |
US7325102B1 (en) | Mechanism and method for cache snoop filtering | |
JP3929872B2 (ja) | キャッシュメモリ、プロセッサ及びキャッシュ制御方法 | |
KR20200066731A (ko) | 전원이 차단된 상태에서 프로세서 코어의 캐시 엔트리 보유하기 | |
WO2010032433A1 (ja) | バッファメモリ装置、メモリシステム及びデータ読出方法 | |
US9442856B2 (en) | Data processing apparatus and method for handling performance of a cache maintenance operation | |
US9053030B2 (en) | Cache memory and control method thereof with cache hit rate | |
US11822481B2 (en) | Semiconductor device and method for controlling semiconductor device | |
US11397691B2 (en) | Latency hiding for caches | |
KR20220153330A (ko) | 메모리 접근 방법 및 장치 | |
JP2011192012A (ja) | データ処理システム及びアクセス制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal |