KR20010012133A - 메모리 액세스 보호 - Google Patents

메모리 액세스 보호 Download PDF

Info

Publication number
KR20010012133A
KR20010012133A KR19997009985A KR19997009985A KR20010012133A KR 20010012133 A KR20010012133 A KR 20010012133A KR 19997009985 A KR19997009985 A KR 19997009985A KR 19997009985 A KR19997009985 A KR 19997009985A KR 20010012133 A KR20010012133 A KR 20010012133A
Authority
KR
South Korea
Prior art keywords
address
logical
memory
attribute
region
Prior art date
Application number
KR19997009985A
Other languages
English (en)
Other versions
KR100563222B1 (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 KR20010012133A publication Critical patent/KR20010012133A/ko
Application granted granted Critical
Publication of KR100563222B1 publication Critical patent/KR100563222B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

본 발명은, 각각의 메모리 위치가 대응하는 어드레스를 갖는 복수의 데이터 값을 기억하기 위한 복수의 메모리 위치를 지닌 메모리에 대한 액세스를 제어하는 데이터 처리장치를 제공한다. 이 장치는, 상기 메모리 내부의 복수의 논리 영역에 대한 어드레스 범위를 지정하는 정보를 기억하는 어드레스 영역 기억장치와, 각각의 논리 영역에 대해, 상기 논리 영역 내부의 메모리 위치에 대한 액세스를 제어하는데 사용되는 속성을 기억하는 속성 기억장치를 구비한다. 바람직한 실시예에 따르면, 이들 논리 영역의 1개 또는 그 이상은 서로 중첩될 수 있다. 더구나, 상기 복수의 메모리 위치 중 한 개에 대응하여 프로세서에 의해 출력된 어드레스를 상기 복수의 논리 영역에 대한 어드레스 범위와 비교하여, 1개 또는 그 이상의 논리 영역이 상기 어드레스를 포함하는 경우에, 상기 어드레스를 포함하는 논리 영역을 나타내는 신호를 발생하는 어드레스 비교기 논리회로가 설치된다. 어드레스 비교기 논리회로에 의해 발생된 신호에 응답하여, 소정의 우선순위 기준을 적용하여 상기 어드레스를 포함하는 어떤 논리 영역이 가장 높은 우선순위를 갖는지 판정함으로써, 가장 높은 우선순위 영역에 해당하는 속성 기억장치 내부의 속성이 어드레스에 의해 지정된 메모리 위치에 대한 액세스를 제어하는데 사용되도록 하는 속성 판정 논리회로가 사용된다. 본 발명에 따르면, 중첩된 복수의 논리 영역이 규정될 수 있으며, 상대적인 우선순위가 각각의 논리 영역에 할당된다. 프로세서가 2개 또는 그 이상의 논리 영역에 속하는 어드레스를 지정하면, 어떤 논리 영역이 가장 높은 우선순위를 갖는지 판정하기 위해 우선순위 기준이 사용된다. 각각의 논리 영역은, 이 논리 영역 내부의 메모리 위치에 대한 액세스를 제어하는데 사용되는 영역에 대해 지정된 다수의 속성을 갖는다. 어떤 영역이 가장 높은 우선순위를 갖는지의 판정에 근거하여, 이 가장 높은 우선순위의 영역에 대한 속성이 프로세서에 의해 지정된 특정한 메모리 위치에 대한 액세스를 제어하는데 사용된다.

Description

메모리 액세스 보호{MEMORY ACCESS PROTECTION}
발명의 분야
본 발명은, 데이터 처리장치와, 복수의 데이터 값을 기억하기 위한 복수의 메모리 위치를 갖는 메모리를 액세스하는 방법에 관한 것으로, 특히 이와 같은 데이터 처리장치와, 메모리 액세스를 보호하는 방법에 관한 것이다. 이때, 본 명세서에서, 용어 "데이터 값"은, 명령과, 데이터 워드와 같은 데이터의 항목 또는 블록을 칭하는데 사용된다.
종래기술의 설명
메모리를 다수의 분리된 논리 영역으로 분할하고, 이와 같은 메모리 영역에 대한 액세스를 제어하기 위해, 이들 영역을 관리자 모드에서만 액세스 가능하도록 할 것이지, 이들 영역을 캐시 기반의 시스템에서 캐시 가능하고, 버퍼 가능하게 할 것인지와 같이, 각각의 영역에 대해 보호 속성을 지정하는 것이 공지되어 있다. 따라서, 프로세서가 특정한 메모리 영역에 속하는 메모리 어드레스를 출력하면, 프로세서가 그 자신의 현재 동작 모드에서 이 메모리 어드레스를 액세스할 권한이 있는지 여부를 판정하고, 이 메모리 영역으로부터 검색된 데이터 값이 캐시 가능한지 여부와, 이 메모리 영역에 기록하려는 데이터 값이 버퍼 가능한지 여부 등을 판정하기 위해, 이 영역에 대한 보호 속성이 사용될 수 있다. 빈번하게, 이와 같은 보호 메카니즘은 가상 대 물리 어드레스 변환과 관련하여 가상 메모리 시스템에서 사용된다.
대부분의 구현에 있어서, 복수의 논리 영역을 규정하는데 제공되는 유연성이 제한된다. 비록, 일부 기술은 1kb, 2kb 및 4kb 영역과 같이 몇가지 서로 다른 크기를 갖는 영역을 제공함으로써 유연성을 다소 향상시키지만, 이들 논리 영역은 일반적으로 4kb 영역과 같은 고정된 크기를 갖는다. 일반적으로, 서로 다른 크기를 갖는 영역이 주어지는 경우에, 이들 영역이 2의 제곱씩 변화하는 크기로 제약을 받는다면, 복수의 어드레스를 비교하여 이들 어드레스를 포함하는 논리 영역을 결정하는데 필요한 하드웨어가 덜 복잡하게 될 수 있으므로, 이들 영역은 2의 제곱씩 변화하도록 제약을 받는다.
상기한 접근방식을 사용하여, 사용자 메모리 영역과 관리자 메모리 영역을 지정할 수 있다. 예를 들어, 4kb의 고정된 크기의 논리 영역이 주어지고, 시스템이 4kb의 관리자 코드와 12kb의 사용자 코드를 필요로 하며, 이들 코드가 16kb RAM으로 매핑되는 경우를 생각하자. 이것을 달성하기 위해서는 4개의 논리 영역, 즉 관리자 코드용의 1개의 4kb 영역과, 사용자 코드용의 3개의 4kb 영역을 규정하는 것이 필요하다.
전술한 종래기술에서 필요한 것보다 적은 영역을 규정하면서 상기한 기능을 제공함으로써, 시스템의 유연성을 향상시키는 것이 바람직할 것이다.
발명의 요약
본 발명의 일면에 따르면, 본 발명은, 각각의 메모리 위치가 대응하는 어드레스를 갖는 복수의 데이터 값을 기억하기 위한 복수의 메모리 위치를 지닌 메모리에 대한 액세스를 제어하는 데이터 처리장치에 있어서, 상기 메모리 내부의 복수의 논리 영역에 대한 어드레스 범위를 지정하는 정보를 기억하는 어드레스 영역 기억장치와, 각각의 논리 영역에 대해, 상기 논리 영역 내부의 메모리 위치에 대한 액세스를 제어하는데 사용되는 속성을 기억하는 속성 기억장치와, 상기 복수의 메모리 위치 중 한 개에 대응하여 프로세서에 의해 출력된 어드레스를 상기 복수의 논리 영역에 대한 어드레스 범위와 비교하여, 1개 또는 그 이상의 논리 영역이 상기 어드레스를 포함하는 경우에, 상기 어드레스를 포함하는 논리 영역을 나타내는 신호를 발생하는 어드레스 비교기 논리회로와, 상기 어드레스 비교기 논리회로에 의해 발생된 신호에 응답하여, 소정의 우선순위 기준을 적용하여 상기 어드레스를 포함하는 어떤 논리 영역이 가장 높은 우선순위를 갖는지 판정함으로써, 가장 높은 우선순위 영역에 해당하는 속성 기억장치 내부의 속성이 어드레스에 의해 지정된 메모리 위치에 대한 액세스를 제어하는데 사용되도록 하는 속성 판정 논리회로를 구비한 것을 특징으로 하는 데이터 처리장치를 제공한다.
본 발명에 따르면, 중첩되는 복수의 논리 영역이 규정될 수 있으며, 상대적인 우선순위가 각각의 논리 영역에 할당된다. 프로세서가 2개 또는 그 이상의 논리 영역에 속하는 어드레스를 지정하면, 어떤 논리 영역이 가장 높은 우선순위를 갖는지 결정하기 위해 우선순위 기준이 사용된다. 각각의 논리 영역은, 이 논리 영역 내부의 메모리 위치에 대한 액세스를 제어하는데 사용되는 영역에 대해 지정된 다수의 속성을 갖는다. 어떤 영역이 가장 높은 우선순위를 갖는지에 대한 판정에 근거하여, 이 가장 높은 우선순위 영역에 대한 속성이 프로세서에 의해 지정된 특정한 메모리 위치에 대한 액세스를 제어하는데 사용된다.
따라서, 16kb RAM 내부에 4kb의 관리자 코드와 12kb의 사용자 코드를 제공하는 것이 요구되는 전술한 예를 참조하면, 본 발명에 따라 이것은, 2개의 중첩하는 영역, 즉 관리자 코드에 대한 4kb 영역과, 사용자 코드에 대한 16kb 영역을 제공함으로써 달성될 수 있다. 상기한 관리자 영역은 사용자 영역보다 더 높은 우선순위를 갖도록 규정됨으로써, 4kb 중첩 영역을 액세스하려는 시도가 관리자 영역과 관련된 속성에 의해 좌우되도록 확보한다. 따라서, 종래기술에 따르면 4개의 영역을 규정할 필요가 있는 것에 비해, 이 예에 있어서 본 발명에 따르면 단지 2개의 영역을 규정할 필요가 있다.
바람직한 실시예에 있어서, 상기한 복수의 논리 영역 중 한 개는, 전체 메모리를 포괄하며 상기한 복수의 논리 영역의 가장 낮은 우선순위를 갖는 배경 영역으로 사용됨으로써, 프로세서에 의해 출력된 어드레스가 다른 논리 영역 내부에 존재하지 않는 메모리 위치에 해당하는 경우에, 배경 영역과 관련된 속성이 이 어드레스에 의해 지정된 메모리 위치에 대한 액세스를 제어하는데 사용되도록 한다.
규정된 메모리 영역이 메모이의 어드레스 공간을 완전히 채우지 않음으로써, 어드레스 맵 내부에 "구멍"이 존재하도록 하는 것도 가능하다. 그러나, 가장 낮은 우선순위의 영역이 전체 메모리 어드레스 영역을 포괄하도록 구성하고, 이 논리 메모리 영역에 대해 적절한 속성을 지정함으로써, 구멍에 대한 액세스가 이루어지는 경우에 무슨 일이 발생하였는지 규정할 수 있다(예를 들면, 속성을 풀 액세스 또는 액세스 없음으로 설정할 수 있다). 이와 달리, 배경 영역이 규정되지 않을 수도 있으며, 이때에는 구멍에 대한 액세스가 시도되었을 때, 예를 들면, 구멍에 대한 액세스가 중단을 일으키거나, 적절하다면, 구멍에 대한 액세스가 무시될 수 있는 것과 같이, 무슨 일이 발생하는지를 판정하기 위해 시스템 내부에 별도의 장치가 구성될 필요가 있다.
또 다른 접근방식은, 어드레스 비교기 논리회로가 복수의 논리 영역의 어느 것도 상기 어드레스를 포함하지 않는다는 것을 나타내는 신호를 발생할 경우, 속성 판정 논리회로가 가장 낮은 우선순위 영역과 관련된 속성이 사용되어야 한다는 것을 나타내도록 구성되도록, 가장 낮은 우선순위의 영역이 전체 어드레스 공간을 포괄하도록 배선으로 연결하고, 비교과정에 가장 낮은 우선순위의 영역을 포함시키지 않는 것이다. 이와 같은 접근방법은, 어드레스 비교기 논리회로가 어드레스를 가장 낮은 우선순위의 영역에 대한 어드레스 영역과 비교할 필요가 없고, 이와 같은 가장 낮은 우선순위의 영역에 대한 속성이 다른 논리 영역의 어느 것도 상기 어드레스를 포함하지 않는다고 판정하는 어드레스 비교기 논리회로의 직접적인 결과로서 사용되기 때문에, 효율을 증가시킨다.
바람직한 실시예에 있어서, 복수의 논리 영역에 대한 어드레스 범위는, 어느 메모리 위치에서 그 영역이 시작하는지를 식별하는 기저 어드레스(base address)와, 논리 영역의 크기를 식별하는 크기 속성에 의해 특정된다. 바람직한 실시예에 있어서, 상기한 기저 어드레스는, 크기 속성의 함수로써 결정되어, 크기 X를 갖는 메모리 영역은 수치 X의 배수에 해당하는 기저 어드레스를 가져야 한다. 이와 같은 접근방식은 하드웨어의 요구사항을 간단하게 하는 역할을 수행한다. 이 기저 어드레스와 크기 속성은 일반적으로 사용자 프로그래밍 가능하다. 기저 어드레스와 크기 속성을 사용하는 것에 대한 대안으로서, 논리 영역에 대한 어드레스 범위가, 논리 영역의 시작점 및 종료점을 식별하는 시작점 및 종료점 어드레스에 의해 지정될 수도 있다.
상기한 어드레스 비교기 논리회로는 임의의 적절한 방식으로 구성될 수 있다. 바람직한 실시예에 있어서, 어드레스 비교기 논리회로는, 각각의 어드레스 범위에 대해 한 개씩의 다수의 비교기를 구비한다.
상기한 어드레스 범위 기억장치는, 임의의 적정한 기억장치에 의해 제공될 수 있다. 그러나, 바람직한 실시예에 있어서, 상기한 어드레스 범위 기억장치는 다수의 레지스터를 구비한다. 바람직하게는, 별개의 레지스터가 어드레스 비교기 논리회로의 각각의 비교기와 연계된다.
상기한 속성 기억장치는 임의의 적절한 형태를 취할 수 있다. 그러나, 바람직한 실시예에 있어서, 상기한 속성 기억장치는 멀티플렉서에 접속된 복수의 속성 레지스터를 구비하고, 각각의 레지스터는 논리 영역에 대한 속성을 포함하며, 상기한 속성 판정 논리회로는 멀티플렉서로 신호를 출력하여, 멀티플렉서가 상기한 어드레스를 포함하는 가장 높은 우선순위의 영역에 해당하는 속성 레지스터로부터 속성을 출력하도록 구성된다.
바람직한 실시예에 있어서, 상기한 어드레스 비교기 논리회로는 각각의 논리 영역에 대해 한 개의 출력이 설치된 복수의 출력을 갖고, 대응하는 논리 영역이 상기한 어드레스를 포함하는지 여부를 나타내는 신호가 상기한 출력에서 발생되며, 상기한 속성 판정 논리회로는 상기한 복수의 출력으로부터 신호를 수신하는 대응하는 복수의 입력을 갖고, 복수의 입력은 소정의 우선순위 기준을 적용하기 위해 속성 판정 논리회로에 의해 사용된 상대적인 우선순위를 갖는다.
그러나, 소정의 우선순위 기준을 적용하기 위해 또 다른 기술이 사용될 수도 있다는 것은 자명하다. 예를 들면, 상기한 소정의 우선순위 기준은 속성 판정 논리회로에 의해 액세스 가능한 기억장치 내부에 우선순위 정보로서 기억되고, 이 우선순위 정보는 상기한 논리 영역의 상대적인 우선순위를 지정할 수도 있다.
바람직한 실시예에 있어서, 상기한 데이터 처리장치는, 프로세서에 의해 필요한 복수의 데이터 값이 기억되거나, 프로세서에 의해 처리되는 복수의 데이터 값이 기억될 상기 메모리 내부의 메모리 위치에 대응하는 어드레스를 출력하기 위한 프로세서 코어를 더 구비한다. 더구나, 이 데이터 처리장치는 프로세서 코어에 의해 액세스 가능한 복수의 데이터 값을 기억하는 캐시를 구비할 수 있다. 이와 같은 구성에 있어서는, 효율을 향상시키기 위해, 가장 높은 우선순위의 영역에 대한 속성의 판정은, 캐시 탐색(look up)이 발생하는 동안 이루어지는 것이 바람직하다.
단일의 캐시가 명령과 데이터 모두를 기억하기 위해 설치될 수 있는데, 이와 같은 캐시는 종종 폰 노이만(Von Neumann) 캐시 구조를 갖는다고 칭해진다. 이와 달리, 명령을 기억하기 위해 1차 캐시가 설치되고, 데이터를 기억하기 위해 2차 캐시가 설치될 수도 있는데, 이와 같은 캐시는 종종 하바드(Harvard) 구조를 갖는다고 칭해지며, 이때 상기한 어드레스 비교기 논리회로와 상기한 속성 판정 논리회로는 상기한 1차 및 상기한 2차 캐시 각각에 대해 복제된다. 따라서, 별개의 데이터 및 명령 캐시를 사용할 때, 메모리에 대한 액세스를 제어하는데 사용되는 속성을 판정하는데 필요한 데이터 처리회로의 구성요소가 각각의 캐시에 대해 복제되는 것이 바람직하다. 전술한 것과 같이, 가장 높은 우선순위에 대한 속성의 판정은, 캐시 탐색이 발생하는 동안 이루어지는 것이 바람직하다. 2가지 캐시가 존재하는 경우에는, 탐색 동작이 명령 캐시에서 발생하는 동안 데이터 캐시에서 탐색 동작이 이루어질 수 있으므로, 명령 및 데이터 캐시 모두에서 탐색 동작에 해당하는 메모리 어드레스를 액세스하는데 사용되어야 하는 속성을 판정하기 위해 2 세트의 회로가 필요하다.
본 발명의 두 번째 면에 따르면, 본 발명은, 각각의 메모리 위치가 대응하는 어드레스를 갖는 복수의 데이터 값을 기억하기 위한 복수의 메모리 위치를 지닌 메모리에 대한 액세스를 제어하는 데이터 처리장치를 작동하는 방법에 있어서, (a) 상기 메모리 내부의 복수의 논리 영역에 대한 어드레스 범위를 지정하는 정보를 기억하는 단계와, (b) 각각의 논리 영역에 대해, 상기 논리 영역 내부의 메모리 위치에 대한 액세스를 제어하는데 사용되는 속성을 기억하는 단계와, (c) 상기 복수의 메모리 위치 중 한 개에 대응하여 프로세서에 의해 출력된 어드레스를 상기 복수의 논리 영역에 대한 어드레스 범위와 비교하는 단계와, (d) 1개 또는 그 이상의 논리 영역이 상기 어드레스를 포함하는 경우에, 상기 어드레스를 포함하는 논리 영역을 나타내는 신호를 발생하는 단계와, (e) 상기 단계 (d)에서 발생된 신호에 응답하여, 소정의 우선순위 기준을 적용하여 상기 어드레스를 포함하는 어떤 논리 영역이 가장 높은 우선순위를 갖는지 판정하는 단계와, (f) 가장 높은 우선순위 영역에 해당하는 기억된 속성을 출력하여, 이 어드레스에 의해 지정된 메모리 위치에 대한 액세스를 제어하는데 사용하는 단계를 포함하는 것을 특징으로 하는 데이터 처리장치를 작동하는 방법을 제공한다.
이하, 본 발명의 실시예를 다음의 첨부도면을 참조하여 설명하는데, 이때 동일한 특징부에 대해서는 동일한 도면부호를 사용하였다:
도 1은 본 발명의 바람직한 실시예에 따른 데이터 처리장치를 나타낸 블록도이고,
도 2는 본 발명의 바람직한 실시예에 따라 메모리 내부에 있는 서로 다른 크기를 갖는 복수의 논리 영역이 어떻게 5 비트로 이루어진 크기 필드에 의해 지정되는지를 나타낸 표이며,
도 3은 메모리에 대한 액세스를 제어하는데 사용되는 속성을 결정하기 위해 본 발명의 바람직한 실시예에 따라 수행되는 처리단계를 나타낸 흐름도이고,
도 4a 및 도 4b는 별개의 데이터 및 명령 캐시가 사용되는 본 발명의 실시예를 나타낸 것이다.
도 1에 도시된 블록도를 참조하여 본 발명의 바람직한 실시예에 따른 데이터 처리회로를 설명한다. 도 1에 도시된 것과 같이, 데이터 처리회로는 메모리(120)로부터 수신된 명령을 처리하기 위해 배치된 프로세서 코어(10)를 구비한다. 이들 명령을 실행하기 위해 프로세서 코더(10)가 필요한 데이터도 메모리(120)에서 검색될 수 있다. 이 메모리부터 검색된 데이터 및 명형을 기억함으로써, 나중에 프로세서 코어(10)가 용이하게 액세스할 수 있도록 하는 캐시(30)가 설치된다. 또한, 캐시(30) 내부의 명령 및 데이터의 기억을 제어하고, 캐시로부터의 데이터 및 명령의 검색을 제어하기 위해 캐시 제어부(40)가 설치된다.
본 발명의 바람직한 실시예에 따르면, 메모리(120) 내부에 복수의 논리 영역이 규정될 수 있으며, 각각의 논리 영역은 독립적으로 프로그래밍 가능한 크기를 갖는다. 바람직한 실시예를 설명하기 위해, 이하에서는 4GB의 어드레스 공간을 갖는 메모리(120)를 고려하며, 메모리 어드레스 공간 내부에 8개의 논리 영역이 정의되는 것으로 가정한다. 명백하게, 메모리의 크기와 정의가능한 논리 영역의 개수는 데이터 처리장치의 특정한 요구조건에 부합하기 위해 필요에 따라 변동될 수 있다는 것은 본 발명이 속한 기술분야의 당업자에게 있어서 자명하다.
각각의 논리 영역은, 영역이 메모리 내부의 어디에서 시작하는지를 지정하는 기저 어드레스와, 이 논리 영역의 크기를 규정하는 크기 필드에 의해 규정하는 것이 바람직하다. 보호부(보호부에 대해서는 나중에 더 상세히 설명한다) 내부의 비교기의 하드웨어 요구조건을 단순화하기 위해, 기저 어드레스는 "크기" 경계에 대응해야만 한다는 제한이 부과된다. 따라서, 예를 들면, 1MB의 크기를 갖는 논리 영역은 메모리 내부의 1MB 경계에 해당하는 기저 어드레스에서 시작하도록 구성된다. 바람직한 실시예에 있어서 기저 어드레스에 부과된 이러한 제한은 필수적인 것이 아니며, 보호부 내부에 더 복잡한 하드웨어를 설치함으로써, 기저 어드레스가 크기 경계 이외의 메모리 위치에서 시작하도록 할 수 있다는 것은 본 발명이 속한 기술분야의 당업자에게 있어서 자명할 것이다.
바람직한 실시예에 따르면, 논리 영역의 크기는 4kB 내지 4GB의 범위에서 선택할 수 있다. 그러나, 필요에 따라 이와 같은 선택 범위가 변경될 수도 있다는 것은 자명하다. 도 2는 5 비트의 필드를 갖는 크기 레지스터가 서로 다른 메모리 크기를 위해 프로그래밍될 수 있는 방법을 나타낸 표를 예시한 것이다. 도 2에 예시된 예에 있어서, 크기는 2의 제곱씩 변할 수 있다. 그러나, 크기를 2의 제곱씩 변화시킬 필요는 없으며, 더 큰 수의 비트를 갖는 크기 레지스터를 제공함으로써, 각 영역의 크기의 프로그래밍에 있어서 추가적인 유연성을 부여할 수 있다는 것은 본 발명이 속한 기술분야의 당업자에게 있어서 자명한 것이다.
기저 및 크기 레지스터를 사용하는 것에 대한 대안으로서, 논리 영역을 정의하기 위해 시작 및 종료 레지스터가 사용될 수도 있다. 이와 같은 경우에, 기저 어드레스와 영역의 크기가 아니라, 각각의 논리 영역의 시작점 및 종료점의 실제 어드레스에 해당하는 정보가 레지스터에 기억된다.
전술한 것과 같이, 기저 및 크기 레지스터, 또는 시작 및 종료 레지스터를 사용하여 복수의 논리 영역이 정의될 수 있도록 함으로써, 사용자는 메모리 내부에 중첩하는 복수의 논리 영역을 프로그래밍할 수 있다. 본 발명의 바람직한 실시예에 있어서, 각각의 논리 영역은, 그것과 관련된, 보호, 캐시 및 버퍼 가능한 속성과 같은, 독립적인 속성을 갖는다. 중첩하는 복수의 논리 영역의 가능성이 주어지면, 메모리에 대한 액세스가 예측가능한 방식으로 취급된다는 점이 중요하다. 바람직한 실시예에 있어서, 이것은 도 1에 도시된 보호부(20)를 사용하여 달성되는데, 이하에서는 이러한 보호부의 동작에 대해 더욱 상세히 설명한다.
프로세서 코어(10)가 명령 또는 데이터의 항목을 요구하면(이하에서는, 명령 또는 데이터 모두를 데이터 값이라 칭한다), 프로세서 코어는 이 데이터 값의 메모리 어드레스를 프로세서 버스(50)의 버스 라인 54 상에 위치시킨다. 더구나, 프로세서 코어(10)는 버스 라인 52 상에 프로세서 제어신호를 출력한다. 프로세서 제어신호는, 어드레스가 판독 또는 기록 요구에 해당하는지 여부, 액세스의 형태(예를 들면, 순차적), 액세스의 크기(예를 들면, 워드, 바이트), 프로세서의 동작 모드(예를 들면, 관리자 또는 사용자) 등과 같은 정보를 포함한다. 이와 같은 프로세서 제어신호는 캐시 제어부(40)에 의해 수신되어, 캐시 제어부가 필요한 데이터 값이 캐시(30) 내부에 기억되었는지 여부를 판정하도록 재촉한다. 기억된 경우에는, 데이터 값이 캐시(30)로부터 데이터 버스 라인 56 상으로 출력된 후, 프로세서 코어(10)에 의해 판독된다. 어드레스에 해당하는 데이터 값이 캐시(30) 내부에 존재하지 않는 경우에는, 캐시 제어부(40)가 라인 130을 거쳐 버스 인터페이스부(95)로 신호를 전달하여, 데이터 값이 메모리(120)로부터 검색될 필요가 있다는 것을 표시한다.
이와 같은 캐시 탐색과정이 발생하는 동안, 보호부(20) 내부의 보호 제어기(150)도 버스 라인 52 상에서 프로세서 제어신호를 수신하고, 프로세서 제어신호가 메모리(120) 또는 캐시(30)에 대한 잠정적인 판독 또는 기록 액세스와 관련된 것으로 판정하면, 어드레스 비교기(70)에게 프로세서 코어(10)에 의해 버스 라인 54 상에 놓인 어드레스를 조사하도록 지시한다. 바람직한 실시예에 있어서, 각각의 논리 영역에 대해 1개의 어드레스 비교기 존재하며, 각각의 비교기는 특정한 논리 영역에 대한 어드레스 범위를 포함한 관련된 레지스터를 갖는다. 각각의 비교기는 이 어드레스 범위와 버스 라인 54 상의 특정한 어드레스를 비교하여, 이 어드레스가 해당하는 어드레스 영역에 포함되는지 여부를 판정한다. 비교기가 어드레스가 논리 영역의 어드레스 범위 내부에 놓여 있다고 판정할 때마다, 비교기는 해당하는 라인 160을 거쳐 우선순위 인코더(75)로 히트 신호(hit signal)를 출력한다.
우선순위 인코더(75)는 모든 비교기(70)에 의해 출력된 신호를 수신한다. 우선순위 인코더가 1개의 히트 신호를 수신하면, 이것은 어드레스가 1개의 논리 영역에만 속한다는 것을 나타낸다. 이와 같은 경우에, 우선순위 인코더(75)는 신호를 멀티플렉서(80)로 전송함으로써, 멀티플렉서(80)가 속성 레지스터(85)로부터 이 논리 영역에 해당하는 속성을 선택하도록 지시한다. 그후, 이들 속성은 메모리(120)에 대한 액세스를 제어하는데 사용되거나, 캐시(30)로부터 검색된 데이터 값의 사용에 대한 액세스를 제어하는데 사용된다. 바람직한 실시예에 있어서, 복수의 논리 영역 중 한 개는 메모리(120)의 전체 어드레스 공간을 포괄하는 배경 영역이기 때문에, 항상 발생된 적어도 1개의 히트 신호가 존재한다. 그러나, 배경 영역이 규정되는 것은 필수적인 것이 아니므로, 또 다른 실시예에 있어서는, 어드레스 비교기(70)에 의해 어떠한 히트 신호도 발생되지 않을 수 있다. 이와 같은 경우에, 우선순위 인코더(70)는 어떠한 신호도 검출되지 않았다는 것을 표시하는 신호를 발생하도록 구성되며, 이 신호는 우선순위 인코더(75)로부터 논리회로(90)로 출력된다. 데이터 처리회로가 이와 같은 경우에 대해 반응하는 방식은, 논리회로(90)가 구성되는 방식에 의존한다. 예를 들면, 복수의 논리 영역 중 어느 것에도 포함되지 않은 어드레스에 대한 액세스를 시도하는 일이 중단 신호가 라인 140을 거쳐 프로세서 코어(10)로 되돌아가도록 하는 것과 같이 논리회로가 구성될 수 있다.
1개 이상의 히트 신호가 어드레스 비교기(70)에 의해 출력된다고 가정하면, 우선순위 인코더(75)는, 정의된 논리영역 각각의 상대적인 우선순위를 결정하기 위해 우선순위 기준을 적용하도록 구성된다. 각각의 논리 영역과 관련된 우선순위 정보는 보호부(20) 내부에 기억될 수 있으며, 어드레스 비교기가 히트 신호를 발생하는 각각의 논리 영역에 대해, 우선순위 인코더는 해당하는 우선순위 정보를 사용하여, 어떤 논리 영역이 가장 높은 우선순위를 갖고 있는지 판정하도록 구성될 수 있다.
그러나, 바람직한 실시예에 있어서, 논리 영역의 상대적인 우선순위는 우선순위 인코더(75)에 대한 입력의 배치에 의해 결정된다. 8개의 논리 영역(논리 영역 0-7)에 대응하는 8개의 어드레스 비교기(70)(비교기 0-7)가 존재하는 경우에, 우선순위 인코더(75)에 있는 8개의 입력(입력 0-7)에 접속된 8개의 대응하는 배선(160)이 존재하는 것이 바람직하다. 그후, 이들 논리 영역에 대응하는 입력에는, 입력 번호가 증가함에 따라 우선순위가 증가하도록, 즉 입력 번호 7은 가장 높은 우선순위를 갖고, 입력 번호 0은 가장 낮은 우선순위를 갖도록, 우선순위가 할당될 수 있다.
그후, 상기한 우선순위 인코더는 조건부 논리를 적용하여, 먼저 히트 신호가 논리 영역 7에 해당하는 입력 번호 7에서 수신되었는지 여부를 판정하도록 구성된다. 수신된 경우에는, 우선순위 인코더(75)로부터 멀티플렉서(80)로 신호가 출력되어, 논리 영역 7에 대한 속성이 속성 레지스터(85)로부터 출력되어야만 한다는 것을 나타낸다. 논리 영역 7에 대응하는 입력에서 어떠한 히트 신호도 수신되지 않는 경우에, 우선순위 인코더(75)는 논리 영역 6에 해당하는 입력 번호 6에서 히트 신호가 수신되었는지 여부를 판정한다. 수신된 경우에는, 우선순위 인코더(75)로부터 멀티플렉서(80)로 신호가 출력되어, 논리 영역 6에 대한 속성이 속성 레지스터(85)로부터 출력되어야만 한다는 것을 나타낸다. 논리 영역 6에 대응하는 입력에서 어떠한 히트 신호도 수신되지 않는 경우에, 히트 신호를 갖는 입력이 발견될 때까지 각각의 입력에 대해 교대로 동일한 과정이 반복된다. 비록, 전술한 설명에서는 처리과정을 논리적인 항목으로 나타내었지만, 수행되는 실제 과정은 일반적으로 위에서 설명한 것과 같이 순차적으로 수행되지 않으며, 이 대신에 8개의 입력 모두를 함께 수신하고 가장 높은 우선순위 영역을 나타내는 출력을 발생하기 위해 적절한 논리가 주어진다는 것은 자명하다.
바람직한 실시예에 있어서, 가장 낮은 우선순위 영역이 전체 메모리 어드레스 공간을 포괄하는 배경 영역으로서 설정되기 때문에, 항상 가장 낮은 우선순위의 영역(영역 0)에 히트 신호가 존재한다. 따라서, 우선순위 인코더(75)에 의해 수행되는 처리과정에 의해, 신호가 멀티플렉서(80)로 전송되어, 멀티플렉서가 속성 레지스터(85)로부터 프로세서 코어(10)에 의해 출력된 어드레스를 포함하는 가장 높은 우선순위 영역에 해당하는 속성을 검색하도록 지시한다. 그후, 멀티플렉서(80)에 의해 출력된 속성은 논리부(90)와 버스 인터페이스부(95)로 전달된다. 이와 같은 프로세서 제어신호는, 다른 무엇보다도, 프로세서 코어(10)의 동작 모드를 규정한다. 따라서, 논리부(90)는 이 정보를 사용하여, 멀티플렉서(80)에 의해 출력된 속성에 의해 프로세서 코어(10)가 현재 동작 모드에서 요구되는 메모리 어드레스를 액세스할 수 있는지 여부를 판정한다. 예를 들어, 논리부(90)가 프로세서 코어(10)가 사용자 모드에 있다고 판정하고, 멀티플렉서(80)에 의해 출력된 속성이 메모리 어드레스가 관리자 모드로만 액세스될 수 있다고 판정하면, 논리부(90)는 경로 140 상에서 프로세서 코어(10)로, 그리고 경로 170 상에서 버스 인터페이스부(95)로 중단 신호를 출력하도록 구성될 수 있다.
상기한 보호부(20)에 의해 수행되는 처리과정은 캐시 탐색과정과 동시에 발생하여 충분한 처리 속도를 유지하도록 하는 것이 바람직하다. 요구된 데이터 값이 캐시(30)에서 사용가능하고, 논리부(90)가 라인 140 상에서 중단 신호를 출력하지 않으면, 프로세서 코어(10)는 캐시(30)로부터 검색된 데이터를 사용한다. 그러나, 요구된 데이터 값이 캐시 내에 존재하지 않는 경우에는, 전술한 것과 같이, 경로 130을 거쳐 신호가 전송되어, 버스 인터페이스부(Bus Interface Unit: BIU)(95)에게 데이터 값을 위해 메모리(120)를 액세스하도록 지시한다.
BIU(95)는 버스 라인 52 상에서 프로세서 제어신호를 검사하여, 프로세서 코어(10)에 의해 출력된 명령이 판독 또는 기록 명령인지를 판정한다. 그것이 판독 명령이고, 경로 170을 거쳐 논리부(90)로부터 어떠한 중단 신호도 수신되지 않는다고 가정하면, BIU(95)는 멀티플렉서(100)에게 버스 라인 54로부터 버스(60)의 외부 어드레스 버스 라인(64) 상으로 어드레스를 전달하도록 지시한다(이것은 메모리(12)에 대한 어떠한 대기 중인 기록 명령이 기록 버퍼(105)에 대기하고 있지 않다고 가정한 것이다. 이와 같은 대기중인 기록 명령이 존재하는 경우에는, 이러한 기록 명령은 판독 명령 이전에 완료된다. 기록 버퍼의 동작에 대해서는 나중에 상세히 설명한다). 제어신호 또한 버스 라인 62 상에 위치하는데, 이 신호는 메모리(120)에 대한 액세스를 제어하기 위해 메모리 제어기(180)에 의해 사용된다. 이 메모리 제어기는 버스 라인 62 상의 제어신호로부터 메모리 판독이 필요한지를 판정하고, 메모리에게 어드레스 버스 라인 64 상에 표시된 어드레스에 있는 데이터를 데이터 버스 라인 66 상에 출력하도록 지시한다.
BIU(95)는 버퍼(110)로 신호를 전송하여, 버퍼(110)가 외부 버스 라인 66 상에 메모리(120)에 의해 놓인 데이터를 프로세서 버스 라인(56)으로 전달하도록 한다. 더구나, 보호부(20)의 멀티플렉서(80)로부터 BIU(95)에 의해 수신된 속성이 어드레스가 캐시 가능한 데이터 값을 포함하는 것을 나타내면, BIU(95)는 경로 135를 거쳐 캐시 제어부(40)에 신호를 전송하여, 캐시 제어부에게 검색된 데이터 값을 캐시(30)에 기억하도록 지시한다. 그후, 메모리(120)에서 검색되고 버스 라인 56 상에 높인 데이터 값은 캐시(30)에 기억되고, 프로세서 코어(10)로 전달된다. 그후, 이 데이터 값은 프로세서 코어(10)에 의해 캐시로부터 직접 용이하게 액세스될 수 있다. BIU(95)에 의해 검색된 속성이 데이터 값이 캐시 가능하지 않다는 것을 표시하면, 이 데이터는 캐시에 기억되지 않고, 프로세서 코어(10)는 버스 라인 56으로부터 데이터 값을 판독한다.
상기한 내용은, 메모리(120)로부터 데이터 값을 판독하기 위해 보호부(20)가 메모리(120)에 대한 액세스를 제어하는데 사용되는 방법을 설명하고 있다. 프로세서 코어(10)에 의해 출력된 어드레스가 프로세서가 데이터 값을 기록하고자 하는 어드레스인 경우에, 다음과 같은 절차가 수행된다.
프로세서 코어는, 프로세서 제어신호를 버스 라인 52 상에 위치시키고, 어드레스를 버스 라인 54 상에 위치시키며, 기억시키려는 데이터 값을 버스 라인 56 상에 위치시킨다. 보호부(20) 내부의 보호 제어기(150)는, 버스 라인 52 상의 프로세서 제어신호를 검사하여, 프로세서 제어신호가 메모리(120)에 대한 기록 액세스와 관련되었다고 판정하면, 어드레스 비교기(70)에게 프로세서 코어(20)에 의해 버스 라인 54 상에 놓인 어드레스를 검사하도록 지시한다. 그후, 이 어드레스를 포함하는 가장 높은 우선순위의 논리 영역을 판정하기 위해, 보호부는 판독 명형을 참조하여 위에서 설명한 것과 동일한 절차를 수행한다. 이러한 과정은, 이 영역에 해당하는 속성이 BIU(95)와 논리부(90)로 출력되도록 한다.
BIU(95)는 버스 라인 52 상의 프로세서 제어신호를 검사하여, 프로세서 코어(20)에 의해 출력된 명령이 판독 또는 기록 명령인지를 판정한다. 그것이 기록 명령이라고 가정하면, BIU는 기록 과정을 사용할 필요가 있다고 판정하고, 이 기록 과정을 제어하기 위해 보호부(20)로부터 검색된 속성 정보를 사용한다.
상기한 논리부(90)는, 멀티플레서(80)에 의해 출력된 속성과 프로세서 제어신호로부터 프로세서 코어가 현재의 동작 모드에서 특정한 어드레스를 기록할 수 있는지 여부를 판정하고, 기록할 수 없는 경우에는, 중단 신호를 출력한다. 중단 신호는, 경로 170을 거쳐 BIU(95)로 전송되어, BIU에게 기록 명령을 무시하도록 지시하고, 경로 140을 거쳐 프로세서 코어(10)로 전송되어, 데이터, 어드레스 및 제어정보가 버스 라인 56, 54 및 52로부터 각각 제거되도록 하며, 이와 같은 중단이 발생한 경우에 필요한 예외처리 절차를 프로세서 코어(10)가 실행할 수 있도록 한다.
그러나, 프로세서 코어가 버스 라인 54 상에 놓인 어드레스에 기록하는 권한이 주어지고, 이에 따라 BIU(95)에 의해 어떠한 중단 신호도 수신되지않는다고 가정하면, BIU(95)는 멀티플렉서(80)로부터의 속성 정보를 사용하여, 기록하려는 데이터가 버퍼 가능한지 아닌지를 판정한다. 데이터가 버퍼 가능한 경우에, BIU(95)는 기록 버퍼(105)에게 버스(50)로부터 데이터, 어드레스 및 제어신호를 검색하도록 지시한다. 이와 같은 과정이 일단 이루어지면, 다음 명령은 기록 명령이 완료되는 것을 기다리지 않고 프로세서 코어(10)에 의해 수행된다.
상기한 기록 버퍼는 FIFO 버퍼인 것이 바람직하다. 외부 버스(60)가 사용되고 있지 않으면, BIU(95)는 멀티플렉서(100)에게 기록 버퍼로부터 외부 버스(60) 상으로 다음 항목을 출력하도록 지시한다. 그후, 멀티플렉서(100)는 버스 라인 62, 64 및 66 상에 필요한 제어, 어드레스 및 데이터 신호를 각각 출력하고, 메모리 제어기(180)는 이 제어신호를 사용하여 메모리(120)에 대한 기록 액세스를 제어한다. 이때, 데이터는 메모리(120)에 기억된다. 기억하려는 데이터가 기록 버퍼(105)로부터 순차적으로 처리됨에 따라, 어떤 시점에서 프로세서에 의해 버스 라인 54 상에 출력된 어드레스에 해당하는 데이터가 메모리(120)에 기억된다.
그러나, 버스 인터페이스부(95)가 데이터를 기억시키려는 어드레스가 버퍼 가능하지 않다고 판정하는 경우에, 버스 인터페이스부(95)는 멀티플렉서(100)에게 버스 라인 52, 54 및 56으로부터 직접 프로세서 제어, 어드레스 및 데이터 정보를 선택하도록 지시한다. 그후, 멀티플렉서(100)는 이 정보를 외부 버스(60) 상에 출력하여, 데이터가 메모리(120) 내부의 해당하는 어드레스에 기억되도록 한다. 그러나, 이와 같은 과정을 수행하기 전에, 기록 명령이 정확한 순서로 처리될 수 있도록 확보하기 위해, 기록 버퍼(105)는 일반적으로 그 내부에 있는 내용이 비워진다. 일단, 현재의 기록 명령에 해당하는 버퍼 불가능한 데이터가 기억되면, 다음 명령이 처리될 수 있다.
이하, 보호부(20) 내부에서 수행되는 처리단계를 나타낸 흐름도인 도 3을 참조하여 보호부(20)에 의해 수행되는 처리과정을 설명한다. 단계 300에서, 보호부(20)는 어드레스가 프로세서 코어(10)에 의해 어드레스 버스 라인(54) 상에 놓이는 것을 기다린다. 전술한 것과 같이, 보호부(20) 내부의 보호 제어기(150)는, PC 버스(52) 상의 제어신호에 응답하여, 어드레스 비교기(70)에게 프로세서 코어(10)에 의해 버스 라인 54 상에 놓인 어드레스를 검사하도록 지시한다. 바람직한 실시예에 있어서는, 각각의 논리 영역에 대해 1개의 어드레스 비교기가 주어지므로, 바람직한 실시예에 있어서는, 어드레스 비교기 블록(70) 내부에 8개의 어드레스 비교기가 존재한다. 각각의 어드레스 비교기는, 대응하는 논리 영역에 대한 어드레스 범위를 포함하는 관련된 어드레스 레지스터를 갖는다. 어드레스 라인(54)으로부터 수신된 어드레스가 단계 310에서 관련된 레지스터 내부의 어드레스 범위와 비교되고, 어드레스가 이 어드레스 범위에 속하면, 단계 320에서 이 어드레스 비교기에 의해 해당하는 배선(160) 상에 '히트' 신호가 출력된다.
어드레스 비교기(70)에 의해 발생된 모든 신호가 우선순위 인코더(75)로 전송되고, 단계 330에서는, 이 인코더 내부에서 우선순위 기준이 적용되어, 가장 높은 우선순위를 갖는 어드레스를 포함하는 논리 영역을 판정한다. 전술한 것과 같이, 바람직한 실시예에 있어서, 이와 같은 과정은 조건부 논리를 적용하기 위해 우선순위 인코더를 구성하고, 먼저 가중 높은 우선순위 영역에 해당하는 입력에서 히트 신호가 수신되었는지 여부를 판정한다. 수신되지 않은 경우에는, 히트 신호가 식별될 때까지, 다음의 가장 높은 우선순위 영역에 해당하는 입력이 검사되고, 이하 마찬가지이다. 이 우선순위 인코더(75)는 우선순위가 감소하는 순서로 입력을 검사하기 때문에, 식별된 첫 번째 히트 신호는 프로세서 코어(10)에 의해 출력된 어드레스를 포함하는 가장 높은 우선순위의 논리 영역에 대응한다. 이와 같은 처리과정은 한번에 1개의 입력씩 순차적으로 수행될 필요는 없다는 것은 자명하며, 바람직한 실시예에 있어서, 8개의 입력 모두를 수신하여 가장 높은 우선순위 영역을 나타내는 출력을 발생하기 위해 적절한 논리회로가 제공된다.
바람직한 실시예에 있어서, 전체 어드레스 공간이 다수의 논리 영역에 의해 포괄되거나, 복수의 논리 영역 중 한 개가 메모리(120)의 전체 어드레스 공간을 포괄하는 배경 영역이기 때문에, 항상 적어도 1개의 히트 신호가 존재한다. 그러나, 배경 논리 영역이 규정될 필요가 없으므로, 발생된 히트 신호가 존재하지 않을 수도 있는데, 이것은 프로세서 코어(10)에 의해 출력된 어드레스가 메모리(120) 내부의 "구멍"에 해당한다는 것을 나타낸다. 이와 같은 경우에, 배경 영역이 존재하지 않으면, 시스템은 일반적으로 구멍에 대한 액세스가 취급되는 방식을 규정하도록 배선으로 연결되는데, 예를 들면, 구멍에 대한 액세스는 중단 신호가 논리부(90)에 의해 발생되도록 구성된다. 이에 반해, 논리 배경 영역이 규정되는 경우에는, 이 배경 영역에 해당하는 속성이 액세스를 제어하는데 사용되므로, 이것에 의지할 필요가 없다.
하나의 배경 영역이 가장 낮은 우선순위의 영역으로 규정된다고 가정하면, 이와 같은 배경 영역은 전체 어드레스 공간을 포괄하도록 배선으로 연결될 수 있다. 그후, 이러한 가장 낮은 우선순위의 영역은 어드레스 비교기(70)에 의해 수행되는 비교과정으로부터 제외됨으로써, 한 개 더 적은 비교기와 한 개 더 적은 우선순위 인코더(75)에 대한 배선(160)을 생성한다. 어드레스 비교기(70)에 의해 어떠한 히트 신호도 발생하지 않아, 다른 논리 영역의 어느 것도 상기한 어드레스를 포함하지 않는 경우에, 우선순위 인코더(75)는 신호를 멀티플렉서(80)로 전송하여, 멀티플렉서에게 가장 낮은 우선순위의 영역과 관련된 속성을 선택하도록 구성될 수 있다. 어드레스 비교기는 어드레스를 가장 낮은 우선순위 영역에 대한 어드레스 범위와 비교하지 않고, 이와 같은 가장 낮은 우선순위 영역에 대한 속성이 다른 논리 영역의 어느 것도 상기한 어드레스를 포함하지 않는다는 것을 판정하는 어드레스 비교기의 직접적인 결과로서 사용되기 때문에, 이와 같은 접근방식은 비록 유연성을 다소 감소시키지만 효율을 증진시킨다.
일단, 우선순위 인코더(75)가 어드레스를 포함하는 어떤 논리 영역이 가장 높은 우선순위를 갖는지를 판정하면, 이 인코더는 신호를 멀티플렉서(80)로 전송하여, 단계 340에서 멀티플렉서에게 이 논리 영역에 대한 속성을 포함하는 속성 레지스터(85)로부터 속성을 선택하도록 지시한다. 일단, 멀티플렉서(80)에 의해 속성이 선택되면, 메모리 또는 캐시 액세스를 제어하는데 사용하기 위해 이들 속성이 단계 350에서 출력된다.
바람직한 실시예에 있어서, 단계 350에서 출력된 속성이 프로세서 코어(10)가 현재 동작 모드에서 이들 속성에 의해 규정된 논리 영역 내부의 메모리 어드레스에 대한 액세스를 하지 말아야 한다는 것을 나타내는지 여부를 판정하기 위해, 논리부(90)에 의해 최종적인 검사가 수행된다. 예를 들면, 프로세서 코어(10)가 사용자 모드에서 동작하고, 단계 350에서 출력된 복수의 속성 중 한 개가 어드레스가 관리자 모드에서만 액세스 가능하다고 표시하면, 논리부(90)는 경로 140을 거쳐 프로세서 코어(10)로 중단 신호를 출력하여, 프로세서 코어(10)가 이 메모리 영역을 액세스할 수 없다는 것을 표시하는 동시에, 중단 신호를 경로 170을 거쳐 BIU(95) 로 전송한다.
전술한 내용은, 가변 크기를 갖는 복수의 논리 메모리 영역이 정의될 수 있으며, 장치의 유연성을 향상시키기 위해 이들 메모리 영역이 중첩될 수 있는 데이터 처리장치에 대한 설명이다.
비록, 본 명세서에서 특정한 실시예를 설명하였지만, 본 발명은 이와 같은 실시예에 제한되지 않으며, 본 발명의 범주 내에서 다양한 변형 및 추가가 이루어질 수 있다는 것은 자명하다. 예를 들면, 상기한 캐시(30)는 도 1에 도시된 것과 같이 명령 및 데이터 모두를 기억하는데 사용되거나, 이와 달리, 1개의 캐시가 명령을 기억하는데 사용되고, 별도의 캐시가 데이터를 기억하는데 사용될 수 있다. 후자의 경우에, 2개의 보호부(20), 즉 명령용의 1개와 데이터용의 1개를 사용하는 것이 바람직하다. 이것이 구현될 수 있는 2가지 방식을 도 4a 및 도 4b에 나타내었다.
도 4a에 있어서는, 명령 캐시(430)와 데이터 캐시(440)가 동시에 프로세스 코어(10)에 의해 액세스 가능하다. 명령 어드레스가 명령 캐시(430) 내부에서 캐시 탐색을 위해 사용될 때, 이 어드레스는 보호부(400)에도 인가되어, 필요한 경우에 메모리에 대한 액세스를 제어하는데 사용되어야 하는 속성을 판정한다. 마찬가지로, 데이터 어드레스가 데이터 캐시(440) 내부에서 캐시 탐색을 위해 사용될 때, 이 어드레스는 보호부(410)에도 인가되어, 필요한 경우에 메모리에 대한 액세스를 제어하는데 사용되어야 하는 속성을 판정한다. 속성 레지스터와 논리 영역을 규정하는 레지스터가 한 세트의 레지스터(42)에 의해 제공되는 것을 제외하고는, 상기한 보호부 400 및 410은 도 1에 도시된 보호부(20)와 동일하게 구성하는 것이 바람직하다. 따라서, 도 4a에 있어서는, 메모리에 대한 데이터 및 명령 액세스를 위해 동일한 논리 영역 및 속성이 사용된다.
그러나, 도 4b에 도시된 또 다른 접근방식은, 보호부 400 및 410이 별개의 레지스터 450 및 460을 각각 구비함으로써, 서로 다른 속성을 갖는 서로 다른 크기의 논리 영역이 데이터 및 명령 액세스를 위해 지정되도록 한 것이다. 이와 같은 구성은, 예를 들어, 명령 영역에 대해 서로 다른 크기를 갖는 데이터 영역에 대한 요구사항이 있을 수 있기 때문에, 더 큰 유연성을 갖는다.

Claims (18)

  1. 각각의 메모리 위치가 대응하는 어드레스를 갖는 복수의 데이터 값을 기억하기 위한 복수의 메모리 위치를 지닌 메모리에 대한 액세스를 제어하는 데이터 처리장치에 있어서,
    상기 메모리 내부의 복수의 논리 영역에 대한 어드레스 범위를 지정하는 정보를 기억하는 어드레스 영역 기억장치와,
    각각의 논리 영역에 대해, 상기 논리 영역 내부의 메모리 위치에 대한 액세스를 제어하는데 사용되는 속성을 기억하는 속성 기억장치와,
    상기 복수의 메모리 위치 중 한 개에 대응하여 프로세서에 의해 출력된 어드레스를 상기 복수의 논리 영역에 대한 어드레스 범위와 비교하여, 1개 또는 그 이상의 논리 영역이 상기 어드레스를 포함하는 경우에, 상기 어드레스를 포함하는 논리 영역을 나타내는 신호를 발생하는 어드레스 비교기 논리회로와,
    상기 어드레스 비교기 논리회로에 의해 발생된 신호에 응답하여, 소정의 우선순위 기준을 적용하여 상기 어드레스를 포함하는 어떤 논리 영역이 가장 높은 우선순위를 갖는지 판정함으로써, 가장 높은 우선순위영역에 해당하는 속성 기억장치 내부의 속성이 어드레스에 의해 지정된 메모리위치에 대한 액세스를 제어하는데 사용되도록 하는 속성 판정 논리회로를 구비한 것을 특징으로 하는 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기한 복수의 논리 영역 중 한 개는, 전체 메모리를 포괄하며 상기한 복수의 논리 영역의 가장 낮은 우선순위를 갖는 배경 영역으로 사용됨으로써, 프로세서에 의해 출력된 어드레스가 다른 논리 영역 내부에 존재하지 않는 메모리 위치에 해당하는 경우에, 배경 영역과 관련된 속성이 이 어드레스에 의해 지정된 메모리 위치에 대한 액세스를 제어하는데 사용되도록 구성된 것을 특징으로 하는 데이터 처리장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    가장 낮은 우선순위 영역이 전체 메모리를 포괄하는 배경 영역이 되도록 배선으로 연결되고, 어드레스 비교기 논리회로가 복수의 논리 영역의 어느 것도 상기 어드레스를 포함하지 않는다는 것을 나타내는 신호를 발생할 경우, 속성 판정 논리회로가 가장 낮은 우선순위 영역과 관련된 속성이 어드레스에 의해 지정된 메모리 위치에 대한 액세스를 제어하는데 사용되어야 한다는 것을 나타내도록 구성하기 위해, 가장 낮은 우선순위 영역을 상기 어드레스 비교기 논리회로에 의해 수행되는 비교과정에 포함시키지 않는 것을 특징으로 하는 데이터 처리장치.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    복수의 논리 영역에 대한 어드레스 범위는, 어느 메모리 위치에서 그 영역이 시작하는지를 식별하는 기저 어드레스와, 논리 영역의 크기를 식별하는 크기 속성에 의해 특정되는 것을 특징으로 하는 데이터 처리장치.
  5. 제 4 항에 있어서,
    상기 기저 어드레스는, 크기 속성의 함수로써 결정되어, 크기 X를 갖는 메모리 영역이 수치 X의 배수에 해당하는 기저 어드레스를 갖는 것을 특징으로 하는 데이터 처리장치.
  6. 제 4 항 또는 제 5 항에 있어서,
    상기 기저 어드레스와 크기 속성은 사용자 프로그래밍 가능한 것을 특징으로 하는 데이터 처리장치.
  7. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    복수의 논리 영역에 대한 어드레스 범위가, 논리 영역의 시작점 및 종료점을 식별하는 시작점 및 종료점 어드레스에 의해 지정되는 것을 특징으로 하는 데이터 처리장치.
  8. 제 7 항에 있어서,
    상기 시작점 어드레스 및 종료점 어드레스는 사용자 프로그래밍 가능한 것을 특징으로 하는 데이터 처리장치.
  9. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 어드레스 비교기 논리회로는, 각각의 어드레스 범위에 대해 한 개씩의 다수의 비교기를 구비한 것을 특징으로 하는 데이터 처리장치.
  10. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 어드레스 범위 기억장치는 다수의 레지스터를 구비한 것을 특징으로 하는 데이터 처리장치.
  11. 제 9 항에 종속하는 제 10 항에 있어서,
    별개의 레지스터가 각각의 비교기와 연계되는 것을 특징으로 하는 데이터 처리장치.
  12. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 속성 기억장치는 멀티플렉서에 접속된 복수의 속성 레지스터를 구비하고, 각각의 레지스터는 논리 영역에 대한 속성을 포함하며, 상기 속성 판정 논리회로는 멀티플렉서로 신호를 출력하여, 멀티플렉서가 상기 어드레스를 포함하는 가장 높은 우선순위의 영역에 해당하는 속성 레지스터로부터 속성을 출력하도록 구성된 것을 특징으로 하는 데이터 처리장치.
  13. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 어드레스 비교기 논리회로는 각각의 논리 영역에 대해 한 개의 출력이 설치된 복수의 출력을 갖고, 대응하는 논리 영역이 상기 어드레스를 포함하는지 여부를 나타내는 신호가 상기 출력에서 발생되며, 상기 속성 판정 논리회로는 상기 복수의 출력으로부터 신호를 수신하는 대응하는 복수의 입력을 갖고, 복수의 입력은 소정의 우선순위 기준을 적용하기 위해 속성 판정 논리회로에 의해 사용된 상대적인 우선순위를 갖는 것을 특징으로 하는 데이터 처리장치.
  14. 제 1 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 소정의 우선순위 기준은 속성 판정 논리회로에 의해 액세스 가능한 기억장치 내부에 우선순위 정보로서 기억되고, 이 우선순위 정보는 상기 논리 영역의 상대적인 우선순위를 지정하는 것을 특징으로 하는 데이터 처리장치.
  15. 선행하는 청구항 중 어느 한 항에 있어서,
    프로세서에 의해 필요한 복수의 데이터 값이 기억되거나, 프로세서 코어에 의해 처리되는 복수의 데이터 값이 기억될 상기 메모리 내부의 메모리 위치에 대응하는 어드레스를 출력하기 위한 프로세서 코어를 더 구비한 것을 특징으로 하는 데이터 처리장치.
  16. 제 15 항에 있어서,
    프로세서 코어에 의해 액세스 가능한 복수의 데이터 값을 기억하는 캐시를 더 구비한 것을 특징으로 하는 데이터 처리장치.
  17. 제 16 항에 있어서,
    명령을 기억하기 위해 1차 캐시가 설치되고, 데이터를 기억하기 위해 2차 캐시가 설치되며, 상기 어드레스 비교기 논리회로와 상기 속성 판정 논리회로는 상기 1차 및 상기 2차 캐시 각각에 대해 복제되는 것을 특징으로 하는 데이터 처리장치.
  18. 각각의 메모리 위치가 대응하는 어드레스를 갖는 복수의 데이터 값을 기억하기 위한 복수의 메모리 위치를 지닌 메모리에 대한 액세스를 제어하는 데이터 처리장치를 작동하는 방법에 있어서,
    (a) 상기 메모리 내부의 복수의 논리 영역에 대한 어드레스 범위를 지정하는 정보를 기억하는 단계와,
    (b) 각각의 논리 영역에 대해, 상기 논리 영역 내부의 메모리 위치에 대한 액세스를 제어하는데 사용되는 속성을 기억하는 단계와,
    (c) 상기 복수의 메모리 위치 중 한 개에 대응하여 프로세서에 의해 출력된 어드레스를 상기 복수의 논리 영역에 대한 어드레스 범위와 비교하는 단계와,
    (d) 1개 또는 그 이상의 논리 영역이 상기 어드레스를 포함하는 경우에, 상기 어드레스를 포함하는 논리 영역을 나타내는 신호를 발생하는 단계와,
    (e) 상기 단계 (d)에서 발생된 신호에 응답하여, 소정의 우선순위 기준을 적용하여 상기 어드레스를 포함하는 어떤 논리 영역이 가장 높은 우선순위를 갖는지 판정하는 단계와,
    (f) 가장 높은 우선순위 영역에 해당하는 기억된 속성을 출력하여, 이 어드레스에 의해 지정된 메모리 위치에 대한 액세스를 제어하는데 사용하는 단계를 포함하는 것을 특징으로 하는 데이터 처리장치를 작동하는 방법.
KR1019997009985A 1997-04-30 1998-02-03 메모리 액세스 보호 KR100563222B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9708822A GB2325061B (en) 1997-04-30 1997-04-30 Memory access protection
GB9708822.3 1997-04-30
PCT/GB1998/000344 WO1998049623A1 (en) 1997-04-30 1998-02-03 Memory access protection

Publications (2)

Publication Number Publication Date
KR20010012133A true KR20010012133A (ko) 2001-02-15
KR100563222B1 KR100563222B1 (ko) 2006-03-22

Family

ID=10811626

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019997009985A KR100563222B1 (ko) 1997-04-30 1998-02-03 메모리 액세스 보호

Country Status (12)

Country Link
US (1) US6021476A (ko)
EP (1) EP0979456B1 (ko)
JP (1) JP3710490B2 (ko)
KR (1) KR100563222B1 (ko)
CN (1) CN1118027C (ko)
DE (1) DE69823180T2 (ko)
GB (1) GB2325061B (ko)
IL (1) IL132418A (ko)
MY (1) MY114810A (ko)
RU (1) RU2215321C2 (ko)
TW (1) TW376475B (ko)
WO (1) WO1998049623A1 (ko)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6272605B1 (en) * 1998-06-01 2001-08-07 International Business Machines Corporation System using priority data of a host recall request to determine whether to release non-volatile storage with another host before processing further recall requests
JP4516693B2 (ja) * 1998-12-07 2010-08-04 アルボス テクノロジーズ リミテッド リミテッド ライアビリティ カンパニー コンピュータ、アドレス有効性照合プログラムを記録した記録媒体、及びアドレス有効性照合方法
US6748502B2 (en) * 2001-01-12 2004-06-08 Hitachi, Ltd. Virtual volume storage
JP2003006046A (ja) * 2001-06-25 2003-01-10 Sanyo Electric Co Ltd メモリプロテクション方法および回路
JP2003060906A (ja) * 2001-08-21 2003-02-28 Canon Inc 画像処理装置及びその方法
US7134139B2 (en) * 2002-02-12 2006-11-07 International Business Machines Corporation System and method for authenticating block level cache access on network
US7266842B2 (en) * 2002-04-18 2007-09-04 International Business Machines Corporation Control function implementing selective transparent data authentication within an integrated system
US7089419B2 (en) 2002-04-18 2006-08-08 International Business Machines Corporation Control function with multiple security states for facilitating secure operation of an integrated system
US6851056B2 (en) 2002-04-18 2005-02-01 International Business Machines Corporation Control function employing a requesting master id and a data address to qualify data access within an integrated system
US6715085B2 (en) 2002-04-18 2004-03-30 International Business Machines Corporation Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
US7266786B2 (en) 2002-11-05 2007-09-04 Sonics, Inc. Method and apparatus for configurable address mapping and protection architecture and hardware for on-chip systems
US7203798B2 (en) * 2003-03-20 2007-04-10 Matsushita Electric Industrial Co., Ltd. Data memory cache unit and data memory cache system
DE10335643B4 (de) * 2003-08-04 2007-10-31 Infineon Technologies Ag Vorrichtung und Verfahren zum Steuern des Zugriffs von mehreren Datenverarbeitungseinrichtungen auf einen Speicher
US7231499B2 (en) * 2003-12-17 2007-06-12 Broadcom Corporation Prioritization of real time / non-real time memory requests from bus compliant devices
US7461268B2 (en) * 2004-07-15 2008-12-02 International Business Machines Corporation E-fuses for storing security version data
US7068545B1 (en) 2005-01-04 2006-06-27 Arm Limited Data processing apparatus having memory protection unit
US20070005932A1 (en) * 2005-06-29 2007-01-04 Intel Corporation Memory management in a multiprocessor system
JP4519738B2 (ja) * 2005-08-26 2010-08-04 株式会社東芝 メモリアクセス制御装置
US8572329B2 (en) * 2005-10-04 2013-10-29 Arm Limited Multi-region default memory map
TW200805065A (en) * 2006-01-17 2008-01-16 Nxp Bv Region protection unit, instruction set and method for protecting a memory region
JP5100133B2 (ja) * 2007-01-19 2012-12-19 株式会社東芝 情報処理装置
US8380987B2 (en) 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
KR101405319B1 (ko) * 2007-04-16 2014-06-10 삼성전자 주식회사 가상화 환경에서의 안전한 시스템 보호 장치 및 방법
US8051263B2 (en) * 2007-05-04 2011-11-01 Atmel Corporation Configurable memory protection
US8417916B2 (en) * 2008-01-11 2013-04-09 International Business Machines Corporation Perform frame management function instruction for setting storage keys and clearing blocks of main storage
US8738860B1 (en) * 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
GB2484927A (en) * 2010-10-26 2012-05-02 Advanced Risc Mach Ltd Provision of access control data within a data processing system
US9116845B2 (en) 2011-02-23 2015-08-25 Freescale Semiconductor, Inc. Remote permissions provisioning for storage in a cache and device therefor
US8949551B2 (en) 2011-02-23 2015-02-03 Freescale Semiconductor, Inc. Memory protection unit (MPU) having a shared portion and method of operation
US8775754B2 (en) * 2011-06-24 2014-07-08 Arm Limited Memory controller and method of selecting a transaction using a plurality of ordered lists
US8639895B2 (en) 2011-07-14 2014-01-28 Freescale Semiconductor, Inc. Systems and methods for memory region descriptor attribute override
US8572345B2 (en) 2011-09-16 2013-10-29 Freescale Semiconductor, Inc. Memory management unit (MMU) having region descriptor globalization controls and method of operation
GB2522906B (en) * 2014-02-10 2021-07-14 Advanced Risc Mach Ltd Region identifying operation for identifying a region of a memory attribute unit corresponding to a target memory address
US10353826B2 (en) 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US10613989B2 (en) 2017-07-14 2020-04-07 Arm Limited Fast address translation for virtual machines
US10534719B2 (en) 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
US10467159B2 (en) 2017-07-14 2019-11-05 Arm Limited Memory node controller
US10565126B2 (en) 2017-07-14 2020-02-18 Arm Limited Method and apparatus for two-layer copy-on-write
US10489304B2 (en) * 2017-07-14 2019-11-26 Arm Limited Memory address translation
US10592424B2 (en) 2017-07-14 2020-03-17 Arm Limited Range-based memory system
US10884850B2 (en) 2018-07-24 2021-01-05 Arm Limited Fault tolerant memory system
US11232039B2 (en) * 2018-12-10 2022-01-25 Advanced Micro Devices, Inc. Cache for storing regions of data
JP2021022061A (ja) 2019-07-25 2021-02-18 キオクシア株式会社 ストレージ装置、メモリアクセス制御システムおよびメモリアクセス制御方法
EP4372567A1 (en) 2022-11-18 2024-05-22 Thales Dis France Sas Processor and method for modifying processor behavior based on memory attributes and instruction type

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3827029A (en) * 1972-09-25 1974-07-30 Westinghouse Electric Corp Memory and program protection system for a digital computer system
US4038645A (en) * 1976-04-30 1977-07-26 International Business Machines Corporation Non-translatable storage protection control system
JPS58225442A (ja) * 1982-06-25 1983-12-27 Toshiba Corp 優先順位制御回路
JPH01229353A (ja) * 1988-03-09 1989-09-13 Fujitsu Ltd Dmaコントローラ
US5335334A (en) * 1990-08-31 1994-08-02 Hitachi, Ltd. Data processing apparatus having a real memory region with a corresponding fixed memory protection key value and method for allocating memories therefor
US5465343A (en) * 1993-04-30 1995-11-07 Quantum Corporation Shared memory array for data block and control program storage in disk drive
US5623636A (en) * 1993-11-09 1997-04-22 Motorola Inc. Data processing system and method for providing memory access protection using transparent translation registers and default attribute bits
DE69509717T2 (de) * 1994-08-31 1999-11-11 Motorola Inc Modulare Chipauswahl-Steuerschaltung
US5742826A (en) * 1994-11-09 1998-04-21 International Business Machines Corporation Object encapsulation protection apparatus

Also Published As

Publication number Publication date
JP3710490B2 (ja) 2005-10-26
US6021476A (en) 2000-02-01
JP2001522492A (ja) 2001-11-13
IL132418A (en) 2003-11-23
GB2325061B (en) 2001-06-06
CN1254424A (zh) 2000-05-24
TW376475B (en) 1999-12-11
EP0979456B1 (en) 2004-04-14
DE69823180D1 (de) 2004-05-19
KR100563222B1 (ko) 2006-03-22
IL132418A0 (en) 2001-03-19
GB2325061A (en) 1998-11-11
RU2215321C2 (ru) 2003-10-27
WO1998049623A1 (en) 1998-11-05
DE69823180T2 (de) 2004-11-11
MY114810A (en) 2003-01-31
GB9708822D0 (en) 1997-06-25
CN1118027C (zh) 2003-08-13
EP0979456A1 (en) 2000-02-16

Similar Documents

Publication Publication Date Title
KR100563222B1 (ko) 메모리 액세스 보호
US5628023A (en) Virtual storage computer system having methods and apparatus for providing token-controlled access to protected pages of memory via a token-accessible view
US5619671A (en) Method and apparatus for providing token controlled access to protected pages of memory
KR100327854B1 (ko) 캐시메모리시스템
US5202994A (en) System and method for shadowing and re-mapping reserved memory in a microcomputer
US5623636A (en) Data processing system and method for providing memory access protection using transparent translation registers and default attribute bits
US4999770A (en) Command controlled multi-storage space protection key pretesting system permitting access regardless of test result if selected key is predetermined value
US5805930A (en) System for FIFO informing the availability of stages to store commands which include data and virtual address sent directly from application programs
US4821169A (en) Access verification arrangement for digital data processing system which has demand-paged memory with page crossing detection
JP3605205B2 (ja) データ処理装置および処理方法
US4764896A (en) Microprocessor assisted memory to memory move apparatus
US6851036B1 (en) Method and apparatus for controlling external devices through address translation buffer
US5127096A (en) Information processor operative both in direct mapping and in bank mapping, and the method of switching the mapping schemes
US6021498A (en) Power management unit including a programmable index register for accessing configuration registers
US5873128A (en) Data processing system with dynamic address translation function
JPH07129464A (ja) 情報処理装置
EP0864983A2 (en) Computer system including memory adress management circuit for protecting memory from illegal writing
EP0285309A2 (en) Memory protection apparatus for use in an electronic calculator
JP3217348B2 (ja) 情報処理システム
US5933856A (en) System and method for processing of memory data and communication system comprising such system
JP3190661B2 (ja) 情報処理システム
JP3147236B2 (ja) キヤツシユメモリ装置
KR920003845B1 (ko) 개인용 컴퓨터의 사용자를 위한 rom의 영역 확장 시스템
JP2746978B2 (ja) 書き込み保護機構付き外部記憶装置
JP2000047943A (ja) メモリ保護システム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130221

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140220

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150226

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 12