KR100421749B1 - 비폴팅로드명령실행방법및그장치 - Google Patents

비폴팅로드명령실행방법및그장치 Download PDF

Info

Publication number
KR100421749B1
KR100421749B1 KR1019960005517A KR19960005517A KR100421749B1 KR 100421749 B1 KR100421749 B1 KR 100421749B1 KR 1019960005517 A KR1019960005517 A KR 1019960005517A KR 19960005517 A KR19960005517 A KR 19960005517A KR 100421749 B1 KR100421749 B1 KR 100421749B1
Authority
KR
South Korea
Prior art keywords
fault
load instruction
translation table
load
virtual
Prior art date
Application number
KR1019960005517A
Other languages
English (en)
Other versions
KR960032184A (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 KR960032184A publication Critical patent/KR960032184A/ko
Application granted granted Critical
Publication of KR100421749B1 publication Critical patent/KR100421749B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/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/145Protection 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 virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 추측에 기초하여 명령을 실행하는 파이프라인된 프로세서, 특히 비폴팅 및 노말 로드 명령을 지원하기 위한 파이프라인된 프로세서에 관한 것으로서, 비폴트 전용 비트는 각 페이지에 대한 번역 테이블 엔트리내에 포함되고, NFO 비트가 세트되면 상기 페이지에 액세스하는 비폴팅 로드를 번역시킨다. 비폴트 전용 페이지에 대한 임의의 액세스가 오류이고 프로세서를 폴트시킨다. 비폴트 로드는 NFO 비트가 세트된 페이지에 적용될 때 조차도 결코 폴트를 생성하지 않는다는 것만 제외하면 노말 로드와 같이 동작하고, 번역 테이블 엔트리내의 NFO 비트가 비폴팅 로드에 의해 안전하게 액세스하기 위해 맵되는 페이지를 표시하지만 다른 노말 액세스에 의해 여전히 폴트를 일으킬 수 있다. NFO 비트는 어느 페이지가 불법인 것을 나타낸다. 가상 페이지 0x0 등의 선택된 페이지는 번역 테이블내에서 맵될 수 있다. 널 포인터가 비폴팅 로드에 의해 디레퍼런스될 때마다 번역색인버퍼(TLB) 히트가 생기고, 제로는 소프트웨어에 트랩되지 않고 즉시 복귀되어 요청된 페이지를 발견한다. 제 2 실시예에서는, 번역 테이블에서 이전에 번역되지 않은 불법 가상 페이지에 비폴트 로드가 액세스하려는 것을 TLB 미스에 의해 불러내어진 운영체제 소프트웨어 루틴이 발견할 때, 운영체제는 모두 제로인 물리 페이지로 맵핑하는 가상 페이지에 대해 번역 테이블 엔트리를 생성하고 그 가상 페이지에 대한 NFO 비트를 세트하는 것을 특징으로 한다.

Description

비폴팅 로드 명령 실행 방법 및 그 장치{METHOD AND APPARATUS FOR IMPLEMENTING NON-FAULTING LOAD INSTRUCTION}
본 발명은 파이프라인 프로세서에 관한 것으로, 보다 구체적으로는 비폴팅(non-faulting) 및 노말 로드 명령(normal load instruction)을 지원하는 파이프라인 프로세서에 관한 것이다.
일반적인 종래의 마이크로프로세서는 메모리와 인터페이스 가능하고 명령 시퀀스를 직렬로 실행하는 기계를 실현하는 중앙처리장치(CPU)를 포함한다. 도 1은 현대의 프로세서의 개략적인 블럭도이다. 명령실행은 적어도 4개의 주요 단계 즉; 명령 및 오퍼랜드 인출(operand fetch)단계(1), 명령 디코드 단계(2), 실행 단계(3)및 결과의 재기록 단계(4)로 나누어진다. 최대 클럭 주파수는 상기 4단계 전부를 통해 가장 긴 전파 지연에 의해 결정된다.
파이프라이닝(pipelining)의 개념은 각 클럭 사이클에서 수행된 논리량을 줄임으로써 최대 클럭 주파수를 증가시키는 것이다. 파이프라인닝 개념은 상기 4단계 각각이 개별 클럭 사이클로 수행되도록 확장될 수 있고, 그 결과 처리량(throughput)을 증가시킬 수 있다. 수퍼 파이프라인 설계는 일부 또는 모든 4개의 단계에서 로직을 분해하여 임의의 하나의 단계를 통한 최대 전파 지연을 감소시키고, 그 결과 4개의 파이프라인 단계 이상으로 명령실행이 분할되기 때문에 동작주파수 및 처리량을 증가시킨다. 이론적으로는, 프로세서 로직을 같은 대기 시간을 갖는 N개의 단계로 분할함으로써, 처리량은 N 배 증가된다.
수퍼스칼라 마이크로프로세서는 하나 이상의 실행 유니트를 갖는다. 한번에 2 또는 3개의 명령을 실행하는 수퍼스칼라 프로세서 설계가 일반화되고 있다. 현재 4개의 명령을 실행하는 설계가 있으며, 미래에는 컴퓨터 설계자가 8 내지 16개의 명령을 실행할수 있는 칩을 설계할 것으로 기대된다. 대부분의 수퍼스칼라 실행은 특정화된 병렬 실행 분기(5, parallel execution branch)를 구비하는데, 이것은 각 병렬 실행 분기가 모든 명령 세트를 지원할 수 없다는 것을 의미한다. 대신에,각 분기는 상기 명령 세트의 서브세트(subset)를 처리하도록 설계된다.
파이프라인 프로세서와 수퍼스칼라 프로세서 양자에 내재된 근본적인 문제점은 실행 시퀀스에서 조건 분기(conditional branch)의 처리를 포함한다는 것이다. 대부분의 프로그램은 많은 조건 분기를 포함한다. 이러한 프로그램을 파이프라인에서 실행할 때, 어느 분기가 실행될 것이라고 확실하게 구별할 방법이 없다.
분기 결정이 행하여 졌을 때 명령이 실행된 후에 결과를 이용할 수 있기 때문에, 어느 명령이 분기 명령 직후에 일어난다는 확신을 가질 방법이 없다. 인출(fetch) 단계(1)가 분기 명령에 따르는 다음 명령을 이미 파이프라인으로 인출했기 때문에, 분기에 따르는 일련의 명령이 중단되어야 한다. 분기 실행 단계에 선행하는 단계 수가 증가할 때 상기 문제는 더 나빠진다. 따라서, 프로세서의 속도를 증가시키기 위해서 파이프라인이 길어짐에 따라, 상기 분기 문제는 더 복잡하게 된다.
파이프라인화 되었는지 여부에 상관없이, 유사한 문제가 수퍼스칼라 프로세서에서 발생한다. 수퍼스칼라 프로세서는 주어진 시간에 하나 이상의 명령을 수행할 수 있기 때문에, 하나의 실행 유니트가 조건 분기 명령을 실행하는 동안에, 다른 실행 유니트는 조건 분기 조건이 만족되어야만 실행될 수 있는 명령을 실행한다. 조건이 만족되지 않으면, 다른 실행 유니트의 명령이 실행되지 않고, 수퍼스칼라 프로세서는 콘티전트 명령(contingent instruction) 실행이 중지되거나 리버스될 수 있는 방법을 제공해야 한다. 그 콘티전트 명령이 상기 레지스터 또는 메모리의 내용을 지우고 레지스터 또는 메모리에 기록되면, 시스템은 이전의 내용을 복귀시킬 수 있어야 한다. 또한, 수퍼스칼라 프로세서용으로 설계된 컴파일러는 모든 콘티전시(contingency)가 해결될 때까지 잠정적으로 중요한 레지스터 또는 메모리 위치에 기록되지 않도록 중간 기억장치를 사용하도록 설계된다.
콘티전시가 결정될 때까지 메모리 내용을 지우지 않도록 하기 위해 컴파일러가 기록될지라도, 또 다른 문제가 있다. 예를 들어, C 프로그램 프래그먼트(fragment)를 생각해 보자.
상기 프래그먼트는 개념적으로 적어도 2개의 부분으로 나뉠 수 있다. C 프로그래밍 언어에서,*P는 P가 포인터임을 표시하고*P는 P에 의해 지정된 위치의 내용을 나타낸다. 제 1 부분은 변수 P를 기억하는 메모리 위치가 NULL에 의해 표시된 코드를 포함하지 않는지 여부에 관한 조건 검사이다. 상기 조건이 참(true)이면, 제 2 부분이 변수(x), 변수(y)의 합을 기억하는 메모리와 그 메모리(p)에 포함된어드레스를 메모리안에 기억되는 양으로 할당시킨다. 이상의 설명과 같이, 조건의 결과가 결정될 때까지 컴파일러는 변수(x)의 현재값을 기록하지 않고 지우지 않기 위해 명령을 시퀀스 함으로써, 변수(x)의 현재값을 보호하고 조건이 거짓이면 복구(restoration)가 실행될 필요가 없다. 따라서, 컴파일러는 상기 프래그먼트를 다음의 시퀀스로 분할할 수 있다.
상기 명령은 스케줄되어 temp_register에 대한 배정 및 NULL로 되지 않는 P에 관한 검사가 분리된 실행 유니트에 의해 동시에 수행된다. 상기 시퀀스에서 여전히 발생될 수 있는 문제는, P가 NULL이면, P가 아무것도 지적하지 않기 때문에 P에 의해 지적된 위치 내용을 판독하려는 시도가 감지되지 않는다는 것이다. 복수의 프로세서에서 P 내용의 정상적인 액세스로 인해 프로그램이 중단된다.
상기 문제를 해결하기 위해, 비폴트 로딩의 개념이 도입된다. 상기 경우에, P가 NULL이고, 명령이 로드(*P)로 시도되면, 폴트 또는 오류가 생기는 대신에, 로드는 제로와 같은 소정의 값으로 복귀한다. 사용될 가능성이 없기 때문에, 불법 어드레스(illegal address)로부터의 비폴팅 로드에 의해 복귀된 값은 그다지 중요하지 않다. 불법 어드레스상에서 비폴팅 로드로부터 복귀된 데이타가 사용되지 않는데 왜냐하면 로드를 야기시키는 잘못 예측된 분기가 사용전에 해결하기 때문이다. 복귀된 데이타가 사용될지라도, 후속 명령의 실행 결과는 중지되었다. 따라서, 불법어드레스 상에서 비폴트 로드에 의해 복귀된 값이 나중에 사용될지라도 예외를 만들지 않도록 선택되어야 한다.
비폴팅 로드는 그 사용을 방지하는 조건부 제어구조의 앞에 로드를 이행시키는 최적화를 가능하게 하기 때문에, 비폴팅 로드는 명령의 스케줄링을 개선하는 것에 의해 로드의 대기시간이 미치는 영향을 최소로 억제할 수 있다. 회복 불가능한 폴트가 발생하는 것을 제외하고는(예를들어, 범위 밖의 어드레스 오류) 비폴팅 로드의 의미는 다른 로드의 의미와 같다. 회복 불능한 폴트가 생기는 경우, 이 폴트는 무시되고, 하드웨어 및 시스템 소프트웨어는 서로 협동하여 제로를 복귀시키는 것에 의해 로드가 정상적으로 완료한 것처럼 보이게 한다. 컴파일러의 최적화는 비폴팅 로드와 단정딘 로드에 대해 로드변환 명령을 형성한다. 이것은 크리티컬 로드 패스로부터 어드레스 확인을 배제하는 것에 의해 특정의 알고리즘에서의 성능의 개선을 가능하게 한다. 포인터의 디레퍼런싱(dereferencing)"은 포인터에 의해 지적된 위치 내용을 액세스하기 위해 시도된다. 링크(link)된 목록에 따를 때, 비폴팅 로드는 무효포인터로 하여금 추론하고 판독을 먼저하는 방식에서 안전하게 디레퍼런스 되는 목록 끝을 표시하게 되고, 가상 어드레스 0x0에서의 페이지는 위반없이 안전하게 액세스될 수 있다.
현대의 프로세서는 물리 어드레스 공간과 다른 가상 어드레스 공간을 지원한다. 가상 어드레스는 프로세서가 메모리 위치를 특정화 하는데 사용하는 라벨(label)이다. 프로세서가 가상 어드레스를 갖는 위치를 액세스할 수 있기만 하면, 프로세서는 그 메모리 위치가 물리 메모리에 실제로 있는 장소와 무관하다. 프로세서 설계 시방서는 지원해야하는 소정의 가상 어드레스 공간을 정의한다. 컴퓨터 시스템을 관리하는 운영체제는 그 가상 어드레스 공간이 물리 메모리에 어떻게 맵(map)되는 지에 관하여 유연성을 갖는다. 따라서, 가상 어드레스로부터 물리 어드레스로의 번역이 필요해 진다.
운영체제는 "소프트웨어 번역 테이블"로 불리우는 임의의 데이타 구조에서 번역 정보를 유지한다. 하나 이상의 번역색인버퍼(TLB; Translation Lookaside Buffer)는 더 자주 액세스된 가상 페이지를 위한 하나의 사이클 번역을 구비하면서 소프트웨어 번역 테이블의 독립적인 캐쉬로써 동작한다. 용어 "TLB 히트"는 소망된 번역이 칩내의 TLB에 있다는 것을 의미한다. "TLB 미스"는 소망의 번역이 칩내의 TLB에 존재하지 않는다는 것을 의미한다. TLB는 작고 빠르다. 소프트웨어 번역 테이블는 크고 복잡하다. 직접 맵된 캐쉬와 같이 동작하는 번역기억버퍼(Translation Storage Buffer; TSB)는TLB 및 소프트웨어 번역 테이블 사이의 인터페이스이다.
TLB 미스가 발생할 때마다, 프로세서는 TLB 미스 처리용 운영체제 소프트웨어에 즉시 트랩한다. TLB 미스 핸들러는 이용 가능한 수단에 의해 TLB를 충전하는 선택을 한다. TLB가 소망의 어드레스의 번역으로 충전된 후, TLB 미스를 처음으로 유발시킨 명령이 다시 실행된다.
통상적인 TLB 미스 소프트웨어는 TSB를 액세스하는데 필요한 소정의 포인터를 우선 로드할 것이다. 상기 포인터를 사용해서, 핸들러는 소망의 번역이 TSB내에 있는지 여부를 알기 위해 TSB의 알맞은 위치를 확인할 것이다. 소망의 번역이 TSB에 있으면, 번역은 대체 알고리즘에 의해 선택된 TLB 엔트리로 로드된다. 번역이TSB에 존재하지 않으면, TLB 미스 핸들러는 더욱 복잡하고 더 느린 TSB 미스 핸들러로 점프한다. TSB 미스 핸들러는 소망의 번역용 크고 복잡한 소프트웨어 번역 테이블를 탐색한다. 번역이 소프트웨어 번역 테이블에 존재하지 않으면, 소망의 메모리 위치가 메인 메모리에 맵되지 않는다. 상기 경우에, 어드레스는 불법으로 된다. 또한, 특정된 가상 어드레스에 의해 참고된 데이타는 합법이지만, 디스크 등의 다른 메모리 장치상에 있다. 어드레스가 합법이지만, 메인 메모리에 있지 않으면, 요구된 데이타는 메인 메모리로 맵되어야 하고, TLB 미스를 야기하는 명령이 실행되기 전에 그 번역을 TLB내에 저장할 필요가 있다.
비폴팅 로드가 TLB 미스에 직면한 경우, 운영체제는 페이지 번역을 시도해야 한다. 번역이 오류이면 (예를 들어, 범위 밖의 어드레스), 제로(O)로 복귀되고 로드는 완료된다. 종래의 설계기술에 따르면, 비폴팅 로드 명령에 있어서 소망의 어드레스가 불법인 경우, 불법 페이지에 매핑되지 않는다. 따라서, TLB 미스가 발생한다. 소프트웨어 트랩은 TLB 미스를 형성하고, 어드레스가 불법이라는 결정은 상대적으로 긴 시간이 걸린다. 따라서, 프로세서가 다른 유용한 작업을 수행하지 못하게한다. 프로세서가 합법 페이지의 매핑만을 허용하면, 불법 어드레스로부터의 비폴팅 로드는 복귀하는데 긴 시간이 걸리는 트랩을 항상 형성할 것이다. 따라서, 널 포인터의 각 디레퍼런스는 결국 제로로 복귀하기 전에 긴 소프트웨어 트랩을 초래할 것이다.
도 2는 로드 명령을 처리하는 종래 기술에 따른 방법을 예시하는 흐름도이다. 점선(9)으로 둘러싸여 도시된 단계 모두는 하드웨어에서 통상적으로 수행된다.로드 명령이 단계(10)에서 최초로 디스패치된다. 검사(11)에서 비교 동작이 관련된 하드웨어를 사용하여 모든 번역 엔트리에 대해 동시에 수행된다. TLB는 현재의 로드가 요구하는 가상 페이지 번호에 대해 탐색된다. TLB 히트가 있으면, TLB는 단계(12)에서 알맞은 물리 페이지를 공급하고, 로드 명령은 단계(13)에서 실행하고, 로드 명령은 단계(14)에서 종료된다. 가상 어드레스가 TLB에 없으면, TLB 미스 핸들러는 단계(15)에서 불러내어진다. 소프트웨어는 검사(16)단계에서 번역용 번역 테이블를 검색한다. 번역되면, 소프트웨어는 알맞은 번역으로 TLB를 충전하고, 로드가 실행된다. 번역이 번역 테이블 데이타 구조 레벨에 없으면, 소프트웨어는 어드레스가 합법인지를 검사(18)한다. 어드레스가 합법이면, 회복 가능한 페이지 폴트가 단계(19)에서 발생한다. 페이지 폴트가 발생할 때, 요구된 페이지가 디스크 또는 다른외부 메모리 장치 상에 있고, 페이지 폴트로부터 회복하기 위해 메인 메모리로 맵되고 전달되어야한다. 어드레스가 불법이면, 현재의 명령이 비폴팅 로드인지를 검사(20)한다. 현재의 명령이 노말 (폴팅) 로드이면, 불법 어드레스는 회복 불가능한 폴트(19)를 초래한다. 그러나, 현재의 명령이 비폴팅 로드이면, 소프트웨어는 단계(21)에서 제로로 복귀하고, 로드 명령이 순조롭게 종료(14)된다.
제로로 복귀되는 처리 속도를 증가시키는 하나의 방법은 어드레스 제로로부터 모두 제로인 페이지에 맵핑하게 하는 것이다. 상기 설계를 사용함으로써, 설계는 소프트웨어 번역 테이블의 모든 맵핑이 합법 페이지로 되는 표준 개념으로부터 벗어난다. 상기 방법이 취해지면, 불법 페이지가 TLB에 있는 번역을 취한다. 널 포인터에 대한 디퍼렌스(deference)가 수행될 때마다, 번역이 TLB에 있기 때문에 TLB히트가 형성되고, 제로가 소프트웨어에 어떤 트랩없이 즉시 복귀될 것이다. 본질적으로, 상기 방법은 소정의 자주 액세스되는 불법 어드레스를 합법 어드레스로 번역할 뿐이다.
비폴팅 로드에 의해 공통적으로 액세스되지 않는 다른 불법 어드레스가 노말 로드에 의해 액세스될 때 폴트되도록 하기 위해 맵되도록 선택될 수 없다. 그들은 여전히 TLB 미스, 소프트웨어 트랩 및 제로인 결과를 형성할 것이다. 비폴트 로드에 의해 거의 공통적으로 액세스된 페이지(0x0 과 같이)만이 맵되야 하는데 왜냐하면 그것은 노말 로드(normal load)가 비폴트 로드로(non-fault load)부터 더 짧은 잠정적인 장점을 얻는 동안 오동작하는 위험을 최소화하기 때문이다.
비폴팅 로드 명령을 지원하는 프로세서에서, 노말 폴트 로드는 또한 지원되야 한다. 그러나, 모두 제로인 페이지가 맵되면, 다른 메카니즘이 없을 때, 노말로드는 페이지를 역시 액세스할 수 있을 것이다. 기술적으로 이것은 오동작이다. 상기 방법의 문제점은 노말 로드도 불법 페이지를 액세스할 수 있는 것이다. 노말 (폴트) 로드는 그들이 제로로 복귀하기 보다는 불법 페이지에 액세스하려 할 때 폴트를 초래해야한다. 상기 설계를 사용해서, 프로그래머는 불법 페이지로부터의 비폴팅 로드로부터 빨리 복귀하는 것 또는 불법 페이지를 액세스할 때 제로로 복귀하기보다는 폴트에 의해 노말로드를 옳게 동작시키는 것 중에서 어느 것을 페이지를 단위로 선택해야 한다.
많은 프로그래머가 디버그(debug)코드에 어드레스 0x0을 액세스할 때 발생되는 예외를 고려한다. 가상 어드레스 0x0가 "무효(null)"이고 보통 불법 어드레스이다. 통상적인 프로그램에서 매우 일반적인 버그가 널 포인터를 디레퍼런스하기 위해 시도되고 있다. 소프트웨어 개발의 디버깅 단계 동안, 프로그래머는 널 포인터가 디레퍼런스될 때마다 폴트를 형성할 목적으로 특별히 코드에서 노말 (폴팅)로드를 사용할 것이다. 폴트가 발생한 후, 프로그래머는 무엇이 틀렸는지를 결정하기 위해 기계의 상태를 검사할 수 있다.
프로그램이 완전히 디버그될 때, 프로그래머는 조건 분기를 지나서 로드를 이동시켜서 실행 속도를 증가시키기 위해 발생하는 기계 코드에서 비폴팅 로드를 사용하는 컴파일러에게 알린다. 비폴팅 로드사용은 회복 불가능한 폴트가 디버그된 프로그램에서 발생하지 못하게 한다. 그러나, 페이지가 메모리 위치 0x0에 맵되지 않으면, 비폴팅 로드는 그럼에도 불구하고 어드레스 0x0 (또는 다른 불법 어드레스)을 액세스할때 소프트웨어 트랩을 발생시키게 할 것이다. 상기 반복된 트랩은 많은 시간을 소비할 것이다. 폴트가 발생하면 불필요한 처리를 최소화하기 위해, 낮은 어드레스(특히 어드레스 제로)가 모두 제로인 페이지로 맵되는 것이 바람직하고, 널 포인터를 통한 참조가 불필요한 트랩을 형성하지 않는다. 따라서, 소프트웨어 트랩은 제로 페이지를 메모리 위치 0x0로 맵핑함으로써 피해질 수 있다.
대부분 현대의 프로그램 개발은 단계적으로 형성된다. 소정의 루틴 또는 프로시저는 다른 관련된 소프트웨어가 완료되고 디버그 되기 전에 디버그된다. 많은 경우에 버그(bug)를 여전히 포함하는 프로그램으로써 디버그된 절차를 컴파일하는 것이 필요하다. 모두 제로인 페이지가 메모리 위치 0x0로 맵되면, 개발중인 프로그램 또는 프로시저는 널 포인터가 디레퍼런스될 때 폴트를 발생하는 장점을 잃게 되는데, 왜냐하면 제로가 폴트되는 대신에 복귀하기 때문이다. 이것은 오동작인데, 왜냐하면 어드레스 0x0는 불법이고 노말 로드에 대해 제로를 복귀시키지 말아야 한다. 다른 메카니즘이 없으면, 폴팅 또는 비폴팅이든 간에 모든 로드는 모두 제로인 페이지가 메모리 위치 0x0에 맵되면, 널 포인터가 디레퍼런스될 때 제로로 복귀할 것이다.
도 1은 종래의 파이프라인형 수퍼스칼라 프로세서를 도시하는 블록도,
도 2는 로드 명령을 처리하는 종래의 방법을 도시하는 흐름도,
도 3은 본 발명에 따른 번역 테이블 엔트리를 도시하는 도면,
도 4는 본 발명에 따른 번역색인버퍼를 도시하는 도면,
도 5는 4개의 로드 명령 및 번역색인버퍼가 도 4에 도시된 엔트리를 가질 때 상기 4개의 명령에 의한 생성된 결과를 도시하는 도면,
도 6은 액세스된 페이지에 대응하는 번역 테이블 엔트리가 존재하는 때에, 처리를 나타내는 제어신호를 실현하는 본 발명의 로직의 진리표 값과 로직회로, 및
도 7은 본 발명의 제 1 및 2 실시예에 따라 로드 명령을 처리하는 방법을 설명하는 흐름도이고, 다만, 단계(113)은 제 1 실시예에는 포함되지 않고 제 2 실시예에만 포함된다.
* 도면의 주요부분에 대한 부호의 설명*
22 : 번역 테이블 엔트리 24 : 물리 어드레스
32 : 비폴팅 전용 비트 55 : 논리 회로
102 : TLB 미스(miss) 핸들러 104 : 폴트 버블
본 발명의 제 1 실시예에 따르면, 비폴트 전용 비트는 각 페이지 마다 번역 테이블 엔트리에 포함된다. 비폴트 전용 비트가 세트되면, 페이지에 액세스하는 비폴팅 로드에 의해 번역을 형성할 것이다. 비폴트 전용 페이지에 대한 다른 액세스는 오류이고, 운영체제 소프트웨어 트랩을 통해 프로세서가 폴트되게 할 것이다. 비폴팅 로드는 비폴트 전용 비트가 세트된 페이지에 대해 액세스한 경우에도 폴트를 형성하지 않는 것을 제외하면, 노말 로드와 같이 작용한다. 번역 테이블 엔트리내의 비폴트 전용 비트가 비폴트 로드에 의해 안전한 액세스를 제공하기 위해 맵되는 페이지를 표시하지만, 다른 노말 액세스에 의해 여전히 폴트를 형성할 수 있다.
이것에 의해, 디버그 중의 소프트웨어가 사용하는 디버드된 라이브러리 루틴에의 비폴팅 액세스를 가속하는 것에 의해 얻어질 수 있는 효과가 유지되는 한편, 프로그래머는 디버그 단계 동안 와일드 포인트 레퍼런스에의 트랩이 가능하다. 정밀한 프로그램 실행은 보증되는데 왜냐하면 노말 (폴팅) 로드가 세트된 비폴트 전용 비트로써 표시된 불법 페이지를 액세스하려하면 사실상 폴트되기 때문이다.
비폴트 전용 비트는 어느 페이지가 불법인 것을 표시한다. 번역색인버퍼 히트시에, 모든 가능한 출력이 하드웨어 지원을 갖기 때문에, 모든 노말 및 비폴팅 로드는 하드웨어에서 신속하게 처리되고 매우 정확하게 실행된다. 가상 페이지 0x0 등의 선택된 페이지가 번역 테이블에서 맵될 수 있다. 일단 액세스되면, 가상 페이지 0x0에 대한 번역 테이블 엔트리는 번역색인버퍼에 존재할 것이다. 따라서, 널 포인터가 비폴팅 로드에 의해 디레퍼런스될 때마다, TLB 히트가 발생하고 제로가 소프트웨어에 트랩되지 않고 즉시 복귀하여 요구된 페이지를 발견한다.
본 발명의 제 2 실시예에 따르면, TLB 미스에 의해 불러내어진 운영체제 소프트웨어 루틴을 사용하는 것에 의해, 과거에 번역 테이블내에 번역된 경우가 없는 불법 가상 페이지에 대한 액세스를 비폴팅 로드가 검사한 것을 발견한 경우, 운영 체제는 이 가상 페이지에 대한 번역 테이블 엔트리를 형성한다. 번역 테이블 엔트리는 상기 가상 페이지를 모두가 제로인 물리 페이지에 대해 매핑하고, 또한 이 가상 페이지에 대한 비폴팅 전용 비트를 세트한다. 그 결과, 그 후 실행되는 가상 페이지로부터의 비폴팅 로드는 TLB 비트를 형성하고, 또 TLB 미스 핸들러를 회피하는 것과, 상기 불법 가상 페이지에 대응하는 번역 테이블 엔트리를 탐색하기 위해 소프트웨어 번역 데이블 모두에 대해 실시되는 고비용 및 긴 시간을 요구하는 성공적이지 못한 소프트웨어 검색을 적어도 회피할 수 있다.
본 발명에 따르면, 비폴트 전용 비트는 각 페이지 마다 번역 테이블 엔트리에 포함된다. 비폴트 전용 비트가 세트되면, 페이지에 액세스하는 비폴팅 로드에 의해 번역을 형성할 것이다. 비폴트 전용 페이지에 대한 다른 액세스는 오류이고, 운영체제 소프트웨어 트랩을 통해 프로세서가 폴트되게 할 것이다. 비폴팅 로드는비폴트 전용 비트가 세트된 페이지에 대해 액세스한 경우에도 폴트를 형성하지 않는 것을 제외하면, 노말 로드와 같이 작용한다.
도 3은 본 발명에 따른 번역 테이블 엔트리(22)를 도시한다. 각 엔트리는 가상 어드레스부(23)를 갖는다. 번역 테이블에서의 엔트리는 가상 어드레스에 따라 구성되고 가상어드레스에 대해 물리 어드레스 맵핑(mapping)을 갖는다. 메모리가 통상적으로 페이지로 분리되기 때문에, 가상 어드레스 및 대응하는 물리 어드레스부(24)의 최상위 비트만이 번역 테이블 엔트리에 기억된다. 가상 어드레스 및 물리 어드레스중 생략된 최하위 비트는 메모리 페이지 내의 색인 또는 오프세트(offset)를 제공한다. 비폴트 전용 비트(25)는 각 엔트리에 존재한다. 가산 정보(26)도 역시 번역 테이블 엔트리에 존재한다. 세트된 비폴트 전용 비트(asserted non-fault-only bit)를 갖는 페이지에 대한 노말 액세스 또는 로드는 오류 취급 소프트웨어 트랩을 발생시켜 폴트를 초해한다. 따라서, 번역 테이블 엔트리의 비폴트 전용비트는 비폴팅 로드에 의한 안전한 액세스를 위해 맵되는 페이지를 표시하지만, 다른 노말 액세스에 의해 여전히 폴트를 일으킬 수 있다. 이것에 의해, 디버그 중의 소프트웨어가 사용하는 디버드된 라이브러리 루틴에의 비폴팅 액세스를 가속하는 것에 의해 얻어질 수 있는 효과가 유지되는 한편, 프로그래머는 디버그 단계 동안 와일드 포인트 레퍼런스에의 트랩이 가능하다. 또한, 노말(폴팅) 로드가 세트된 비폴트 전용 비트로 표시된 불법 페이지에 액세스하면 그것이 사실상 폴트로 되기 때문에 정밀한 프로그램 실행이 보증된다.
비폴트 전용 비트는 어느 페이지가 불법인 것인지를 표시한다. 따라서, 모두제로인 물리 페이지 (예를 들어, 물리 어드레스 OxF에서)가 가상 메모리 위치 0x0에 맵되면, 가상페이지 0x0에 대한 번역 테이블 엔트리의 비폴트 전용 비트가 세트된다. 비폴팅 로드가 널(null) 포인터를 디레퍼런스(dereferences)하면, 가상 어드레스 0x0는 적절한 물리 페이지(OxF)에 번역되며, 제로인 그 페이지에 참조된 위치 내용이 복귀된다. 그러나, 노말 폴팅 로드가 널 포인터를 디레퍼런스하면, 가상 어드레스 0x0는 번역되지 않는데, 왜냐하면 페이지 0x0가 가상 어드레스 0x0에 대한 번역 테이블 엔트리에 존재하는 세트된 비폴트 전용 비트에 의해 불법으로 표시되기 때문이다. 불법 페이지의 전용 비트에 의해 불법으로 표시된다. 불법 페이지의 상기 노말(폴팅)로드 액세스는 트랩이 폴트되게 한다. 따라서, 프로그래머는 노말(폴팅) 로드의 정밀한 동작에 영향을 미침없이 비폴팅 로드에 대해 빠른 제로 복귀용 하드웨어 지원의 이득을 얻을 것이다.
도 4는 모두 제로인 페이지에 널 포인터를 맵핑하는 엔트리(31)를 갖는 작은 번역색인버퍼(30)를 예시하고 있고, 그 엔트리(31)에 대한 비폴트 전용 비트(32)가 세트되어 있다. 도4는 세트되지 않은 비폴트 전용 비트(34)를 갖는 합법 가상 어드레스에 대한 엔트리(33)를 도시한다. 도 5는 "로드"로 도시된 노말 (폴팅)로드 및 "NF_로드"로 표시된 비폴팅 로드에 대응하는 결과를 예시하고 이때 각 로드 형태는 "Y"로 표시된 합법 어드레스 및 "X"로 도시된 널 포인터의 디레퍼런싱(dereferencing)에 적용된다.
널 포인터에 대해 TLB 엔트리(31)에 의해 나타내어진 바와 같이, 하드웨어 지원은 불법 어드레스에 액세스하는 비폴팅 로드에 대해 빨리 제로로 복귀시키기위해 제공된다. 비폴트 전용 비트는 가상 페이지가 합법인지를 본질적으로 표시한다. 비폴트 전용 비트가 세트되면, 가상 페이지는 불법이다. 노말 로드가 세트된 비폴트 전용 비트를 갖는 가상 페이지에 액세스하려고 하면, 프로세서는 소프트웨어에 트랩되어 폴트된다.
도 6은 번역 테이블 엔트리가 본 발명에 따라 액세스된 페이지를 위해 존재하는 경우, 실행 또는 폴트인지를 결정하기 위해 적용된 로직에 대한 진리표를 도시하고 있다. 도 6은 상기 로직을 수행하는 간단한 논리 회로(55)를 또한 도시한다. 도7은 본 발명에 따라 프로세서 내에서 로드 명령이 실행되는 경우, 이벤트(events)의 시퀀스를 예시하고 있다. 로드 명령 처리는 본 발명의 단계(100)에서 시작한다. 로드되는 메모리 위치에 대해 가상 대 물리 페이지 번역의 비폴트 전용 비트를 포함하는 번역 테이블 엔트리가 번역색인버퍼(TLB)에 존재하는 지를 알기 위해 검사 단계(101)가 검사한다. 엔트리가 번역색인버퍼에 없으면, 프로세서는 TLB 미스 핸들러(102)로 트랩하고, 여기서 TLB 미스 핸들러(102)는 운영체제 소프트웨어 루틴이다. TLB 미스 핸들러는 로드 명령에 의해 요구된 가상 페이지에 대한 번역 테이블 엔트리를 위치시키기 위해 소프트웨어 번역 테이블의 필요한 가산 레벨을 탐색한다. 번역이 소프트웨어 번역 테이블에서 어디에서도 위치되지 않는다면, 검사(103)는 어드레스가 정말로 불법인지를 결정하는 검사(114)를 불러낸다. 어드레스는 합법이지만, 단지 맵되지않은 경우, 회복가능한 폴트(104)가 발생한다. 예를 들어, 이것은 메모리 위치가 메인 메모리에서보다 오히려 디스크에 있으면 발생하고, 그 결과 페이지 폴트가 발생한다. 페이지 폴트가 발생하면, 적절한 페이지가 디스크로부터 판독되고, 물리 메모리로 맵되고, 가상 어드레스에 대한 번역 테이블 엔트리가 생성되고 번역색인버퍼내에 위치된다. 로드 명령이 재실행된 후, 프로세서는 폴트로부터 회복된다. 요구된 가상 어드레스가 정말로 불법이면, 검사(111)는 현재의 로드가 비폴팅 로드인지를 결정한다. 현재의 로드가 비폴팅 로드이면, 소프트웨어는 제로로 복귀(112)할 것이고, 폴트없이 계속해서 실행될 것이다. 소프트웨어가 제로로 복귀되면, 로드 명령은 종료된다(110). 검사(111)가 현재의 로드가 노말 (폴팅) 로드인 것으로 결정하면, 불법 어드레스는 회복 불가능한 폴트를 일으킨다(104).
상기 논의로부터 추론할 수 있듯이, 폴트 버블(104, fault bubble)은 소프트웨어 루틴에 트랩을 표시한다. 폴트가 페이지 폴트 등의 폴트는 회복 가능하다. 불법 어드레스에 대한 노말 로드 액세스 등의 폴트는 회복 불가능하다.
요구된 페이지에 대한 번역 테이블 엔트리가 소프트웨어 테이블에서 발견되면, 검사(103)는 단계(105)에서 번역색인버퍼를 요구된 테이블 엔트리로 충전된 것을 불러낸다. 일단 번역 테이블 엔트리가 검색되면, 로드가 비폴팅 로드인지를 알기 위해, 검사(106)가 현재의 기계 상태를 검사한다. 현재의 로드가 노말 (폴팅) 로드이면, 로드에 의해 요구되는 페이지의 비폴트 전용(NFO) 비트가 세트되는지를 알기 위해 검사(107)가 수행된다. 요구된 페이지의 비폴트 전용 비트가 세트되지 않으면, 요구된 페이지는 노말 페이지이고 비폴팅 및 노말 로드에 의한 액세스에 대해 안전하다. 그러나, 요구된 페이지의 비폴트 전용 비트가 세트되면, 요구된 페이지는 불법 페이지이고, 노말 (폴팅) 로드에 의한 액세스는 회복 불가능한 폴트를발생한다(104).
단계(108)에서, 가상 대 물리 어드레스 번역이 발생한다. 그후 로드는 단계(109)에서 실행되고 로드 명령이 종료(110)된다. 일단 종료(110)되면, 로드 명령 시작(100)은 다음 로드 명령을 위해 시작될 수 있다.
도 7에 점선으로 둘러싸인 모든 것은 하드웨어에서 실행되는 것이 바람직하다. 현재의 명령이 비폴팅 로드이고 번역 테이블 엔트리가 요구된 페이지에 대해 발견되면, 검사(106)는 번역(108) 및 로드 실행(109)이 되도록 한다. 단계(101)에서 TLB 히트가 있다면, 본 발명의 장점이 실현된다. 번역색인버퍼 히트시에, 모든 가능한 결과는 하드웨어 지원을 갖는다. 모든 노말 및 리폴팅 로드가 하드웨어내에서 신속하게 처리되고 매우 정확하게 실행된다. 가상 페이지 0x0 등의 선택된 페이지는 번역 테이블에서 맵된다. 일단 액세스되면, 가상 페이지 0x0에 대한 번역 테이블 엔트리는 번역색인 버퍼에 존재할 것이다. 따라서, 널 포인터가 비폴팅 로드에 의해 디레퍼런스 될 때마다, TLB 히트가 발생되고, 제로는 소프트웨어에 트랩되지 않고 즉시 복귀되어 요구된 페이지를 발견한다.
가상 페이지 0x0과 같이, 비폴팅 로드에 의해 액세스되는 페이지만이 번역 테이블에서 맵되기 때문에, 다른 불법 페이지는 번역 테이블로부터 존재하지 않게 된다. 이 경우에, TLB 미스에 의해 초기화된 운영체제 소프트웨어 트랩은 번역 테이블 엔트리가 요구된 가상 페이지에 대한 번역 테이블 엔트리가 존재하지 않는다는 것을 결국 발견하게 될 것이고, 제로로 복귀할 것이다.
본 발명의 제 2 실시예에 따르면, TLB 미스에 의해 불러내어진 운영체제 소프트웨어 루틴을 사용하는 것에 의해, 과거에 번역 테이블내에 번역된 경우가 없는 불법 가상 페이지에 대한 액세스를 비폴팅 로드가 검사한 것을 발견한 경우, 운영 체제는 이 가상 페이지에 대한 번역 테이블 엔트리를 형성한다. (제 7도의 단계(113)에서) 번역 테이블 엔트리는 상기 가상 페이지를 모두가 제로인 물리 페이지에 대해 매핑하고, 또한 이 가상 페이지에 대한 비폴팅 전용 비트를 세트한다. 그 결과, 그 후 실행되는 가상 페이지로부터의 비폴팅 로드는 TLB 비트를 형성하고, 또 TLB 미스 핸들러를 회피하는 것과, 상기 불법 가상 페이지에 대응하는 번역 테이블 엔트리를 탐색하기 위해 소프트웨어 번역 테이블 모두에 대해 실시되는 고비용 및 긴 시간을 요구하는 성공적이지 못한 소프트웨어 검색을 적어도 회피할 수 있다.
상기 제 2 실시예는 명령의 실행전에 프로그램 또는 컴파일러가 비폴팅 로드에 의해 액세스되는 불법 가상 어드레스를 예측하는 필요성을 배제한다. 불법 페이지가 비폴팅 로드에 의해 참조될 때마다, 운영체제는 적절한 번역 테이블 엔트리를 생성한다. 상기 페이지로부터의 후속 비폴팅 로드는 상기 번역색인버퍼를 히트하고, 따라서 소프트웨어 트랩을 회피할 수 있다.
본 발명은 적어도 2개의 종류 즉, 비폴팅 로드 및 노말 (폴팅) 로드를 처리하는 로드 명령 방법으로 설명된다. 일반적으로, 현대의 RISC(Reduced Instruction Set Computing ; 감소된 명령 세트 계산)프로세서에서, 로드 명령은 메인 메모리로부터 데이타를 검색하는 유일한 명령이다. 그러나, 이것은 본 발명이 임의의 프로세서에 부수하는 메인 메모리를 참조하는 다른 명령에 사용할 수 없는 것을 의미하지 않는다. 예를 들어, 임의의 프로세서는 내부 레지스터보다도 오히려 메인 메모리로부터 판독하는 1이상의 오퍼랜드를 사용하는 "가산(add)"명령을 지원할 수 있다. 이 경우에, 가산명령에 대응하는 오퍼랜드를 메인 메모리로부터 검색하는 것은 본 명세서에서 개시한 로드 명령에 상당한다. 따라서, CISC(Complex Instruction Set Computing; CISC) 프로세서는 노말 (폴팅) 가산 명령 뿐만 아니라 비폴팅 가산 명령을 갖는다. 본질적으로, 본 발명은 메인 메모리로부터 데이타검색을 형성하는 임의의 명령에 사용할 수 있다. 단순한 RISC프로세서의 경우에, 이러한 명령은 로드 명령만으로 이루어지는 경우가 있다. 그러나, 이러한 명령은 메인 메모리로부터 데이타를 검색하는 모든 명령을 일반적으로 포함한다.
본 발명의 방법 및 장치가 현재 바람직한 실시예의 관점에서 설명되었지만, 상기 기술에 숙련된 자는 본 발명이 첨부된 특허청구범위의 범주내에서 수정 및 변경을 실시할 수 있다는 것을 인지할 것이다. 따라서, 명세서 및 도면은 한정적이기 보다는 오히려 예시적인 것이다.

Claims (22)

  1. 프로세서에 의해 사용되는 메모리내의 번역 테이블 엔트리에 있어서,
    상기 번역 테이블 엔트리는,
    상기 번역 테이블 엔트리가 적용되는 가상 어드레스 공간을 특정하는 가상 어드레스부;
    상기 가상 어드레스 공간에 대응하는 물리 어드레스 공간을 특정하는 물리 어드레스부; 및
    비폴트 전용 비트를 포함하고,
    상기 비폴트 전용 비트는 비폴트 로드 명령 또는 노말 폴트 로드 명령이 상기 가상 어드레스 공간에 액세스하는지 여부를 나타내고,
    상기 비폴트 로드 명령의 실행은 폴트를 형성하지 않는 것을 특징으로 하는 번역 테이블 엔트리.
  2. 제 1 항에 있어서,
    상기 가상 어드레스부는 가상 페이지 번호인 것을 특징으로 하는 번역 테이블 엔트리.
  3. 제 1 항에 있어서,
    상기 물리 어드레스부는 물리 페이지 번호인 것을 특징으로 하는 번역 테이블 엔트리.
  4. 제 1 항에 따른 복수의 번역 테이블 엔트리를 갖는 것을 특징으로 하는 번역 테이블.
  5. 제 4 항에 있어서,
    세트되지 않은 비폴트 전용 비트를 갖는 번역 테이블 엔트리가 합법 가상 어드레스에 대응하는 것을 특징으로 하는 번역 테이블.
  6. 제 5 항에 있어서,
    세트되지 않은 비폴트 전용 비트를 갖는 번역 테이블 엔트리는 노말 메모리 액세스 및 비폴트 메모리 액세스에 의해 액세스 가능한 가상 어드레스에 대응하는 것을 특징으로 하는 번역 테이블.
  7. 번역 테이블 엔트리가 가상 소스 페이지 어드레스 마다 존재하는 로드 명령을 처리하는 방법에 있어서,
    상기 로드 명령이 비폴팅 로드 명령 또는 노말 폴팅 로드 명령인지 여부를 판단하는 단계;
    상기 로드 명령이 노말 폴팅 로드 명령이라는 판단에 응답하여,
    상기 번역 테이블 엔트리내의 비폴트 전용 비트가 세트되었는지 여부를 검사하는 단계;
    상기 검사 단계가 상기 비폴트 전용 비트가 세트되지 않은 것으로 판단하면, 상기 가상 소스 페이지 어드레스를 물리 소스 페이지 어드레스로 번역하는 단계; 및
    상기 검사 단계가 상기 비폴트 전용 비트가 세트된 것으로 판단하면, 폴트되는 단계를 포함하고,
    상기 비폴팅 로드 명령의 실행은 폴트를 형성하지 않는 것을 특징으로 하는 로드 명령 처리방법.
  8. 제 7 항에 있어서,
    상기 검사 단계가 상기 비폴트 전용 비트가 세트되지 않은 것으로 판단하면, 상기 번역 단계후에 상기 로드 명령을 실행하는 단계를 추가로 포함하는 것을 특징으로 하는 로드 명령 처리방법.
  9. 제 8 항에 있어서,
    상기 폴트 단계는 운영체제 소프트웨어 루틴에 트랩함으로써 이루어지는 것을 특징으로 하는 로드 명령 처리방법.
  10. 번역 테이블 엔트리가 가상 소스 페이지 어드레스 마다 존재하는 로드 명령을 처리하는 방법에 있어서,
    상기 로드 명령이 비폴팅 로드 명령인지를 검사하는 단계;
    상기 로드 명령이 비폴팅 로드 명령이면, 상기 가상 소스 페이지 어드레스를 물리 소스 페이지 어드레스로 번역하는 단계;
    상기 로드 명령이 비폴팅 로드 명령이 아니면, 상기 번역 테이블 엔트리내의 비폴트 전용 비트가 세트되는가를 검사하는 단계;
    상기 비폴트 전용 비트가 세트되지 않고 상기 로드 명령이 비폴팅 로드 명령이 아니면, 상기 가상 소스 페이지 어드레스를 물리 소스 페이지 어드레스로 번역하는 단계; 및
    상기 비폴트 전용 비트가 세트되고 상기 로드 명령이 비폴팅 로드 명령이 아니면, 폴트되는 단계를 포함하고,
    상기 비폴팅 로드 명령의 실행은 폴트를 형성하지 않는 것을 특징으로 하는 로드 명령 처리방법.
  11. 제 10 항에 있어서,
    상기 가상 소스 페이지 어드레스가 물리 소스 페이지 어드레스로 번역된 후, 상기 로드 명령을 실행하는 단계를 추가로 포함하는 것을 특징으로 하는 로드 명령 처리방법.
  12. 제 11 항에 있어서,
    상기 폴트 단계는 운영체제 소프트웨어 루틴에 트랩함으로써 이루어지는 것을 특징으로 하는 로드 명령 처리방법.
  13. 번역 테이블 엔트리가 가상 소스 페이지 어드레스 마다 존재하는 로드 명령을 처리하기 위한 장치에 있어서,
    상기 로드 명령이 비폴팅 로드 명령인지 또는 노말 폴팅 로드 명령인지를 판단하는 로드형 판단회로;
    상기 로드 명령이 노말 폴팅 로드 명령인 경우에 응답하여, 상기 번역 테이블 엔트리내의 비폴트 전용 비트가 세트되는지를 검사하는 검사 회로;
    상기 검사 회로가 상기 비폴트 전용 비트가 세트되지 않은 것으로 판단하면, 상기 가상 소스 페이지 어드레스를 물리 소스 페이지 어드레스로 번역하는 번역 회로; 및
    상기 검사 회로가 상기 비폴트 전용 비트가 세트된 것으로 판단하면, 폴트를 생성하는 폴트 유니트를 포함하고,
    상기 비폴팅 로드 명령의 실행은 폴트를 형성하지 않는 것을 특징으로 하는 로드 명령 처리장치.
  14. 제 13 항에 있어서,
    상기 검사 회로가 상기 비폴트 전용 비트가 세트되지 않은 것으로 판단하면, 상기 번역 회로가 상기 가상 소스 페이지 어드레스를 물리 소스 페이지 어드레스로 번역한 후에 상기 로드 명령을 실행하는 실행 유니트를 추가로 구비하는 것을 특징으로 하는 로드 명령 처리장치.
  15. 제 14 항에 있어서,
    상기 폴트 유니트는 운영체제 소프트웨어 루틴에 트랩을 형성하는 것을 특징으로 하는 로드 명령 처리장치.
  16. 번역 테이블 엔트리가 가상 소스 페이지 어드레스 마다 존재하는 로드 명령을 처리하기 위한 장치에 있어서,
    상기 로드 명령이 비폴팅 로드 명령인지를 검사하는 제 1 검사 회로;
    상기 로드 명령이 비폴팅 로드 명령이거나, 또는 상기 비폴트 전용 비트가 세트되지 않고 상기 로드 명령이 비폴팅 로드 명령이 아니면, 상기 가상 소스 페이지 어드레스를 물리 소스 페이지 어드레스로 번역하는 번역 회로;
    상기 로드 명령이 비폴팅 로드 명령이 아니면, 상기 번역 테이블 엔트리내의 비폴트 전용 비트가 세트되는지를 검사하는 제 2 검사 회로; 및
    상기 비폴트 전용 비트가 세트되고 상기 로드 명령이 비폴팅 로드 명령이 아니면, 폴트를 형성하는 폴트 유니트를 포함하고,
    상기 비폴팅 로드 명령의 실행은 폴트를 형성하지 않는 것을 특징으로 하는 로드 명령 처리장치.
  17. 제 16 항에 있어서,
    상기 가상 소스 페이지 어드레스가 물리 소스 페이지 어드레스로 번역된 후에 상기 로드 명령을 실행하는 실행 유니트를 추가로 구비하는 것을 특징으로 하는 로드 명령 처리장치.
  18. 제 17 항에 있어서,
    상기 폴트 유니트는 운영체제 소프트웨어 루틴에 트랩을 형성하는 것을 특징으로 하는 로드 명령 처리장치.
  19. 로드 명령의 처리중에 번역 테이블을 유지하는 방법에 있어서,
    상기 로드 명령에 의해 요구된 가상 어드레스가 불법인지 여부를 검사하는 단계;
    상기 로드 명령이 비폴팅 로드 명령인지 여부를 검사하는 단계; 및
    상기 가상 어드레스가 불법이고, 상기 로드 명령이 비폴팅 로드 명령이면, 세트된 비폴트 전용 비트를 갖는 상기 가상 어드레스에 대한 번역 테이블 엔트리를 생성하는 단계를 포함하고,
    상기 비폴팅 로드 명령의 실행은 폴트를 형성하지 않는 것을 특징으로 하는 번역 테이블 유지 방법.
  20. 제 19 항에 있어서,
    상기 번역 테이블 엔트리는 상기 가상 어드레스가 제로(0)를 포함하는 물리어드레스로 맵되도록 형성되는 것을 특징으로 하는 번역 테이블 유지 방법.
  21. 제 20 항에 있어서,
    번역색인버퍼에 상기 번역 테이블 엔트리를 충전하는 단계를 추가로 포함하는 것을 특징으로 하는 번역 테이블 유지 방법.
  22. 제 19 항에 있어서,
    상기 번역 테이블 엔트리는 가상 어드레스의 페이지에 적용되는 것을 특징으로 하는 번역 테이블 유지 방법.
KR1019960005517A 1995-02-27 1996-02-27 비폴팅로드명령실행방법및그장치 KR100421749B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/395,579 1995-02-27
US08/395,579 US5842225A (en) 1995-02-27 1995-02-27 Method and apparatus for implementing non-faulting load instruction

Publications (2)

Publication Number Publication Date
KR960032184A KR960032184A (ko) 1996-09-17
KR100421749B1 true KR100421749B1 (ko) 2004-05-17

Family

ID=23563628

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960005517A KR100421749B1 (ko) 1995-02-27 1996-02-27 비폴팅로드명령실행방법및그장치

Country Status (5)

Country Link
US (1) US5842225A (ko)
EP (1) EP0729103B1 (ko)
JP (1) JP3745819B2 (ko)
KR (1) KR100421749B1 (ko)
DE (1) DE69634315T2 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6397300B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation High performance store instruction management via imprecise local cache update mechanism
US6434667B1 (en) 1999-06-25 2002-08-13 International Business Machines Corporation Layered local cache with imprecise reload mechanism
US6418513B1 (en) 1999-06-25 2002-07-09 International Business Machines Corporation Queue-less and state-less layered local data cache mechanism
US6405285B1 (en) 1999-06-25 2002-06-11 International Business Machines Corporation Layered local cache mechanism with split register load bus and cache load bus
US6463507B1 (en) 1999-06-25 2002-10-08 International Business Machines Corporation Layered local cache with lower level cache updating upper and lower level cache directories
US6446166B1 (en) 1999-06-25 2002-09-03 International Business Machines Corporation Method for upper level cache victim selection management by a lower level cache
US6385694B1 (en) 1999-06-25 2002-05-07 International Business Machines Corporation High performance load instruction management via system bus with explicit register load and/or cache reload protocols
US6684254B1 (en) 2000-05-31 2004-01-27 International Business Machines Corporation Hyperlink filter for “pirated” and “disputed” copyright material on the internet in a method, system and program
US6785796B1 (en) 2000-08-01 2004-08-31 Sun Microsystems, Inc. Method and apparatus for software prefetching using non-faulting loads
US7689782B1 (en) * 2003-08-04 2010-03-30 Azul Systems, Inc. Processor instruction used to determine whether to perform a memory-related trap
US8108628B2 (en) * 2003-08-04 2012-01-31 Azul Systems, Inc. Processor instruction used to perform a matrix test to generate a memory-related trap
US7206916B2 (en) * 2004-03-08 2007-04-17 Sun Microsystems, Inc. Partial address compares stored in translation lookaside buffer
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US7366829B1 (en) 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US7543132B1 (en) 2004-06-30 2009-06-02 Sun Microsystems, Inc. Optimizing hardware TLB reload performance in a highly-threaded processor with multiple page sizes
US7681188B1 (en) * 2005-04-29 2010-03-16 Sun Microsystems, Inc. Locked prefetch scheduling in general cyclic regions
US7734842B2 (en) * 2006-03-28 2010-06-08 International Business Machines Corporation Computer-implemented method, apparatus, and computer program product for managing DMA write page faults using a pool of substitute pages
US8438547B2 (en) * 2009-05-05 2013-05-07 Freescale Semiconductor, Inc. Address translation trace message generation for debug
US8589738B2 (en) * 2009-05-05 2013-11-19 Freescale Semiconductor, Inc. Program trace message generation for page crossing events for debug
GB2479780B (en) * 2010-04-22 2018-04-04 Advanced Risc Mach Ltd Preload instruction control
US9223663B2 (en) * 2012-06-22 2015-12-29 International Business Machines Corporation Resolving memory faults with reduced processing impact

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4410941A (en) * 1980-12-29 1983-10-18 Wang Laboratories, Inc. Computer having an indexed local ram to store previously translated virtual addresses
US5237668A (en) * 1989-10-20 1993-08-17 International Business Machines Corporation Process using virtual addressing in a non-privileged instruction to control the copying of a page of data in or between multiple media
CA2029628A1 (en) * 1989-11-13 1991-05-14 Anantakotirajv Vagesna Translation look aside buffer with parallel exception checking and update bypass
US5530839A (en) * 1991-09-05 1996-06-25 Nec Corporation Apparatus for checking access rights
US5479628A (en) * 1993-10-12 1995-12-26 Wang Laboratories, Inc. Virtual address translation hardware assist circuit and method
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

Also Published As

Publication number Publication date
EP0729103A3 (en) 1998-12-23
US5842225A (en) 1998-11-24
EP0729103A2 (en) 1996-08-28
EP0729103B1 (en) 2005-02-09
KR960032184A (ko) 1996-09-17
JP3745819B2 (ja) 2006-02-15
DE69634315T2 (de) 2006-01-19
DE69634315D1 (de) 2005-03-17
JPH08292886A (ja) 1996-11-05

Similar Documents

Publication Publication Date Title
KR100421749B1 (ko) 비폴팅로드명령실행방법및그장치
US8479050B2 (en) Identifying access states for variables
US7269718B2 (en) Method and apparatus for verifying data types to be used for instructions and casting data types if needed
US7647457B2 (en) Method and apparatus for hardware awareness of data types
US6549985B1 (en) Method and apparatus for resolving additional load misses and page table walks under orthogonal stalls in a single pipeline processor
US7711988B2 (en) Architecture support system and method for memory monitoring
JP3533294B2 (ja) プロセッサ・システム
US10169039B2 (en) Computer processor that implements pre-translation of virtual addresses
US8667258B2 (en) High performance cache translation look-aside buffer (TLB) lookups using multiple page size prediction
JP2001507151A (ja) 先進のマイクロプロセッサのためのゲート格納バッファ
JP2001504957A (ja) 先進のプロセッサにおけるメモリ・データ・エリアシング方法および装置
JP2003514299A (ja) インデックスおよび任意の様式一致に基づいてデータを転送するストアバッファ
JPH10198563A (ja) マイクロプロセッサ内の動的にロード可能なパターン履歴表
US11221951B1 (en) Skipping tag check for tag-checked load operation
JP4220473B2 (ja) 制御スペキュレーションの性能を向上するメカニズム
US11138128B2 (en) Controlling guard tag checking in memory accesses
US6382846B1 (en) Intermediate instruction execution processor which resolves symbolic references without modifying intermediate instruction code
US7328374B2 (en) Method and apparatus for implementing assertions in hardware
US8181068B2 (en) Apparatus for and method of life-time test coverage for executable code
JP4137735B2 (ja) 動的遅延演算情報を使用して制御投機ロードの即時遅延を制御する方法およびシステム
US20050251706A1 (en) Method and apparatus for data-aware hardware operations
JP2001519955A (ja) 先進のプロセッサのための変換メモリ保護装置
CN111651379A (zh) Dax设备地址转换缓存方法及系统

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: 20130201

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140204

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150130

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20160127

Year of fee payment: 13

EXPY Expiration of term