KR102421315B1 - 문맥 감지 배리어 명령어 실행 - Google Patents

문맥 감지 배리어 명령어 실행 Download PDF

Info

Publication number
KR102421315B1
KR102421315B1 KR1020177015092A KR20177015092A KR102421315B1 KR 102421315 B1 KR102421315 B1 KR 102421315B1 KR 1020177015092 A KR1020177015092 A KR 1020177015092A KR 20177015092 A KR20177015092 A KR 20177015092A KR 102421315 B1 KR102421315 B1 KR 102421315B1
Authority
KR
South Korea
Prior art keywords
context
data processing
access
accesses
order constraint
Prior art date
Application number
KR1020177015092A
Other languages
English (en)
Other versions
KR20170083070A (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 KR20170083070A publication Critical patent/KR20170083070A/ko
Application granted granted Critical
Publication of KR102421315B1 publication Critical patent/KR102421315B1/ko

Links

Images

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
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/1433Protection 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 module or a part of a module
    • 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
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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
    • G06F9/3834Maintaining memory consistency
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Landscapes

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

Abstract

데이터 처리장치와 데이터 처리방법이 제공되고, 이에 따라 이 장치의 처리회로는 메모리 시스템에 액세스하여, 지원하는 다수의 문맥들 중 하나의 문맥에서 데이터 처리 명령어들을 실행할 수 있다. 그 처리회로가 배리어 명령어를 실행할 때, 그 결과로 얻어진 액세스 순서 제약은, 예를 들면, 상기 배리어 명령어가 실행되어 있는 문맥일 수도 있는 식별된 문맥에서 작동할 때 상기 처리회로에서 착수하고 있던 액세스들에 대해 시행되는 것으로 제한될 수도 있다. 이것은, 가능한 그것의 다수의 문맥들에서 상기 처리회로의 연산간의 분리를 제공하고, 특히, 예를 들면 메모리의 고 지연 영역들에의 액세스들에 관한 상기 액세스 순서 제약의 완료시의 지연들이 그 밖의 문맥의 타이밍 감도에 영향을 미치지 않는다.

Description

문맥 감지 배리어 명령어 실행{CONTEXT SENSITIVE BARRIER INSTRUCTION EXECUTION}
본 개시 내용은, 데이터 처리에 관한 것이다. 보다 구체적으로, 본 개시 내용은 데이터 처리장치에서의 배리어 명령어의 이용에 관한 것이다.
데이터 처리 연산을 실시 또는 위임하기 위해서 데이터 처리 명령어들을 실행하는 데이터 처리장치는, 배리어 명령어에 응답하도록 구성되기로 알려져 있다. 배리어 명령어는 상기 데이터 처리장치에 의해 특별한 액세스 순서 제약을 시행하도록 보장시키고, 즉, 상기 배리어 명령어는, 배리어 명령어에 후속하는 데이터 처리 명령어들의 시퀀스에서의 명령어들을 데이터 처리장치가 실행 가능하기 전에, 데이터 처리장치가 완료를 실행하는, 즉 보장될 수 있는 데이터 처리 명령어들의 시퀀스에서 상기 배리어 명령어에 선행하는 명령어들은 액세스된 메모리 시스템내에서 효력을 발생하도록 보장한다. 이것은, 예를 들면, 데이터 처리장치가 배리어 명령어에 접할 때 데이터 처리장치의 현재의 처리상태에 대해 상기 메모리 시스템의 내용이 최신이고 일관적이도록 보장하는데 유용할 수 있다.
본 개시 내용은, 데이터 처리장치가 그 배리어 명령어에 접하는 것에 응답하는 방법에 있어서의 개선에 관한 것이다.
제1 측면에서 본 데이터 처리장치는, 메모리 시스템을 액세스하는 것을 포함하는 데이터 처리 연산들을 행하기 위해, 복수의 문맥에서의 데이터 처리 명령어들을 실행 가능한 처리회로; 및 상기 처리회로와 상기 메모리 시스템간에 인터페이스를 제공하는 메모리 시스템 상호작용 회로를 구비하고, 상기 메모리 시스템 상호작용 회로가 상기 복수의 문맥의 현재의 문맥에서의 배리어 명령어를 실행하는 상기 처리회로에 응답하여, 액세스 순서 제약을 시행 가능하고, 상기 메모리 시스템 상호작용 회로가, 식별된 문맥에서 작동할 때 상기 처리회로에서 착수한 액세스들에 대한 상기 액세스 순서 제약의 시행을 제한 가능하고, 상기 메모리 시스템 상호작용 회로는 진행중 액세스들을 버퍼링하는 스토어 버퍼를 구비하고, 상기 스토어 버퍼는 그 진행중 액세스를 발행한 상기 문맥을 나타내는 식별자를, 각 진행중 액세스에 태깅 가능하고, 상기 스토어 버퍼는 다수의 저장 장소를 갖는 문맥 추적 스토리지를 구비하고, 상기 스토어 버퍼는 상기 현재의 문맥에 대해 마지막으로 상기 액세스 순서 제약을 행한 이후로 현재의 문맥이 액세스들을 착수한 경우 현재의 문맥의 상기 다수의 저장 장소 중 하나에 엔트리를 저장 가능하고, 상기 문맥 추적 스토리지에서의 다수의 저장 장소 전부가 점유되고 상기 스토어 버퍼가 현재의 문맥에 대해 점유된 엔트리를 갖지 않는 경우, 상기 스토어 버퍼는 대응한 빅팀 엔트리를 갖는 현재의 문맥이외의 빅팀 문맥에서 착수한 진행중 액세스들에 대한 묵시적 액세스 순서 제약을 시행 가능하고, 그 선택된 문맥의 상기 빅팀 엔트리를 제거 가능하며, 상기 묵시적 액세스 순서 제약은 상기 처리회로에게 대응한 배리어 명령어의 실행을 요구하지 않는다.
제2 측면에서 본 데이터 처리방법은, 처리회로를 사용하여, 메모리 시스템에 액세스하는 것을 포함하는 데이터 처리 연산들을 행하기 위해, 복수의 문맥의 현재의 문맥에서 실행되는 데이터 처리 명령어들을 실행하는 단계; 메모리 시스템 상호작용 회로를 사용하여, 상기 복수의 문맥의 현재의 문맥에서의 배리어 명령어의 실행에 응답하여, 액세스 순서 제약을 시행하는 단계; 및 상기 메모리 시스템 상호작용 회로를 사용하여, 식별된 문맥에서 데이터 처리 명령어들을 실행할 때 착수된 액세스들에 대한 상기 액세스 순서 제약의 시행을 제한하는 단계를 포함하고, 상기 메모리 시스템 상호작용 회로는 진행중 액세스들을 버퍼링하는 스토어 버퍼를 구비하고, 상기 스토어 버퍼는 그 진행중 액세스를 발행한 상기 문맥을 나타내는 식별자를, 각 진행중 액세스에 태깅 가능하고, 상기 스토어 버퍼는 다수의 저장 장소를 갖는 문맥 추적 스토리지를 구비하고, 상기 스토어 버퍼는 상기 현재의 문맥에 대해 마지막으로 상기 액세스 순서 제약을 행한 이후로 현재의 문맥이 액세스들을 착수한 경우 현재의 문맥의 상기 다수의 저장 장소 중 하나에 엔트리를 저장 가능하고, 상기 문맥 추적 스토리지에서의 다수의 저장 장소 전부가 점유되고 상기 스토어 버퍼가 현재의 문맥에 대해 점유된 엔트리를 갖지 않는 경우, 상기 스토어 버퍼는 대응한 빅팀 엔트리를 갖는 현재의 문맥이외의 빅팀 문맥에서 착수한 진행중 액세스들에 대한 묵시적 액세스 순서 제약을 시행 가능하고, 그 선택된 문맥의 상기 빅팀 엔트리를 제거 가능하며, 상기 묵시적 액세스 순서 제약은 상기 처리회로에게 대응한 배리어 명령어의 실행을 요구하지 않는다.
제3 측면에서 본 데이터 처리장치는, 메모리 시스템을 액세스하는 것을 포함하는 데이터 처리 연산들을 행하기 위해, 복수의 문맥의 현재의 문맥에서 실행되는 데이터 처리 명령어들을 실행하는 수단; 및 상기 데이터 처리 명령어들을 실행하는 수단과 상기 메모리 시스템간에 인터페이스를 제공하는 수단을 구비하고, 상기 인터페이스를 제공하는 수단은, 상기 복수의 문맥의 현재의 문맥에서의 배리어 명령어를 실행하는 상기 데이터 처리 명령어들을 실행하는 수단에 응답하여, 액세스 순서 제약을 시행 가능하고, 상기 데이터 처리 명령어들을 실행하는 수단은, 식별된 문맥에서 작동할 때 상기 데이터 처리 명령어들을 실행하는 수단에서 착수한 액세스들에 대한 상기 액세스 순서 제약의 시행을 제한 가능하고, 상기 인터페이스를 제공하는 수단은 진행중 액세스들을 버퍼링하는 수단을 구비하고, 상기 버퍼링하는 수단은 그 진행중 액세스를 발행한 상기 문맥을 나타내는 식별자를, 각 진행중 액세스에 태깅 가능하고, 상기 버퍼링하는 수단은 다수의 저장 장소를 갖는 저장수단을 구비하고, 상기 버퍼링하는 수단은 상기 현재의 문맥에 대해 마지막으로 상기 액세스 순서 제약을 행한 이후로 현재의 문맥이 액세스들을 착수한 경우 현재의 문맥의 상기 다수의 저장 장소 중 하나에 엔트리를 저장 가능하고, 상기 저장수단에서의 다수의 저장 장소 전부가 점유되고 상기 버퍼링하는 수단이 현재의 문맥에 대해 점유된 엔트리를 갖지 않는 경우, 상기 버퍼링하는 수단은 대응한 빅팀 엔트리를 갖는 현재의 문맥이외의 빅팀 문맥에서 착수한 진행중 액세스들에 대한 묵시적 액세스 순서 제약을 시행 가능하고, 그 선택된 문맥의 상기 빅팀 엔트리를 제거 가능하며, 상기 묵시적 액세스 순서 제약은 상기 데이터 처리 명령어들을 실행하는 수단에게 대응한 배리어 명령어의 실행을 요구하지 않는다.
본 발명은 아래의 첨부도면에 도시된 것처럼 본 발명의 실시예를 참조하여 예시로만 한층 더 설명하겠다:
도 1은 일 실시예에서 2개의 데이터 처리장치와, 메모리 시스템을 구비하는 데이터 처리 시스템을 개략적으로 도시한 것이고,
도 2는 일 실시예에서, 도 1에 도시된 것들 등의 하나 이상의 데이터 처리장치상에서 동작하는 가상화 작동환경의 구조를 개략적으로 도시한 것이고,
도 3a는 일 실시예에서 도 1의 데이터 처리 시스템의 구성요소 중 일부를 보다 상세히 개략적으로 도시한 것이고,
도 3b는 일 실시예에서 배리어 명령어를 도시한 것이고,
도 4는 일 실시예에서 도 3a의 각 데이터 처리장치내에서 각 스토어 버퍼의 구성을 보다 상세히 개략적으로 도시한 것이고,
도 5(5a+5b)는 일 실시예에서 도 4에 도시된 것 등의 스토어 버퍼에 의해 실시된 단계들의 시퀀스를 도시한 것이고,
도 6a 및 6b는 일 실시예에서 처리회로가 실행할 수도 있는 명령어들의 시퀀스를 각각 예시한 것이다.
본 기술에 의해 인식한 것은, 데이터 처리장치의 처리회로가 하나보다 많은 문맥에서 데이터 처리 명령어들을 실행 가능한(즉, 데이터 처리장치가 실행하는 것을 가능하게 하는 구성을 갖는) 경우, 상기 처리회로가 데이터 처리 명령어들을 실행하는 문맥에 따라 상기 데이터 처리장치가 배리어 명령어에 응답하는 방식을 수정하는 것이 이롭다는 것이다. 여기서, "문맥"은 데이터 처리장치가 작동할 수 있는 작동 환경으로서 이해되는 것에 따라, 데이터 처리장치의 구성요소에는, 데이터 처리장치 자신의 구성요소뿐만 아니라, 예를 들면 데이터 처리장치와 연결한 메모리 시스템을 더 구비하는 데이터 처리장치가 발견된 데이터 처리 시스템의 전체도 갖는 명백히 완전하고 일관성 있는 뷰가 구비되어 있다. 여기서, "명백히"의 단어는, 예를 들면, 데이터 처리장치가 상호작용하는 메모리 시스템이, 실제로, 데이터 처리장치의 처리회로가 특별한 문맥에서 작동할 때 볼 수 있는 것보다 넓은 어드레스 장소의 범위를 포함하고, 그 특별한 문맥에서 작동할 때 상기 처리회로가 메모리 시스템에서 그 밖의 액세스 불가능한 메모리 장소가 존재하는 인식을 갖지 못한다는 것을 가리키는데 사용된다. 예를 들면, 배리어 명령어는, 메모리 배리어 명령어이어도 되거나, 메모리 액세스뿐만 아니라, 그 밖의 관련 연산들, 이를테면 코히어런시 연산들도 동기화하는 동기화 배리어이어도 된다. 예를 들면, 브랜치 예측자 또는 TLB 유지보수 연산은 DVM 메시지를 야기하고, 동기화 배리어는 이 액세스들도 동기화한다.
본 기술에 의하면, 상기 데이터 처리장치의 처리회로가 배리어 명령어에 접할 때, 상기 데이터 처리장치는 예를 들면 현재의 문맥이어도 되는 식별된 문맥에서 작동할 때 상기 처리회로에서 착수하고 있던 액세스들에 대해서만, 즉 상기 처리회로가 현재 작동중이고 상기 배리어 명령어에 접하여 있는 상기 문맥과 같은 문맥에서 이전에 착수된 액세스들에 대해서만 대응한 액세스 순서 제약의 시행을 제한함으로써 응답하여도 된다. 달리 말하면, 상기 액세스 순서 제약의 시행은 식별된 문맥에서 작동할 때 상기 처리회로에서 착수한 액세스들에 한정되어도 된다. 이 액세스들은, 다양한 형태를 취할 수도 있고, 예를 들면 스토어 또는 로드(load) 등의 메모리 액세스들일 수 있고, 또한 예를 들면 코히어런시 연산들 또는 캐시(데이터 또는 명령어) 유지 보수 연산들일 수 있다.
이것의 이점은, 상기 데이터 처리장치내의 다수의 가능한 문맥의 존재가, 주어진 그 다수의 문맥들의 문맥에서의 데이터 처리 명령어들을 상기처리회로가 실행중일 때 상기 데이터 처리장치의 연산에 미칠 수도 있는 영향을 한층 더 감소시키는 것이다. 예를 들면, 본 기술이 특히 이로울 수도 있는 하나의 상황은, 데이터 처리장치에서 제공된 일 문맥이, 데이터 처리장치가 그 데이터 처리 명령어들을 실행하고 지연이 매우 적은("실시간 문맥") 외부신호들에 응답하는데 요구될 때 상기 처리회로의 연산에 사용되고, 그 데이터 처리 명령어들의 실행 완료시와 외부신호들에 응답시의 약간의 지연이 허용 가능한("비실시간 문맥") 다른 문맥에서 작동하도록 배치되는, 경우다. 주어진 문맥에서 상기 처리회로가 배리어 명령어에 접할 때 실시된 액세스 순서 제약이, 그 특별한 문맥에서 작동되었을 때 상기 처리회로에서 착수하고 있던 액세스들에 대해 시행되도록 상기 데이터 처리장치를 배치함으로써, 지연(실시간 문맥)에 민감한 문맥의 타이밍 제약들은, 본 문맥에서 작동할 때 상기 처리회로의 연산이 엄격한 타이밍 제약들을 갖지 않는 상이한 문맥에서 작동할 때 상기 처리회로에서 착수하고 있던 (상기 액세스 순서 제약을 지키기 위해서) 액세스들의 완료를 대기하여서 속도가 느려지지 않으므로, "실시간" 문맥에 허용 가능한 것보다 큰 지연을 포함할 가능성이 있을 수 있는 액세스들, 예를 들면 응답의 지연이 상대적으로 길기로 알려진 외부 메모리에의 액세스를 포함할 수도 있다는 점에서, 더 잘 보호된다.
일 실시예에서, 상기 식별된 문맥은 현재의 문맥이다. 현재의 문맥은, 다양한 방식으로 상기 액세스 순서 제약을 시행하는 상기 구성요소에 전달될 수 있다.
일 실시예에서, 상기 식별된 문맥은 상기 배리어 명령어에 명시된다. 이것은, 프로그래머(및/또는 하이퍼바이저)에게 선택된 문맥에 대한 액세스 순서 제약을 언제라도 시행할 유연성을 부여한다.
일 실시예에서, 상기 식별된 문맥은 상기 처리회로에 액세스 가능한 스토리지에 명시된다. 예를 들면, 상기 식별된 문맥의 표시는 (비록 임의의 다른 적절한 스토리지를 사용할지라도) 레지스터에 저장되어도 된다.
일 실시예에서, 상기 장치는 다수의 가상 머신 중 현재의 가상 머신이 작동하는 가상화 작동환경을 제공 가능하고, 상기 처리회로는 현재의 가상 머신과의 상호작용에 의해 상기 데이터 처리 명령어들을 실행 가능하고, 상기 현재의 문맥은 상기 현재의 가상 머신에 대응한다. 이에 따라, 가상화 작동환경은, 상기 데이터 처리장치의 처리회로가 하나보다 많은 문맥에서 작동(즉, 데이터 처리 명령어들을 실행)할 수 있는 일 방식을 제공한다. (일반적으로, 특별한 게스트 운영체계와 그 게스트 운영체계상에서 동작하는 애플리케이션의 세트를 포함하는) 주어진 가상 머신은, 그 가상 머신의 작동이 데이터 처리장치의 작동의 본 문맥일 때 상기 데이터 처리장치의 하드웨어(즉, 특히 본 문맥에서 상기 처리회로와 메모리 시스템 상호작용 회로)와 상호작용한다. 이 때문에, 본 기술들은 각 가상 머신(특히, 저 지연 타이밍 제약의 가상 머신)의 타이밍 제약들에 대한 보호를 제공한다.
일부의 실시예에서, 상기 장치는 가상 머신 식별자를 저장하기 위한 가상 머신 식별자 스토리지를 더 구비하고, 상기 장치는 현재의 가상 머신을 표시하기 위해 상기 가상 머신 식별자를 갱신 가능하다. 예를 들면, 상기 가상 머신 식별자 스토리지는, 식별자 스토리지의 임의의 적절한 형태로 제공할 수 있을지라도 상기 데이터 처리장치의 처리회로에서의 레지스터에 의해 제공되어도 되므로, 상기 데이터 처리장치가 현재의 가상 머신을 결정하는 구성요소에 대한 쉽게 이용 가능하고 신뢰 가능한 기준을, 상기 데이터 처리장치에 제공한다.
일부의 실시예에서, 상기 메모리 시스템 상호작용 회로는 진행중 액세스들을 버퍼링하는 스토어 버퍼를 구비하고, 상기 스토어 버퍼는 그 진행중 액세스를 발행한 상기 문맥을 나타내는 식별자를, 각 진행중 액세스에 태깅 가능하다. 진행중 액세스들을 버퍼링 하는 스토어 버퍼를 제공함으로써 기존의 회로가 (일반적으로 그 액세스들이 완료하기 전에 적어도 작은 지연을 가질 수도 있는) 액세스들의 관리를 위임할 수 있고, 상기 처리회로는 다른 데이터 처리 명령어 실행으로 계속된다. 상기 스토어 버퍼에 버퍼링된 각 진행중 액세스의 태깅은, 그 진행중 액세스를 발행한 상기 문맥을 가리킨다. 이때, 그것의 이름에도 불구하고, 상기 스토어 버퍼는 "스토어" 액세스들뿐만 아니라, 예를 들면, 코히어런시 연산들 등의 그 밖의 액세스들도 처리할 수도 있다.
이에 따라 상기 스토어 버퍼는, 상기 데이처 처리회로가 작동할 수 있는 상기 문맥마다 상기 데이터 처리회로에서 착수한 진행중 액세스들을 구별할 수 있다.
일부의 실시예에서, 상기 스토어 버퍼는, 현재의 문맥에 일치하는 진행중 액세스를 발행한 문맥을 나타내는 상기 식별자가 태깅된 진행중 액세스들에 대한 상기 액세스 순서 제약의 시행을 제한 가능하다. 이에 따라, 상기 스토어 버퍼는, (상기 처리회로가 상기 배리어 명령어를 실행할 때) 액세스 순서 제약이 시행될 때, 현재의 문맥에서 작동할 때 상기 처리회로에서 착수한(이 때문에 상기 액세스 순서 제약이 실시되어야 하는) 그 액세스들과, 다른 문맥에서 작동할 때 상기 처리회로에서 착수한(이 때문에 상기 액세스 순서 제약이 실시되어야 하는 것이 바람직하지 않을 수도 있는) 그 액세스들을, 결정할 수 있다.
일부의 실시예에서, 상기 메모리 시스템 상호작용 회로는 코히어런시부를 더 구비하고, 상기 스토어 버퍼는 상기 코히어런시부를 거쳐 상기 메모리 시스템과 상호작용 가능하다. 코히어런시부를 거친 상기 메모리 시스템과의 상호작용은, 메모리 시스템에 액세스하는 상기 데이터 처리장치와 또한 동일한 메모리 시스템에 액세스중인 그 밖의 데이터 처리장치와의 사이와, 각각의 메모리 계층들의 스토리지 디바이스들 사이에서, 코히어런시를 가능하게 하고, 상기 스토어 버퍼가 상기 코히어런시부를 거쳐 메모리 시스템과 상호작용하는 경우, (문맥에 따라) 선택적 액세스 순서 제약 시행은 상기 스토어 버퍼가 상기 코히어런시부에 보내는 메시지들을 선택적으로 필터링하여서 구현될 수 있다. 상기 코히어런시부는, 예를 들면 스눕(snoop) 제어부이어도 된다.
일부의 실시예에서, 상기 스토어 버퍼는 다수의 저장 장소를 갖는 문맥 추적 스토리지를 구비하고, 상기 스토어 버퍼는 상기 현재의 문맥에 대해 마지막으로 상기 액세스 순서 제약을 시행한 이후로 현재의 문맥이 액세스들을 착수한 경우 현재의 문맥의 상기 다수의 저장 장소 중 하나에 엔트리를 저장 가능하다. 따라서, 이 문맥 추적 스토리지의 제공은, 상기 액세스 순서 제약이 모든 현재의 문맥에서 시행될 필요가 있는지를 쉽게 판정할 능력을 상기 스토어 버퍼에 제공한다.
일부의 실시예에서, 상기 스토어 버퍼는, 상기 선택된 엔트리에 대응한 상기 액세스 순서 제약을 시행하였을 때 상기 문맥 추적 스토리지에서의 선택된 엔트리를 제거 가능하다. 따라서, 일단 상기 액세스 순서 제약이 주어진 문맥에 대해 시행되어 있으면, 그 시점에서 상기 문맥 추적 스토리지에서의 대응한 엔트리를 제거하는 것은, 그 문맥에서 또 다른 배리어 명령어를 실행하면 또한 실행할 때, 이전의 배리어 명령어로부터 생기는 액션들이 실행된 그 이전의 액세스들에 관해 상기 액세스 순서 제약이 실시될 필요가 없다는 것을 쉽게 인식할 수 있도록 보장한다.
일부의 실시예에서, 상기 문맥 추적 스토리지에서의 다수의 저장 장소 전부가 점유되고 상기 스토어 버퍼가 현재의 문맥에 대해 점유된 엔트리를 갖지 않는 경우, 상기 스토어 버퍼는 대응한 빅팀(victim) 엔트리를 갖는 현재의 문맥이외의 빅팀 문맥에서 착수한 진행중 액세스들에 대한 묵시적 액세스 순서 제약을 시행하고, 그 선택된 문맥의 상기 빅팀 엔트리를 제거 가능하고, 상기 묵시적 액세스 순서 제약은 상기 처리회로에게 대응한 배리어 명령어의 실행을 요구하지 않는다. 상기 스토어 버퍼에는 상기 처리회로가 데이터 처리 명령어들을 실행할 수 있는 가능한 모든 문맥의 저장 장소가 충분한 문맥 추적 스토리지가 구비될 수 있지만, 상기 데이터 처리장치에서 지원한 문맥의 수가 상기 문맥 추적 스토리지에서 제공하는 것이 바람직한 저장 장소의 수를 초과하는 경우가 있을 수도 있다. 달리 말하면, 가능한 상기 스토어 버퍼의 사이즈를 작게 유지하기 위해서는, 상기 문맥 추적 스토리지에서의 저장 장소의 수를 상대적으로 작은 수로 제한하는 것이 바람직할 수도 있다. 이러한 상황에서 인식한 것은, 상기 스토어 버퍼가, 현재의 문맥에 대해 점유된 엔트리를 갖지 않을 수도 있고 현재의 문맥에 대해 즉시 사용될 수 있는 이용 가능 엔트리를 갖지 않을 수도 있다는 것이다. 이 상황에서, 현재의 문맥에 대해 엔트리가 요구될 때, 그 후, 상기 스토어 버퍼는 묵시적 액세스 순서 제약을 시행할 수 있다(이것은, 배리어 명령어의 실행에 의해 상기 처리회로에 의해 지시되지 않지만, 그것의 문맥 추적 스토리지에서의 엔트리를 확보하기 위해서 상기 스토어 버퍼 자체에 의해 착수된다는 의미에서 "묵시적"). 현재의 문맥 이외의 하나 이상의 빅팀 문맥들은, 상기 문맥 추적 스토리지에서의 하나 이상의 엔트리들을 확보하기 위해서 그러한 묵시적 액세스 순서 제약이 실시되도록 상기 스토어 버퍼에 의해 선택된다.
일부의 실시예에서, 상기 스토어 버퍼는, 상기 액세스 순서 제약이 상기 문맥에 대해 마지막으로 시행된 이후로 착수된 상기 액세스들이 적어도 하나의 종류의 액세스를 포함하는지를 나타내는 상기 문맥 추적 스토리지에서의 각 엔트리와 관련된 적어도 하나의 표시를 저장 가능하다. 이에 따라, 상기 스토어 버퍼는, 주어진 문맥에서 상기 처리회로에 의해 착수되어도 되고 액세스 순서 제약의 시행에 대해 요구사항이 다를 수도 있는, 다른 종류의 액세스를 구별할 수 있다.
일부의 실시예에서, 상기 장치는, 현재의 문맥에 대해 상기 액세스 순서 제약이 마지막으로 실시된 이후로 대응한 종류의 액세스 명령어를 상기 현재의 문맥이 실행하였을 때 대응한 종류의 액세스 명령어의 현재의 문맥에 의한 실행에 의해 착수된 선택된 종류의 진행중 액세스에 대한 액세스 순서 제약의 시행을 제한 가능하다. 달리 말하면, 상기 장치는, 현재의 문맥에 대해 상기 액세스 순서 제약이 마지막으로 실시된 이후로 대응한 종류의 액세스 명령어를 상기 현재의 문맥이 실행한 경우에만 대응한 종류의 액세스 명령어의 현재의 문맥에 의한 실행에 의해 착수된 선택된 종류의 진행중 액세스에 대한 액세스 순서 제약을 시행할 수도 있다. 이 때문에, 상기 장치는, 상기 처리회로에 의해 대응한 다른 종류의 액세스 명령어의 실행에 의해 착수된 다른 종류의 액세스를 구별하고, 한층 더 상기 종류의 액세스에 의존한 상기 액세스 순서 제약을 시행할 수 있다. 이것은, 다른 종류의 액세스가 다소 서로 독립적일 수도 있고 일 종류의 액세스 명령어에 대한 액세스 순서 제약의 시행이 실제로 상기 액세스 순서 제약의 시행에 포함되는 다른 종류의 액세스 명령어에 의해 착수된 진행중 액세스들을 요구하지 않을 수도 있다는 본 기술들에 의해 인식된 것이기 때문이다.
일부의 실시예에서, 상기 선택된 종류의 진행중 액세스는 저장 연산이다. 상기 데이터 처리 시스템에서 저장 연산의 예상 지연에 따라, 저장 연산은, 이 저장 액세스들이 이와 관련된 상당한 지연을 가질 수도 있다는 사실로 인해, 상기 현재의 문맥에서 착수한 저장 연산을 위해서만 상기 액세스 순서 제약을 시행하는 것이 이로운 일종의 (메모리) 액세스를 나타낼 수도 있다.
일부의 실시예에서, 상기 메모리 시스템 상호작용 회로는, 상기 저장 연산이 선택된 메모리 영역을 위한 것일 때 상기 액세스 순서 제약의 시행을 제한 가능하다. 이 때문에, 상기 메모리 시스템 상호작용 회로는, 상기 저장 연산이 선택된 메모리 영역을 위한 것일 경우만 상기 액세스 순서 제약을 시행할 수도 있다. 상기 선택된 종류의 액세스가 모두 저장 연산일 수 있지만, 본 기술들에 의해 인식한 것은, 그것이 관련된 고 지연을 갖는 상기 메모리 시스템의 특별한 구성요소일 수도 있어서(그리고, 상기 메모리 시스템의 다른 부분이 허용 가능하게 저 지연을 가질 수도 있어서) 상기 메모리 시스템 상호작용 회로는 그것과 관련된 선택된 메모리 영역(예를 들면, 메모리 어드레스들의 범위)에 의해 상기 메모리의 보다 높은 지연 부분에 대한 액세스들을 인식할 수 있다는 것이다. 이것은, 상기 메모리 시스템의 고 지연 구성요소에 대한 액세스를 제공하기로 알려져 있는, 상기 데이터 처리 시스템에서의 특별한 포트(또는 포트들)에 액세스하는 스토어들의 사용자 식별부호에 의해 식별되어도 된다.
일부의 실시예에서, 상기 선택된 종류의 진행중 액세스는, 코히어런시 연산이다. 상기 코히어런시 연산들은, 예를 들면, 캐시 유지보수 연산들, 변환 색인 버퍼(TLB) 유지보수 연산들, 브랜치 예측자 유지보수 연산들 등일 수 있다. 본 기술들에 의해 인식한 것은, 상기 코히어런시 연산들이 완료의 상대적으로 고 지연을 포함하여도 되므로, 본 기술들이 특별한 이점을 갖는 일종의 액세스라는 것이다.
도 1은 2개의 중앙처리장치(CPU)(12, 14)를 구비하는 일 실시예에서의 데이터 처리 시스템(10)을 개략적으로 도시한 것이다. 각 CPU는, 상기 데이터 처리 시스템(10)내에서 데이터 처리 연산들을 실시 또는 착수하기 위해서 데이터 처리 명령어들의 시퀀스를 실행하는 프로세서(16, 18)를 각각 구비하고, 또한 그 데이터 처리 연산들에서 상기 프로세서(16, 18)가 사용한 값들이 사용되는 레지스터들 20, 22의 세트를 각각 구비한다. 각 CPU(12, 14)는, 숙련자가 익숙한 방식으로, 데이터 항목들에 대한 액세스 지연을 감소하기 위해서, 상기 데이터 처리 시스템의 상기 메모리 시스템의 나머지로부터 검색된 데이터 항목들의 임시 복사본을 저장 가능한(즉, 저장하는 것을 가능하게 하는 구성을 갖는) 밀접하게 관련된 레벨 1(L1) 메모리 시스템(캐시)을 갖는다. 각 데이터 처리장치(12, 14)의 각각의 L1 메모리들(24, 26)은, 캐시들 및 메모리들의 이 세트의 계층적 구성으로, 숙련자도 익숙한, 시스템 버스(30)를 거쳐 외부 메모리(32)와 자체 상호작용하는 레벨 2(L2) 메모리(28)와 상호작용한다.
도 2는 도 1에 도시된 데이터 처리 시스템(10)의 일 특징, 즉 데이터 처리 시스템(10)의 데이터 처리 장치들(12, 14)이 가상화 작동환경을 지원하는 것을 개략적으로 도시한 것이다. 이 가상화 작동환경은, 이렇게 제공된 가상화의 전반적인 제어를 유지보수하는 하이퍼바이저(34)가 "예외 레벨 번호 2"(EL2) 또는 "특권 레벨 2"(PL2)이라고 하는 도면에 도시된 최고의 특권 레벨에서 작동하는, 도 2에 개략적으로 도시된 계층식으로 보여질 수도 있다. 한층 더 높은 특권 레벨(EL3)도 제공되어도 되고, 여기서 예를 들면, 보안 모니터가 작동한다. 하이퍼바이저는, 최고의 비보안 특권레벨과, 가상화를 관리하는 특권 레벨에서 작동한다. 상기 하이퍼바이저는, 몇몇의 가상 머신 가운데 어느 가상 머신이 현재 데이터 처리장치에서 작동중인가를 제어한다. 설명의 명백함만을 기하기 위해서, 도 2는 단지 2개의 가상 머신(36, 28)만을 도시하지만, 상기 데이터 처리장치가 더욱 많은 가상 머신들을 지원하도록 구성될 수 있다는 것을 알아야 한다. 각 가상 머신은, 운영체계(OS1 40 및 OS2 42 각각)와 각각 그 운영체계의 제어하에 동작하는 다수의 애플리케이션 44, 46, 및 48, 50에 의해 도 2에 나타내어져 있다. 또, 설명의 간략을 기하기 위해서만, 2개의 애플리케이션만이 각 가상 머신내에 도시되어 있지만, 실제로 각 가상 머신이 동작 가능한 애플리케이션이 더욱 많이 있을 수도 있다. 게스트 운영체계(40, 42)는 전형적으로 중간의 특권레벨(EL1/PL1)에서 작동하고, 상기 애플리케이션들은 전형적으로 최저의 특권레벨(EL0/PL0)에서 작동한다. 이렇게 하여, 데이터 처리장치상에서 작동할 수도 있는 각 가상 머신은, 상기 데이터 처리장치, 특히 그 데이터 처리장치의 프로세서(처리회로)가 작동할 수 있는 고유한 문맥을 나타낸다. 이때, 상기 가상 머신들은, 각 가상 머신에 이용 가능한 것이 적절한 상기 처리 자원에 따라, 하나의 데이터 처리장치만이 관리하여도 된다. 실시간 가상 머신이 제공될 경우, 하나의 데이터 처리장치에만 한정할 가능성이 보다 높고, 비실시간 가상 머신은 일부의 데이터 처리장치에 분배되도록 구성되어도 된다.
도 3a는 도 1에 도시된 데이터 처리장치(12, 14)의 구성과, 데이터 처리 시스템(10)의 일부의 또 다른 구성요소를 보다 상세히 개략적으로 도시한 것이다. 각 데이터 처리장치(12, 14)는, 데이터 처리 연산들을 행하거나 착수하기 위해 데이터 처리 명령어들을 실행하는 데이터 처리부(실행부/처리회로)(52, 54)를 구비한다. 상기 데이터 처리 명령어들/연산들이 상기메모리 시스템에 액세스하는 것을 포함하는 경우, 각 DPU(52, 54)는 이것을 각각의 로드(load) 스토어부(LSU)(60, 62) 및 스토어 버퍼(STB)(56, 58)와 상호작용을 거쳐 행한다. 도 2를 참조하여 설명한 것처럼, 각 데이터 처리장치(12, 14)는, 현재의 문맥에서(즉, 선택된 가상 머신이 작동중인 것을 가능하게 하는 하이퍼바이저(34)의 제어하에) 작동하고, 각각의 DPU(52, 54)는 가상 머신 식별자로서의 역할을 하고 각각의 데이터 처리장치상에서 동작하는 현재의 가상 머신을 가리키는 레지스터 VSCTLR.VMID(80, 82)에서의 값을 저장한다. 각 데이터 처리장치의 LSU 및 STB는, 특히 이들과 관련된 약간 다른 액세스 지연을 가질 수도 있는 메모리 시스템의 다양한 저장 구성요소와 상호작용할 수 있다. 예를 들면, 각 데이터 처리장치(12, 14)에는, 각기 낮은 액세스 지연을 갖는 밀결합 메모리(TCM)(68, 70)에의 액세스가 제공된다. 마찬가지로, 상기 데이터 처리장치(12, 14)는, 낮은 액세스 지연을 갖는 저 지연 RAM(LLRAM)(76)에의 액세스를 공유한다. 그럼에도 불구하고, 또한, 상기 LLRAM(76)은, 일부의 유지보수 연산들이 그들과 관련된 보다 긴 지연을 가질 수도 있는 페이지 테이블들(78)을 저장하는데 사용되어도 된다. 바로 이러한 경우, 규칙적인 포트별 메모리 순서는 본 기술들을 피하려고 하는 특별한 문맥들에 대한 지연을 피하기에 충분하지 않은 것은, LLRAM에서 그 페이지 테이블들에 직접 또는 간접적으로 관련된 어떠한 코히어런시 연산도 (저 지연 액세스들인) 통상의 LLRAM 로드들 및 스토어들로부터의 다른 클래스의 액세스들(즉, 고 지연)로서 취급되어야 하는 본 기술들에 의해 인식되는 것이기 때문이다.
또한, 각 데이터 처리장치(12, 14)는, 상기 L2 메모리 시스템(28)의 일부를 형성하고, 특히 본 실시예에서 영국 캠브릿지 ARM사에서 제공한 것처럼, AXI마스터 포트인 버스 액세스 포트(74)에의 액세스를 제공하는 스눕 제어부(SCU)(72)에 의해 본 예시에서 구체화된 코히어런시부에의 액세스를 공유하고, 또한 상기 SCU는 클러스터에서 코어들/처리요소들 전부간의 코히어런시를 유지보수한다(도 1도 참조). 이 AXI마스터 포트(74)는, 그 AXI 시스템 버스(30)를 거쳐 상기 외부 메모리(32)에의 액세스를 제공하므로, 예를 들면 상기 TCM(60, 78) 또는 상기 LLRAM(76)보다 그것과 관련된 상당히 높은 액세스 지연을 갖는다. 각 데이터 처리장치의 STB(56, 58)는, 각각, 각각의 로컬 버스 인터페이스부(64, 66)를 거쳐 상기 공유된 SCU(72) 및 공유된 LLRAM(76)과 상호작용한다.
도 3b는 배리어 명령어의 예를 개략적으로 도시한 것으로, 그 배리어 명령어는, 이 명령어를 상기 데이터 처리장치에 대한 배리어 명령어로서 식별하는 오피코드 부분과, 현재의 VMID에 상기 배리어 명령어가 (예를 들면, 상기 VSCTLR.VMID 레지스터의 내용에 의해 부여된 것처럼) 적용되어야 하는지를 명시하여도 되거나 그 배리어 명령어가 적용되어야 하는 VMID 값을 명백히 명시하여도 되는 VMID 이용 부분으로 이루어진다. 그 배리어 명령어로 인코딩되는 대신에, 상기 배리어 명령어가 적용되어야 하는 VMID 값은 레지스터(도 1에서 20 및 22를 참조)에 저장되어도 된다.
도 4는 도 3a에 도시된 스토어 버퍼(56)의 구성을 보다 상세히 개략적으로 도시한 것이다. 또한, 상기 스토어 버퍼(58)는 동일한 구성을 갖는다. 모든 스토어 연산들, 캐시 유지보수 연산들, TLB 유지보수 연산들 등은 상기 L1 메모리 시스템에서 (VMID 레지스터(80)로부터 검색된 또는, 상기 배리어 명령어에 명백히 명시된 것처럼 또는 레지스터 등의 스토리지에서의 표시처럼) 현재의 VMID 값으로 태깅되고 STB(56)를 조사한다. 달리 말하면, 상기 처리회로(DPU)(52)로부터 멈춰진(retired) 대응한 명령어들과 관련 VMID 표시는 STB(56)에 의해 수신된다. 먼저, 이들은 상기 스토어 버퍼의 전반적인 제어를 관리하는 제어부(90)에 의해 수신된다. 상기 스토어 버퍼(56)는, 진행중 액세스들을 일시적으로 저장한 후 그 메모리 시스템의 나머지에 전달되는 다수의 스토어 버퍼 슬롯들(92)을 더 구비한다. 각 스토어 버퍼 슬롯은, 상기 대응한 멈춰진 명령어와 관련지어 수신되었고 이 대응한 진행중 액세스를 셋업한 상기 가상 머신 식별자의 표시(94)로 마킹된다. 상기 스토어 버퍼는, VMID들(문맥들)이 (SCU 72를 거쳐) 고 지연 AXI 마스터 포트(74)에 액세스한 것 또는 ("SCU"라고 기재된) D 캐시 유지보수 연산들을 행한 것과, VMID들이 ("DVM sync"라고 기재된) 분산 가상 메모리(DVM) 메시지를 보낸 것을 추적하는데 사용하는 문맥 추적기(96)를 더 구비한다. 그 DVM 메시지들은, 예를 들면, I 캐시 유지보수, 브랜치 예측자(predictor) 유지보수 및 TLB 유지보수에 관계할 수도 있다. 상기 DVM sync들은 효과적으로 상기 순서 제약을 시행하는 상기 DVM 메시지들이다. 여기서, 상기 문맥 추적기는, 그 저장을 위해 이용 가능한 엔트리들의 비교적 제한된 수, 도 4에 도시된 것과 같이 3만 가져서, 상기 스토어 버퍼(56)가 상기 데이터 처리장치(12)의 비교적 작은 구성요소로서 제공되게 하는 것이 가능하다. 상기 제어부(90)는, 멈춰진 스토어 명령어가 상기 SCU(72)를 거쳐 AXI 마스터 포트(74)에의 액세스에 관계할 때 식별할 수 있도록 고 지연 AXI 마스터 포트(98)의 메모리 어드레스 범위의 표시에 한층 더 액세스하고, 또한 코히어런시 명령어들의 리스트(100), 즉 DVM 메시지가 되는 명령어들의 리스트에 액세스도 한다. 이때, 일부의 "일관적" 메모리 액세스는 실제로 상기 AXI-M 포트에 액세스하지 않을 수도 있다, 예를 들면 (AXI-M 어드레스들의 범위에 있는) 어떠한 일관적 어드레스에의 스토어는 상기 AXI-M 포트에 한번도 액세스하지 않고 로컬 캐시 액세스, L2 캐시 액세스들, 또는 다른 코어의 캐시(들)에의 스눕에 의해 제대로 충족될 수도 있다.
이렇게 설명된 도 4의 구성에 의해, 상기 스토어 버퍼는, 상기 제어부(90)에서 배리어 명령어를 멈추게 하고 수신할 때, 그 배리어를 일치하는 VMID를 갖는 스토어 버퍼 슬롯들에의 적용을 제한하므로, 그 배리어 명령어에 응답하여, 동일한 문맥에서 작동할 때(즉, 동일한 가상 머신이 상기 VMID 값으로 나타낸 것처럼 작동하면서) 상기 DPU(52)에서 착수한 스토어 버퍼 슬롯에서의 대응한 엔트리를 갖는 진행중 액세스들에 대한 상기 액세스 순서 제약의 시행을 제한할 수 있다. 그렇지만, 이때, 상기 스토어 버퍼도 (예를 들면, 도 3b를 참조하여 상술한 것처럼) 상기 배리어 명령어로 인코딩된 명시적 VMID 사양에 응답하여 그 VMID에 대해서만 액세스 순서 제약을 시행할 수 있다. 추가로, 상기 하이퍼바이저는 모든 가상 머신(VMID들/문맥들)에 대한 상기 순서 제약을 시행할 수 있는 "강한" 배리어에 액세스한다는 것을 주목해야 한다. 또한, 상기 순서 제약은, 다른 처리 요소들(코어들)에 보여진다는 의미에서, 현재 진행중 메모리 액세스들뿐만 아니라, 일반적으로 완료되지 않았을지도 모르는 임의의 종류의 액세스에도 적용한다는 것을 주목해야 한다. 달리 말하면, 상기 순서 제약은, 이 코어가 관심을 가지는 한 완료되었을지도 모르지만(따라서 더 이상 진행중이 아니다), 그 효과의 전부는 다른 관찰자(예를 들면, 다른 코어)에게 아직 보여지지 않는다. 배리어는, 이러한 순서 제약을 (STB에서) 계속 진행중인지 아닌지에 상관없이 시행할 필요가 있다.
상기 문맥 추적기(96)의 구성에 의해, 상기 스토어 버퍼는, 최종의 DVM동기화가 실시된 이후로 상기 배리어 명령어를 적용하는 문맥(즉, 그의 관련된 VMID 표시)이 DVM 메시지들을 보냈다면, 배리어 명령어가 멈춰질 때 상기 메모리 시스템의 나머지에 DVM 동기화 메시지를 보낼 수만 있다. 이는, 도 5에 대해 보다 상세히 설명될, DVM 동기화에 관한 상기 문맥 추적기에서의 표시의 유지보수에 의해 행해진다. 마찬가지로, 상기 문맥 추적기(96)의 이러한 구성에 의해, 상기 스토어 버퍼(56)는, 최종의 배리어 연산이 상기 관련 문맥(VMID)에 대해 실시된 이후로 상기 배리어 명령어를 적용하는 문맥(즉, 그의 관련된 VMID 표시)이 AXI 마스터 스토어들 또는 캐시 유지보수 연산들을 상기 SCU에 보냈다면 (상기 CPU(12)로부터 다른 모든 미처리된 AXI 마스터 액세스들을 차단하기 위해서) 상기 배리어 명령어를 상기 SCU(72)에 전파할 수만 있다. 이를 지원하는 상기 문맥 추적기(56)의 내용의 유지보수의 또 다른 상세를, 도 5(도 5a+도 5b), 도 6a 및 도 6b를 참조하여 설명한다.
도 5는 일 실시예에서 도 4에 도시된 상기 스토어 버퍼(56)에서 실시한 단계들의 시퀀스를 도시한 것이다. 본 예에서, 상기 스토어 버퍼는 현재의 VMID/문맥(즉, 배리어 명령어에서 명시된 VMID가 아님)을 사용한다. 단계 110에서 흐름이 시작한다고 생각될 수 있고, 이 단계에서 명령어가 멈추고, 상기 스토어 버퍼(56)의 제어부(90)에 의해 수신된다. 그 후, 단계 112에서는, 이 명령어가 배리어 명령어인지를 판정한다. 배리어 명령어가 아니면, 단계 114에 흐름이 진행되어, 상기 제어부(90)는, 상기 관련 메모리 어드레스 범위(98)와 코히어런시 명령어들의 리스트(100)를 참조하여, 상기 명령어가 (SCU를 거쳐) AXI-마스터 포트에 대한 스토어, DVM 코히어런시 명령어 또는 데이터 캐시 유지보수 연산인지를 판정한다. 그렇지 않으면, 단계 116으로 흐름이 진행되어, 상기 액세스 명령어는 상기 메모리 시스템의 타겟 부분상에서 직접 전달되거나, 필요한 경우, 처리될 수 있을 때까지 다수의 STB 버퍼 슬롯들의 버퍼 슬롯에서 진행중이어도 된다. 이렇게 상기 버퍼 슬롯들(92) 중 하나에 저장될 때, 상기 관련 VMID 표시도 이를 위해 제공된 상기 스토리지(94)에 그 버퍼 슬롯과 관련지어 저장된다. 그 후, 단계 110으로 흐름이 되돌아간다.
그렇지만, 단계 112에서 상기 멈춰진 명령어가 배리어 명령어라고 판정하면, 단계 118로 흐름이 진행되어, 상기 문맥 추적기가 현재의 VMID(문맥) 표시를 갖는 엔트리를 갖는지를 상기 문맥 추적기(96)를 참조하여 판정한다. 엔트리를 갖지 않는 경우, 단계 120으로 흐름이 진행되어, 상기 스토어 버퍼(56)는 현재의 문맥에 대한 이 배리어 명령어의 대응한 순서 제약을 시행한다, 즉 일치하는 VMID를 갖는 스토어 버퍼 슬롯들만이 차단된다. 그 후, 단계 110으로 흐름이 되돌아간다.
그렇지만, 단계 118에서, 상기 문맥 추적기가 현재의 VMID로 마킹된 엔트리(이 배리어 명령어와 관련지어 수신되었던 표시)를 갖는다고 판정하면, 단계 122로 흐름이 진행되어, 그 엔트리가 상기 SCU 마커가 이 엔트리와 관련지어 설정된 것을 가리키는지를 확인하여, 최종의 배리어가 이 문맥(VMID)에 대해 실시된 이후로 (즉, VMID 표시들을 참조하여) 이 배리어 명령어가 적용하는 문맥이 상기 SCU("SCU 액세스")에 AXI 마스터 스토어들 또는 다른 캐시 유지보수 연산들을 보낸 것을 가리킨다. 상기 SCU 마커가 설정되면, 단계 124로 흐름이 진행되고 상기 배리어가 그 SCU에 보내진다. 그렇지 않으면, 흐름이 단계 126으로 직접 건너뛴다. 마찬가지로, 단계 126에서도, 대응한 VMID 표시를 갖는 상기 문맥 추적기에서의 엔트리가, 상기 배리어가 적용하는 문맥(즉, 이 배리어 명령어와 관련지어 수신된 VMID 표시)이 이 문맥에 대해 최종의 DVM 동기화가 실시된 이후로 DVM 메시지들을 보낸 것을 가리키는지를 판정한다. 상기 DVM sync 마커가 설정되지 않으면, 흐름이 단계 130으로 직접 건너뛴다. 그렇지만, 상기 DVM sync 마커가 설정되면, 단계 128을 거쳐 흐름이 진행되어, 상기 배리어 명령어는, 진행중 모든 AXI 마스터 포트 액세스들에 대한 데이터 동기화 배리어(DSB)가 후속하는 진행중 모든 DVM 메시지들에 대한 DVM sync가 생긴다. 그후, 단계 130에서, 일치하는 VMID를 갖는 어떠한 스토어 버퍼 슬롯들도 차단되고, 이 액세스들 전부가 비웠으면, 그 일치하는 VMID를 갖는 상기 문맥 추적기에서의 상기 엔트리가 제거되고 나서, 단계 110으로 흐름이 되돌아간다.
단계 114의 고려사항으로 되돌아가서, 상기 멈춰진 명령어가 (상기 SCU를 거쳐) 상기 AXI 마스터 포트에 대한 저장이거나 DVM 코히어런시 명령어라고 판단한 경우, 단계 134로 흐름이 진행되어, 상기 문맥 추적기가 (즉, 일치하는 VMID를 갖는) 현재의 문맥에 대한 엔트리를 갖는지를 판정한다. 엔트리를 가질 경우나, 단계 136에서 상기 문맥 추적기에서 엔트리가 없다고 판정한 경우, 단계 138로 흐름이 진행되어, 그 엔트리는 상기 현재의 문맥에서 사용하기 위해 선택된다. 그리고, 단계 140에서는 상기 엔트리에 현재의 VMID를 붙이고, 단계 142에서는 명령어의 종류를 가리키도록, 즉 이것이 SCU 액세스를 나타내는지, 또는 DVM 메시지를 송신하는 명령어인지를 가리키도록 상기 대응한 마커를 설정한다. 그리고, 단계 116으로 흐름이 진행되어, 필요한 경우, 이 명령어와 관련된 액세스를, 현재의 VMID값으로 붙여진 상기 스토어 버퍼의 버퍼 슬롯에 할당한다. 이전처럼 그 후에는, 이전처럼, 흐름이 단계 110으로 다시 진행된다.
그렇지만, 단계 136에서, 상기 문맥 추적기(96)에서 현재 이용 가능한 엔트리들이 없다고 판정되면, 단계 144으로 흐름이 진행되어, 상기 스토어 버퍼는 상기 문맥 추적기에서 엔트리를 갖는 적어도 하나의 문맥에 대한 묵시적 차단을 행하고, 여기서, "묵시적"은, 이 차단이 상기 스토어 버퍼에서 수신한 멈춰진 배리어 명령어의 수신에 의해 착수되지 않고 있지만 그 스토어 버퍼 저절로 착수되므로, 단계146에서는, 상기 스토어 버퍼는, 비우기 위하여, 관련 문맥(들), 즉 일치하는 VMID(들)로 마킹된 모든 진행중 액세스들을 기다리고, 상기 스토어 버퍼가 멈추기 위해 현재 처리중인 멈춰진 명령어를 기다린다는 사실을 반영한다는 것을 알아야 한다. 그후, 단계 148에서는, 상기 문맥 추적기에서의 상기 대응한 엔트리 또는 엔트리들을 제거하고, 상술한 것처럼 단계 138을 거쳐 흐름이 진행된다.
도 6a 및 6b는, 상기 스토어 버퍼의 연산을 한층 더 설명하기 위해서, 이들 명령어 각각이 실행되는 문맥을 도시하는, 데이터 처리 명령어들의 시퀀스 예를 각각 든 것이다. 도 6a에서, 문맥 A내에 실행된 상기 스토어(STR)-명령어 1-는 (예를 들면, 상기 SCU 내지 상기 AXI 마스터 포트를 거쳐) 긴 지연 어드레스에 관계하는 것으로서 상기 스토어 버퍼에 의해 식별되므로, 상기 SCU 액세스 마커가 설정된 본 문맥에 대해 상기 문맥 추적기에 엔트리가 만들어진다. 명령어 2(또한, 식별된 긴 지연 어드레스에 대한 스토어)가 멈춘 후, 상기 스토어 버퍼는 문맥 D를 상기 문맥 추적기에서의 엔트리에 추가하고, 이때 상기 SCU 액세스 표시는 마킹되어 있다. 명령어 3은 저 지연 어드레스에 대한 스토어이므로, 엔트리가 문맥 B에 대해 상기 문맥 추적기에서 만들어지지 않는다. 명령어 4(데이터 동기화 배리어(DSB))가 멈출 때, 이 문맥이 상기 문맥 추적기에서 대응한 엔트리를 갖지 않으므로, 상기 스토어 버퍼는 상기 배리어를 상기 SCU에 전달하지 않으므로, (그 밖의 문맥에 대해서) 현재 진행중이며 단지 (대응한 저 지연 포트들을 거쳐) 상기 메모리의 저 지연 부분들에 대한 스토어들을 기다려야 하는 어떠한 AXI 마스터 포트 저장도 기다리는 것을 피한다. 명령어 5(RLS 지연 어드레스에 대한 스토어, 즉 상기 SCU 내지 상기 AXI 마스터 포트를 거쳐)가 멈출 때, 상기 스토어 버퍼의 상기 문맥 추적기가 (도 4에서 주어진 실시예에서와 같이) 3개 이상의 엔트리가 이용 가능하면, (상기 대응한 VMID와 SCU 액세스로 마킹된) 문맥 C에 대한 상기 문맥 추적기에서 엔트리가 만들어진다. 그후, 명령어 6(DSB)은, 이 문맥(VMID)에 대해 상기 문맥 추적기에서 엔트리가 만들어져 있고 상기 SCU 마커가 설정되어 있다는 사실에 의해, 멈출 수 있기 전에 이전의 모든 AXI 마스터 포트 액세스들이 완료하기를 기다려야 하고, 이것은 "고 지연 문맥"이라는 것을 가리킨다. 그렇지만, 상기 스토어 버퍼의 문맥 추적기가 2개의 가능한 엔트리만 가질 경우, 이 시점에서 도 6a에 도시된 명령어들의 시퀀스를 통한 진척에 있어서, (이들 2개의 엔트리가 이미 문맥 A와 문맥 D를 위해 점유된 이후로) 문맥 C에 대해 이용 가능한 엔트리가 없을 것이기 때문에, 상기 스토어 버퍼는, 상기 문맥 추적기의 그 엔트리들을 점유중인 상기 고 지연 문맥 A와 D 중 적어도 하나를 위해 묵시적 배리어를 삽입하고 나서, 이 묵시적 배리어에 의해 영향을 받은 모든 액세스들이 비우기를 기다린다. 이 액세스들 전부가 비워졌다면, 상기 문맥 추적기에서의 하나(또는 양쪽) 엔트리들이 비어 있고, 문맥 C를 위한 요구된 엔트리는 상기 스토어(명령어 5)가 멈출 때 상기 추적 리스트에 추가될 수 있다. 그 때문에, 이 스토어는 멈추는 것이 방지되어 있을 것이다. 그 후, DSB(명령어 6)는, 이 시점에서 도 6a에 도시된 명령어의 시퀀스의 본 예에 있어서, 모든 이전의 액세스들이 삽입된 묵시적 DSB에 의해 차단되어 있어야 하기 때문에, 단지 상기 명령어 5 스토어이어야 하는 모든 AXI 마스터 액세스들(상기 고 지연 액세스들)을 기다릴 것이다.
이제, 도 6b에 도시된 명령어의 시퀀스의 예를 생각해보면, 명령어 1(TLB 유지보수 연산)이 멈춘 후, 상기 스토어 버퍼는, 문맥 A가 DVM연산을 행하는(이 때문에, 여기서는 "비실시간" 문맥으로서 분류되는) 것을 가리키는 상기 문맥 추적기에 엔트리를 추가한다. 명령어 2는 저 지연 어드레스(즉, 상기 SCU 내지 상기 AXI 마스터 포트를 거치지 않고)를 타겟팅으로서 인식되고, 이에 따라 대응한 엔트리는 상기 문맥 추적기에서 만들어지지 않는다. 명령어 3(상기 DSB)이 멈출 때, 그것은 어떠한 진행중 AXI 마스터 포트 스토어들도 기다리지 않아야 할 것이고(그 이유는 이들이 그 밖의 문맥에만 적용할 수 있기 때문이다), 그것은 (식별된 저 지연 포트들을 거쳐) 저 지연 메모리 어드레스들에 대한 스토어들을 기다려야만 할 것이다. 또한, 그것은, 이 문맥이 (상기 스토어 버퍼가 상기 문맥 추적기에서의 대응한 엔트리의 부족(이 때문에 반드시 본 문맥을 위한 대응한 DVM 동기화 마커의 부족)에 의해 식별할 수 있는) 어떠한 DVM 자체도 행하지 않았으므로, DVM 동기화 연산의 어떠한 종류도 보내는 것을 피할 것이다. 명령어 4(긴 지연 어드레스에 대한 스토어나 다른 TLB 유지보수 연산 중 어느 한쪽)가 멈춘 후, 상기 스토어 버퍼는, 문맥 C를 위한 엔트리를, SCU 액세스로서 마킹하거나, 문맥 C가 DVM 연산을 행한 것을 상기 DVM sync 마커가 가리키면서 마킹하는 상기 문맥 추적기에 추가한다. 그리고, 명령어 5(상기 DSB)가 멈출 때, 다음의 2개의 가능성 중 하나는, 명령어 4가 상기 스토어(STR) 또는 상기 TLB 무효화(TLBIMVAA)인지의 여부에 따라 일어난다. 명령어 4가 스토어인 경우, 상기 DSB 배리어는 이 스토어와 상기 데이터 처리 시스템에 의해 처리중인 상기 AXI 마스터 포트에 대한 그 밖의 모든 스토어에 영향을 미치지만, DVM sync가 상기 스토어 버퍼로부터 보내지지 않게 된다. 한편, 명령어 4가 TLB 무효화이었을 경우, 상기 DSB 배리어(명령어 5)는 이전의 모든 AXI 마스터 포트 액세스들에 영향을 미치는 DSB가 후속하는 이전의 모든 DVM 메시지들을 위한 DVM sync를 야기할 것이다.
여기에서는 본 발명의 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위 및 사상으로부터 벗어나지 않고 당업자가 변경, 부가 및 변형을 여러 가지로 실시할 수 있다는 것을 알 수 있다. 예를 들면, 본 발명의 범위로부터 벗어나지 않고 종속항의 특징들과 독립항의 특징들을 여러 가지로 조합할 수 있다.

Claims (19)

  1. 메모리 시스템을 액세스하는 것을 포함하는 데이터 처리 연산들을 행하기 위해, 복수의 문맥에서의 데이터 처리 명령어들을 실행 가능한 처리회로; 및
    상기 처리회로와 상기 메모리 시스템간에 인터페이스를 제공하는 메모리 시스템 상호작용 회로를 구비하고,
    상기 메모리 시스템 상호작용 회로는 상기 복수의 문맥의 현재의 문맥에서의 배리어 명령어를 실행하는 상기 처리회로에 응답하여, 액세스 순서 제약을 시행 가능하고,
    상기 메모리 시스템 상호작용 회로는, 식별된 문맥에서 작동할 때 상기 처리회로에서 착수한 액세스들에 대한 상기 액세스 순서 제약의 시행을 제한 가능하고,
    상기 메모리 시스템 상호작용 회로는 진행중 액세스들을 버퍼링하는 스토어 버퍼를 구비하고, 상기 스토어 버퍼는 그 진행중 액세스를 발행한 상기 문맥을 나타내는 식별자를, 각 진행중 액세스에 태깅 가능하고,
    상기 스토어 버퍼는 다수의 저장 장소를 갖는 문맥 추적 스토리지를 구비하고, 상기 스토어 버퍼는 상기 현재의 문맥에 대해 마지막으로 상기 액세스 순서 제약을 행한 이후로 현재의 문맥이 액세스들을 착수한 경우 현재의 문맥의 상기 다수의 저장 장소 중 하나에 엔트리를 저장 가능하고,
    상기 문맥 추적 스토리지에서의 다수의 저장 장소 전부가 점유되고 상기 스토어 버퍼가 현재의 문맥에 대해 점유된 엔트리를 갖지 않는 경우, 상기 스토어 버퍼는 대응한 빅팀 엔트리를 갖는 현재의 문맥이외의 빅팀 문맥에서 착수한 진행중 액세스들에 대한 묵시적 액세스 순서 제약을 시행 가능하고, 그 선택된 문맥의 상기 빅팀 엔트리를 제거 가능하며, 상기 묵시적 액세스 순서 제약은 상기 처리회로에게 대응한 배리어 명령어의 실행을 요구하지 않는, 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기 식별된 문맥은 상기 현재의 문맥인, 데이터 처리장치.
  3. 제 1 항에 있어서,
    상기 식별된 문맥은 상기 배리어 명령어에 명시되어 있는, 데이터 처리장치.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 장치는 다수의 가상 머신 중 현재의 가상 머신이 작동하는 가상화 작동환경을 제공 가능하고, 상기 처리회로는 현재의 가상 머신과의 상호작용에 의해 상기 데이터 처리 명령어들을 실행 가능하고, 상기 현재의 문맥은 상기 현재의 가상 머신에 대응하는, 데이터 처리장치.
  5. 제 4 항에 있어서,
    상기 장치는 가상 머신 식별자를 저장하기 위한 가상 머신 식별자 스토리지를 더 구비하고, 상기 장치는 현재의 가상 머신을 표시하기 위해 상기 가상 머신 식별자를 갱신 가능한, 데이터 처리장치.
  6. 삭제
  7. 제 1 항에 있어서,
    상기 스토어 버퍼는, 현재의 문맥에 일치하는 그 진행중 액세스를 발행한 문맥을 나타내는 상기 식별자가 태깅된 진행중 액세스들에 대한 상기 액세스 순서 제약의 시행을 제한 가능한, 데이터 처리장치.
  8. 제 7 항에 있어서,
    상기 메모리 시스템 상호작용 회로는 코히어런시부를 더 구비하고, 상기 스토어 버퍼는 상기 코히어런시부를 거쳐 상기 메모리 시스템과 상호작용 가능한, 데이터 처리장치.
  9. 삭제
  10. 제 1 항에 있어서,
    상기 스토어 버퍼는, 선택된 엔트리에 대응한 상기 액세스 순서 제약을 시행하였을 때 상기 문맥 추적 스토리지에서의 상기 선택된 엔트리를 제거 가능한, 데이터 처리장치.
  11. 삭제
  12. 제 1 항에 있어서,
    상기 스토어 버퍼는, 상기 액세스 순서 제약이 상기 문맥에 대해 마지막으로 시행된 이후로 착수된 상기 액세스들이 적어도 하나의 종류의 액세스를 포함하는지를 나타내는 상기 문맥 추적 스토리지에서의 각 엔트리와 관련된 적어도 하나의 표시를 저장 가능한, 데이터 처리장치.
  13. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 장치는, 현재의 문맥에 대해 상기 액세스 순서 제약이 마지막으로 실시된 이후로 대응한 종류의 액세스 명령어를 상기 현재의 문맥이 실행하였을 때 대응한 종류의 액세스 명령어의 현재의 문맥에 의한 실행에 의해 착수된 선택된 종류의 진행중 액세스에 대한 액세스 순서 제약의 시행을 제한 가능한, 데이터 처리장치.
  14. 제 13 항에 있어서,
    상기 선택된 종류의 진행중 액세스는 저장 연산인, 데이터 처리장치.
  15. 제 14 항에 있어서,
    상기 메모리 시스템 상호작용 회로는, 상기 저장 연산이 선택된 메모리 영역을 위한 것일 때 상기 액세스 순서 제약의 시행을 제한 가능한, 데이터 처리장치.
  16. 제 13 항에 있어서,
    상기 선택된 종류의 진행중 액세스는 코히어런시 연산인, 데이터 처리장치.
  17. 제 1 항에 있어서,
    상기 식별된 문맥은 상기 처리회로에 액세스 가능한 스토리지에 명시되는, 데이터 처리장치.
  18. 처리회로를 사용하여, 메모리 시스템에 액세스하는 것을 포함하는 데이터 처리 연산들을 행하기 위해, 복수의 문맥의 현재의 문맥에서 실행되는 데이터 처리 명령어들을 실행하는 단계;
    메모리 시스템 상호작용 회로를 사용하여, 상기 복수의 문맥의 현재의 문맥에서의 배리어 명령어의 실행에 응답하여, 액세스 순서 제약을 시행하는 단계; 및
    상기 메모리 시스템 상호작용 회로를 사용하여, 식별된 문맥에서 데이터 처리 명령어들을 실행할 때 착수된 액세스들에 대한 상기 액세스 순서 제약의 시행을 제한하는 단계를 포함하고,
    상기 메모리 시스템 상호작용 회로는 진행중 액세스들을 버퍼링하는 스토어 버퍼를 구비하고, 상기 스토어 버퍼는 그 진행중 액세스를 발행한 상기 문맥을 나타내는 식별자를, 각 진행중 액세스에 태깅 가능하고,
    상기 스토어 버퍼는 다수의 저장 장소를 갖는 문맥 추적 스토리지를 구비하고, 상기 스토어 버퍼는 상기 현재의 문맥에 대해 마지막으로 상기 액세스 순서 제약을 행한 이후로 현재의 문맥이 액세스들을 착수한 경우 현재의 문맥의 상기 다수의 저장 장소 중 하나에 엔트리를 저장 가능하고,
    상기 문맥 추적 스토리지에서의 다수의 저장 장소 전부가 점유되고 상기 스토어 버퍼가 현재의 문맥에 대해 점유된 엔트리를 갖지 않는 경우, 상기 스토어 버퍼는 대응한 빅팀 엔트리를 갖는 현재의 문맥이외의 빅팀 문맥에서 착수한 진행중 액세스들에 대한 묵시적 액세스 순서 제약을 시행 가능하고, 그 선택된 문맥의 상기 빅팀 엔트리를 제거 가능하며, 상기 묵시적 액세스 순서 제약은 상기 처리회로에게 대응한 배리어 명령어의 실행을 요구하지 않는, 데이터 처리방법.
  19. 메모리 시스템을 액세스하는 것을 포함하는 데이터 처리 연산들을 행하기 위해, 복수의 문맥의 현재의 문맥에서 실행되는 데이터 처리 명령어들을 실행하는 수단; 및
    상기 데이터 처리 명령어들을 실행하는 수단과 상기 메모리 시스템간에 인터페이스를 제공하는 수단을 구비하고,
    상기 인터페이스를 제공하는 수단은, 상기 복수의 문맥의 현재의 문맥에서의 배리어 명령어를 실행하는 상기 데이터 처리 명령어들을 실행하는 수단에 응답하여, 액세스 순서 제약을 시행 가능하고,
    상기 데이터 처리 명령어들을 실행하는 수단은, 식별된 문맥에서 작동할 때 상기 데이터 처리 명령어들을 실행하는 수단에서 착수한 액세스들에 대한 상기 액세스 순서 제약의 시행을 제한 가능하고,
    상기 인터페이스를 제공하는 수단은 진행중 액세스들을 버퍼링하는 수단을 구비하고, 상기 버퍼링하는 수단은 그 진행중 액세스를 발행한 상기 문맥을 나타내는 식별자를, 각 진행중 액세스에 태깅 가능하고,
    상기 버퍼링하는 수단은 다수의 저장 장소를 갖는 저장수단을 구비하고, 상기 버퍼링하는 수단은 상기 현재의 문맥에 대해 마지막으로 상기 액세스 순서 제약을 행한 이후로 현재의 문맥이 액세스들을 착수한 경우 현재의 문맥의 상기 다수의 저장 장소 중 하나에 엔트리를 저장 가능하고,
    상기 저장수단에서의 다수의 저장 장소 전부가 점유되고 상기 버퍼링하는 수단이 현재의 문맥에 대해 점유된 엔트리를 갖지 않는 경우, 상기 버퍼링하는 수단은 대응한 빅팀 엔트리를 갖는 현재의 문맥이외의 빅팀 문맥에서 착수한 진행중 액세스들에 대한 묵시적 액세스 순서 제약을 시행 가능하고, 그 선택된 문맥의 상기 빅팀 엔트리를 제거 가능하며, 상기 묵시적 액세스 순서 제약은 상기 데이터 처리 명령어들을 실행하는 수단에게 대응한 배리어 명령어의 실행을 요구하지 않는, 데이터 처리장치.
KR1020177015092A 2014-11-13 2015-10-09 문맥 감지 배리어 명령어 실행 KR102421315B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1420173.5 2014-11-13
GB1420173.5A GB2549239A (en) 2014-11-13 2014-11-13 Context sensitive barriers in data processing
PCT/GB2015/052959 WO2016075430A1 (en) 2014-11-13 2015-10-09 Context sensitive barrier instruction execution

Publications (2)

Publication Number Publication Date
KR20170083070A KR20170083070A (ko) 2017-07-17
KR102421315B1 true KR102421315B1 (ko) 2022-07-15

Family

ID=52248288

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177015092A KR102421315B1 (ko) 2014-11-13 2015-10-09 문맥 감지 배리어 명령어 실행

Country Status (10)

Country Link
US (1) US10503512B2 (ko)
EP (1) EP3218796B1 (ko)
JP (1) JP6722182B2 (ko)
KR (1) KR102421315B1 (ko)
CN (1) CN107077384B (ko)
GB (1) GB2549239A (ko)
IL (1) IL251309B (ko)
MY (1) MY183825A (ko)
TW (1) TWI693549B (ko)
WO (1) WO2016075430A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10386904B2 (en) * 2016-03-31 2019-08-20 Qualcomm Incorporated Hardware managed power collapse and clock wake-up for memory management units and distributed virtual memory networks
US10628329B2 (en) * 2016-04-26 2020-04-21 Nxp Usa, Inc. Data processing system having a coherency interconnect
EP3874367A1 (en) * 2018-10-30 2021-09-08 INTEL Corporation Supporting self-modifying graphics workloads in fully virtualized graphics architectures
KR20220169754A (ko) 2021-06-21 2022-12-28 최은지 입체퍼즐을 이용한 혼합현실 체감형 학습 교구
US12045615B1 (en) 2022-09-16 2024-07-23 Apple Inc. Processing of synchronization barrier instructions

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020169947A1 (en) 2001-05-11 2002-11-14 Gianfranco Bilardi Scalable processer
US20090193297A1 (en) * 2008-01-24 2009-07-30 Arm Limited Diagnostic context construction and comparison
US20100011195A1 (en) * 2008-07-08 2010-01-14 Sony Corporation Processor
US20160092677A1 (en) 2014-09-30 2016-03-31 Amazon Technologies, Inc. Allocation of shared system resources

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0679990B1 (en) * 1994-04-28 2000-03-01 Hewlett-Packard Company A computer apparatus having a means to force sequential instruction execution
US7752423B2 (en) * 2001-06-28 2010-07-06 Intel Corporation Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor
JP4234361B2 (ja) * 2002-06-28 2009-03-04 富士通株式会社 記憶制御装置およびデータ格納方法
US7788468B1 (en) * 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
WO2008155806A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited バリア同期方法、装置、及びマルチコアプロセッサ
US8112604B2 (en) * 2007-12-17 2012-02-07 International Business Machines Corporation Tracking load store ordering hazards
WO2009114645A1 (en) * 2008-03-11 2009-09-17 University Of Washington Efficient deterministic multiprocessing
CN101771600B (zh) * 2008-12-30 2012-12-12 北京天融信网络安全技术有限公司 多核下连接并发处理的方法
US8539204B2 (en) * 2009-09-25 2013-09-17 Nvidia Corporation Cooperative thread array reduction and scan operations
US8443148B2 (en) * 2009-12-26 2013-05-14 Intel Corporation System-wide quiescence and per-thread transaction fence in a distributed caching agent
US8941676B2 (en) * 2012-10-26 2015-01-27 Nvidia Corporation On-chip anti-alias resolve in a cache tiling architecture
US9448803B2 (en) * 2013-03-11 2016-09-20 Nvidia Corporation System and method for hardware scheduling of conditional barriers and impatient barriers
US9367472B2 (en) * 2013-06-10 2016-06-14 Oracle International Corporation Observation of data in persistent memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020169947A1 (en) 2001-05-11 2002-11-14 Gianfranco Bilardi Scalable processer
US20090193297A1 (en) * 2008-01-24 2009-07-30 Arm Limited Diagnostic context construction and comparison
US20100011195A1 (en) * 2008-07-08 2010-01-14 Sony Corporation Processor
US20160092677A1 (en) 2014-09-30 2016-03-31 Amazon Technologies, Inc. Allocation of shared system resources

Also Published As

Publication number Publication date
KR20170083070A (ko) 2017-07-17
CN107077384B (zh) 2020-11-17
IL251309A0 (en) 2017-05-29
US10503512B2 (en) 2019-12-10
US20160139922A1 (en) 2016-05-19
WO2016075430A1 (en) 2016-05-19
GB2549239A (en) 2017-10-18
EP3218796B1 (en) 2020-05-06
TW201633116A (zh) 2016-09-16
MY183825A (en) 2021-03-17
TWI693549B (zh) 2020-05-11
JP6722182B2 (ja) 2020-07-15
EP3218796A1 (en) 2017-09-20
GB201420173D0 (en) 2014-12-31
CN107077384A (zh) 2017-08-18
IL251309B (en) 2020-02-27
JP2017539001A (ja) 2017-12-28

Similar Documents

Publication Publication Date Title
EP3121731B1 (en) Memory management method and device
KR102421315B1 (ko) 문맥 감지 배리어 명령어 실행
US9665724B2 (en) Logging in secure enclaves
US9355262B2 (en) Modifying memory permissions in a secure processing environment
JP5969550B2 (ja) パフォーマンスカウンタの仮想化
US8719543B2 (en) Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices
CN104685479B (zh) 客户虚拟机内的虚拟输入/输出存储器管理单元
US8782323B2 (en) Data storage management using a distributed cache scheme
US10255069B2 (en) Cleared memory indicator
US20110161620A1 (en) Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US8793439B2 (en) Accelerating memory operations using virtualization information
US8918587B2 (en) Multilevel cache hierarchy for finding a cache line on a remote node
US11036647B2 (en) Suspending translation look-aside buffer purge execution in a multi-processor environment
US11232034B2 (en) Method to enable the prevention of cache thrashing on memory management unit (MMU)-less hypervisor systems

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