KR20130098303A - 정렬 제어 - Google Patents

정렬 제어 Download PDF

Info

Publication number
KR20130098303A
KR20130098303A KR1020137003613A KR20137003613A KR20130098303A KR 20130098303 A KR20130098303 A KR 20130098303A KR 1020137003613 A KR1020137003613 A KR 1020137003613A KR 20137003613 A KR20137003613 A KR 20137003613A KR 20130098303 A KR20130098303 A KR 20130098303A
Authority
KR
South Korea
Prior art keywords
stack
alignment
stack pointer
memory
address
Prior art date
Application number
KR1020137003613A
Other languages
English (en)
Other versions
KR101924821B1 (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 KR20130098303A publication Critical patent/KR20130098303A/ko
Application granted granted Critical
Publication of KR101924821B1 publication Critical patent/KR101924821B1/ko

Links

Images

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
    • 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/04Addressing variable-length words or parts of words
    • 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
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

데이터 처리 시스템(2)은 스택 데이터 저장소(44, 46, 48, 50)에 대한 스택 액세스 연산에서 사용되는 스택 포인터 값을 기억하는 스택 포인터 레지스터(26, 28, 30, 32)를 구비한다. 선택적으로 디스에이블되는 스택 정렬 검사회로(36)가 설치되어 스택 메모리 액세스와 관련된 스택 포인터 값의 메모리 어드레스 정렬을 검사한다. 스택 정렬 검사회로의 동작은 모든 메모리 액세스에 대해 행해지는 추가적인 다른 정렬 검사와 무관하다. 따라서, 범용 정렬 검사회로(38)가 설치되어 임의의 메모리 액세스에 대해 독립하여 선택적으로 디스에이블된다.

Description

정렬 제어{ALIGNMENT CONTROL}
본 발명은, 데이터 처리 시스템 분야에 관한 것이다. 특히, 본 발명은, 데이터 처리 시스템 내부에서 행해진 메모리 액세스의 액세스 정렬(alignment) 제어에 관한 것이다.
메모리 액세스 정렬을 확인하는 메카니즘을 데이터 처리 시스템에 설치하는 것이 알려져 있다. 메모리 액세스들이 제약을 받지 않아 모든 크기를 갖는 메모리 액세스에 의해 메모리 내부의 개별 바이트의 어드레스가 지정되거나, 또는 메모리 액세스들이 정렬 제약을 받아, 메모리 내부에서, 예를 들어, 절반 워드(half-word), 워드, 이중 워드(double-word) 등의 경계를 갖고 정렬된 메모리 액세스만 행해질 수도 있다. 일반적으로 말하면, 메모리 액세스 정렬 요건의 실시는 고속 메모리 액세스의 제공에 있어서 도움이 되는데, 예를 들어, 데이터 버스 폭과 정렬되지 않은 액세스들을 위한 공간을 제공할 필요가 없이 고속 메모리 액세스에 폭이 넓은 데이터 버스가 사용될 수도 있다. 액세스되고 있는 데이터 요소들 그 자체가 강요된 정렬 제약을 사용하여 정렬된 경계들을 반드시 갖는 것은 아닐지도 모르는 묶음 데이터 구조(packed data structures)를 취급할 때, 정렬된 메모리 액세스만을 위한 요건은 문제를 일으킨다. 일부 상황에서는, 스택(stack) 데이터 저장소(store)에 대한 일부의 판독-수정-기록 명령들과 같이, 실행되고 있는 명령들이 데이터 액세스의 정렬을 필요로 할 수도 있다. 일부의 응용 이진 인터페이스들은 액세스 정렬을 명시한다.
일면에 따르면, 본 발명은,
프로그램 명령들에 응답하여 데이터 처리 연산을 수행하는 처리회로와,
상기 처리회로에 접속되고, 스택 데이터 저장소의 메모리 내부의 어드레스를 표시하는 스택 포인트 값을 기억하도록 구성된 스택 포인터 레지스터와,
상기 처리회로 및 상기 스택 포인터 레지스터에 접속되고, 상기 스택 포인터 값에 의해 명시된 상기 스택 데이터 저장소의 어드레스에 대한 스택 메모리 액세스를 명시하는 프로그램 명령에 응답하여, 상기 스택 포인터 값이 소정의 스택 정렬 조건과 일치하는지 여부를 검출하도록 구성된 스택 정렬 검사회로와,
상기 스택 정렬 검사회로에 접속되고, 메모리 액세스에 대해 행해진 추가적인 정렬 검사에 무관하게, 스택 구성 파라미터에 응답하여 상기 스택 정렬 검사회로를 선택적으로 디스에이블(disable)시키는 정렬 검사 제어회로를 구비한 데이터 처리장치를 제공한다.
본 발명은, 스택 메모리 액세스를 위해 적절할지도 모르는 정렬 제약이 다른 메모리 액세스들, 예를 들면, 스택 데이터 저장소를 포함하지 않는 메모리 액세스들을 위해서는 적절하지 않을 수도 있다는 사실을 인식하고 있다. 일례로서, 스택 데이터 저장소 내부에 기억되지 않은 데이터 구조는 정렬 제약이 문제가 되는 묶음 데이터 구조일 수도 있는 한편, 스택 데이터 저장소에 대해 정렬 제약을 적용하는 것은 스택 포인터 또는 스택 데이터 저장소의 손상을 확인하는데 도움이 된다. 본 발명은, 이와 같은 상황을 인식하고, 스택 메모리 액세스들의 정렬을 검사하는 스택 정렬 검사회로의 메카니즘을 제공하며, 시스템 내에서 행해진 추가적인 정렬 검사, 예를 들어 스택 메모리와 스택 메모리가 아닌 메모리 모두에 대한 모든 메모리 액세스들에 대해 행해진 정렬 검사에 무관하게 이 스택 정렬 검사회로를 선택적으로 디스에이블시킨다. 따라서, 독립적으로 제어된 메모리 액세스들의 추가적인 검사와 결합하여, 스택 정렬 검사가 행해지거나 행해지지 않을 수 있다. 따라서, 스택 데이터 저장소에 대해서는 정렬이 실시되는 한편, 일반적인 메모리 액세스에 대해서는 정렬이 실시되지 않는다.
이때, 추가적인 정렬 검사는, 스택 포인터를 사용하지 않는 정렬 검사 메모리 액세스와 같이 다양한 다른 형태를 취할 수도 있다는 것은 자명하다. 그러나, 유용한 배치는, 추가적인 정렬 검사가 모든 메모리 액세스들(예를 들면, 스택 포인터를 사용하는 메모리 액세스와 스택 포인터를 사용하지 않는 메모리 액세스 모두)에 대해 행해지는 정렬 검사인 것이다.
이때, 스택 메모리 액세스는, 스택 어드레스의 톱(top)에 대해 행해지고 스택 포인터 값의 대응하는 갱신이 행해지는 판독(팝(pop)) 액세스이거나 기록(푸시) 액세스이어도 된다는 것은 자명하다.
선택적으로 디스에이블되는 스택 정렬 검사회로 이외에, 일부 실시예들은, 임의의 메모리 액세스가 소정의 정렬 조건을 만족시키는지 여부를 검출하는 범용(general purpose) 정렬 검사회로를 더 구비하여도 된다. 따라서, 스택 정렬 검사회로를 단독으로 사용하는 것이 가능하지만, 이와 같은 스택 정렬 검사회로는 범용 정렬 검사회로와 유용하게 결합된다. 범용 정렬 검사회로도 정렬 검사 제어회로에 의해 제어되어, 선택적으로 디스에이블될 수도 있다.
부여된 정렬 조건(들)은 변동할 수 있다. 소정의 스택 정렬 조건이 제약을 받지 않을 수도 있는데, 이것은 스택 정렬 검사회로의 디스에이블링(disabling)과 동등하다. 그러나, N이 비제로(non-zero) 정수값(예를 들면, 64 비트 및 128비트 정렬에 해당하는 3 또는 4 중에서 한개이다)일 때, 스택 포인터 값이 2N의 정수배가 되는 것이 정렬 조건인 경우, 스택 정렬 검사회로가 더 유용하다. N의 값과 이에 따른 정렬 조건은 (소프트웨어 제어 등의) 사용자 제어하에서 설정되어도 된다.
본 발명은 한 개의 스택 포인터를 포함하는 실시예들에서 사용되어도 되지만, 각각의 스택 포인터 값을 각각 기억하고, 해당 스택 포인터에 대해 스택 정렬 검사가 디스에이블되는지 인에이블되는지 판정하는 각각의 스택 구성 파라미터를 사용하여 제어를 겪는 복수의 스택 포인터를 포함하는 실시예들에서도 본 발명이 적용가능하다. 이들 다양한 스택 포인터들은 시스템 내부의 다양한 예외 레벨들(특권 레벨들)과 관련되어도 된다.
또 다른 일면에 따르면, 본 발명은,
프로그램 명령들에 응답하여 데이터 처리 연산을 수행하는 처리수단과,
스택 포인터 저장소의 메모리 내부의 어드레스를 표시하는 스택 포인터 값을 기억하고, 상기 처리수단에 접속되는 스택 포인터수단과,
정렬을 검사하고, 상기 처리수단 및 상기 스택 포인터수단에 접속되고, 상기 스택 포인터 값에 의해 명시된 상기 스택 데이터 저장소의 어드레스에 대한 메모리 액세스를 명시하는 프로그램 명령에 응답하여 상기 스택 포인터 값이 소정의 스택 정렬 조건과 일치하는지 여부를 검출하도록 구성된 스택 정렬 검사수단과,
정렬 검사를 제어하고, 상기 스택 정렬 검사수단에 접속되고, 메모리 액세스에 대해 행해진 추가적인 정렬 검사에 무관하게, 스택 구성 파라미터에 응답하여 상기 스택 정렬 검사수단을 선택적으로 디스에이블시키는 정렬 검사 제어수단을 구비한 데이터 처리장치를 제공한다.
본 발명의 또 다른 일면에 따르면, 본 발명은,
프로그램 명령들에 응답하여 데이터 처리 연산을 수행하는 단계와,
스택 데이터 저장소의 메모리 내부의 어드레스를 표시하는 스택 포인터 값을 스택 포인터 레지스터 내부에 기억하는 단계와,
상기 스택 포인터 값에 의해 명시된 상기 스택 데이터 저장소의 어드레스에 대한 메모리 액세스를 명시하는 프로그램 명령에 응답하여, 상기 스택 포인터 값이 소정의 스택 정렬 조건과 일치하는지 여부를 검출하는 단계와,
스택 구성 파라미터에 응답하여, 상기 스택 포인터 값을 사용하지 않는 메모리 액세스들에 대해 행해진 정렬 검사에 무관하게, 상기 검출단계를 선택적으로 생략하는 단계를 포함하는 데이터 처리방법을 제공한다.
본 발명의 실시예들은, 전술한 장치 및 방법과 일치하는 실행 환경을 제공하기 위해 적절한 소프트웨어를 실행하는 범용 컴퓨터로 이루어진 가상머신의 형태로 제공되어도 된다.
이하, 첨부도면을 참조하여 본 발명의 실시예를 상세히 설명한다.
도 1은 정렬 검사회로 및 정렬 제어회로를 포함하는 데이터 처리장치를 개략적으로 예시한 것이고,
도 2는 선택적으로 디스에이블된 정렬 제어를 겪는 다수의 스택 데이터 저장소를 포함하는 메모리를 개략적으로 예시한 것이며,
도 3은 스택 메모리 액세스와 범용 액세스에 대한 정렬 제어방법을 개략적으로 나타낸 흐름도이고,
도 4는 전술한 기술의 가상머신 구현을 개략적으로 나타낸 도면이다.
도 1은, 메모리 관리 유닛(6)을 거쳐 캐시 메모리(8)에 접속된 프로세서 코어(4)를 구비한 데이터 처리장치(2)를 개략적으로 예시한 것이다. 도 1에는 메인 메모리를 도시하지 않았지만, 메인 메모리는 캐시 메모리(8)에 접속되어 있다. 구성 데이터 저장소(10)는, 소프트웨어 제어하에서 기록가능하며 데이터 처리장치(2)에 대한 다양한 구성 파라미터들을 제어하는 구성 데이터를 기억한다. 이와 같은 구성 데이터 저장소는 코프로세서(예를 들면, CP15)의 형태로 제공되어도 되고, 이 코프로세서에 대해 기록을 행하여 구성 파라미터를 설정하고 판독을 행하여 구성 파라미터들을 판독한다.
프로세서 코어(4)는, 범용 레지스터 뱅크(12), 승산기(14), 시프터(16) 및 가산기(18)로 이루어진 데이터 경로를 구비한다. 데이터 경로 12, 14, 16, 18은 디코더 회로(20)에 의해 발생된 제어신호에 의해 제어되고, 이 디코더 회로는, 명령 파이프라인(22)에서 수신된 프로그램 명령들을 디코딩하고, 데이터 경로 12, 14, 16, 18을 구성하여 필요한 데이터 처리 연산을 수행하며 프로세서 코어(4)의 다른 부분을 제어하여 해당 명령을 처리하는데 필요한 기능을 행하는 제어신호를 발생한다. 이때, 프로세서 코어(4)는 보통 다수의 추가적인 회로 성분들을 구비하지만, 간략을 기하기 위해 도 1에서는 이들 성분들을 생략하였다.
프로세서 코어(4)는 복수의 예외 레벨에서 동작할 수 있다. 이들 예외 레벨 각각은 예외 레벨 모드값에 대응하고, 모드 레지스터(24)는 프로세서 코어(4)의 현재의 예외 레벨 모드를 표시하는 값을 기억한다. 예외 레벨 모드들 각각은, 특정한 예외 레벨 코드에서 동작할 때 스택 액세스 명령에 의해 지시된 스택 메모리 액세스를 위해 사용되는 각각의 스택 포인터 값을 기억하는 관련된 스택 포인터 레지스터 26, 28, 30, 32를 갖는다. 따라서, 프로세서 코어(4)가 예외 레벨 2(EL2)에 있을 때 실행되는 스택 푸시 또는 스택 팝 명령은 스택 포인터 레지스터 30 내부에 기억된 스택 포인터 값을 사용하게 된다.
프로세서 코어(4)는 캐시 메모리(8)를 거쳐 메모리에서 판독된 데이터 및 명령을 사용한다. 캐시 메모리(8) 내부에 데이터 또는 명령의 항목이 존재하지 않으면, 메인 메모리에 대한 액세스를 행하여 그 데이터 항목 또는 명령을 페치한다. 다수의 가능한 캐시 및 메모리 아키텍처가 가능하며, 도 1에는 이와 같은 캐시 또는 메모리 아키텍처의 한가지 예만을 나타낸 것이다.
프로세서 코어(4)는 메모리 관리 유닛(6)에 의해 물리 어드레스로 변환되는 가상 어드레스를 발생한다. 메모리 관리 유닛(6)은 보통 페이지 테이블 데이터를 사용하여 이와 같은 어드레스 변환을 행한다. 메모리 관리 유닛(6)은, 특정한 메모리 액세스가 허가되어야 하는지 아닌지를 판정하기 위한 액세스 허가 데이터도 기억한다. 메모리 관리 유닛은, 스택 정렬 검사회로(36) 및 범용 정렬 검사회로(38)를 포함하는 정렬 검사회로(34)를 구비한다. 스택 정렬 검사회로(36)는, 스택 푸시 명령이나 스택 팝 명령 등의 스택 메모리 액세스의 정렬을 검사하는 역할을 한다. 범용 정렬 검사회로(38)는, 범용 로드(load) 또는 기억 명령 등의 모든 메모리 액세스를 검사하는 역할을 한다. 정렬 검사회로(34)는, 서로 독립적으로 스택 정렬 검사회로(36)와 범용 정렬 검사회로(38)를 선택적으로 인에이블 또는 디스에이블시키는 정렬 검사 제어회로(40)를 구비한다. 따라서, 스택 정렬 검사회로(36)가 디스에이블되거나 인에이블될 수 있으며, 이와 독립적으로 범용 정렬 검사회로(38)가 디스에이블되거나 인이에블될 수 있다. 따라서, 스택 정렬 검사회로(36)와 범용 정렬 검사회로(38)는 결합하여 검사를 행하지 않거나, 스택 데이터 저장소에 대한 액세스만을 검사하거나, 모든 메모리 액세스를 검사할 수 있다.
정렬 검사 제어회로(40)는 구성 데이터 저장소(10) 내부에 기억된 구성 파라미터들에 응답한다. 스택 포인터 레지스터들 26, 28, 30, 32 각각에 대해, 해당 스택 포인터 레지스터 26, 28, 30, 32에 대한 대응하는 예외 레벨에서 일어나는 스택 액세스들에 대해 정렬 검사가 디스에이블되는지 아닌지를 표시하는 스택 구성 파라미터가 기억되어 있다. 따라서, 예외 레벨 EL0 및 EL2에 대응하는 스택 포인터 값들에 대해 스택 정렬 검사가 행해지는 반면에, 예외 레벨 EL1 및 EL3에 대해서는 스택 정렬 검사가 디스에이블되어도 된다. 구성 데이터 저장소(10)는, 일치를 검사할 때의 대상이 되는 정렬 크기를 표시하는 데이터, 예를 들어, 23 또는 24의 배수인 메모리 어드레스들에 대응하는 64 비트 메모리 어드레스 경계 또는 128 비트 메모리 어드레스 경계에 대해 정렬이 검사되고 있는지를, 행해진 각각의 정렬 검사에 대해 더 포함한다.
구성 데이터 저장소(10)는, 범용 저열 검사회로(38)가 디스에이블되는지 인에이블되는지 제어하는 범용 구성 파라미터를 더 포함한다. 이와 같은 범용 정렬 검사를 실시된 정렬의 크기도 구성 파라미터로서 명시된다. 구성 데이터 저장소(10) 내부에 기억된 구성 파라미터는 소프트웨어 제어하에서 기록되어도 된다. 또한, 이들 구성 파라미터는 하드웨어 제어하에서 설정되거나 하드웨어에 미리 프로그래밍되어도 된다.
도 2는 다양한 예외 레벨에 대응하는 4개의 스택 데이터 저장소(44, 46, 48, 50)를 포함하는 메모리(42)를 개략적으로 예시한 것이다. 스택 포인터 레지스터들 26, 28, 30, 32에 기억된 스택 포인터 값들은, 푸시 연산 또는 팝 연산 등의 스택 메모리 액세스가 행해지는 이들 스택 데이터 저장소 44, 46, 48, 50의 각각에 대한 탑 어드레스 값들을 표시한다.
일례로서, 스택 데이터 저장소 46과 관련된 정렬 조건을 도 2에 나타내었다. 정렬이 실시되고 있으면, 2N의 정수배인 어드레스들만이 유효한 스택 포인터 값들이 된다. 스택 포인터 값이 이들 허용된 값들과 다른 것으로 밝혀지면, 예외가 기동된다. 이와 같은 예외의 기동의 결과는 구현에 따라 변동할 수 있다. 이와 같은 예외는, 해당 시스템의 속성에 의존하여 소프트웨어 응답(예외 처리 코드의 실행) 또는 하드웨어 응답(강제 리셋)을 기동할 수도 있다.
도시된 예에서는, N의 값이, 스택 정렬 조건으로서 실시되고 있는 64 비트 정렬 또는 스택 정렬 조건으로서 실시되고 있는 128 비트 정렬에 각각 대응하는 3 또는 4일 수 있다. 또한, 도 2에는, 스택 정렬 검사회로(38)가 디스에이블되면, 모든 어드레스가 스택 포인터 값으로 사용되어도 되고, 스택 데이터 저장소 46의 탑 어드레스가 메모리 어드레스 공간 내부의 임의의 위치에 있을 수 있다(모든 메모리 액세스시에 범용 정렬 검사회로(38)에 의해 별개로 실시된 정렬 제약을 겪는다).
도 3은 정렬 검사회로(34)의 동작을 개략적으로 나타낸 흐름도이다. 스텝 52에서는, 메모리 액세스가 수신될 때까지 처리를 대기한다. 스텝 54는, 메모리 액세스 어드레스가 스택 포인터 레지스터에서 온 것인지 여부를 판정한다. 메모리 액세스가 스택 메모리 액세스이면, 즉 스택 포인터 레지스터에어 온 어드레스를 가지면, 스텝 56으로 처리를 진행하여, 프로세서 코어(4)가 실행되고 있는 현재의 예외 레벨(이것은 예외 레벨 모드 레지스터(24)를 사용하여 판정되어도 된다)에 대해 스택 정렬 검사가 디스에이블되었는지 여부를 판정한다. 스택 정렬 검사가 인에이블되면, 스텝 58은, 해당 액세스가 현재 예외 레벨에 대한 소정의 정렬 조건과 일치하는지 여부를 판정한다. 소정의 정렬 조건이 만족되면(즉, 액세스가 적절히 정렬되면), 스텝 60으로 처리를 진행하여, 액세스가 허용된다. 액세스가 소정의 정렬 조건을 만족하지 않으면(즉, 액세스가 오정렬되면), 스텝 62로 처리를 진행하여, 스택 미정렬(unaligned) 액세스 응답이 기동된다. 스텝 56에서의 판정 결과 스택 정렬 검사가 디스에이블되면, 스텝 64로 처리를 진행하여, 범용 정렬 검사가 디스에이블되었는지에 대해 판정이 내려진다.
스텝 54에서의 판정 결과 메모리 액세스가 스택 메모리 액세스가 아닌 경우에는(즉, 스택 포인터 레지스터에서 판독된 어드레스의 사용을 포함하지 않는 경우에는), 스텝 64로 처리를 진행하여, 범용 정렬 검사가 현재 디스에이블되었는지에 대해 판정이 행해진다. 범용 정렬 검사가 현재 디스에이블되면, 스텝 60으로 처리를 진행하여 액세스가 허용된다. 스텝 64에서의 판정 결과 범용 정렬 검사가 디스에이블되지 않으면, 스텝 66으로 처리를 진행하여, 액세스가 범용 액세스에 대한 소정의 정렬 조건(즉, 범용 정렬 조건)과 일치하는지 여부에 대해 판정이 행해진다. 액세스가 이와 같은 범용 정렬 조건과 일치하면(즉, 정렬되면), 스텝 60으로 처리를 진행하여 액세스가 허용된다. 액세스가 범용 정렬 조건과 일치하지 않으면(즉, 오정렬되면), 스텝 68로 처리를 진행하여, 범용 미정렬 액세스 응답이 기동된다.
도 4는 사용될 수 있는 가상머신 구현예를 나타낸 것이다. 전술한 실시예는 해당 기술을 지원하는 특정한 프로세싱 하드웨어를 작동하는 장치 및 방법 면에서 본 발명을 구현하지만, 하드웨어 장치들의 소위 가상머신 구현을 제공하는 것도 가능하다. 이 가상머신 구현은, 가상머신 프로그램(510)을 지원하는 호스트 운영체계(520)를 실행하는 호스트 프로세서(530) 상에서 실행된다. 보통, 적당한 속도로 실행되는 가상머신 구현을 제공하기 위해서는 크고 강력한 프로세서가 필요하지만, 호환성이나 재사용 이유로 인해 다른 프로세서에 네이티브한 코드를 실행할 필요가 있을 때 등과 같은 특정한 상황에서는 이와 같은 접근방식이 정당화될 수도 있다. 가상머신 프로그램(510)은, 이 가상머신 프로그램(510)에 의해 모델링되고 있는 장치인 실제 하드웨어에 의해 제공될 애플리케이션 프로그램 인터페이스와 동일한 애플리케이션 프로그램(500)에 대한 애플리케이션 프로그램 인터페이스를 제공한다. 따라서, 전술한 메모리 액세스 제어를 포함하는 프로그램 명령들이 가상머신 프로그램(510)을 사용하는 애플리케이션 프로그램(500) 내부에서 실행되어, 가상머신 하드웨어와 가상머신 프로그램과의 상호작용을 모델링하여도 된다.

Claims (20)

  1. 프로그램 명령들에 응답하여 데이터 처리 연산을 수행하는 처리회로와,
    상기 처리회로에 접속되고, 스택 데이터 저장소의 메모리 내부의 어드레스를 표시하는 스택 포인트 값을 기억하도록 구성된 스택 포인터 레지스터와,
    상기 처리회로 및 상기 스택 포인터 레지스터에 접속되고, 상기 스택 포인터 값에 의해 명시된 상기 스택 데이터 저장소의 어드레스에 대한 스택 메모리 액세스를 명시하는 프로그램 명령에 응답하여, 상기 스택 포인터 값이 소정의 스택 정렬 조건과 일치하는지 여부를 검출하도록 구성된 스택 정렬 검사회로와,
    상기 스택 정렬 검사회로에 접속되고, 메모리 액세스에 대해 행해진 추가적인 정렬 검사에 무관하게, 스택 구성 파라미터에 응답하여 상기 스택 정렬 검사회로를 선택적으로 디스에이블시키는 정렬 검사 제어회로를 구비한 데이터 처리장치.
  2. 제 1항에 있어서,
    상기 추가적인 정렬 검사는 모든 메모리 액세스들에 대한 정렬 검사를 포함하는 데이터 처리장치.
  3. 제 1항에 있어서,
    상기 스택 메모리 액세스는,
    (i) 상기 스택 포인터 값에 의해 명시된 스택 어드레스의 탑에서 시작하고 스택 어드레스의 새로운 탑을 표시하도록 상기 스택 포인터 값을 갱신하면서 상기 스택 메모리에 1개 이상의 데이터 값을 기억하는 스택 푸시 연산과,
    (ii) 상기 스택 포인터 값에 의해 명시된 스택 어드레스의 탑에서 시작하고 스택 어드레스의 새로운 탑을 표시하도록 상기 스택 포인터 값을 갱신하면서 상기 스택 메모리에서 1개 이상의 데이터 값을 판독하는 스택 팝 연산
    중에서 한가지인 데이터 처리장치.
  4. 제 2항 또는 제 3항에 있어서,
    상기 처리회로에 접속되고, 상기 메모리의 임의의 메모리 어드레스에 대한 범용 액세스를 명시하는 프로그램 명령에 응답하여 상기 어드레스가 소정의 범용 정렬 조건과 일치하는지 여부를 검출하도록 구성된 범용 정렬 검사회로를 구비한 데이터 처리장치.
  5. 제 4항에 있어서,
    상기 정렬 검사 제어회로는 상기 범용 정렬 검사회로에 접속되고, 상기 스택 포인터 값을 사용하는 스택 메모리 액세스들에 대해 상기 스택 정렬 검사회로에 의해 행해진 정렬 검사에 무관하게, 범용 구성 파라미터에 응답하여 상기 범용 정렬 검사회로를 선택적으로 디스에이블시키는 데이터 처리장치.
  6. 제 1항 내지 제 5항 중 어느 한 항에 있어서,
    상기 소정의 스택 정렬 조건은, 상기 스택 포인터 값이,
    제약을 받지 않거나,
    N이 비제로 정수값일 때, 2N의 정수배
    중에서 한가지라는 것을 포함하는 데이터 처리장치.
  7. 제 6항에 있어서,
    N은 3 및 4 중에서 한가지인 데이터 처리장치.
  8. 제 4항 또는 제 5항에 있어서,
    N이 사용자 제어하에서 설정되는 데이터 처리장치.
  9. 제 1항 내지 제 8항 중 어느 한 항에 있어서,
    각각의 스택 포인터 값을 각각 기억하는 복수의 스택 포인터 레지스터를 포함하고, 상기 처리회로가 예외 레벨에서 동작하고 있을 때 사용되고 상기 스택 정렬 검사회로가 상기 예외 레벨에서 디스에이블되는지 여부를 제어하기 위한 각각의 스택 구성 파라미터를 갖는 상기 복수의 스택 포인터 레지스터들 중 각각의 스택 포인터 레지스터와 각각 관련된 복수의 예외 레벨에서 상기 처리회로가 동작하도록 구성된 데이터 처리장치.
  10. 프로그램 명령들에 응답하여 데이터 처리 연산을 수행하는 처리수단과,
    스택 포인터 저장소의 메모리 내부의 어드레스를 표시하는 스택 포인터 값을 기억하고, 상기 처리수단에 접속되는 스택 포인터수단과,
    정렬을 검사하고, 상기 처리수단 및 상기 스택 포인터수단에 접속되고, 상기 스택 포인터 값에 의해 명시된 상기 스택 데이터 저장소의 어드레스에 대한 메모리 액세스를 명시하는 프로그램 명령에 응답하여 상기 스택 포인터 값이 소정의 스택 정렬 조건과 일치하는지 여부를 검출하도록 구성된 스택 정렬 검사수단과,
    정렬 검사를 제어하고, 상기 스택 정렬 검사수단에 접속되고, 메모리 액세스에 대해 행해진 추가적인 정렬 검사에 무관하게, 스택 구성 파라미터에 응답하여 상기 스택 정렬 검사수단을 선택적으로 디스에이블시키는 정렬 검사 제어수단을 구비한 데이터 처리장치.
  11. 프로그램 명령들에 응답하여 데이터 처리 연산을 수행하는 단계와,
    스택 데이터 저장소의 메모리 내부의 어드레스를 표시하는 스택 포인터 값을 스택 포인터 레지스터 내부에 기억하는 단계와,
    상기 스택 포인터 값에 의해 명시된 상기 스택 데이터 저장소의 어드레스에 대한 메모리 액세스를 명시하는 프로그램 명령에 응답하여, 상기 스택 포인터 값이 소정의 스택 정렬 조건과 일치하는지 여부를 검출하는 단계와,
    스택 구성 파라미터에 응답하여, 상기 스택 포인터 값을 사용하지 않는 메모리 액세스들에 대해 행해진 정렬 검사에 무관하게, 상기 검출단계를 선택적으로 생략하는 단계를 포함하는 데이터 처리방법.
  12. 제 11항에 있어서,
    상기 추가적인 정렬 검사는 모든 메모리 액세스들에 대한 정렬 검사를 포함하는 데이터 처리방법.
  13. 제 11항 또는 제 12항에 있어서,
    상기 스택 메모리 액세스는,
    (i) 상기 스택 포인터 값에 의해 명시된 스택 어드레스의 탑에서 시작하고 스택 어드레스의 새로운 탑을 표시하도록 상기 스택 포인터 값을 갱신하면서 상기 스택 메모리에 1개 이상의 데이터 값을 기억하는 스택 푸시 연산과,
    (ii) 상기 스택 포인터 값에 의해 명시된 스택 어드레스의 탑에서 시작하고 스택 어드레스의 새로운 탑을 표시하도록 상기 스택 포인터 값을 갱신하면서 상기 스택 메모리에서 1개 이상의 데이터 값을 판독하는 스택 팝 연산
    중에서 한가지인 데이터 처리방법.
  14. 제 11항, 제 12항 또는 제 13항 중 어느 한 항에 있어서,
    범용 정렬 검사회로가 상기 메모리의 임의의 메모리 어드레스에 대한 범용 액세스를 명시하는 프로그램 명령에 응답하여 상기 어드레스가 소정의 범용 정렬 조건과 일치하는지 여부를 검출하는 단계를 포함하는 데이터 처리방법.
  15. 제 14항에 있어서,
    상기 스택 포인터 값을 사용하는 스택 메모리 액세스들에 대해 행해진 정렬 검사에 무관하게, 범용 구성 파라미터에 응답하여 상기 범용 정렬 검사를 선택적으로 디스에이블시키는 데이터 처리방법.
  16. 제 11항 내지 제 15항 중 어느 한 항에 있어서,
    상기 소정의 스택 정렬 조건은, 상기 스택 포인터 값이,
    제약을 받지 않거나,
    N이 비제로 정수값일 때, 2N의 정수배
    중에서 한가지라는 것을 포함하는 데이터 처리방법.
  17. 제 16항에 있어서,
    N은 3 및 4 중에서 한가지인 데이터 처리방법.
  18. 제 16항 또는 제 17항에 있어서,
    N이 사용자 제어하에서 설정되는 데이터 처리방법.
  19. 제 11항 내지 제 18항 중 어느 한 항에 있어서,
    각각의 스택 포인터 레지스터에 복수의 스택 포인터 값을 기억하는 단계와, 처리회로가 예외 레벨에서 동작하고 있을 때 사용되고 스택 정렬 검사가 상기 예외 레벨에서 행해지는지 여부를 제어하기 위한 각각의 스택 구성 파라미터를 갖는 상기 복수의 스택 포인터 레지스터들 중 각각의 스택 포인터 레지스터와 각각 관련된 복수의 예외 레벨에서 동작하는 단계를 포함하는 데이터 처리방법.
  20. 컴퓨터가 청구항 11 내지 청구항 19 중 어느 한 항에 기재된 데이터 처리방법을 수행하도록 제어하는 컴퓨터 프로그램을 포함하는 가상머신.
KR1020137003613A 2010-08-12 2011-06-13 정렬 제어 KR101924821B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1013528.3 2010-08-12
GB1013528.3A GB2482710A (en) 2010-08-12 2010-08-12 Enabling stack access alignment checking independently of other memory access alignment checking
PCT/GB2011/051090 WO2012020237A1 (en) 2010-08-12 2011-06-13 Alignment control

Publications (2)

Publication Number Publication Date
KR20130098303A true KR20130098303A (ko) 2013-09-04
KR101924821B1 KR101924821B1 (ko) 2019-02-27

Family

ID=42937869

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137003613A KR101924821B1 (ko) 2010-08-12 2011-06-13 정렬 제어

Country Status (10)

Country Link
US (1) US9760374B2 (ko)
EP (1) EP2603852B1 (ko)
JP (1) JP5703378B2 (ko)
KR (1) KR101924821B1 (ko)
CN (1) CN103052942B (ko)
GB (1) GB2482710A (ko)
IL (1) IL223731A (ko)
MY (1) MY164219A (ko)
TW (1) TWI512460B (ko)
WO (1) WO2012020237A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280492B2 (en) 2013-12-28 2016-03-08 Intel Corporation System and method for a load instruction with code conversion having access permissions to indicate failure of load content from registers
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US10496292B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10579377B2 (en) 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10496311B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10725685B2 (en) 2017-01-19 2020-07-28 International Business Machines Corporation Load logical and shift guarded instruction
GB2563887B (en) * 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Masking of architectural state associated with a realm
CN110175049B (zh) * 2019-05-17 2021-06-08 西安微电子技术研究所 一种支持地址未对齐的数据拆分与聚合访问的处理系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666508A (en) * 1995-06-07 1997-09-09 Texas Instruments Incorporated Four state two bit recoded alignment fault state circuit for microprocessor address misalignment fault generation
US5761491A (en) * 1996-04-15 1998-06-02 Motorola Inc. Data processing system and method for storing and restoring a stack pointer
US20070266374A1 (en) * 2006-05-11 2007-11-15 Arm Limited Stack memory selection upon exception in a data processing system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6491228A (en) * 1987-09-30 1989-04-10 Takeshi Sakamura Data processor
US5201043A (en) * 1989-04-05 1993-04-06 Intel Corporation System using both a supervisor level control bit and a user level control bit to enable/disable memory reference alignment checking
GB2230118B (en) * 1989-04-05 1992-12-23 Intel Corp Microprocessor providing selectable alignment checking on memory references
JP3507193B2 (ja) * 1995-06-06 2004-03-15 株式会社東芝 ロード・ストア命令処理装置
US5596717A (en) * 1995-06-07 1997-01-21 Texas Instruments Incorporated Four state token passing alignment fault state circuit for microprocessor address misalignment fault generation
US6055619A (en) 1997-02-07 2000-04-25 Cirrus Logic, Inc. Circuits, system, and methods for processing multiple data streams
US6341344B1 (en) * 1998-03-20 2002-01-22 Texas Instruments Incorporated Apparatus and method for manipulating data for aligning the stack memory
US6697834B1 (en) * 1999-12-01 2004-02-24 Sun Microsystems, Inc. Mutual exculsion system and method for restarting critical sections of code when preempted during a critical section
US6829700B2 (en) * 2000-12-29 2004-12-07 Stmicroelectronics, Inc. Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
US6772372B2 (en) * 2001-03-06 2004-08-03 Hewlett-Packard Development Company, L.P. System and method for monitoring unaligned memory accesses
US7134000B2 (en) 2003-05-21 2006-11-07 Analog Devices, Inc. Methods and apparatus for instruction alignment including current instruction pointer logic responsive to instruction length information
US7493599B2 (en) * 2003-11-26 2009-02-17 Intel Corporation Device, system and method for detection and handling of misaligned data access

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666508A (en) * 1995-06-07 1997-09-09 Texas Instruments Incorporated Four state two bit recoded alignment fault state circuit for microprocessor address misalignment fault generation
US5761491A (en) * 1996-04-15 1998-06-02 Motorola Inc. Data processing system and method for storing and restoring a stack pointer
US20070266374A1 (en) * 2006-05-11 2007-11-15 Arm Limited Stack memory selection upon exception in a data processing system

Also Published As

Publication number Publication date
GB201013528D0 (en) 2010-09-29
EP2603852B1 (en) 2015-04-29
WO2012020237A1 (en) 2012-02-16
TW201229752A (en) 2012-07-16
GB2482710A (en) 2012-02-15
TWI512460B (zh) 2015-12-11
CN103052942A (zh) 2013-04-17
US9760374B2 (en) 2017-09-12
JP2013536504A (ja) 2013-09-19
CN103052942B (zh) 2016-08-03
EP2603852A1 (en) 2013-06-19
JP5703378B2 (ja) 2015-04-15
IL223731A (en) 2016-09-29
KR101924821B1 (ko) 2019-02-27
MY164219A (en) 2017-11-30
US20120042136A1 (en) 2012-02-16

Similar Documents

Publication Publication Date Title
KR20130098303A (ko) 정렬 제어
US10318407B2 (en) Allocating a debug instruction set based on the current operating state in a multi-instruction-set data processing apparatus
US8301856B2 (en) Restricting memory areas for an instruction read in dependence upon a hardware mode and a security flag
EP2862089B1 (en) Compare and replace dat table entry
JP6006248B2 (ja) 命令エミュレーションプロセッサ、方法、およびシステム
US9182984B2 (en) Local clearing control
US20120236010A1 (en) Page Fault Handling Mechanism
KR20120060919A (ko) 컴퓨팅 환경의 다중 페이징가능 게스트에 의한 스토리지 사용의 관리
CN110574009B (zh) 用于管理对能力的使用的设备和方法
IL293321A (en) Device and method for handling anomalies
US10409602B2 (en) Vector operand bitsize control
TWI437428B (zh) 主機資料處理設備內之裝置模擬支援
KR20230101826A (ko) 캐퍼빌리티들을 사용하여 메모리에 대한 액세스를 제약하기 위한 기술
KR20200116473A (ko) 메모리 액세스시의 보호 태그 검사 제어
KR20200116471A (ko) 데이터 처리장치의 어드레스 변환

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