KR100996753B1 - 시퀀서 어드레스를 관리하기 위한 방법, 맵핑 관리자 및 멀티 시퀀서 멀티스레딩 시스템 - Google Patents

시퀀서 어드레스를 관리하기 위한 방법, 맵핑 관리자 및 멀티 시퀀서 멀티스레딩 시스템 Download PDF

Info

Publication number
KR100996753B1
KR100996753B1 KR1020077025166A KR20077025166A KR100996753B1 KR 100996753 B1 KR100996753 B1 KR 100996753B1 KR 1020077025166 A KR1020077025166 A KR 1020077025166A KR 20077025166 A KR20077025166 A KR 20077025166A KR 100996753 B1 KR100996753 B1 KR 100996753B1
Authority
KR
South Korea
Prior art keywords
sequencer
logical
physical
mapping
address
Prior art date
Application number
KR1020077025166A
Other languages
English (en)
Other versions
KR20070121812A (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 KR20070121812A publication Critical patent/KR20070121812A/ko
Application granted granted Critical
Publication of KR100996753B1 publication Critical patent/KR100996753B1/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/1009Address translation using page tables, e.g. page table structures
    • 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
    • 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
    • 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, 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Abstract

멀티 시퀀서 멀티스레딩 시스템에서 논리 시퀀서 어드레스와 물리 또는 논리 시퀀서 간의 맵핑의 관리 및 변환을 위한 시스템, 방법 및 메커니즘의 실시예들이 개시된다. 맵핑 관리자는 논리 시퀀서 어드레스 또는 페이지의 시스템의 실제 시퀀서 또는 프레임으로의 할당 및 맵핑을 관리할 수 있다. 맵핑 관리자와 연관된 할당 논리는 맵핑이 수행될 때 시퀀서 속성들을 고려할 수 있다. 맵핑 관리자와 연관된 재배치 논리는 실제 시퀀서를 재맵핑할 때 보조 저장 장치로/로부터의 컨텍스트 정보의 소개 및 채움을 관리할 수 있다. 시퀀서들은 단독으로 할당되거나, 파티셔닝된 블록들의 일부로서 할당될 수 있다. 맵핑 관리자는 또한 논리 시퀀서 어드레스가 사용자 프로그램에서 사용될 때마다 맵핑된 시퀀서에 대한 식별자를 제공하는 변환 논리를 포함할 수 있다. 다른 실시예들도 설명되고 청구된다.
시퀀서 어드레스 관리, 맵핑 관리자, 멀티스레딩, 할당 논리, 변환 논리

Description

시퀀서 어드레스를 관리하기 위한 방법, 맵핑 관리자 및 멀티 시퀀서 멀티스레딩 시스템{METHOD FOR MANAGING SEQUENCER ADDRESS, MAPPING MANAGER AND MULTI-SEQUENCER MULTITHREADING SYSTEM}
본 발명은 일반적으로 정보 처리 시스템에 관한 것으로서, 더욱 상세하게는 멀티 시퀀서 시스템에서의 논리 시퀀서 어드레스 변환 및 관리에 관한 것이다.
마이크로프로세서를 포함하는 것들과 같은 정보 처리 시스템의 성능을 향상시키기 위하여, 하드웨어 기술 및 소프트웨어 기술 양자가 이용되어 왔다. 하드웨어 측에서, 마이크로프로세서의 성능을 향상시키기 위한 마이크로프로세서 설계 접근 방식은 증가한 클록 속도, 파이프라이닝(pipelining), 분기 예측, 수퍼-스칼라(super-scalar) 실행, 무순서(out-of-order) 실행 및 캐시를 포함하였다. 이러한 많은 접근 방식은 트랜지스터의 수를 증가시켰고, 심지어 몇몇 경우에는 트랜지스터의 수가 성능 향상 속도보다 빠른 속도로 증가하는 결과를 가져 왔다.
순전히 트랜지스터의 추가를 통해 성능을 향상시키려고 하기보다는, 다른 성능 향상은 소프트웨어 기술을 수반한다. 프로세서 성능을 향상시키는 데 이용되어 온 하나의 소프트웨어 접근 방식은 "멀티스레딩"으로 알려져 있다. 소프트웨어 멀티스레딩에 있어서, 하나의 명령어 스트림은 동시에 실행될 수 있는 다수의 명령어 스트림으로 분할될 수 있다. 대안으로, 다수의 개별 소프트웨어 스트림이 동시에 실행될 수 있다.
타임-슬라이스(time-slice) 멀티스레딩 또는 타임-멀티플렉스("TMUX") 멀티스레딩으로 알려진 하나의 접근 방식에서는, 단일 프로세서가 일정 기간 후에 스레드들 사이에서 스위칭한다. 또 하나의 접근 방식에서는, 단일 프로세서가 긴 대기시간 캐시 미스 등의 트리거 이벤트의 발생시에 스레드들 사이에서 스위칭한다. 스위치-온-이벤트 멀티스레딩("SoEMT")으로 알려진 후자의 접근 방식에서는, 기껏해야 하나의 스레드만이 주어진 시간에 활성이다.
점차로, 멀티스레딩은 하드웨어로 지원되고 있다. 예를 들어, 하나의 접근 방식에서, 칩 멀티프로세서("CMP") 시스템 등의 멀티프로세서 시스템 내의 프로세서들은 각각 다수의 소프트웨어 스레드 중 하나에서 동시에 작용할 수 있다. 동시 멀티스레딩("SMT")으로 지칭되는 다른 접근 방식에서는, 단일의 물리 프로세서가 운영 체제들 및 사용자 프로그램들에 다수의 논리 프로세서로서 보이게 된다. SMT에 대해, 다수의 소프트웨어 스레드가 활성이고, 스위칭 없이 단일 프로세서 상에서 동시에 실행될 수 있다. 즉, 각각의 논리 프로세서는 완전한 아키텍처 상태 세트를 유지하지만, 캐시, 실행 유닛, 분기 예측기, 제어 논리 및 버스 등의 많은 다른 물리 프로세서 자원이 공유된다. 따라서, SMT에 대해, 다수의 소프트웨어 스레드로부터의 명령어들은 각각의 논리 프로세서 상에서 동시에 실행된다.
SMT 및/또는 CMP 시스템과 같이 소프트웨어 스레드들의 동시 실행을 지원하는 시스템에서는, 운영 체제 애플리케이션이 스레드 실행 자원(들) 상의 소프트웨어 스레드들의 스케쥴링 및 실행을 제어할 수 있다. 대신에, 사용자가 사용자 레벨 명령어들을 통해 소프트웨어 스레드들을 명시적으로 제어할 수 있게 하는 시스 템에서는, 그러한 명령어들이 스레드 실행 자원의 명칭 또는 어드레스를 지시할 수 있다.
본 발명의 실시예들은 동일 요소가 동일 번호로 지시되는 아래의 도면들을 참조하여 이해될 수 있다. 이들 도면은 한정적인 것을 의도하는 것이 아니라, 멀티 시퀀서 시스템 내의 논리 시퀀서 어드레스들의 물리 시퀀서들로의 맵핑을 관리하고 변환하는 장치, 시스템 및 방법의 선택된 실시예들을 설명하기 위해 제공된다.
도 1은 멀티 시퀀서 시스템의 다양한 실시예를 나타내는 블록도이다.
도 2는 멀티 시퀀서 시스템을 위한 일반적 병렬 프로그래밍 접근 방식의 그래픽 표현을 제공하는 블록도이다.
도 3은 각각의 시퀀서에 대한 고유 식별자를 가진 멀티 시퀀서 시스템의 적어도 일 실시예를 나타내는 블록도이다.
도 4는 논리 시퀀서 어드레스들의 물리 시퀀서 어드레스들로의 맵핑을 관리하는 맵핑 관리자를 포함하는 멀티 시퀀서 시스템의 적어도 일 실시예를 나타내는 블록도이다.
도 5는 가상화된 논리 시퀀서 어드레스들의 물리 시퀀서 어드레스들로의 맵핑을 관리하는 맵핑 관리자를 포함하는 멀티 시퀀서 시스템의 적어도 일 실시예를 나타내는 블록도이다.
도 6은 맵핑 구조의 적어도 일 실시예에 대한 추가 상세를 나타내는 블록도 이다.
도 7은 실제 시퀀서 프레임들의 가상화된 논리 시퀀서 어드레스들로의 맵핑을 위한 예시적인 시나리오의 적어도 일 실시예를 나타내는 데이터 흐름도이다.
도 8은 도 7에 도시된 예시적인 시나리오를 위한 샘플 맵핑 구조의 내용들을 나타내는 블록도이다.
도 9는 맵핑 관리자를 위한 할당 논리의 적어도 일 실시예를 나타내는 블록도이다.
도 10은 가상 시퀀서 어드레스를 실제 시퀀서 식별자로 변환하기 위한 방법의 적어도 일 실시예를 나타내는 데이터 흐름도이다.
도 11은 변환 가속 구조의 적어도 일 실시예의 샘플 엔트리를 나타내는 블록도이다.
도 12는 시퀀서 할당을 위한 방법의 적어도 일 실시예의 제어 및 데이터 흐름을 나타내는 흐름도이다.
도 13은 논리 시퀀서 어드레스에 대한 페이지 테이블 미스를 처리하기 위한 방법의 적어도 일 실시예의 제어 및 데이터 흐름을 나타내는 흐름도이다.
도 14는 비대칭 시퀀서를 포함하는 멀티 시퀀서 멀티스레딩 시스템의 적어도 일 실시예를 나타내는 블록도이다.
도 15는 개시되는 기술들을 수행할 수 있는 시스템의 적어도 일 실시예의 추가 상세를 나타내는 블록도이다.
도 16은 사용자 레벨 시퀀서 인식 동작을 지원하는 멀티 시퀀서 시스템의 다 른 실시예의 블록도이다.
아래의 설명은 사용자 레벨 시퀀서 산술을 지원하는 멀티 시퀀서 시스템의 논리 시퀀서 어드레스의 맵핑을 관리하는 방법, 시스템 및 메커니즘의 선택된 실시예들을 기술한다. 여기에 설명되는 메커니즘 및 방법 실시예들은 단일 코어 또는 멀티 코어 멀티스레딩 시스템에 이용될 수 있다.
아래의 설명에서는, 본 발명의 실시예들의 보다 완전한 이해를 제공하기 위해 시퀀서 할당 접근 방식, 멀티스레딩 환경, 시스템 구성, 멀티 시퀀서 시스템 내의 시퀀서들의 번지 및 토폴로지, 마이크로아키텍처 구조, 및 명령어 명명 및 파라미터와 같은 다양한 특정 상세가 설명된다. 그러나 본 발명은 이러한 특정 상세 없이도 실시될 수 있다는 것을 이 분야의 전문가는 이해할 것이다. 또한, 소정의 공지된 구조, 회로 등은 본 발명을 불필요하게 불명확하게 하는 것을 피하기 위해 상세히 설명되지 않는다.
본 명세서에서 사용되는 바와 같이, 본 명세서에서 "시퀀서"로도 상호교환가능하게 지칭되는 스레드 유닛은, 별개의 스레드 실행 자원이며, 스레드를 실행할 수 있는 임의의 물리 또는 논리 유닛일 수 있다. 이것은 주어진 스레드에 대해 실행될 다음 명령어를 결정하기 위한 다음 명령어 포인터 논리를 포함할 수 있다. 시퀀서는 논리 스레드 유닛 또는 물리 스레드 유닛일 수 있다. 논리 스레드 유닛과 물리 스레드 유닛 간의 이러한 차이는 도 1과 관련하여 바로 아래에서 설명된다.
도 1은 스레드의 사용자 레벨 제어를 지원하는 멀티 시퀀서 시스템의 실시예들(110, 115, 150, 170)의 선택된 특징을 나타내는 블록도이다. 도 1은 SMT 멀티 시퀀서 멀티스레딩 시스템(110)의 선택된 특징을 나타내는데, 여기서 각 시퀀서는 다른 논리 프로세서들 상에서의 다른 스레드들의 실행과 동시에 스레드를 실행할 수 있는 논리 프로세서이다. 도 1은 또한 논리 프로세서들 각각이 그의 스레드를 실행하는 순번(turn)을 갖도록 타임 멀티플렉싱 타입의 스위칭 메커니즘 등의 스위치-온-이벤트(SoeMT) 메커니즘을 통해 다수의 논리 시퀀서를 지원하는 멀티 시퀀서 시스템(115)의 적어도 일 실시예를 나타내는데, 이러한 시스템(115)에서는 한 번에 하나의 스레드만이 실행된다.
도 1은 또한 멀티 코어 멀티스레딩 시스템(150, 170)의 선택된 특징을 나타낸다. 멀티 코어 멀티스레딩 시스템의 물리 코어들은 단일 시퀀서 코어(예를 들어, 시스템(150) 참조)이거나, 멀티 시퀀서 코어(예를 들어, 시스템(170) 참조)일 수 있다. 이러한 멀티 코어 멀티스레딩 실시예들은 후술되며, 단일 코어 멀티 시퀀서 시스템(110, 115)은 바로 아래에 설명된다.
SMT 시스템(110)에서, 단일의 물리 프로세서(104)는 본 명세서에서 TC1 내지 TCn(도시되지 않음)으로 지칭되는 다수의 스레드 컨텍스트로서 보이게 된다. n개의 스레드 컨텍스트 각각은 사실상 시퀀서이다. 이들 스레드 컨텍스트 중 적어도 일부(예를 들어, n개 중의 m개)가 운영 체제 및/또는 사용자 프로그램에 보이게 될 때, 이들 스레드 컨텍스트는 때때로 논리 프로세서(도시되지 않음)로서 지칭되며, 본 명세서에서 LP1 내지 LPm으로 지칭된다. 각각의 스레드 컨텍스트(TC1 내지 TCn)는 한 세트의 아키텍처 상태(AS1 - ASn)를 각각 유지한다. 아키텍처 상태는 적어도 하나의 실시예에서 데이터 레지스터, 세그먼트 레지스터, 제어 레지스터, 디버그 레지스터 및 모델 특정 레지스터들의 대다수를 포함한다. 스레드 컨텍스트들(TC1 - TCn)은 캐시, 실행 유닛, 분기 예측기, 제어 논리 및 버스와 같은 물리 프로세서(104)의 대부분의 다른 자원들을 공유한다.
이러한 특징들이 공유될 수 있지만, 멀티스레딩 시스템(110) 내의 각각의 스레드 컨텍스트는 다음 명령어 어드레스를 독립적으로 생성할 수 있다(그리고 예를 들어 명령어 캐시, 실행 명령어 캐시 또는 추적 캐시로부터 페치(fetch)를 수행할 수 있다). 따라서, 다수의 논리 시퀀서가 단일 물리 페치/디코드 유닛(122)으로 구현될 수 있지만, 프로세서(104)는 각각의 스레드 컨텍스트에 대한 명령어를 페치하기 위해 논리적으로 독립적인 다음 명령어 포인터 및 페치 논리(120)를 포함한다. SMT 실시예에서, "시퀀서"라는 용어는 적어도 스레드 컨텍스트에 대한 다음 명령어 포인터 및 페치 논리(120)를, 그 스레드 컨텍스트에 대한 관련된 아키텍처 상태(AS)의 적어도 일부와 함께 포함한다. SMT 시스템(110)의 시퀀서들은 대칭일 필요가 없다는 점에 유의해야 한다. 예를 들어, 동일 물리 프로세서의 2개의 SMT 시퀀서는 이들이 각각 유지하는 아키텍처 상태 정보의 양이 상이할 수 있다.
따라서, 적어도 일 실시예에서, 멀티 시퀀서 시스템(110)은 동시 멀티스레딩을 지원하는 단일 코어 프로세서(104)이다. 이러한 실시예에서, 동일 물리 프로세서 코어(104)가 모든 스레드 명령어를 실행하지만, 각 시퀀서는 그 자신의 명령어 다음 명령어 포인터 및 페치 논리와 그 자신의 아키텍처 상태 정보를 갖는 논리 프로세서이다. 이러한 실시예에서, 단일 프로세서 코어(104)의 실행 자원들이 동시 실행되는 스레드들 사이에 공유될 수 있지만, 논리 프로세서는 그 자신의 아키텍처 상태 버전을 유지한다.
도 1은 또한 멀티 스레드 코드를 실행할 수 있는 멀티 시퀀서 시스템(115)의 대안 실시예를 나타낸다. 실시예(115)는 스위치-온-이벤트 멀티스레딩("SOEMT") 실시예로서 라벨링된다. 이러한 실시예(115)에서, 각 시퀀서는 그의 아키텍처 상태 정보 및 자신의 명령어 다음 명령어 포인터를 갖는 논리 프로세서라는 점에서 이전 실시예(110)의 시퀀서와 유사하다. 그러나 시스템(115)은 시퀀서 각각이 물리 프로세서 코어(104) 내의 단일 페치/디코드 유닛(122) 내의 동일 물리 페치 논리(120)를 다른 시퀀서들과 공유한다는 점에서 전술한 시스템(110)과 상이하다. 페치 논리(120)는 다양한 스위치-온-이벤트 정책에 기초하여 시스템(115)의 상이한 시퀀서들에 대한 페치로 스위칭될 수 있다. 스위치-온-이벤트 트리거는 타임 멀티플렉싱(TMUX)과 같은 특정 양의 타임 또는 머신 사이클의 경과(passage)일 수 있다. 다른 실시예들에서, SOEMT 트리거는 캐시 미스 이벤트, 페이지 결함, 긴 대기시간 명령어 등과 같은 다른 이벤트일 수 있다.
도 1은 또한 멀티 코어 멀티스레딩 시스템(150, 170)의 적어도 2개의 실시예를 나타낸다. 도 1에 도시된 멀티 코어 시스템(150, 170)의 적어도 일부 실시예에서, 시스템은 프로세서(104)를 빌딩 블록으로 이용할 수 있다. 시퀀서 각각은 프로세서 코어(104)일 수 있으며, 다수의 코어(1041-104n, 1041-104m)가 각각 단일 칩 패키지(160, 180) 내에 위치할 수 있다. 도 1에 도시된 시스템(150)에서, 각각의 코어(104i)(i=0 내지 n)는 단일 스레드 시퀀서일 수 있다. 도 1에 도시된 시스템(170)에서, 각각의 코어(104j)(j=1 내지 m)는 멀티 시퀀서 프로세서 코어일 수 있다.
칩 패키지(160, 180)는, 도시된 멀티 코어 시스템(150, 170)의 단일 칩 실시예들이 단지 예시적이라는 것을 나타내기 위하여 도 1에 점선으로 표시되어 있다. 다른 실시예들에서, 멀티 코어 시스템의 프로세서 코어들은 개별 칩들에 위치하거나, SOEMT 멀티 시퀀서 시스템으로서 구성될 수 있다.
도 1에 도시된 제1 멀티 코어 멀티스레딩 시스템(150)은 상이한 스레드들의 적어도 일부의 실행이 동시에 진행될 수 있도록 상이한 스레드를 각각 실행할 수 있는 2개 이상의 개별 물리 프로세서(1041-104n)를 포함할 수 있다. 각각의 프로세서(1041-104n)는 그의 각각의 스레드에 대한 명령어 정보를 페치하기 위한 물리적으로 독립적인 페치 유닛(122)을 포함한다. 각각의 프로세서(1041-104n)가 단일 스레드를 실행하는 실시예에서, 페치/디코드 유닛(122)은 단일의 다음 명령어 포인터 및 페치 논리(120)를 구현한다.
도 1은 또한 다수의 SMT 시스템(110)을 포함하는 멀티 코어 멀티스레딩 시스템(170)을 나타낸다. 이러한 실시예(170)에서, 각각의 프로세서(1041-104m)는 다수의 스레드 컨텍스트를 지원한다. 예를 들어, 각각의 프로세서(1041-104m)는 시스템(170)이 m*k개의 시퀀서를 효과적으로 구현하도록 k개의 시퀀서를 지원하는 SMT 프로세서이다. 또한, 시스템(170)의 페치/디코드 유닛(122)은 각각의 지원되는 스레드 컨텍스트에 대한 별개의 다음 명령어 포인터 및 페치 논리(120)를 구현한다.
설명의 편의를 위해, 아래의 설명은 멀티 코어 시스템(150)의 실시예들에 집중된다. 그러나 후술하는 메커니즘들이 멀티 코어 또는 단일 코어 멀티 시퀀서 시스템에서 수행될 수 있다는 점에서, 이러한 집중은 제한적인 것으로 간주되지 않아야 한다. 또한, 단일 코어 또는 멀티 코어 시스템은 단일 시퀀서 코어 또는 멀티 시퀀서 코어로 구현될 수 있다. 각각의 멀티 시퀀서 코어에 대해, SMT 및/또는 SoeMT를 포함하는 하나 이상의 멀티스레딩 기술이 이용될 수 있다. 도 1에 도시된 시스템들(110, 115, 150, 170)은 도 1에 도시되지 않은 메모리 시스템, 실행 유닛 등과 같은 추가 특징을 포함할 수 있다는 것을 이해할 것이다.
도 1에 도시된 시스템 실시예들(110, 115, 150, 170)에서 각각의 시퀀서(104)는 고유 식별자와 연관될 수 있다(도 3과 관련하여 후술함). 시스템(110, 150)의 다양한 실시예는 상이한 수 N의 총 시퀀서를 포함할 수 있다.
도 1에 도시된 시스템들(110, 115, 150, 170)의 실시예들은 각각 시퀀서들 간의 시그널링을 지원할 수 있다. 본 명세서에서 사용되는 "시퀀서 산술"이라는 용어는 두 시퀀서 사이의 서비스를 위한 시퀀서간 시그널링을 지칭하는 데 사용된다. 시퀀서 산술을 위한 아키텍처 지원은, 시퀀서들 간의 제어 및 상태 전달의 사용자 직접 조작을 허가하기 위한 하나 이상의 명령어가 제공되도록 하는 명령어 세트 아키텍처에 대한 확장을 포함할 수 있다. 사용자 레벨 명령어는 시퀀서 산술 명령어, 또는 명령어 피연산자로서 인코딩되고 그리고/또는 명령어 실행시 암시적으로 참조될 수 있는 파라미터로서의 논리 시퀀서 어드레스를 포함하는 임의 다른 타입의 명령어인 경우에 "시퀀서 인식" 명령어라 한다. 이러한 명령어는 다른 시퀀서에 대한 시그널링을 제공하거나(본 명세서에서 "SXFR" 또는 쉬레드 전달 명령으로 지칭됨) 이러한 신호를 모니터링하기 위한 클라이언트 시퀀서의 셋업을 제공하는(본 명세서에서 쉬레드 모니터("SEMONITOR") 명령으로 지칭됨) 시퀀서 산술 명령어를 포함할 수 있다.
시퀀서 인식 명령어는 또한 시퀀서 인식 상태 저장 및 복원 명령어와 같이 논리 시퀀서 어드레스를 파라미터로서 포함하는 다른 명령어를 포함할 수 있다. 이러한 상태 저장 명령어의 실행시, 제1 시퀀서는 제2 시퀀서의 아키텍처 상태의 스냅샷 사본을 생성할 수 있다. 시퀀서 인식 복원 명령어는 저장 아키텍처 상태가 지정된 시퀀서에 로딩될 것을 지시할 수 있다.
각각의 시퀀서 인식 명령어는 또한 옵션으로 둘 이상의 논리 시퀀서 어드레스를 파라미터로서 포함할 수 있다. 예를 들어, 시퀀서 인식 명령어는 다수의 논리 시퀀서 어드레스의 집합을 하나의 파라미터로서 포함할 수 있다. 이러한 접근 방식은 시퀀서간 신호를 하나의 시퀀서에서 다수의 다른 시퀀서로 멀티캐스팅 또는 브로드캐스팅하는 데 이용될 수 있다. 아래의 설명을 간략화하기 위하여, 아래에 설명되는 예들은 달리 지정되지 않는 한 유니캐스팅 사례와 관련될 수 있으며, 여기서 제1 시퀀서는 단일의 다른 논리 시퀀서 어드레스를 지정하는 시퀀서 인식 명령어를 실행한다. 이러한 접근 방식은 설명의 편의 및 예시적인 목적으로 행해질 뿐, 제한적인 것으로 간주되지 않아야 한다. 이 분야의 전문가는 여기에 설명되는 메커니즘들의 실시예들이 시퀀서 인식 명령어들의 브로드캐스팅 및 멀티캐스팅에도 적용될 수 있다는 것을 알 것이다.
설명의 편의를 위해, SXFR은 아래의 설명에서 예시적인 시퀀서간 시그널링 명령어에 대한 명령어 연상 기호로서 사용될 수 있다. 마찬가지로, 설명의 편의를 위해, 그리고 제한 없이, SSAVE, SRSTOR은 각각 시퀀서 인식 아키텍처 상태 저장 및 복원 명령어들에 대한 명령어 연상 기호로서 사용된다. 이 분야의 전문가는 첨부된 청구범위의 범위를 벗어나지 않고 시그널링 명령어들은 물론, 컨텍스트 저장 및 복원 명령어들 및 다른 시퀀서 인식 명령어들의 많은 다른 변형 및 연상 기호가 사용될 수 있음을 이해할 것이다.
따라서, 여기에 설명되는 방법, 메커니즘 및 시스템의 실시예들에서, 시퀀서 산술 연산들의 아키텍처의, 사용자에게 보이는 특징은 적어도 사용자가 시퀀서들 간의 서비스를 위한 신호를 유발하게 하는 정규 명령어 세트이다. 이러한 시그널링은 결과적인 제어 전달이 수행되는 시퀀서(104)의 명칭 또는 논리 어드레스를 파라미터로서 포함하는 명령어에 의해 트리거될 수 있다. 본 명세서에서 사용되는 바와 같이, 사용자 레벨 스레드 제어 전달을 위한 신호를 생성하는 시퀀서는 소스 시퀀서로서 지칭되며, 생성된 신호의 수신자는 본 명세서에서 목적 시퀀서로서 지칭된다.
이제, 본 명세서에서 설명되는 시스템들의 적어도 일부 실시예에 의해 통합될 수 있는 기본 개념들의 설명을 위해 도 2를 간단히 참조한다. 도 2는 멀티 시퀀서 멀티스레딩 시스템 상에서의 병렬 프로그래밍 접근 방식의 그래픽 표현을 나타내는 블록도이다.
병렬 프로그래밍으로 지칭되는 접근 방식에서 공유 메모리 멀티프로세싱 패러다임이 이용될 수 있다. 이러한 접근 방식에 따르면, 애플리케이션 프로그래머는 때로는 "애플리케이션" 또는 "프로세스"로서 지칭되는 소프트웨어 프로그램을 소프트웨어 프로그램의 병렬성을 표현하기 위하여 동시에 실행되는 다수의 태스크로 분할할 수 있다. 동일 소프트웨어 프로그램("프로세스")의 모든 스레드는 메모리 어드레스 공간의 공통 논리 뷰를 공유한다.
도 2는 운영 체제(240)에게 보이는 프로세스들(200, 220)을 나타낸다. 이들 프로세스(200, 220)는 예를 들어 워드 프로세싱 프로그램 및 이메일 관리 프로그램과 같은 상이한 소프트웨어 애플리케이션 프로그램일 수 있다. 일반적으로 각각의 프로세스는 상이한 어드레스 공간에서 동작한다.
운영 체제("OS")(240)는 일반적으로 도 2에 도시된 프로세스(220)와 같은 프로세스에 대한 사용자 생성 태스크들의 관리를 담당한다. 따라서, 운영 체제(240)는 프로세스(220)와 연관된 사용자 정의 태스크들 각각에 대한 별개의 스레드(225, 226)를 생성할 수 있으며, 스레드들(225, 226)을 스레드 실행 자원들에 맵핑할 수 있다.
따라서, 도 2는 프로세스(220)와 연관되고 프로세스(220)와 동일 가상 메모리 어드레스 공간을 공유하는 사용자 스레드들(225, 226)을 나타낸다. 따라서, 도 2에 도시된 프로세스(220)에 대한 스레드들(225, 226)은 별개의 사용자 정의 태스크들을 나타낸다. 이러한 스레드들은 때로는 본 명세서에서, 이들이 OS(240)에 의해 생성되고 관리되고 스케쥴링되는 것을 지시하기 위해 "OS 스레드"로서 지칭된다. 대안으로, 이들 스레드는 하나의 사용자 태스크를 나타내는 OS 관리 스레드의 개념을 지칭하기 위해 "사용자 스레드" 또는 "사용자 태스크"로서 지칭될 수도 있다.
사용자 스레드(225, 226)는 OS(240)에 의해 생성, 관리 및 스케쥴링될 수 있다. 사용자 스레드(225, 226)의 스케쥴링과 관련하여, OS(240)는 실행을 위해 스레드들(225, 226)을 스케쥴링하는 스케쥴러를 포함할 수 있으며, 각각의 스레드(225, 226)를 하나 이상의 논리 시퀀서 어드레스로 맵핑한다. 따라서, 도 2는 운영 체제(240)가 각각의 사용자 스레드(225, 226)의 단일 논리 시퀀서 어드레스로의 맵핑을 담당하는 통상의 스레딩 방식을 나타낸다. 일반적으로, 논리 시퀀서 어드레스는 예를 들어 하나의 별개의 다음 명령어 포인터를 포함할 수 있는 단일 시퀀서에 대응한다.
그러나 도 2는 또한 멀티스레딩에 대한 보다 최근의 접근 방식을 나타낸다. 도 2는 도 2에 도시된 스레드(225)와 같은 단일 OS 스레드가 운영 체제(240)에 의해 생성, 스케쥴링, 아니면 관리되지 않을 수 있는 다수의 사용자 레벨 스레드(280, 282)와 연관될 수 있다는 것을 나타낸다. 이러한 스레드는 OS 스레드와 구별하기 위하여 "쉬레드(shred)"로 지칭될 수 있다.
쉬레드(280, 282)는 OS(240)의 스케쥴러에게 보이지 않을 수 있으며, 따라서 0S(240)는 통상은 연관된 OS 스레드(쉬레드(280, 282)와 연관된 OS 스레드(225) 등)가 언제 또는 어떻게 쉬레드를 스케쥴링하여 할당된 논리 시퀀서 어드레스 상에서 실행되게 하는지를 관리하지 못한다. OS 스레드(225) 자체는 통상적으로 그의 쉬레드(280, 282) 중 하나를 언제 그리고 어떻게 실행할지의 스케쥴링을 담당한다. 이러한 2개의 쉬레드(280, 282)가 도 2에 도시되어 있지만, 임의 수의 이러한 쉬레드가 단일 OS 스레드와 연관될 수 있다.
적어도 하나의 실시예에서, 하나 이상의 시퀀서 인식 명령어는 프로그래머에 의해 OS 스레드에 속하는 쉬레드들로 코딩될 수 있다. 이러한 명령어는 OS 스레드의 동작 동안 실행될 때 OS(240) 스케쥴링 논리의 개입 없이 쉬레드들에 대한 생성, 제어 전달, 시퀀서 산술, 컨텍스트 저장, 컨텍스트 복원 또는 기타 동작들을 유발할 수 있다.
도 3은 본 명세서에서 "시퀀서"로 지칭되는 복수의 스레드 실행 자원(320, 322, 324, 326)을 포함하는 멀티스레딩 시스템(300)의 적어도 하나의 실시예를 나타내는 블록도이다. 시퀀서들(320, 322, 324, 326)은 예를 들어 단일 시퀀서 코어, SMT 논리 프로세서(예를 들어, 도 1과 관련한 위의 TC1 내지 TCn에 대한 설명 참조), 또는 SOEMT 코어(예를 들어, 도 1의 115 참조)를 포함하는 임의 타입의 스레드 실행 자원일 수 있다. 이러한 모든 예는 하나 이상의 스레드의 실행을 지원하는 하드웨어 특징을 나타낸다. 따라서, SMT 논리 프로세서를 포함하는 임의의 이러한 스레드 실행 자원은 본 명세서에서 "물리 시퀀서"로서 지칭된다.
도 3은 4개의 물리 시퀀서(320, 322, 324, 326)를 나타낸다. 시퀀서들(320, 322, 324, 326) 각각은 고유 시퀀서 식별자(SEQ0, SEQ1, SEQ2, SEQ3)와 연관된다. 이 분야의 전문가는 도 3에 도시된 4개의 물리 시퀀서는 단지 예시적일 뿐 제한적인 것으로 간주되지 않아야 한다는 것을 이해할 것이다. 여기에 설명되는 기술들을 이용하는 시스템은 명령어들을 동시 실행할 수 있는 임의 수의 물리 시퀀서를 포함할 수 있다.
도 3은 또한 사용자 프로그램(340)으로부터의 하나 이상의 명령어(345)가 사용자 레벨 시퀀서 인식 동작을 제공하는 것을 나타내고 있다. 시퀀서 인식 명령어(345)는 시퀀서들을 식별하기 위한 L_Seq0, L_Seq1, L_Seq2 및 L_Seq3와 같은 논리 시퀀서 어드레스를 포함한다. 아래 설명의 나머지에서, "논리 시퀀서 어드레스" 및 "가상 시퀀서 어드레스"라는 용어는 교환 가능하게 사용될 수 있다.
적어도 하나의 실시예에서, 사용자 프로그램(340)의 명령어(345)는 OS 관리 스레드에 의해 실행되는 것을 가정한다. 따라서, 프로그램(340)은 본 명세서에서 스레드로서 지칭될 수도 있다. 이러한 명령어(345)에 응답하여(즉, 명령어(345)가 실행될 때), 맵핑 관리자(302)는 명령어(345)에서 지정된 논리 시퀀서 어드레스에 의해 어느 물리 시퀀서(320-326)가 식별되는지를 판정하기 위한 탐색을 수행할 수 있다. 맵핑 관리자(302)의 적어도 하나의 실시예에서, 탐색은 하드웨어 또는 펌웨어에 의해, 또는 적절한 특권 레벨에서 소프트웨어 핸들러에 결함을 제공함으로써(by faulting into a software handler) 구현되거나 지원될 수 있다.
도 3은 논리 시퀀서 어드레스의 다소 간단한 가상화를 제공하는 시스템(300)의 일 실시예를 나타낸다. 즉, 애플리케이션 프로그래머가 이용할 수 있는 논리 시퀀서 어드레스의 수는 제한된 물리 시퀀서(320-326)의 수로 정적으로 제한된다. 따라서, 도 3은 애플리케이션 프로그램에 이용될 수 있는 물리 시퀀서와 논리 시퀀서 어드레스 간의 1:1 맵핑을 나타낸다.
따라서, 맵핑 관리자(302)는 하나 이상의 스레드(340)에 의해 사용되는 물리 시퀀서(320-326)와 논리 시퀀서 어드레스 간의 맵핑을 관리할 수 있다. 적어도 일 실시예에서, 맵핑 관리자(302)는 운영 체제 프로그램 또는 다른 소프트웨어 애플리케이션이다. 이러한 실시예에서, 맵핑 관리자(302)는 특권 동작 레벨에서 맵핑을 처리할 수 있다. 예를 들어, 실제 시퀀서와 논리 시퀀서 어드레스 간의 맵핑의 관리는 OS 커널 또는 드라이버에 의한 특권 동작으로서 처리될 수 있다.
그러나, 맵핑 관리자(302)의 대안 실시예들은 다양한 추상 레벨에서 맵핑을 관리할 수 있다. 예를 들어, 맵핑 관리자(302)는 하드웨어 및/또는 펌웨어에 의한 마이크로아키텍처 레벨의 재명명에 의해 지원될 수 있는 아키텍처 탐색 테이블일 수 있다. 예를 들어, 적어도 하나의 다른 실시예에서, 맵핑 관리자(302)는 가상 머신 또는 하이퍼바이저에서의 가상화 관리 소프트웨어 메커니즘일 수 있다. 또는, 적어도 하나의 다른 실시예에서, 맵핑 관리자(302)는 맵핑 관리자 기능을 사용자 스레드(예를 들어 225 등) 또는 프로세스(예를 들어 220 등)의 일부로서 수행하는 사용자 레벨의 비특권 소프트웨어 코드일 수 있다.
이제, 도 16을 참조하는데, 도 16은 사용자 레벨 시퀀서 인식 동작들을 지원하는 멀티 시퀀서 시스템(1600)의 다른 실시예의 소정의 아키텍처 특징을 나타내는 블록도이다. 도 16은 시스템(1600)이 시퀀서들(1620, 1640)을 포함하는 것을 나타내고 있다. 도 16에 도시된 시퀀서들의 수 및 타입은 제한적인 것으로 간주되지 않아야 한다. 2 타입의 시퀀서들(1620, 1640)만이 도시되어 있지만, 시스템(1600)의 대안 실시예는 추가 타입의 시퀀서를 포함할 수 있다. 또한, 도 16에 도시된 각 시퀀서 타입(1620, 1640)의 수는 시스템(1600)의 대안 실시예의 각 시퀀서 타입의 수에 대한 상한 또는 하한에 관하여 제한적인 것으로 간주되지 않아야 한다. 더 적거나 많은 수의 각 시퀀서 타입(1620, 1640)이 사용될 수 있다.
도 16은 시스템이 (1+s)*t개의 시퀀서를 포함하는 것을 도시하고 있다. 도 16은 전체적인 제1 시퀀서 타입 t(1620)와 제2 시퀀서 타입 s(1640) 간의 t 대 (s*t) 결합 관계를 도시하고 있지만(여기서, t=4, s=3), 이러한 도시는 제한적인 것으로 간주되지 않아야 한다. 대안 실시예에서, t 및 s는 t>0 및 s≥0인 임의 수로 변경될 수 있다.
도 16에서 "T"로 표시되고 본 명세서에서 "T 시퀀서"로서 지칭되는 제1 시퀀서 타입(1620)은 OS에 의해 직접 관리될 수 있으며, OS는 T 시퀀서 상에서 실행하도록 OS 스레드를 스케쥴링할 수 있다. 도 16에서 "S"로 표시되고 본 명세서에서 "S 시퀀서"로서 지칭되는 제2 시퀀서 타입(1640)은 OS에 의해 직접 관리되지 않는다. 대신에, S 시퀀서(1640)는 스레드 내의 사용자 코드에 의해 직접 관리되는데, 이는 스레드와 연관된 쉬레드들을 실행하도록 스레드에 의해 직접 스케쥴링될 수 있다.
아키텍처에 있어서, 각각의 OS 관리 스레드는 하나의 별개의 멀티 시퀀서 앙상블(1650)(본 명세서에서 "메타 프로세서"로서 지칭됨)에 대응할 수 있다. 각각의 메타 프로세서(1650)는 하나의 논리 T 시퀀서(1620) 및 s개의 논리 S 시퀀서를 포함할 수 있다. 도 16은 t(t=4) 개의 메타 프로세서를 나타낸다. 도시된 메타 프로세서 각각은 s(s=3) 개의 S 시퀀서를 포함한다. 따라서, 메타 프로세서(1650) 각각은 총 s+1 개의 시퀀서(즉, s개의 S 시퀀서 플러스 하나의 T 시퀀서)를 포함한다. OS는 메타 프로세서(1650)에 대한 스레드의 스케쥴링을 담당할 수 있으며, 스레드는 또한 그의 다수의 쉬레드를 스케쥴링하고 메타 프로세서 내의 (1+s) 개의 시퀀서 상에서 동시에 실행할 수 있다. 도 16은 시스템의 메타 프로세서(1650)의 수를 제한하거나 각각의 메타 프로세서(1650)와 연관된 S 시퀀서(1640)의 수를 제한하는 것으로 간주되지 않아야 한다. 도 16에 도시된 t 및 s의 특정 값은 단지 예시적일 뿐이다.
도 3 및 16에 도시된 실시예들(300, 1600)과 같은 사용자 레벨 시퀀서 인식 동작들에 대한 지원을 제공하는 멀티 시퀀서 시스템에 대해, 시퀀서는 사실상 아키텍처 자원의 다른 형태이다. 레지스터 자원, 메모리 자원 및 다른 공지된 일반 아키텍처 자원과 마찬가지로, 시퀀서 자원은 별개의 아키텍처 명명 공간을 가질 수 있으며, 가상화 관리될 수 있다.
아키텍처에 있어서, 시퀀서 자원은 적어도 세 개의 컴포넌트, 즉 참조명, 시퀀서 상태 컨텍스트 및 능력 기술자를 포함하지만 이에 한정되지 않는다. 능력 기술자는 스케쥴링 제약 및 요건은 물론 시퀀서가 T 시퀀서인지 S 시퀀서인지와 같은 다른 관련 특성과 같은 시퀀서에 대한 속성 정보를 포함할 수 있다. 아키텍처에 있어서, (1+s) 개의 시퀀서의 메타 프로세서(1650) 내의 임의의 2개의 시퀀서에 대해, 각각의 시퀀서 자원은 참조명이 다르며, 또한 컨텍스트 구성 및/또는 능력 기술자 정보에 관하여 다를 수 있다. 예를 들어, 하나의 시퀀서의 아키텍처 상태 세트는 다른 시퀀서의 그것과 다를 수 있다.
주어진 메타 프로세서(1650)에 대해, SXFR, SSAVE 및 SRTOR과 같은 전술한 시퀀서 인식 명령어는 (1+s) 개의 논리 시퀀서 모두에 대해 정의될 수 있다. 즉, 명령어는 피연산자로서 인코딩된 논리 시퀀서 어드레스들 중 하나 이상을 갖거나, 아니면 명령어 실행 동안 논리 시퀀서 어드레스들 중 하나 이상을 참조할 수 있다.
아키텍처에 있어서, 메타 프로세서(1650)에서의 1개 T 시퀀서(1620)와 s개의 S 시퀀서(1640)의 외관상 정적 결합은 단지 논리적이다(또는 때때로 등가적으로 "가상적"이라고 한다). 즉, 주어진 메타 프로세서 내의 논리 시퀀서 어드레스들은 정적으로 결정될 수 있으며, 예를 들어 0에서 s까지의 범위일 수 있다. 그러나 대안 실시예를 설명하기 위한 목적으로, 도 16은 K개의 물리 시퀀서(Seq 0 - Seq k)를 포함하는 실행 자원들(1680)을 갖는 시스템(1600)을 도시하고 있다는 점에 유의한다. 실행 자원들(1680)의 시퀀서들은 각각 관련 캐시 계층 구조(1692)에 결합될 수 있다. 도 16에는 개별적으로 도시되어 있지만, 시퀀서(Seq 0 - Seq k)에 대한 캐시 계층 구조(1692)는 온 칩 캐시는 물론, 또는 그 대신에 오프 칩 캐시를 포함할 수 있다는 것을 이 분야의 전문가는 이해할 것이다. 도 16은 시퀀서들(Seq 1 - Seq k) 각각이 모든 시퀀서에 의해 공유되는 공유 메모리에 액세스할 수도 있다는 것을 도시하고 있다.
K>0이고, 보다 일반적으로 K≥t인 경우, (1+s)*t개의 논리 시퀀서와 K개의 물리 시퀀서 간의 맵핑은 실행 시간 동안 동적으로 변경될 수 있다. 결과적으로, 이러한 실시예에서는, 하나 이상의 메타 프로세서(1650)에 대한 하나 이상의 논리 T 시퀀서(1620) 및 관련된 하나 이상의 다른 S 시퀀서(1640)에 대응하는 물리 시퀀서들의 정확한 그룹화가 실행 시간 동안 동적으로 변경될 수 있다.
논리 시퀀서 어드레스의 물리 시퀀서로의 동적 맵핑은 "가상화"로도 지칭될 수 있다. 논리 시퀀서 어드레스의 가상화는 실행을 위해 다수의 시퀀서를 필요로 할 수 있는 스레드들이 동적 물리 시퀀서 할당을 통해 실행되는 것을 허가하는 기술이다. 논리 시퀀서 어드레스의 가상화는 물리 멀티 시퀀서 프로세서 구현에 의해 보여질 때 물리 시퀀서인 물리 시퀀서 식별자로부터 스레드에 의해 보여질 때 논리적인 시퀀서 어드레스를 구별하는 추상화를 지칭한다. 이러한 구별로 인하여, 애플리케이션 프로그래머는 논리 시퀀서 어드레스만을 인식하면 된다.
도 3과 관련하여 전술한 실시예(300)와 같이, 도 16에 도시된 시스템(1600)의 시퀀서 인식 명령어는 목적지 시퀀서의 논리 시퀀서 어드레스를 지정할 수 있다. 그러나 시스템(1600)의 적어도 하나의 실시예에서, 논리 시퀀서 어드레스는 물리 시퀀서에 정적으로 맵핑되는 것이 아니라 동적으로 맵핑된다. 논리 시퀀서 어드레스의 물리 시퀀서에 대한 동적 맵핑은 맵핑 관리자(1670)에 의해 관리될 수 있다. 적어도 하나의 실시예에서, 맵핑 관리자(1670)는 도 3과 관련하여 전술한 맵핑 관리자(302)와 유사할 수 있다. 실행 동안, 논리 시퀀서 어드레스의 맵핑은 물리 시퀀서마다 변경될 수 있다(변경되지 않을 수도 있다).
맵핑 관리자(1670)는 논리 시퀀서 어드레스의 물리 시퀀서로의 동적 맵핑에 더하여 시스템(1600)의 시퀀서 자원들의 다양한 상이한 양태를 관리할 수 있다. 맵핑 관리자(1670)는 또한 메타 프로세서(1650)에서의 T 시퀀서(1620)와 하나 이상의 S 시퀀서(1640) 간의 결합을 관리할 수 있다. 또한, 맵핑 관리자는 시퀀서 상태 컨텍스트 및 시퀀서 능력 기술자를 관리할 수 있다.
시퀀서 인식 명령어들을 지원하는 멀티 시퀀서 시스템에 대해, 논리 시퀀서 어드레스 공간의 크기(즉, 시퀀서 인식 명령어들에 사용될 수 있는 상이한 논리 시퀀서 어드레스들의 총 수)는 주어진 시스템에 대해 존재하는 물리 시퀀서들의 수에 관계 없이 아키텍처에 의해 정의될 수 있다. 예를 들어, 멀티 시퀀서 시스템에 대한 실제 시퀀서 수가 보다 적은 수의 비트로 표현될 수 있는지에 관계 없이, 32비트 값이 논리 시퀀서 어드레스를 표현하는 데 사용될 수 있다. 이러한 실시예에서는, 시스템이 얼마나 많은 물리 시퀀서를 포함하는지에 관계없이, k(k=32) 비트가 최대 2k=232개의 논리 시퀀서 어드레스를 표현하는 데 사용될 수 있다.
도 16에 개시된 시스템(1600)과 같은 멀티 시퀀서 시스템 아키텍처를 기술할 때, "k 비트 시퀀서 어드레스 가능성"의 개념을 이용하여, 하나의 스레드(예를 들어, 도 2의 225 또는 226 등)가 하나의 T 시퀀서 및 (2k-1)개의 S 시퀀서를 갖는 하나의 메타 프로세서(예를 들어, 도 16의 1650 등) 상에서 참조할 수 있는 총 수 2k 개의 논리 시퀀서 어드레스를 나타내는 것이 편리할 수 있다. 역으로, (1+s)개의 시퀀서(1620, 1640)의 메타 프로세서(1650)는 log(1+s) 비트의 어드레스 가능 시퀀서 공간을 갖는 것으로서 참조될 수 있다. 따라서, 도 16은 각각의 메타 프로세서(1650)가 2 비트의 어드레스 가능 논리 시퀀서 어드레스 공간을 갖는 것으로 참조되는 멀티 시퀀서 시스템(1600)을 도시하고 있다.
도 4 및 5는 사용자 레벨 시퀀서 인식 명령어에서 사용되는 논리 시퀀서 어드레스에 대한 물리 시퀀서의 동적 맵핑을 제공하는 멀티스레딩 멀티 시퀀서 시스템의 적어도 2개의 개별 대안 실시예(400, 500)를 나타낸다. 도 4 및 5에서 동일 요소는 동일한 참조 번호를 갖는다.
논리 대 물리 시퀀서의 동적 맵핑을 지원하는 시스템(400, 500)에 대해, 애플리케이션 프로그래머는 언제 그리고 어느 물리 시퀀서들이 실행 동안 그들의 애플리케이션을 실행하기 위해 이용 가능할 것인지를 알 필요가 없다. 이들은 단지 이들의 애플리케이션 프로그램에서 논리 시퀀서 어드레스를 사용할 수 있다. 전술한 바와 같이, 멀티 시퀀서 시스템(400, 500)의 프로그램의 뷰(view)로 하여금, 시스템(400, 500)의 물리 시퀀서들(420-426)의 수(N)를 실제로 초과하는 수(M)의 논리 시퀀서 어드레스들("Virt. O" - "Virt. M")을 포함하게 하는 것이 바람직할 수 있다. 이러한 실시예에서, 맵핑 관리자(402, 502)는 M개의 논리 시퀀서 어드레스의 N개의 물리 시퀀서 식별자로의 맵핑을 담당할 수 있다(여기서, M>N). 다른 실시예에서, M=N 또는 M<N이고, 맵핑 관리자(402, 502)는 도 3에 도시된 실시예들에 대해 전술한 것과 유사하거나 잠재적으로 더 간단한 맵핑을 수행할 수 있다.
논리 시퀀서 어드레스의 물리 시퀀서로의 동적 맵핑은 애플리케이션 프로그램에 투명한 방식으로 맵핑 관리자(402, 502)에 의해 "막후(behind the scenes)" 처리된다. 도 4 및 5와 관련하여 사용되는 바와 같이, "물리 시퀀서"는 주어진 물리 멀티 시퀀서 하드웨어 시스템에서 구현되는 실제 시퀀서(예를 들어, 420-426 참조)이다.
도 4 및 5는 시스템(400, 500)이 실행 자원(490)에 결합된 저장 매체(460)를 포함할 수 있다는 것을 나타내고 있다. 저장 매체(460)는 다양한 레벨의 캐시 메모리, ROM과 같은 마이크로코드 또는 펌웨어 저장 장치, DRAM 등과 같은 시스템 메모리, 및 플래시 메모리(예를 들어, 메모리 스틱 등), 자기 또는 광 디스크와 같은 비휘발성 저장 장치를 포함할 수 있지만 이에 한정되지 않는 다양한 레벨의 계층 구조를 갖는 메모리 서브시스템일 수 있다. 도시된 바와 같이, 저장 매체(460)는 애플리케이션 프로그램(440) 및 맵핑 관리자(402, 502)를 저장할 수 있다.
맵핑 관리자(402, 502)는 주로 시퀀서 가상화 관리 태스크를 담당할 수 있다. 전술한 바와 같이, 맵핑 관리자(402, 502)는 도 4 및 5에 도시된 실시예들에서와 같이 저장 매체(460)에 저장된 소프트웨어 프로그램일 필요는 없다. 다른 실시예에서, 맵핑 관리자(402, 502)는 임의의 다양한 레벨의 하드웨어 및 소프트웨어 추상화로 존재할 수 있다. 이러한 추상화는 마이크로아키텍처 레벨, 가상 머신 또는 하이퍼바이저 아키텍처 레벨, OS 커널 또는 드라이버 레벨, 및 비특권 사용자 코드 레벨의 범위일 수 있다.
따라서, 맵핑 관리자(402, 502)는 다양한 추상화 태스크를 수행할 수 있다. 맵핑 관리자(402, 502)는 맵핑 메커니즘은 물론 스케쥴링 메커니즘을 포함할 수 있다. 맵핑 메커니즘은 할당 논리(485) 및 변환 논리(486)를 포함할 수 있다. 스케쥴링 메커니즘은 스케쥴링 논리(487)를 포함할 수 있다.
변환 논리(486)는 논리 시퀀서 어드레스를 참조하는 모든 시퀀서 인식 명령어에 대해 어드레스 변환을 제공하려고 시도할 수 있다. 논리 시퀀서 어드레스의 물리 시퀀서로의 동적 맵핑을 제공하는 시스템(400, 500)에 대해, 논리 시퀀서 어드레스(애플리케이션 프로그램(440)에 의해 사용됨)의 물리 시퀀서 식별자로의 변환은 각 시퀀서 인식 명령어의 논리 시퀀서 어드레스에 대한 참조에 대해 변환 논리(486)에 의해 수행될 수 있다.
도 5는 맵핑 정보를 유지하고 논리 시퀀서 어드레스의 물리 시퀀서 식별자로의 변환을 수행하기 위하여 맵핑 구조(580)를 이용할 수 있는 맵핑 관리자(502)의 대안 실시예를 나타낸다. 맵핑 구조(580)는 적어도 일 실시예에서 저장 매체(460) 내에 위치할 수 있다. 일반적으로, 논리 시퀀서 어드레스를 피연산자로서 포함하거나, 아니면 이를 참조하는 임의의 명령에 대해, 논리 시퀀서 어드레스는 맵핑 구조(580)에서의 탐색을 통해 맵핑 관리자(502)에 의해 변환된다. 적어도 일 실시예에서, 이러한 변환 탐색은 운영 체제의 시스템 레벨 지원을 이용하여 수행될 수 있다. 적어도 하나의 대안 실시예에서, 변환 탐색은 스레드 레벨에서 애플리케이션 고유 가상화에 의해 수행될 수 있다. 또 다른 대안 실시예에서, 변환 탐색은 가상 머신 모니터 또는 하이퍼바이저에 의해 수행될 수 있다.
도 5는 또한 논리 시퀀서 어드레스의 물리 시퀀서 식별자로의 변환을 가속화하기 위하여 변환 논리(486)에 의해 옵션 메커니즘이 사용될 수 있음을 나타낸다. 도 5는 시스템의 실행 자원(490)이 이러한 가속화를 돕기 위한 옵션의 변환 가속 구조(518)를 더 포함할 수 있음을 나타내고 있다. 적어도 일 실시예에서, 변환 가속 구조(518)는 맵핑 구조(580)의 엔트리들의 서브세트를 유지하기 위한 캐시 또는 버퍼로서 동작할 수 있다. 변환 가속 구조(518)에 대한 점선의 사용은 이 구조(518)의 옵션 특성을 나타내기 위함이다.
탐색 수행 후에 변환 논리(486)가 물리 시퀀서를 찾을 수 없거나, 논리 시퀀서 어드레스에 대한 맵핑 정보를 찾을 수 없는 경우, 결함이 트리거된다. 따라서, 결함은 논리 시퀀서 어드레스 변환 미스(본 명세서에서 "LSAT 미스"로서 지칭됨) 시에 발생한다. LSAT 미스 결함은 할당 논리(485)와 같은 핸들러로의 제어 전달을 트리거하여 결함을 유발한 논리 시퀀서 어드레스에 대해 물리 시퀀서를 할당할 수 있다.
이러한 결함과 관련하여, SXFR, SSAVE, SRTOR 등과 같은 시퀀서 인식 명령어들은, 탐색 후에 변환 논리(486)가 물리 시퀀서를 찾을 수 없거나 논리 시퀀서 어드레스에 대한 맵핑 정보를 찾을 수 없는 경우에 실패 조건이 생성되도록 결함 시맨틱을 이용하여 아키텍처를 통해 정의될 수 있다. 결함에 응답하여, 제어는 할당 논리(485)와 같은 결함 핸들러로 전달될 수 있다. 즉, LSAT 결합 조건은 변환 논리(486) 및/또는 맵핑 구조(580)가 논리 대 물리 시퀀서 변환 탐색에 실패한 때 발생할 수 있다.
맵핑 관리자(402, 502)의 다양한 실시예에서, LSAT 미스 결함은 상이한 방식들로 처리될 수 있다. 맵핑 관리자(402, 502)가 하드웨어로 직접 구현되는 적어도 일 실시예에서, 맵핑 관리자(402, 502)는 결함 조건을 처리하는 하드웨어 상태 머신으로서 구현될 수 있다.
다른 실시예에서, LSAT 미스에 의해 트리거되는 결함은 마이크로아키텍처 레벨에서 마이크로코드 흐름에 의해 처리되는 마이크로아키텍처 결함 조건일 수 있다. 마이크로코드 흐름은 저장 매체(460)의 ROM 부분과 같은 마이크로코드 저장 장치에 저장된 마이크로 명령어들의 시퀀스일 수 있다. 적어도 일 실시예에서, LSAT 미스 결함 조건은 마이크로코드 제어 전달이 맵핑 관리자(402, 502)의 할당 논리(485)를 구현하는 전용 마이크로코드 흐름으로 점프하게 할 수 있다.
또 다른 실시예에서, LSAT 미스에 의해 트리거되는 결함 조건은 가상 머신의 아키텍처 특권 레벨에 대해 정의될 수 있다. 결함 조건은 가상 머신 모니터 또는 하이퍼바이저로의 제어 전달을 트리거한다. 이러한 실시예에서, 게스트 운영 체제와 같은 게스트 소프트웨어 상의 LSAT 미스 결함 조건은 호스트 가상 머신 모니터 또는 하이퍼바이저로의 제어 전이("VMEXIT" 등)를 트리거할 수 있다. 가상 머신 모니터 또는 하이퍼바이저는 맵핑 관리자(402, 502)를 구현할 수 있으며, 이어서 이는 결함을 처리한다.
또 다른 실시예에서, LSAT 결함은 메모리 페이지 결함과 유사하게 IA32 아키텍처에서의 링 0 특권 레벨과 같은 운영 체제의 아키텍처 특권 레벨에서 정의된다. 따라서, 적어도 일 실시예에서, LSAT 미스는 시스템 레벨 결함을 트리거할 수 있다. 이러한 실시예는 도 4 및 5에 도시되어 있다. 이러한 실시예에서, 시퀀서 어드레스 변환 결함은 OS 커널 또는 장치 드라이버에서의 시스템 레벨에서 맵핑 관리자(402, 502) 소프트웨어 핸들러로의 제어 전달을 유도할 수 있다. 시스템 특권 레벨은 때때로 소정 아키텍처에서 수퍼바이저 특권 레벨로도 지칭될 수 있다. 이러한 시스템 레벨 LSAT 미스 결함은 예를 들어 로드 명령어에 대한 페이지 미스 시에 트리거되는 메모리 페이지 결함과 유사할 수 있다. 시스템 레벨 LSAT 결함 조건에 응답하여, 운영 체제 또는 장치 드라이버 핸들러일 수 있는 맵핑 관리자(402, 502)가 결함을 처리하도록 호출될 수 있다.
또 다른 실시예에서, LSAT 결함 조건은 사용자 레벨 또는 비 수퍼바이저 레벨 코드(IA32 아키텍처에서의 링 3 특권 레벨 등)와 연관되는 아키텍처 특권 레벨에서 정의될 수 있다. 예를 들어, 결함 조건은, 발생시 맵핑 관리자(402, 502)의 할당 논리(485)를 구현하는 사용자 레벨 핸들러 코드로의 제어 전달을 트리거할 수 있는 사용자 레벨 결함 타입의 "양보 이벤트(yield event)"로서 정의될 수 있다. 이러한 실시예에서, LSAT 미스 결함 조건은 결함 유도 시퀀서 인식 명령어를 포함한 동일 사용자 프로그램에 의해 처리될 수 있다.
전술한 실시예들 중 하나 이상의 실시예에서, 시퀀서 인식 명령어의 실행 동안 논리 시퀀서 어드레스 변환 미스(본 명세서에서 "LSAT 미스"로 지칭됨) 시에 발생하는 결함은 동기 또는 비동기 방식으로 처리될 수 있다. 비동기 방식에서, 시퀀서 미스는 전술한 바와 같이 결함 조건을 트리거할 수 있으며, 결함이 맵핑 관리자(402, 502), 또는 보다 구체적으로 적어도 하나의 실시예에서 할당 논리(485)를 포함하는 핸들러 코드로의 제어 전달을 트리거하는 비동기 이벤트로서 작용하도록 처리될 수 있다. 결함 처리는 이벤트에 의해 구동되며(LSAT 미스 시에 발생한다), 이에 대응하는 결함 핸들러로의 제어 전달은 비동기성이다.
그러나, 적어도 하나의 대안 실시예에서, 아키텍처는 시퀀서 인식 명령어의 비 결함 변형을 정의할 수 있다. LSAT 미스는 핸들러로의 비동기 제어 전달을 유발하는 결함을 유발하는 것이 아니라, 후속 동기 처리를 위해 기록될 수 있다. 미스는 예를 들어 "해독 비트(poison bit)" 또는 다른 미스 지시자의 설정에 의해 기록될 수 있다. 이 경우, 미스 지시자는 나중에 실행 동안 소프트웨어에 의해 검사될 수 있다. 미스 지시자가 설정된 것이 검출되면, 미스는 그때 처리된다. 이러한 방식으로, 미스 지시자에 지시된 결함 조건은 동기식으로 처리될 수 있다.
이러한 실시예에서, 비 결함 시퀀서 인식 명령어의 실행이 LSAT 미스를 유발하는 경우, 명령어는 아키텍처 결함을 생성하지 않는다. 대신에, 미스는 나중 처리를 위해 기록될 수 있으며, 명령어는 실행을 완료한다. 이러한 실시예에서, 미스는 조건 비트(들)의 설정과 유사한 방식으로 아키텍처 상태의 일부로서 기록될 수 있다. LSAT 미스를 기록하도록 설정되는 아키텍처 상태의 하나 이상의 비트는 "해독" 상태로서 지칭될 수 있다. 적어도 일 실시예에서, "해독" 상태를 나타내는 아키텍처 상태는 2 비트 이상일 수 있다. 이러한 적어도 일부 실시예에서는, LSAT 미스가 발생하였는지 외에, LSAT 결함 조건의 잠재적 원인을 지시하는 특정 진단 정보 또는 힌트, 및/또는 결함 조건을 유발한 시퀀서 명령어에 대한 소정 정보 등의 추가 정보가 멀티 비트 상태로 인코딩될 수 있다.
비 결함 실시예들에서, 소프트웨어는 비 결함 시퀀서 인식 명령어에 대한 철회의 완료 후에 해독 상태를 검사할 수 있다. 변환 미스가 기록된 경우, 소프트웨어는 핸들러로의 동기 제어 전달을 수행할 수 있으며, 이어서 핸들러는 변환 미스 결함을 처리할 수 있다. 적어도 일 실시예에서, 시퀀서 인식 명령어의 비 결함 변형에 대한 거동은 인텔사로부터 입수할 수 있는 Itanium 및 Itanium 2 마이크로프로세서의 아키텍처에서의 LD.S 및 CHK.S의 사용 모델과 다소 유사한데, LD.S 명령어는 메모리 페이지 결함을 검사할 수 있지만, 가상 메모리 변환의 실패의 발생시에도 페이지 결함을 유발하지 않는다. 대신, LD.S는 명령어 실행을 완료하지만, 해독 비트(NAT 비트라고 함)를 설정한다. 해독 비트는 나중에 사용자 애플리케이션 소프트웨어에서 CHK.S 명령어에 의해 검사될 수 있으며, 이는 사용자 레벨 핸들러로의 제어 전달을 유발할 수 있다.
요컨대, 많은 상이한 실시예에서, 변환 논리(486)가 물리 시퀀서를 찾을 수 없거나, 시퀀서 인식 명령어에서 지정된 논리 시퀀서 어드레스에 대한 맵핑 정보를 찾을 수 없을 때(본 명세서에서 "LSAT 미스"로 지칭됨), 결함 거동은 결함 핸들러로의 제어 전달을 트리거하는 비동기 아키텍처 이벤트이거나, 소프트웨어에 의해 동기식으로 검사될 수 있는 해독 상태의 기록을 대신 유발할 수 있다. 이러한 결함 거동은 상이한 실시예에서 상이한 특권 레벨(예를 들어, 가상 머신 모니터 및 하이퍼바이저 레벨, 시스템 특권 레벨 및 사용자 레벨 등)에 대해 정의될 수 있다.
도 4 및 도 5의 실시예들(400, 500) 양자에서, 맵핑 관리자(402, 502)는 또한 변환 외에 맵핑 관리를 수행할 수 있다. 적어도 일 실시예에서, 맵핑 관리자의 적어도 일부는 할당 논리(485)에 의해 수행될 수 있다. 할당 논리(485)는 예를 들어 LSAT 미스가 발생할 때 호출될 수 있다. 할당 논리(485)는 물리 시퀀서를 시퀀서 인식 명령어에서 지정되는 논리 시퀀서 어드레스로 맵핑할 수 있다. 물리 시퀀서로 맵핑되는 논리 시퀀서는 본 명세서에서 "활성 논리 시퀀서로 지칭되며, 또한 이에 대응하는 물리 시퀀서는 "오염 물리 시퀀서"라고 할 수 있다. 논리 시퀀서로 맵핑되지 않은 물리 시퀀서는 "이용 가능" 또는 "유휴" 또는 "자유"로서 지칭될 수 있다.
적어도 일 실시예에서, 할당 논리는 활성 논리 시퀀서의 컨텍스트를 대응하는 오염 물리 시퀀서에서 보조 저장 장치(backing store)(도 7과 관련하여 후술함)에 소개한(vacate) 후, 결과적인 이용 가능 물리 시퀀서를, LSAT 미스를 방금 발생시킨 액세스를 갖는 논리 시퀀서에 제공할 수 있다. 이러한 컨텍스트 스왑핑 동작은 예를 들어 어떠한 추가 물리 시퀀서도 유휴 상태가 아니고 맵핑을 위해 이용될 수 있을 때 할당 논리(485)에 의해 이루어질 수 있다.
즉, 실행 자원들(490)은, 맵핑 관리자(402, 502)가 실행을 위해 M개의 논리 시퀀서를 맵핑하고 스케쥴링할 수 있는 유한 수 N의 물리 시퀀서(420-426)를 포함한다. 논리 시퀀서 상에 활성 사용자 스레드(예를 들어, 도 2의 225 등)에 의해 스케쥴링된 각각의 활성 쉬레드(예를 들어, 도 2의 280 및/또는 282 등)는 실행할 물리 시퀀서를 필요로 한다. 따라서, 맵핑 관리자(402, 502)는 논리 시퀀서들로 스케쥴링된 쉬레드들의 실행을 진행하기 위하여 논리 시퀀서들에 대한 물리 시퀀서들의 할당 및 맵핑을 관리할 수 있다.
전술한 할당 및 맵핑 기능을 수행함에 있어서, 맵핑 관리자(402, 502)의 할당 논리(485)는 맵핑될 물리 시퀀서들(420-426)을 논리 시퀀서 어드레스들에 할당할 수 있다. 할당 논리(485)는 1) 다수의 프로세스로부터의 다수의 스레드는 물론, 동일 스레드로부터의 다수의 쉬레드를 수용하도록 시퀀서들을 세분하고, 2) 자주 참조되는 가능한 한 많은 논리 시퀀서들의 동작 세트를 물리 시퀀서들에 맵핑하기 위하여 시퀀서들을 효율적으로 할당함으로써 시퀀서 이용을 최대화하려고 노력한다. 할당 논리(485)는 여러 접근법 중 임의의 접근법을 이용하여 가상 대 물리 시퀀서 맵핑을 관리할 수 있다. 이러한 접근법들은 기본 및 한계, 세그먼트화, 페이징 등을 포함할 수 있다. 이러한 리스트는 전부를 의도하는 것이라 예시적인 리스트이다.
기본 및 한계
도 4에 도시된 맵핑 관리자(402)는 가상 대 물리 시퀀서 맵핑을 관리하기 위한 기본 및 한계 접근법을 지원할 수 있다. 이러한 실시예에서, 맵핑 관리자(402)는 각각의 스레드(또는 등가적으로 각각의 메타 프로세서)에 대한 물리 시퀀서들의 정적 파티션을 지시하는 정적 파티셔닝 접근법을 수용한다. 맵핑 관리자(402)는 하드웨어 맵핑 구조(415)를 이용하여 맵핑을 수행할 수 있다.
적어도 일 실시예에서, 맵핑 구조(415)는 적어도 2개의 레지스터, 즉 기본 레지스터(416) 및 한계 레지스터(417)를 포함한다. 기본 레지스터(416)는 스레드에 대한 기본 시퀀서 식별자 값을 유지할 수 있다. 한계 레지스터(417)는 스레드에 대한 최대 시퀀서 식별자 값을 유지할 수 있다. 한계 레지스터 값은 스레드가 액세스할 수 있는 최고 유효 가상 시퀀서 어드레스를 나타낸다. 더불어, 기본 및 한계 레지스터(416, 417)는 스레드에 대한 물리 시퀀서들의 범위를 정의한다. 기본 및 한계 레지스터(416, 417)의 값들은 스레드가 로딩 또는 스왑핑될 때 맵핑 관리자(402)에 의해 로딩될 수 있다.
기본 및 한계 접근법에서, 스레드는 기본 레지스터(416) 및 한계 레지스터(417)의 값들에 의해 지시되는 물리 시퀀서 식별자들의 범위에 있는 물리 시퀀서들에만 액세스할 수 있다.
범위 검사는 스레드 내의 논리 시퀀서 어드레스에 대한 각 참조 상에 수행될 수 있다. 논리 시퀀서 어드레스에 대한 각 스레드 참조에 대해, 스레드는 0에서 한계 레지스터(417) 내의 값까지의 논리 어드레스 범위에 대한 액세스를 갖는다는 착각을 한다. 그러나, 스레드는 물리적으로는, 기본 레지스터(416) 내의 값에 의해 표현되는 하한에서 기본 레지스터(416) 내의 값 플러스 한계 레지스터(417) 내의 값의 합으로 계산되는 상한까지의 범위에서 물리 시퀀서들에 대한 액세스를 갖는다. 시퀀서 어드레스는 한계 레지스터(417) 내의 상한값과 비교된다. 어드레스가 한계 내에 있지 않은 경우, 맵핑 관리자(402)에 대해 변환 결함이 생성될 수 있다.
세그먼트화
맵핑 관리자(402)에 의해 지원될 수 있는 대안적인 동적 논리 시퀀서 어드레스 관리 접근법은 기본 및 한계 접근법과 세그먼트화 접근법을 통합할 수 있다. 이러한 실시예에서, 실행 자원들(490)은 각각의 "세그먼트"에 대한 한 세트의 기본 및 한계 레지스터들(416, 417)을 포함할 수 있다. 따라서, x개의 세그먼트에 대한 맵핑 구조(415)는 x개의 기본 레지스터(416) 및 x개의 관련 한계 레지스터(417)를 포함할 수 있으며, 각 레지스터 쌍(416, 417)은 "세그먼트"와 연관된다.
"세그먼트"는 논리 시퀀서 어드레스들의 논리 집합 블록이다. 논리 시퀀서 어드레스들의 각 집합 블록은 세그먼트라고 하며, 그 자신의 기본 및 한계 레지스터들(416, 417)과 연관될 수 있다. 몇몇 실시예에서, 기본 레지스터(416)는 세그먼트 기본 레지스터라고 하며, 한계 레지스터(417)는 세그먼트 한계 레지스터라고 한다. 적어도 일부 실시예에서, 세그먼트화는 물리 시퀀서들을 상이한 그룹들로 파티셔닝하는 데 이용되는데, 각 그룹은 예를 들어 전력 성능 특성(예를 들어, 하나의 세그먼트 내의 시퀀서들이 다른 세그먼트 내의 시퀀서들보다 빠르거나 느릴 수 있다) 또는 시퀀서 타입(예를 들어, 하나의 세그먼트 내의 시퀀서들은 T 시퀀서로서 맵핑될 수 있는 반면, 다른 세그먼트로부터의 시퀀서들은 S 시퀀서로서 맵핑될 수 있다)과 같은 특수 능력 특성을 갖는다.
페이징 기반 논리 시퀀서 어드레스 관리
도 5는 논리 시퀀서 어드레스들의 동적 맵핑을 관리하기 위해 페이징 기반 접근법을 이용하는 맵핑 관리자(502)의 일 실시예를 나타낸다.
도 5는 물리 시퀀서들(420-426)이 "프레임"(510)으로 지칭되는 작은 균일 크기의 파티션들로서 구성될 수 있다는 것을 나타낸다. 도 5에는 2개의 프레임(510)만이 도시되어 있지만, 이러한 도시는 제한적인 것으로 간주되지 않아야 한다. 맵핑 관리자(502)는 임의 수의 프레임에 대한 가상 대 물리 맵핑을 관리할 수 있다. 또한, 프레임들은 임의 수의 시퀀서를 포함할 수 있다.
맵핑 관리자(502)는 동적 맵핑된 논리 시퀀서 어드레스들에 대한 논리 시퀀서 어드레스 공간이 또한 "페이지"로서 지칭되는 다수의 동일 크기의 파티션으로 분할될 수 있는 페이징 기반 접근법을 실시할 수 있다. 페이지 내의 논리 시퀀서들의 수는 프레임의 그것과 동일하다. 따라서, 논리 시퀀서 어드레스 공간은 사실상 주어진 프레임 크기의 논리 시퀀서 페이지들의 집합이다.
작은 페이지는 잠재적으로 페이지 테이블의 크기를 증가시킬 수 있으며, 큰 페이지는 잠재적으로 내부 조각화(fragmentation)의 비교적 높은 사례를 유발할 수 있다. 할당 논리(485)는 페이지 레벨의 입도로 물리 시퀀서를 할당하고 논리 시퀀서를 맵핑할 수 있다. 도 5에 도시된 실시예에서, 각 프레임은 2개의 물리 시퀀서를 갖는다.
페이지 기반 논리 시퀀서 어드레스 공간에 대한 아키텍처 지원은 페이지 테이블에 대한 포인터를 저장하기 위한 레지스터(525) 또는 다른 구조를 포함할 수 있다. 적어도 일 실시예에서, 페이지 테이블은 예를 들어 메모리와 같은 저장 매체(460) 내의 맵핑 구조(580)에 유지될 것으로 예상된다. 또한, 적어도 일 실시예에서, 포인터 레지스터(525) 내의 값은 페이지 테이블의 기본 메모리 어드레스 또는 위치를 지시하도록 로딩될 것으로 가정된다. 페이징 기반 논리 시퀀서 어드레스 공간에 대한 아키텍처 지원은 또한 페이지 테이블 크기에 대한 값을 유지하기 위한 레지스터(526) 또는 다른 구조를 포함할 수 있다.
페이징 메커니즘은 물리 시퀀서들(420-426)을 시퀀서 할당의 기본 단위인 동일하거나 동일하지 않은 크기의 고정 크기 파티션들로 파티셔닝하는 데 이용될 수 있다. 동일 크기의 고정 시퀀서 파티션들에 대해, 각각의 파티션은 스레드에 할당될 수 있다. 이러한 접근법은, 모든 스레드가 동일 수의 시퀀서에 액세스할 필요는 없을 수 있으므로, 내부 조각화를 유도할 수 있다. 그러나, 이러한 접근법의 이점은 맵핑 관리자(402, 502)의 할당 논리(485)에 의해 이용되는 배치 알고리즘이 보다 유연할 수 있다는 점인데, 이는 모든 파티션이 동일 크기이고, 따라서 스레드가 실제로 어느 특정 이용 가능 파티션에 할당되는가는 문제가 되지 않을 수 있기 때문이다.
페이징 메커니즘에 대한 동일 크기 파티션들의 사용은 간단한 비트맵의 사용이 논리 시퀀서 어드레스들의 크고 성긴 세트로부터의 논리 시퀀서들의 작은 동작 세트를 작은 물리 시퀀서 세트로 맵핑하는 것을 가능하게 한다. 이러한 이익은, 세그먼트가 한 세트의 연속 넘버링된 물리 시퀀서를 나타내는 세그먼트화 접근법에서는 실현되지 않는다. 세그먼트화 접근법에서, 맵핑 관리자(402, 502)는 소수의 분리된 논리 시퀀서 어드레스 서브세트만을 물리 시퀀서들에 맵핑할 수 없다.
대안으로, 가변 크기들의 고정 세트의 페이지들이 맵핑 관리자(402, 502)에 의해 할당될 수 있다. 이러한 접근법에서, 스레드는 스레드를 위해 충분히 큰 최소의 이용 가능 파티션을 할당받을 수 있다. 할당 논리(485)는 보다 작은 시퀀서 블록을 필요로 하는 스레드에 보다 작은 파티션을 할당할 수 있으므로, 내부 조각화는 동일 크기의 고정 파티션 접근법에서보다 적을 수 있다. 즉, 각각의 스레드를, 그 스레드에 맞는 최소 이용 가능 파티션에 할당할 수 있다. 이러한 접근법은 잠재적으로 외부 조각화를 유도할 수 있다. 즉, 이용 가능 물리 시퀀서(420-426)의 합이 스레드의 물리 시퀀서 요구에 충분하여도 스레드에 충분한 큰 물리 시퀀서들의 단일 파티션이 이용 가능하지 않을 때 외부 조각화가 발생할 수 있다. 따라서, 할당 논리(485)는 동일 크기의 파티션보다 가변 길이의 고정 파티션에 대해 배치 알고리즘에서 적은 유연성을 갖는다.
대안으로, 맵핑 관리자(402, 502)는, 시퀀서 파티션들이 가변 크기를 갖고 동적으로 생성될 수 있는 파티셔닝 접근법을 지원할 수 있다. 이러한 접근법에서, 할당 논리(485)는 각각의 스레드에 대해 적절한 수의 시퀀서를 정확히 할당할 수 있다. 하나의 스레드에 대해 둘 이상의 시퀀서가 이용될 수 있는 시스템에서, 동적 시퀀서 할당 및 할당해제는 외부 조각화를 유발할 수 있다. 이러한 외부 조각화를 피하기 위하여, 동적 시퀀서 파티셔닝 접근법을 이용하는 시스템의 맵핑 관리자(402, 502)는 압축을 구현할 수 있다. 이러한 압축은 하나 이상의 스레드에 대한 모든 시퀀서의 상태 컨텍스트들의 재배치(예를 들어, 도 9의 재배치 논리(910) 참조)를 수반하여 이들이 다른 할당된 시퀀서들과 "인접"할 수 있고, 자유 물리 시퀀서들이 인접 블록에 남겨질 수 있다는 점에서 비교적 큰 관련 오버헤드를 갖는다. 적어도 일부 실시예에서, 재배치 논리(910)는 논리 대 물리 시퀀서 맵핑과 연관된 소정의 능력 요건을 만족하도록 시퀀서를 재배치하고 재맵핑하기 위해 호출된다. 예를 들어, 일 실시예에서, 논리 시퀀서는 기본 물리 시퀀서가 소정의 열 임계치를 초과할 때마다 재맵핑을 요구하는 능력 기술자와 연관될 수 있다. 적어도 일 실시예에서, 910에 의해 수행되는 결과적인 재배치 동작은 때로는 "시퀀서 호핑"으로 지칭된다.
동적 시퀀서 맵핑을 이용하는 시스템에 대한 맵핑 관리자(402, 502)의 할당 논리(485)는 임의의 여러 맵핑 기술을 구현할 수 있다. 이러한 맵핑 기술들은 개별 물리 시퀀서, 세그먼트, 페이지 등과 같은 임의의 할당 단위에 대해 이용될 수 있다. 이러한 접근법들의 부분적 리스트가 아래에 설명된다. 그러나, 이 분야의 전문가는 할당 논리(485)가 논리 대 물리 시퀀서 맵핑의 수행시에 시퀀서의 능력 속성들을 추가로 고려할 수 있다는 것을 이해할 것이다. 이러한 능력 속성 기반 맵핑 고려에 대한 추가 논의는 도 13과 관련하여 설명된다.
일반적으로, 동적 시퀀서 할당 및 맵핑 접근법을 따르는 시스템에 대한 할당 논리(485)에 의해 이용되는 맵핑 알고리즘은 다음을 포함할 수 있지만, 이러한 리스트는 전체 리스트를 의도하지는 않는다.
a. 최상 적합도 알고리즘. 맵핑 관리자(402, 502)는 물리 시퀀서들의 모든 자유 파티션을 스캐닝하고, 크기가 요청 스레드에 필요한 크기에 가장 가까운 물리 시퀀서들의 파티션을 선택한다. 이러한 알고리즘은 비교적 근접한 적합도를 얻을 수 있으며, 따라서 실제 시퀀서들을 충분히 이용할 수 있는데, 즉 충분히 큰 최소의 이용 가능 파티션이 스레드에 할당될 수 있다.
b. 제1 적합도 알고리즘. 맵핑 관리자(402, 502)는 충분히 큰 시퀀서들의 제1 이용 가능 파티션을 선택한다.
c. 다음 적합도 알고리즘. 맵핑 관리자(402, 502)는 최종 선행 할당의 위치로부터 시작하는 시퀀서들의 파티션들을 스캐닝하여, 충분히 큰 다음 이용 가능 파티션을 선택한다.
시퀀서들이 어떻게 파티셔닝되는지에 관계없이, 맵핑 관리자(402, 502)는 제1 프로그램에서의 논리 시퀀서 어드레스에 대한 참조가 LSAT 미스를 발생시킬 때마다 물리 시퀀서 또는 물리 시퀀서들의 파티션의 스레드로의 동적 맵핑을 관리하는 할당 논리(485)를 포함할 수 있다. 프로그램에 의한 논리 시퀀서 어드레스의 후속 참조는 LSAT 미스의 발생 없이 변환 논리(486)에 의해 변환될 수 있다.
전술한 파티셔닝 스킴들의 일부는 표면적으로는 공지의 메모리 관리 기술들과 유사한 것처럼 보일 수 있지만, 이러한 기술들의 시퀀서에 대한 적용은 고유한 문제를 수반한다. 레지스터 및 메모리 가상화 스킴들과 달리, 시퀀서는 데이터 저장의 공간적 컨텍스트만을 수반하지는 않는다. 대신에, 각 시퀀서는 훨씬 더 많은 특성, 따라서 더 복잡한 고려 사항을 수반하는 실행 자원이다.
동적 맵핑 자원으로서의 물리 시퀀서의 고유 특징들 중 적어도 일부를 더 설명하기 위하여, 아래의 설명은 물리 시퀀서를 시퀀서 할당의 기본 단위로서 참조한다. 그러나, 이 분야의 전문가는 아래의 설명이 물리 시퀀서의 세그먼트 및/또는 프레임을 포함하는 다른 할당 단위에도 적용된다는 것을 이해할 것이다.
스레드는 다수의 시퀀서 인식 명령어를 포함할 수 있다. 이러한 스레드 내의 명령어들에서 참조되는 고유 논리 시퀀서 어드레스들의 수를 반영하기 위하여 값 Y를 사용한다. 맵핑 관리자(402, 502)는 물리 시퀀서를 스레드의 Y개의 논리 시퀀서 어드레스 각각에 동적으로 맵핑할 수 있다. 총 Y개의 고유 논리 시퀀서 어드레스를 포함하는 스레드에 대해, 스레드는 스레드에 할당된 적어도 하나의 물리 시퀀서가 존재하는 한 진행할 수 있다. 맵핑 관리자(402, 502)는 단일 물리 시퀀서 상에 다수(Y)의 논리 시퀀서 컨텍스트를 멀티플렉싱함으로써 이를 달성할 수 있다. 즉, OS에 의해 주어지는 스레드의 할당량 동안, 맵핑 관리자(402, 502)는 스레드의 Y 다수의 시퀀서 컨텍스트 각각을 Z개의 물리 시퀀서에 교대로 맵핑할 수 있는데, 여기서 Z는 단지 1일 수 있다. 이러한 멀티플렉싱은 임의 수의 Y 논리 시퀀서 어드레스 및 Z 물리 시퀀서에 대해 수행될 수 있는데, 여기서 Y>Z이다.
적어도 일 실시예에서, Y>Z 멀티플렉싱 상황을 처리하기 위하여, 멀티 시퀀서 멀티스레딩 시스템(500)은 논리 시퀀서 컨텍스트 큐("LSCQ")(527)를 포함할 수 있다. 적어도 일 실시예에서, LSCQ(527)는 데이터 구조일 수 있다. 도 5에 도시된 실시예에서, LSCQ(527)는 메모리 시스템일 수 있는 저장 매체(460)에 저장되며, 보조 저장 장치(575)의 일부일 수 있다. 적어도 일 실시예에서, LSCQ(527)는 적어도 Y-Z 개의 엔트리를 포함하며, 최대 Y개의 엔트리를 포함할 수 있다. 각각의 엔트리는 논리 시퀀서에 대한 컨텍스트 정보는 물론, 시퀀서 호핑 요건 및 시퀀서 스케쥴링 요건과 같은 능력 속성 정보와 같은 다른 정보도 유지할 수 있다.
Y개의 논리 시퀀서 어드레스를 가진 스레드가 Z개의 물리 시퀀서 상에서 실행되도록 멀티플렉싱될 때, 맵핑 관리자(402, 502)는 하나의 논리 시퀀서가 물리 시퀀서에 대해 스위치 아웃되고 새로운 논리 시퀀서가 물리 시퀀서에 대해 스위치 인되는 임의의 시간에 시퀀서 컨텍스트 스위칭을 수행한다. 이러한 컨텍스트 스위칭 동안, Y개의 논리 시퀀서 중 활성 논리 시퀀서와 연관되는 오염 물리 시퀀서의 현재 컨텍스트는 LSCQ(527)의 대응 엔트리에 저장된다. 이어서, 새로운 논리 시퀀서의 컨텍스트가 물리 시퀀서에 대해 복사 또는 "스위치 인"된다.
따라서, 맵핑 관리자(402, 502)는 논리 시퀀서 어드레스들의 물리 시퀀서들로의 X>Z 멀티플렉싱 동안 현재 논리 시퀀서(스위치 아웃되는 논리 시퀀서)에 대한 컨텍스트 저장 동작 및 새로운 논리 시퀀서(스위치 인되는 논리 시퀀서)에 대한 컨텍스트 복원 동작을 수행할 수 있다. 맵핑 관리자(402, 502)는 LSCQ(527)에 멀티플렉싱된 Y개의 논리 시퀀서 컨텍스트를 저장하고, LSCQ(527)로부터 멀티플렉싱된 Y개의 논리 시퀀서 컨텍스트를 복원하는 것으로 가정한다.
OS 레벨 스레드 스위치가 제1 스레드에 대해 수행될 때, OS는 스레드에 대한 Z개의 물리 프로세서의 컨텍스트는 물론, 스레드와 연관된 Y-Z 개의 비활성 논리 시퀀서 어드레스에 대해 LSCQ(527)에 저장된 임의의 컨텍스트 정보를 OS 커널 저장 영역에 전체 스레드 컨텍스트로서 저장하기 위해 SSAVE 동작을 수행할 수 있다. 후속 스레드 스위치 시에, 모든 Y개의 논리 시퀀서 컨텍스트를 포함하는 스레드 컨텍스트를 복원하기 위해 OS 커널에 의해 SRSTOR 동작이 수행될 수 있다. OS 커널에 의해 수행될 수 있는 이러한 동작들은 본 명세서에서 가상화된 SSAVE 및 SRSTOR 동작으로 지칭된다. 이러한 SSAVE 및 SRSTOR 동작은 OS에 의해 수행될 수 있다. 적어도 몇몇 실시예에서, 가상화된 SSAVE 및 SRSTOR 메커니즘은 전술한 바와 같은 가상 머신 모니터 및 마이크로코드 계층들을 포함하는 상이한 특권 레벨들에서 수행될 수 있다.
SRSTOR 동작 동안, OS는 스레드의 Y개의 논리 시퀀서 컨텍스트 중 Z개 만큼 많은 컨텍스트를 OS 커널의 스레드 컨텍스트 영역에서 이제 스레드에 대해 이용 가능하게 된 Z개의 물리 시퀀서로 복원할 수 있다. (Z는 이제 스레드가 이전에 활성이었던 때와 다른 수일 수 있으며, 최대 Z=1이다.) 스레드의 Y개의 가상 시퀀서 상태 중 나머지는 스레드의 LSCQ(527)의 Y-Z 개의 엔트리에 저장된다. 적어도 하나의 다른 실시예에서, SRSTOR 동작은 Z개의 논리 시퀀서 컨텍스트를 대응하는 Z개의 물리 시퀀서에 직접 저장하는 것이 아니라, SRSTOR 동작 동안에 모든 Y개의 논리 시퀀서 컨텍스트를 커널 스레드의 컨텍스트 저장 영역에서 Y 엔트리 LSCQ(527)로 복원한다. 이러한 실시예들에서, Y개의 논리 시퀀서 컨텍스트는 다양한 전략을 이용하여 Z개의 물리 시퀀서로 맵핑되고 스케쥴링될 수 있다. 이러한 전략들은 요청시(on demand) 할당을 포함할 수 있다. 요청시 할당에 대해, 논리 시퀀서가 참조될 때, 논리 시퀀서는 LSCQ(527)로부터 스케쥴링되며, 맵핑 관리자(402, 502)는 논리 시퀀서로 맵핑할 Z개의 물리 시퀀서로부터 유휴 물리 시퀀서를 찾으려고 시도한다. 유휴 물리 시퀀서가 없는 경우, 맵핑 관리자(402, 502)는 오염 물리 시퀀서를 선택하고, 시퀀서 컨텍스트 "스왑"을 수행하여 LSCQ(527) 내의 대응 논리 프로세서에 대한 적절한 엔트리에 컨텍스트를 저장한 후, 방금 소개된 물리 시퀀서로 맵핑할 새로운 논리 시퀀서를 스케쥴링한다.
대안으로, 멀티플렉싱 동안, 맵핑 관리자(402, 502)는 스레드에 대한 할당량 전반에서 Z개의 물리 시퀀서 상의 실행을 위해 Y개의 논리 시퀀서를 스케쥴링한다. 맵핑 관리자(402, 502)는 부 할당량을 이용하는 단순 시간 기반 라운드 로빈 접근법과 같은 스케쥴링 접근법을 이용할 수 있다. 각각의 부 할당량은 스레드 스케쥴링에 대한 OS 할당량의 분수 또는 일부일 수 있다. 대안으로, 맵핑 관리자(402, 502)는 이벤트 구동 접근법과 같은 다른 스케쥴링 접근법을 이용할 수 있다. 이벤트 구동 접근법에서, 논리 시퀀서는 캐시 미스 또는 비교적 긴 다른 대기시간 이벤트의 발생시에 물리 시퀀서로부터 스위칭 아웃될 수 있다. 이벤트 구동 접근법에서, 논리 시퀀서는 또한 오염 물리 시퀀서가 (시퀀서 호핑을 포함할 수 있는) 재스케쥴링을 위해 맵핑된 논리 시퀀서가 LSCQ(527)로 소개될 것을 요구하는 열 임계치를 초과하는 것과 같이 능력 제약 검사로 인해 일어나는 이벤트의 발생시 물리 시퀀서로부터 스위치 아웃될 수 있다.
적어도 일 실시예에서, 맵핑 관리자(402, 502)에 의해 수행되는 LSCQ(527) 관리는 운영 체제의 일부일 수 있다. 이러한 실시예에서, OS는 LSCQ(527)의 관리 및 Z개의 물리 시퀀서 상의 Y개의 논리 시퀀서 컨텍스트의 스케쥴링을 담당할 수 있다.
도 6은 맵핑 관리자(도 5)에 의해 유지될 수 있는 맵핑 구조(508)의 추가 상세를 나타낸다. 도 6은 도 5와 관련하여 설명된다. 맵핑 구조(508)는 논리 대 물리 시퀀서 어드레스 변환을 수행하기 위한 변환 논리(486)에 의해 참조될 수 있다. 맵핑 구조 내의 엔트리들은 물리 시퀀서가 논리 시퀀서 어드레스에 대해 재배치를 포함하는 할당 또는 비할당될 때 할당 논리(485)(도 5)에 의해 관리될 수 있다.
맵핑 구조(508)는 각 스레드에 대한 맵핑 테이블(610)을 포함할 수 있다. 예를 들어, 도 6은 스레드들(A, B, C, D)과 각각 연관된 맵핑 구조들(610a, 610b, 610c, 610d)을 나타낸다. 도 6에는 4개의 특정 스레드만이 도시되어 있지만, 도 6의 예는 제한적인 것으로 간주되지 않아야 한다. 도 6은 임의 수 x의 스레드가 페이징 기반 논리 시퀀서 어드레스 맵핑 접근법을 지원하는 맵핑 관리자(도 5의 맵핑 관리자)에 의해 수용될 수 있다.
적어도 일 실시예에서, 맵핑 구조(508)는 또한, 맵핑 관리자(502)가 현재 할당되어 있지 않고, 따라서 새로운 논리 시퀀서 어드레스가 시퀀서 인식 명령어에서 참조될 때 할당에 이용될 수 있는 물리 프레임들의 추적을 유지할 수 있는 자유 시퀀서 프레임 리스트(620)를 포함할 수 있다.
예시적인 목적일 뿐 제한적인 것으로 간주되지 않아야 하는 도 6에 도시된 예에서, 각각의 맵핑 테이블(610)은 대응 스레드의 각 페이지에 대한 엔트리를 포함하는 시퀀서 페이지 테이블이다. 따라서, 도 6의 예는 스레드 A 및 스레드 B 각각에 대한 3개의 페이지를 포함하며, 스레드 C 및 스레드 D 각각에 대한 4개의 페이지를 포함한다. 시퀀서 페이지 테이블(610)은 아래의 설명에서 간단히 "페이지 테이블"로서 지칭될 수 있다.
도 6은 스레드 페이지 테이블(610)의 각 엔트리(630)가 시퀀서 페이지 프레임 어드레스 필드(632)를 포함할 수 있다는 것을 나타내고 있다. 맵핑 관리자(502)는 물리 시퀀서가 엔트리(632)에 대응하는 페이지에 대해 할당될 때 페이지 프레임 어드레스 필드(632)에 하나의 값을 배치할 수 있다. (적어도 일 실시예에서, 이 값은 최초 할당을 위해 할당 논리(485)에 의해, 또는 재배치를 위해 재배치 논리(도 9의 910 참조)에 의해 어드레스 필드(632)에 배치될 수 있다.) 페이지 프레임 어드레스 필드(632)의 값은 맵핑된 시퀀서와 관련된 페이지 프레임에 대한 페이지 프레임 어드레스를 지시한다. 현재 활성인 스레드에 대해, 페이지 프레임 어드레스 필드(632)의 값은 대응 스레드의 페이지가 할당된 물리 시퀀서 프레임의 기본 어드레스를 지시할 수 있다. 실행을 완료하지 않았지만 다른 스레드를 위한 공간을 만들기 위해 스왑 아웃된 스레드에 대해, 시퀀서 페이지 프레임 어드레스 필드(632)의 값은 보조 저장 장치(575)(예를 들어, 도 5의 보조 저장 장치(575) 참조)에 저장된 스레드의 맵핑되지 않은 시퀀서 페이지 컨텍스트 정보에 대한 포인터 어드레스를 제공한다.
도 6은 엔트리(630)가 존재/부재 필드(634)를 더 포함할 수 있다는 것을 나타내고 있다. 존재/부재 필드(634)의 값은 스레드 페이지에 대한 컨텍스트 정보가 물리 시퀀서 프레임 상에 위치하는지 또는 보조 저장 장치(575)에 위치하는지를 식별할 수 있다. 따라서, 존재/부재 필드의 값은 맵핑 관리자(502)에 의해 시퀀서 페이지 프레임 어드레스 필드(632)의 내용이 물리 시퀀서 프레임의 기본 어드레스인지 또는 보조 저장 장치(575) 내의 논리 시퀀서 페이지의 위치를 지시하는지를 판정하는 데 이용될 수 있다. 존재 비트의 값은 소정 실시예들에서 페이지 결함을 트리거하기 위해 검사될 수 있다.
도 6은 각 엔트리(630)가 추가 필드를 더 포함할 수 있다는 것을 나타내고 있다. 몇몇 실시예에서, 이들 추가 필드 중 하나 이상은 엔트리(630)에 의해 표현되는 가상 시퀀서 프레임과 연관된 특성 또는 제약을 지시하기 위한 능력 속성들에 대한 기술자를 유지할 수 있다. 예를 들어, 엔트리(630)는 맵핑 관리자(502)의 보호 논리 및 옵션인 공유 논리(도 9의 912, 914 참조)에 의해 이용될 수 있는 보호 필드(636)를 포함할 수 있다.
물론, 다양한 실시예는 도 6에 도시된 것과 다르거나 추가적인 필드를 포함할 수 있다. 예를 들어, 엔트리(630)는 스케쥴링 필드(638)를 포함할 수 있다. 스케쥴링 필드(638)는 관련된 논리 시퀀서 프레임에 대한 스케쥴링 정보를 유지할 수 있다. 스케쥴링 정보는 예를 들어 시퀀서 호핑과 같은 재배치를 포함하는 맵핑 또는 재맵핑을 위해 언제 또는 얼마나 자주 시퀀서 프레임을 재스케쥴링할지를 지시하는 하나 이상의 나이 기반 힌트를 포함할 수 있다. 추가로 또는 대신에, 스케쥴링 정보(638)는 논리 시퀀서 프레임이 스케쥴링되는 물리 프로세서에 바람직한 하나 이상의 특성을 지시하는 능력 정보를 포함할 수 있다. 예를 들어, 능력 기반 스케쥴링 정보는 타겟 물리 시퀀서 프레임에 대한 원하는 최소 성능 또는 최대 명령어당 에너지 기준(metric)을 포함할 수 있다.
도 10에 대한 간단한 참조는 논리 시퀀서 어드레스(1030)를 물리 시퀀서 식별자(1040)로 변환하기 위한 방법(1000)의 적어도 일 실시예를 설명한다. 적어도 일 실시예에서, 방법(1000)은 맵핑 관리자의 변환 논리(예를 들어, 도 5에 도시된 바와 같은 맵핑 관리자(502)의 변환 논리(486)를 참조)에 의해 수행될 수 있다.
도 10은 맵핑 구조(예를 들어, 도 5의 580 참조)를 이용하여 논리 시퀀서 어드레스 변환을 수행하기 위한 일반적인 방법(1000)의 적어도 일 실시예에 대한 데이터 및 제어 흐름을 나타내는 흐름도이다. 보다 구체적으로, 도 10은 맵핑 구조(580)(도 5)로서의 하나 이상의 페이지 테이블(1010)의 이용을 나타낸다.
방법(1000)은 다수의 시퀀서(예를 들어, 도 5의 420-426 참조)를 포함하는 멀티 스레딩 시스템에 대한 논리 시퀀서 어드레스 변환을 수행하는 데 이용될 수 있다. 방법(1000)은 도 5에 도시된 맵핑 관리자(502)와 유사한 맵핑 관리자(1020)에 의해 수행될 수 있다. 적어도 일 실시예에서, 방법(1000)은 맵핑 관리자의 변환 논리(예를 들어, 도 5의 맵핑 관리자(502)의 485 참조)에 의해 수행될 수 있다. 적어도 일 실시예에서, 맵핑 관리자(1020)는 운영 체제 프로그램일 수 있으며, 따라서 방법(1000)은 운영 체제에 의해 수행된다. 적어도 하나의 다른 실시예에서, 방법(1000)은 예를 들어 애플리케이션 프로그래머에 의해 작성된 사용자 레벨 루틴인 맵핑 관리자(1020)에 의해 수행될 수 있다. 적어도 하나의 다른 실시예에서, 방법(1000)은 가상 머신 모니터 또는 하이퍼바이저인 맵핑 관리자(1020)에 의해 수행될 수 있다. 적어도 하나의 실시예에서, 맵핑 관리자(1020)에 의해 수행되는 방법(1000)은 변환 가속 구조(예를 들어, 도 5에 도시된 518)를 이용하여 가속화될 수 있다.
도 5와 관련하여 전술한 물리 시퀀서들(420-426)은 대칭일 필요가 없으며, 이들의 수는 제한적인 것으로 간주되지 않아야 한다는 점에 유의한다. 대칭과 관련하여, 물리 시퀀서들 중 하나 이상은 임의의 특성 또는 가치 기준에 있어서 다른 물리 시퀀서들 중 하나 이상과 다를 수 있다. 적어도 몇몇 실시예에서, 물리 시퀀서 특성 또는 가치 기준은 규모, 워드 및/또는 데이터 경로 크기, 토폴로지, 메모리 타입 및/또는 크기, 전력 소모, 기능 유닛들의 수, 통신 아키텍처(멀티 드롭 대 점대점 상호 접속), 동작 주파수, 크기, 사이클당 명령어, 명령어당 에너지 소비, 열 특성, 명령어 세트 지원 면에서의 능력, OS 가시성, 또는 기능과 관련된 임의의 다른 기준, 성능, 풋프린트, 전력, 열 기준 등을 포함할 수 있다. 이들 특성은 예시적일 뿐, 한정적인 것으로 간주되지 않아야 한다. 이들은 비대칭 멀티 시퀀서 시스템 내의 2개의 물리 시퀀서가 이들 특성 또는 기준 중 어느 하나 또는 조합에 관하여 다를 수 있다는 것을 설명하기 위한 예들의 부분 리스트로서 제공된다. 적어도 몇몇 실시예에서, 이들 특성 중 일부는 논리 시퀀서들에 대한 능력 기술자의 일부로서 표현되고 논리 대 물리 시퀀서 맵핑 시에 검사될 수 있다.
시퀀서들의 수와 관련하여, 변환 방법(1000)은 임의 수의 시퀀서에 대해 이용될 수 있다. 예를 들어, 변환 방법(1000)은 4개, 8개, 16개, 32개, 64개, 128개 이상의 시퀀서를 포함하는 멀티 시퀀서 시스템에 대해 구현될 수 있다.
도 10은 변환을 수행하기 위하여 맵핑 관리자(1020)가 논리 페이지 번호(1032) 및 오프셋(1034)을 포함하는 논리 시퀀서 어드레스(1030)를 수신(1050)할 수 있다는 것을 나타낸다. 따라서, 논리 시퀀서 어드레스(1030)는 스레드에 의한 논리 시퀀서 어드레스의 사용을 논리 페이지 번호 및 페이지 내의 오프셋에 효과적으로 맵핑한다. 도 10은 논리 시퀀서 어드레스(1030)가 스레드 N과 같은 스레드 내의 시퀀서 인식 명령어에서 지정되었을 수 있다는 것을 나타낸다.
도 10은 맵핑 관리자(1020)가 논리 시퀀서 어드레스(1030)를 물리 시퀀서 식별자(1040)로 변환하기 위하여 스레드 N과 연관된 적절한 스레드 시퀀서 페이지 테이블(1010)을 이용할 수 있다는 것을 일반적으로 나타낸다. 구체적으로, 도 10은 1052에서 맵핑 관리자(1020)가 논리 시퀀서 어드레스(1030)의 페이지 번호(1032)("001")를 페이지 테이블(1010)로의 인덱스로서 이용한다는 것을 나타낸다. 1054에서, 페이지 테이블(1010)의 인덱싱된 엔트리에서의 값("111")이 변환된 물리 시퀀서 식별자(1040)의 지정된 페이지 프레임 부분(1042) 내로 배치된다.
도 10은 또한, 1056에서 맵핑 관리자(1020)가 논리 시퀀서 어드레스(1030)의 오프셋(1034)("010")을 변환된 물리 시퀀서 식별자 식별자(1040)의 지정된 오프셋 부분(1044)으로 직접 복사할 수 있다는 것을 나타낸다.
따라서, 요컨대, 도 10은 논리 시퀀서 어드레스를 물리 시퀀서 식별자로 변환하기 위한 방법(1000)이 논리 시퀀서 어드레스(1030)를 수신하는 단계(1050); 페이지 번호("111")를 결정하기 위하여 논리 시퀀서 어드레스(1030)의 일부(1032)를 페이지 테이블(1010)로의 인덱스로 사용하는 단계(1052); 페이지 번호를 변환된 시퀀서 식별자(1040)의 지정 부분(1042) 내에 배치하는 단계(1054); 및 논리 시퀀서 어드레스(1030)의 다른 부분(1034)을 변환된 시퀀서 식별자(1040)의 오프셋 부분(1044)으로 복사하는 단계(1056)를 포함할 수 있다는 것을 나타낸다.
도 6 및 10에 도시된 예들은 가상 시퀀서 어드레스 변환 방법(1000)이 단일 레벨의 페이지 테이블로 한정되는 접근법으로 한정된다는 것을 의미하는 것으로 간주되지 않아야 한다. 예를 들어, 도 6은 페이지 테이블 엔트리(630)가 추가 비트들(640)을 포함할 수 있다는 것을 나타낸다. 적어도 일 실시예에서, 하나 이상의 추가 비트(들)(640)가 적어도 하나의 대안 실시예에서 추가 페이지 테이블 레벨을 지시하는 데 사용될 수 있다. 따라서, 맵핑 관리자(1020)는 다수 레벨의 페이지 테이블을 포함하는 접근법을 실시할 수 있다.
변환을 위한 옵션적 하드웨어 가속
도 5를 참조하면, 동적으로 맵핑되는 논리 시퀀서 어드레스의 변환을 지원하는 멀티 시퀀서 멀티스레딩 시스템(500)의 적어도 일 실시예는 옵션인 변환 가속 구조(518)를 포함할 수 있다는 것을 알 수 있다.
적어도 일 실시예에서, 구조(518)는 페이지 테이블 또는 다른 타입의 맵핑 구조(580)의 엔트리를 캐싱하기 위한 시퀀서 어드레스 변환 참조 버퍼("STLB")일 수 있다. 실행 자원(490)의 하드웨어 구조(518) 내의 엔트리의 캐싱은 변환 속도를 가속화할 수 있다. 가속화에 대한 하나의 이유는 시퀀서들(420-426)이 저장 매체(460) 상에 위치하는 맵핑 구조(580)에 액세스하는 데 시간이 걸리지 않고 구조(518)에 액세스한다는 것이다. 예를 들어, 도 10에 도시된 변환 예에서, 도 5의 STLB(518)가 페이지 테이블(1010)의 엔트리 001의 내용을 포함하는 것으로 가정한다. 이 경우, 탐색 및 변환은 저장 매체(460)에 위치할 수 있는 스레드 N의 페이지 테이블(1010)에 액세스할 필요 없이 실행 자원(490)(도 5) 내의 STLB 논리에 의해 수행될 수 있다.
도 11은 변환 가속 구조(1100)를 위한 포맷의 적어도 일 실시예를 나타내는 블록도이다. 도 5에 도시된 518과 같은 가속 구조의 엔트리는 도 11에 도시된 가속 구조(1100)의 포맷을 따를 수 있다. 도 11에 도시된 STLB의 실시예의 엔트리에 대해 도시된 필드들(1102-1110)은 단지 예시적인 목적으로 제공된다. 다른 실시예들에서는, 추가적인 또는 다른 정보가 하드웨어 가속 구조(1100) 내에 캐싱될 수 있다.
도 11에 도시된 실시예에서, 구조(1100)의 엔트리는 유효 필드(1102), 논리 페이지 식별자(1104)(예를 들어, 도 10의 1032 참조), 및 물리 페이지 프레임 필드(1110)(예를 들어, 도 10의 1042 참조)를 포함한다.
적어도 일 실시예에서, 스레드 고유 시퀀서 페이지 테이블(예를 들어, 도 10의 1010 참조)의 기본 어드레스는 새로운 스레드에 대한 컨텍스트 변경이 발생할 때 레지스터(1120)로 로딩될 수 있다. 레지스터(1120)는 제어 레지스터일 수 있다. 스레드 컨텍스트 변경이 발생하는 임의 시간에(제어 레지스터(1120)의 수정에 의해 지시됨), 하드웨어 가속 구조(1100)의 내용이 플러시(flush)될 수 있다.
도 5 및 11을 간단히 참조하면, 적어도 일 실시예에서 각각의 시퀀서(420-426)는 상이한 스레드를 동시에 실행할 수 있다는 것을 이해해야 한다. 따라서, 적어도 일 실시예에서, STLB(1100) 및 제어 레지스터(1120)는 각 시퀀서(420-426)에 대해 지정될 수 있다. 따라서, 도 5에 도시된 하드웨어 가속 구조는 각 시퀀서(420-426)에 대해 각각 하나씩 복수의 STLB(1110) 및 제어 레지스터(1120)를 포함할 수 있다.
도 9와 함께 도 5를 계속 참조하면, 도 5는 활성 스레드에 대한 물리 시퀀서의 할당 및 맵핑을 관리하기 위하여, 맵핑 관리자(520)가 할당 논리(485)를 포함할 수 있다는 것을 나타낸다. (도 5 및 9의 동일한 요소들은 동일한 참조 번호를 갖는다.) 할당 논리(485)는 활성 스레드들 사이에 물리 시퀀서들(420-426)을 할당하기 위한 논리를 포함할 수 있다.
논리 시퀀서 어드레스의 물리 시퀀서로의 최초 할당을 수행하는 논리 외에, 도 9는 할당 논리(485)가 다음과 같은 시퀀서 관리 기능, 즉 재배치, 보호 및 공유를 수행하기 위한 논리를 더 포함할 수 있다는 것을 나타낸다. 이들 각각은 아래의 단락에서 보다 상세히 설명된다.
재배치 논리(910)와 관련하여, 예를 들어, 논리 시퀀서 어드레스를 최초로 참조한 스레드가 실행을 완료하기 전에 논리 시퀀서 어드레스와 물리 시퀀서 간의 맵핑이 수정될 필요가 있을 수 있다. 맵핑 관리자(502)가 제2 가상 시퀀서 컨텍스트가 물리 시퀀서로 스왑 인되어야 하는 것으로 판정하면, 현재 맵핑된 논리 시퀀서의 상태는 보조 저장 장치(575)로 스왑 아웃된다. 이러한 스왑핑은 재배치 논리(910)에 의해 수행될 수 있다. 이것은 예를 들어 압축 동안 수행될 수 있다.
이러한 상황에서, 재배치 논리(910)는 논리 시퀀서의 관련 상태가 나중에 현재의 물리 시퀀서로, 또는 다른 물리 시퀀서로 다시 스왑 인될 수 있도록 컨텍스트 및 맵핑 정보를 관리하기 위한 논리를 수행한다. 따라서, 재배치 논리(910)는 맵핑 구조(도 5의 580 참조)에 반영된 바와 같은 각각의 논리 대 물리 시퀀서 맵핑과 연관된 컨텍스트 정보를 관리하기 위한 논리를 포함한다. 또한, 할당 논리(485)는 맵핑을 수정하기 위한 논리를 포함한다. 적어도 일 실시예에서, 이러한 기능은 또한 재배치 논리(910)에 의해 제공될 수 있다. 맵핑 관리자(502)가 외부 조각화를 유발할 수 있는 물리 시퀀서 할당 알고리즘(전술한 최상 적합도 알고리즘 등)을 구현하는 적어도 일 실시예에서, 재배치 논리(910)는 1) 인접 블록과 동일한 스레드에 속하는 물리 시퀀서들을 재배치하고 2) 이에 따라 맵핑 정보를 수정하기 위한 논리를 포함할 수 있다.
도 9는 할당 논리(485)가 보호 논리(912)를 더 포함할 수 있다는 것을 나타낸다. 적어도 일 실시예에서, 보호 논리(912)는 물리 시퀀서에 대한 원하지 않는 액세스를 방지한다. 적어도 일 실시예에서, 이것은 하나의 애플리케이션 스레드가 다른 스레드와 현재 연관되어 있는 논리 시퀀서 어드레스를 참조하지 못하게 함으로써 달성된다. 보호 논리(912)는 물리 시퀀서와 연관된 논리 시퀀서 어드레스에 대한 컨텍스트 정보를 이용하여, 시도된 액세스가 동일 스레드 컨텍스트와 연관된 명령어로부터 생성되는지를 판정할 수 있다. 생성되지 않는 경우, 보호 논리(912)는 액세스를 방지한다. 따라서, 보호 논리(912)는 실행 동안 하나의 시퀀서 또는 시퀀서 프레임의 다른 시퀀서 또는 시퀀서 프레임에 의한 원하지 않는 액세스를 검사하고 그에 대한 보호를 실시한다.
마지막으로, 도 9는 할당 논리(485)가 공유 논리(914)를 포함할 수 있다는 것을 나타낸다. 이러한 공유 논리(914)는 도 5에 점선으로 표시된 바와 같이 옵션이다. 공유 논리(914)는 2개 이상의 스레드가 동일 물리 시퀀서를 공유하는 것을 허가할 수 있다. 스레드들이 하나 이상의 실제 시퀀서들의 공통 세트에 액세스하는 것을 허가하는 실시예들에서, 공유 논리(914)는 허가되는 공유의 타입을 제어하는 지정 파라미터 및 제약을 실시한다.
따라서, 제1 스레드가 활성인 동안, 상이한 스레드가 논리 시퀀서 어드레스에 액세스하려고 시도하는 경우, 보호 논리(912)는 이러한 액세스를 방지할 수 있다. 대안으로, 다수의 활성 스레드가 동일 물리 시퀀서에 액세스할 수 있도록 공유가 허가되는 경우, 옵션인 공유 논리(914)는 공유 파라미터 및 제약을 실시할 수 있다.
이제, 할당 논리(485)에 의해 수행되는 바와 같은 시퀀서 할당의 적어도 일 실시예의 추가 설명을 위해 도 12가 참조된다. 이러한 할당은 물리 시퀀서의 초기 할당, 물리 시퀀서의 재맵핑, 및 맵핑 정보의 유지/갱신을 포함할 수 있다.
도 12는 시퀀서 할당을 위한 방법(1200)의 적어도 일 실시예의 제어 및 데이터 흐름을 나타내는 흐름도이다. 적어도 일 실시예에서, 방법(1200)은 맵핑 관리자(예를 들어, 도 5의 580 참조)에 의해 수행될 수 있다. 보다 구체적으로, 적어도 일 실시예에서, 방법(1200)은 할당 논리(예를 들어, 도 5의 485 참조)에 의해 수행될 수 있다.
도 12는 방법이 블록 1202에서 시작하여 블록 1204로 진행하는 것을 나타낸다. 블록 1204에서, 방법은 소스 시퀀서(104a) 상에서 실행되는 시퀀서 인식 명령어에 파라미터로서 제공되는 목적지 시퀀서의 논리 어드레스를 수신한다.
이어서, 처리는 블록 1206으로 진행하여, 맵핑 구조(1250)에서 탐색이 수행된다. 맵핑 구조(1250)는 저장 매체(예를 들어, 도 5의 460 등)에 저장되는 도 5에 도시된 구조(580)와 같은 맵핑 구조일 수 있다. 이미 할당된 물리 시퀀서 식별자가 얻어질 수 있도록 맵핑 구조(1250)가 논리 시퀀서 어드레스에 대한 유효 엔트리를 포함하는 경우, 탐색(1206)은 히트를 유발했다고 말한다. 그렇지 않은 경우, "미스"가 유발되었다.
적어도 하나의 다른 실시예에서, 블록 1206에서 수행되는 탐색은 도 5에 도시된 구조(518)와 같은 가속 구조에서 최초 수행될 수 있다. 히트(hit)가 발생하면, 처리는 블록 1212로 즉시 진행된다. 히트가 발생하지 않으면, 방법은 이어서 블록 1206에서 전술한 바와 같이 저장 매체에 저장된 맵핑 구조의 탐색을 수행할 수 있다.
블록 1208에서, 미스가 발생하였는지가 판정된다. 블록 1206과 관련하여 전술한 바와 같은 맵핑 구조(및/또는 가속 구조)에서의 미스의 판정 외에, 블록 1208에서의 처리는, 페이지 테이블 엔트리 또는 가속 구조 엔트리가 지정된 논리 시퀀서 어드레스에 대해 존재하는 경우에도, "미스"가 발생한 것으로 판정할 수 있다. 즉, 페이지 테이블 엔트리의 존재/부재 필드(634)의 내용이 지정된 논리 시퀀서 어드레스에 대한 컨텍스트 정보가 보조 저장 장치(도 13의 블록 512 및 보조 저장 장치(550) 참조)로 소개된 것을 지시할 때, 블록 1208에서 "미스"가 판정된다.
도 12는 판정 박스(1208)의 결과로서 처리가 미스에 대해 블록 1210으로, 히트에 대해 블록 1209로 진행하는 것을 나타낸다. 히트에 대해, 블록 1212에서 시퀀서 인식 명령어에 대한 지원이 수행된다. 적어도 일 실시예에서, 블록 1212에서 수행되는 지원은 시퀀서 산술 명령어에 대해, 블록 1206에서의 탐색 동안 얻어진 물리 시퀀서 식별자에 의해 식별되는 목적지 시퀀서(104n)로의 신호 전송을 포함한다. 이러한 신호의 결과로서, 목적지 시퀀서(104n)로의 원하는 시그널링은 시퀀서 산술 명령어에서 지정되는 바와 같이 달성될 수 있다. 블록 1212로부터, 처리는 블록 1214에서 종료한다.
도 12는 블록 1208에서 미스가 판정된 경우 처리가 블록 1210으로 진행함을 나타낸다. 블록 1210에서, 미스 결함 핸들러가 호출된다. 이어서, 처리는 블록 1214에서 종료한다.
도 13은 블록 1210 처리(도 12 참조)의 결과로서 호출될 수 있는 미스 처리를 위한 방법(1300)의 적어도 일 실시예의 제어 흐름 및 데이터 흐름을 나타내는 흐름도이다. 이 분야의 전문가는 블록 1210에서 결함 핸들러를 직접 호출하는 것이 아니라 블록 1210에서 시퀀서 페이지 결함이 트립(trip)될 수 있다는 것을 이해할 것이다. 이러한 실시예에서, 결함 핸들러는 블록 1210에서 트립된 결함의 결과로서 호출될 수 있으며, 결함 핸들러는 또한 도 13에 도시된 방법(1300)을 호출할 수 있다.
도 13은 할당 논리(485)에 의해 수행될 수 있는 방법(1300)이 일반적으로 도 12의 블록 1204에서 수신된 논리 시퀀서 어드레스에 대해 물리 시퀀서를 할당한다는 것을 나타낸다. 도 13을 더 설명하기 전에, 적어도 하나의 대안 실시예에서, 도 13의 방법(1300)은 또한 도 12의 블록 1208에서 검출된 바와 같은 "미스"와 다른 상황에 대해 호출될 수 있다는 점에 유의해야 한다. 적어도 일 실시예에서, 방법(1300)은, 할당 논리(485)가 물리 시퀀서 할당을 위한 능력-속성 기반 모니터링, 실시 및 최적화를 수행할 수 있도록 호출될 수 있다. 이러한 능력-속성 기반 모니터링은 위반 조건을 검출하며, 결과적으로 "미스" 조건을 산출할 수 있다.
별개의 아키텍처 자원으로서, 어드레스 가능 논리 시퀀서(420-426)는 공간 및 시간 속성에 있어서 어드레스 가능 논리 메모리 위치와 다르다. 공간적으로, 애플리케이션 프로그램에 의해 사용되는 바와 같은 논리 시퀀서 어드레스는 주어진 단일 시퀀서 명령어 세트 아키텍처의 레지스터 상태들에 대한 컨텍스트 상태 정보를 포함한다. (예를 들어, 도 1에 도시된 아키텍처 상태(AS)를 참조한다.) 시간적으로, 논리 시퀀서 어드레스는 다양한 정도의 타임라인(예를 들어, 스케쥴링) 요건을 가질 수 있는 제어 흐름의 별개의 계산 스트림에 대응한다.
따라서, 논리 시퀀서 어드레스에서 물리 시퀀서 어드레스로의 맵핑은 논리 시퀀서 컨텍스트가 맵핑될 수 있는 물리 시퀀서의 할당에 관련될 뿐만 아니라, 쉬레드를 실행하기 위해 논리 시퀀서를 이용하는 프로그램의 진행을 보증하는 방식으로 논리 시퀀서를 실행하기 위한 시간 할당량의 할당에도 관련된다. 적어도 일 실시예에서, 필드(638) 내의 스케쥴링 힌트로서의 시간 요건은 논리 시퀀서 기술자(630)에 표현될 수 있으며, 방법(1300)의 시간 기반 주기적 활성화가 대응하는 논리 시퀀서 어드레스를 한 세트의 물리 시퀀서에서 다른 세트의 물리 시퀀서로 재맵핑하게 할 수 있다. 적어도 일 실시예에서, M개의 논리 시퀀서 컨텍스트의 N개의 물리 시퀀서로의 재맵핑은 N개의 물리 시퀀서를 통해 M개의 논리 시퀀서 컨텍스트를 주기적으로 그리고 연속적으로 회전시킬 수 있는 라운드 로빈 스케쥴링 정책을 구현할 수 있다. 적어도 일 실시예에서, 논리 시퀀서가 스왑 아웃되기 전에 물리 시퀀서 상에서 실행되는 스케쥴링 할당량은 스레드가 OS에 의해 할당받는 OS 할당량의 일부이다. 이러한 정책은 스레드 내의 모든 논리 시퀀서의 전반적 진행을 보증할 수 있다.
도 13은 논리 시퀀서에 대한 상태 정보가 보조 저장 장치(1275)로 소개되고(1308; 저장) 보조 저장 장치(1275)로부터 채워지는(1310; 복원) 것을 나타낸다. 보조 저장 장치(1275)는 메모리를 포함하는 임의의 저장 구조일 수 있다.
적어도 일 실시예에서, 소개되고(1308) 채워지는(1310) 논리 시퀀서 상태 정보는 컨텍스트 정보를 포함할 수 있다. 이러한 컨텍스트 정보는 예를 들어 시퀀서 상의 아키텍처 정의 레지스터들에 대한 모든 레지스터 상태를 포함할 수 있다. 적어도 일 실시예에서, 논리 시퀀서 상태 정보는 또한 옵션으로 재스케쥴링을 위한 최소 요구 할당량 및/또는 원하는 빈도와 같은 스케쥴링에 관한 시간 정보를 포함할 수 있다.
이러한 정보 외에, 맵핑 관리자(예를 들어, 도 5의 502 참조)의 할당 논리(예를 들어, 도 5의 485 참조)는 또한 예를 들어 온도, 기능, 성능, 전력, 기능 유닛의 구성, 및 시퀀서 실행 상태와 같은 시퀀서 능력 속성 및 특성에 관한 소정의 물리 시퀀서 정보에 액세스할 수 있다.
따라서, 도 13의 방법(1300)은 맵핑 관리자가 물리 시퀀서를 할당 또는 재맵핑할 때 이러한 능력 속성 기반 논리 및/또는 물리 시퀀서 상태 정보를 고려하는 것을 가능하게 하기 위해 호출될 수 있다. 예를 들어, 방법(1300)은 물리 시퀀서의 실행 상태가 그것이 진행하고 있는 게 아니라 정지하고 있다는 것을 지시할 때 트리거될 수 있다. 이러한 실행 상태는 예를 들어 시퀀서가 캐시 미스와 같은 긴 대기시간 이벤트를 경험하였거나 동기화 객체 상의 동기를 기다리고 있을 때 발생할 수 있다.
게다가, 방법(1300)이 페이지 테이블(1250)에서의 미스로 인해 호출될 때, 물리 시퀀서 속성은 할당 및 재할당을 위한 물리 시퀀서 선택을 알리거나 강화하거나 최적화하기 위해 고려될 수 있다. 도 13에 도시된 방법(1300)의 실행 동안 할당 논리(485)에 의해 고려될 수 있는 다양한 타입의 물리 시퀀서 속성의 일례에 대해, 도 14를 간략히 참조한다.
도 14는 멀티 시퀀서 멀티스레딩 시스템(1400)이 일반적으로 맵핑 관리자(1420) 및 적어도 2개의 상이한 타입의 물리 시퀀서(1410, 1412)를 포함할 수 있음을 나타낸다. (물론, 적어도 하나의 다른 실시예에서, 멀티 시퀀서 멀티스레딩 시스템은 단일 타입의 시퀀서만을 포함한다.) 도 13에서 점선 및 타원은 각 타입(1410, 1412)의 추가 시퀀서들이 옵션임을 지시하기 위해 사용된다.
시스템(1400)은 하나 이상의 각 타입의 시퀀서를 포함할 수 있다. 따라서, 시퀀서 타입들(1410, 1412) 각각은 특정 세트의 능력 속성들과 연관될 수 있다. 시퀀서 타입들이 상이하므로, 이들을 "비대칭"이라 하며, 속성들은 시퀀서 타입들 사이에서 달라도 상관없다. 예를 들어, 적어도 일 실시예에서, 시퀀서들(1410, 1412)은 전력 소비 기준에 관하여 다를 수 있다. 적어도 하나의 다른 실시예에서, 시퀀서들(1410, 1412)은 기능 기준에 관하여 다를 수 있다. 예를 들어, 제1 시퀀서(1410)는 OS가 시스템 레벨 특권 코드 및 사용자 레벨 특권 코드 양자를 실행할 수 있는 T 시퀀서에 의해 요구되는 모든 기능을 구현할 수 있는 반면, 제2 시퀀서(1412)는 사용자 레벨 특권 코드를 실행하는 것만이 필요하고 시스템 레벨 특권 코드를 실행할 필요가 없는 S 시퀀서에 의해 요구되는 기능만을 구현할 수 있다. 다른 예에서, 제1 시퀀서 타입(1410)은 주어진 명령어 세트에 대한 기능적 능력들의 완전한 세트를 구현할 수 있다. 그러나, 제2 시퀀서 타입(1412)은 명령어 세트에 대한 능력들의 서브세트만을 구현하는 것과 같은 축소된(deprecated) 기능을 포함할 수 있다. 예를 들어, 하나의 [축소된] 시퀀서는 정수 및 부동 소수점 명령어를 실행할 수 있지만, 스트리밍 SIMD 확장 3("SSE3")과 같은 명령어 확장들의 단일 명령어 다중 데이터("SIMD") 세트를 실행할 수 없다. 반면, 다른 시퀀서는 제1 시퀀서가 실행할 수 있는 모든 명령어를 실행할 수 있으며, SSE3 명령어도 실행할 수 있다.
기능적 기준이 아니라, 또는 그 외에, 비대칭 시퀀서 타입들(1410, 1412)은 또한 전력 소비 및/또는 온도 속성들에 관하여 상이할 수 있다. 예를 들어, 제2 시퀀서 타입(1412)은 제1 시퀀서 타입(1410)보다 적은 전력을 요구하거나 느리게 계산을 수행할 수 있다. 또한, 맵핑 관리자(1420)는 시퀀서 할당을 고려할 때 온도를 고려할 수도 있다. 예를 들어, 특정 시퀀서가 고온 임계치에 접근하고 있는 경우, 도 13의 방법(1300)은 가상 시퀀서 어드레스를 보다 저온인 다른 실제 시퀀서로 재맵핑하기 위해 호출될 수 있다. 이러한 능력 속성들(전력 요구, 속도, 기능적 능력, 온도, 실행 상태 등)은 소프트웨어 맵핑 관리자(502)에 의해 이용될 수 있으며, 후술하는 바와 같이 맵핑 프로세스(본 명세서에서 때로는 "시퀀서 할당"으로서 지칭됨)를 알리는 데 이용될 수 있다.
이제, 도 13을 참조하여, 방법(1300)이 설명된다. 도 13은 방법이 블록 1302에서 시작하여 블록 1304로 진행함으로 나타낸다. 블록 1304에서, 도 12의 블록 1204에서 수신된 논리 시퀀서 어드레스에 할당될 시퀀서 또는 시퀀서 프레임이 식별된다. 또한, "시퀀서"라는 용어는 프레임 내의 개별 시퀀서 또는 복수의 시퀀서를 의미하는 것을 이해될 것이다. 따라서, "시퀀서" 및 "시퀀서 프레임"이라는 용어는 아래의 설명에서 교환적으로 사용될 수 있다.
다양한 실시예에서, 블록 1304에서 잠재적 시퀀서를 결정하기 위해 다양한 접근법이 이용될 수 있다. 일반적으로, 결정(1304)은 시퀀서 속성 정보에 의해 후에 알려지는 통상의 선택 접근법을 포함할 수 있다.
적어도 일 실시예에서, 현재 하나 이상의 자유 시퀀서(예를 들어, 도 6 및 8에 도시된 자유 리스트(620) 참조)가 존재하는 경우, 블록 1304에서 자유 시퀀서가 선택된다. 하나의 시퀀서가 자유인 경우, 그것이 선택된다. 적어도 일 실시예에서, 후술하는 속성 분석을 이용하여, 자유 시퀀서들 중 어느 것이 블록 1304에서 선택되어야 하는지를 결정한다.
자유 시퀀서가 없는 경우, 현재 활성인 시퀀서(때로는 "희생자(victim)"이라고 함)가 블록 1304에서 선택된다. 블록 1304에서, 희생자 선택 알고리즘으로도 알려진 임의의 공지된 교체 알고리즘을 이용하여 활성(또는 "오염") 시퀀서를 "희생자"로서 선택할 수 있다. 이러한 알고리즘은 최근에 사용되지 않음(Not-Recently-Used), 선입선출(First-in-First-out), 적어도 최근에 사용됨(Least-Recently-Used), 자주 사용되지 않음(Not-Frequently-Used), 노화(Aging), 작업 세트(Working Set), 클록(Clock) 및 작업 세트 클록("WSClock")을 포함하지만 이에 한정되지 않는다. 블록 1304에서, 후속 시퀀서(후속 시퀀서는 방법(1300)의 블록 1210에서 호출을 유발한 논리 시퀀서이다)를 위한 공간을 마련하기 위해, 임의의 이러한 접근법을 이용하여 보조 저장 장치(1275)로 소개될 시퀀서를 선택할 수 있다.
시퀀서가 자유 리스트로부터 선택되는지, 또는 희생자 시퀀서가 교체 알고리즘에 따라 선택되는지에 관계없이, 블록 1304에서 옵션으로 능력 속성 분석에 의해 희생자 선택이 통지된다.
블록 1304에서, 물리 시퀀서의 현재 속성들이 물리 시퀀서를 할당 또는 재할당을 위한 다소 유망한 후보로 만드는지를 판정하기 위해, 능력 속성 분석이 수행될 수 있다. 예를 들어, 특성 기능 세트를 수행할 수 있거나 다른 것들보다 낮은 전력 또는 온도를 갖는 등의 엔트리를 선택하기 위하여, 능력 속성 분석을 이용하여, 자유 리스트 내의 엔트리들 중에서 선택할 수 있다. 대안으로, 소개될 가능성이 보다 높은 후보인 물리 시퀀서를 선택하기 위하여, 능력 속성 분석을 이용하여, 교체 알고리즘에 의해 고려되는 물리 시퀀서들 중에서 선택할 수 있다. 예를 들어, 능력 속성 분석은 물리 시퀀서가 현재 진행하고 있지 않은 경우에(즉, 긴 대기시간 캐시 미스로 인해 중지되거나 동기화 객체 상의 동기를 위해 대기하고 있는 경우에) 좋은 후보임을 지시할 수 있다.
블록 1304로부터, 처리는 블록 1306으로 진행한다. 블록 1306에서, 선택된 희생자의 상태가 보조 저장 장치(1275)로 스왑 아웃되어야 하는지를 판정한다. 블록 1306에서의 판정은 희생자가 자유 리스트로부터 선택된 경우에 "거짓"으로 평가한다. 이 경우, 처리는 블록 1312로 진행한다.
그러나 희생자 시퀀서가 현재 활성인 경우, 처리는 블록 1306에서 1308로 진행한다. 블록 1308에서, 시퀀서의 컨텍스트 상태들이 보조 저장 장치(1275)로 소개된다. 시퀀서 프레임을 사용하는 실시예에서는, 희생자 시퀀서 프레임 내의 모든 시퀀서의 컨텍스트 상태들이 보조 저장 장치(1275)로 소개된다. 이어서, 처리는 블록 1310으로 진행한다.
블록 1310에서, 시퀀서(또는 대안으로 결함 시퀀서 프레임 내의 모든 시퀀서)의 컨텍스트 상태가 보조 저장 장치(1275)로부터 검색된다. 블록 1304에서 선택된 물리 시퀀서로 컨텍스트 정보가 제공된다. 이러한 방식으로, 희생자 시퀀서의 컨텍스트 상태가 보조 저장 장치(1275)로 소개되며(1310), 새로운 논리 시퀀서 어드레스의 컨텍스트 상태가 보조 저장 장치(1275)에서 희생자 물리 시퀀서로 채워진다(1312).
블록 1310에서, 처리는 블록 1312로 진행한다. 선택된 물리 시퀀서가 현재 활성이 아닌 경우에는 블록 1306에서 직접 블록 1312로 진행할 수도 있다. 블록 1312에서, 선택된 물리 시퀀서에 대한 새로운 논리 시퀀서 어드레스 할당을 반영하기 위해 하나 이상의 변환 구조가 갱신된다. 적어도 일 실시예에서, 블록 1312에서 맵핑 구조(1250)가 갱신된다.
맵핑 구조(1250)를 하나 이상의 시퀀서 페이지 테이블로서 구현하는 실시예에서, 시퀀서 페이지 결함을 유발한 스레드에 대한 시퀀서 페이지 테이블이 물리 시퀀서 어드레스로의 논리 시퀀서 어드레스의 새로운 시퀀서 맵핑을 반영하도록 갱신된다. 이러한 실시예에서, 블록 1312에서 수정된 각각의 페이지 테이블 엔트리에 대한 존재 필드(도 6의 634 참조)는 페이지에 대한 컨텍스트 정보가 보조 저장 장치(1275)로부터 검색될 필요가 없음을 지시하도록 설정된다.
또한, 블록 1308에서 보조 저장 장치(1275)로 소개된 시퀀서의 페이지 테이블 엔트리에 대한 존재 필드는 컨텍스트 정보가 물리 시퀀서가 아니라 보조 저장 장치에 저장되어 있음을 지시하도록 수정된다.
마지막으로, 도 11에 도시된 STLB(1100)와 같은 옵션의 하드웨어 변환 가속 구조(1318)를 이용하는 실시예들에서, 블록 1312에서 변환 가속 구조가 스레드 컨텍스트 스위치로 인해 플러시되는 동작이 또한 수행될 수 있다. 이어서, 처리는 블록 1314에서 종료된다.
도 7 및 8은 도 12 및 13과 관련하여 일반적으로 전술한 방법(1300)의 처리의 일부를 더 설명하기 위해 특정 예를 설명한다. 도 7은 도 6에 도시된 샘플 스레드들(스레드 A-D)에 대한 할당 논리(485)에 의해 수행되는 샘플 시퀀서 할당 시나리오를 나타낸다. 도 7은 샘플 시퀀서 할당 시나리오 동안 수행되는 일련의 동작들(AA-FF)을 나타낸다. 이러한 동작들은 도 12 및 13에 설명된 바와 같은 물리 시퀀서들의 할당을 위한 일반적인 방법(1200, 1300)의 특정 예를 반영한다. 따라서, 도 7 및 8은 또한 도 12 및 13을 참조하여 아래에 설명된다.
도 7은 12개의 이용 가능한 물리 시퀀서 프레임을 포함하는 샘플 실시예를 나타낸다. 도 7의 동작 AA는 초기 상태를 나타내는데, 이는 어떠한 물리 프레임도 아직 논리 시퀀서 어드레스로 맵핑되지 않은 상태이다.
도 7의 동작 AB는 스레드 A의 3개 페이지에 대한 3개의 시퀀서 프레임(프레임 0-2)의 할당을 나타낸다. 구체적으로, 도 7은 동작 AB에서 스레드 A의 페이지 0("A0"로 지칭됨)이 프레임 0으로 맵핑됨을 나타낸다. 이러한 스레드 A의 페이지 0의 초기 맵핑은 스레드 A에 대한 페이지 번호 1을 포함하는 논리 시퀀서 어드레스의 수신의 최초 발생에 응답하여 수행될 수 있다. (도 10의 논리 시퀀서 어드레스의 페이지 번호(1032)를 참조한다.)
이러한 논리 시퀀서 어드레스는 도 12의 블록 1204에서 할당 논리에 의해 수신될 수 있다. 페이지가 아직 물리 시퀀서로 맵핑되지 않았으므로, 도 12의 블록 1206에서의 테이블 탐색은 미스를 초래하며, 따라서 처리는 블록 1210으로 진행하고, 이어서 도 13의 블록 1304로 진행한다. 도 13에서, 페이지에 대한 물리 시퀀서 프레임이 선택된다. 도 7에 도시된 바와 같이, 도 7에 도시된 예에 대해, 블록 1304에서 시퀀서 프레임 0이 선택된다.
유사하게, 도 7의 동작 AB는 스레드 A의 페이지 1 및 2에 대한 초기 맵핑이 유사한 방식으로 수행될 수 있음을 나타낸다.
도 7은 또한 스레드 B에 대한 페이지들의 초기 맵핑이 도 7의 동작 AC에서 유사한 방식으로 할당될 수 있음을 나타낸다. 즉, 도 7은 스레드 B의 페이지들 0, 1 및 2가 도 7의 동작 C에서 시퀀서들 3, 4 및 5로 맵핑될 수 있음을 나타낸다.
도 7은 또한 스레드 C에 대한 페이지들의 초기 맵핑이 도 7의 동작 AD에서 유사한 방식으로 할당될 수 있음을 나타낸다. 즉, 도 7은 스레드 C의 페이지들 0, 1, 2 및 3이 도 7의 동작 AD에서 시퀀서들 6, 7, 8 및 9로 맵핑될 수 있음을 나타낸다.
도 7은 스왑 아웃 처리가 동작 AE에서 할당 논리에 의해 수행될 수 있음을 나타낸다. 이러한 처리는 아직 맵핑되지 않은 페이지를 포함하는 논리 시퀀서 어드레스의 수신에 응답하여 수행될 수 있다. 따라서, 전술한 바와 같이, 논리 시퀀서 어드레스가 블록 1204에서 수신될 수 있다. 이어서, 블록들 1206 및 1210이 수행될 수 있다. 도 13에 대한 참조는 또한 블록 1304에서 페이지에 대해 시퀀서가 선택됨을 보여 준다. 도 7에 도시된 예에서는, 스레드 D에 대한 제1 참조가 블록 1204에서 수신되는 시간에 2개의 시퀀서만이 남아 있다.
그러나 스레드 D는 4개의 논리 시퀀서 어드레스를 포함하며, 따라서 스레드 D의 능력 속성들에서의 스케쥴링 요건은 최소한 4개의 물리 시퀀서를 필요로 하는 것으로 가정한다. 적어도 일 실시예에서, 하나의 스레드에 대해 필요한 물리 시퀀서의 최소 수는 블록 1304에서 할당 논리에 의해 결정된다. 적어도 일 실시예에서, 하나의 스레드에 필요한 논리 시퀀서의 수는 능력 보고 명령어를 통해 아키텍처에 의해 제공될 수 있다. 이러한 수는 예를 들어 단일 스레드가 액세스할 수 있는 논리 시퀀서 어드레스의 수를 보고하는 CPUID 명령어와 같은 능력 보고 명령어를 실행함으로써 결정될 수 있다.
따라서, 블록 1304에서, 스왑 아웃될 활성 "희생자" 시퀀서가 선택된다. 전술한 바와 같이, 시퀀서 속성들은 어느 시퀀서(들)를 스왑 아웃할지를 결정하기 위해 고려될 수 있다. 예를 들어, 할당 논리는 블록 1304에서 스레드 B가 긴 대기시간 캐시 미스로 인해 중지하여 진행하지 못하고 있으며, 따라서 그의 시퀀서 프레임들이 스레드 D를 위한 공간을 만들기 위한 스왑핑을 위해 선택되어야 하는 것으로 결정할 수 있다.
도 7은 동작 AE에서 물리 시퀀서 프레임들 3, 4 및 5에 대한 컨텍스트 상태가 보조 저장 장치로 스왑 아웃됨을 나타낸다. 마찬가지로, 도 13은 블록 1308에서 보조 저장 장치로의 스레드 컨텍스트 저장이 발생함을 나타낸다. 스레드 D 자체는 이전에 활성이나 스레드 종료 이전에 보조 저장 장치(1275)로 스왑핑된 경우, 그의 컨텍스트는 보조 저장 장치(1275)에서 소개된 물리 시퀀서(들)로 복원될 것이다.
그러나 도 7에 도시된 예에서, 동작 AF는 스레드 D의 페이지들에 대한 초기 맵핑을 지시한다. 따라서, 스레드 D에 대한 컨텍스트 상태는 보조 저장 장치(1275)로부터 복원될 필요는 없으나, 그 대신 초기 값으로 초기화된다. 따라서, 블록 1310은 모든 경우에 반드시 실행될 필요는 없다는 것을 지시하기 위해 도 13에서 점선으로 표시되어 있다.
도 7의 동작 AF는 스레드 D의 페이지들 0, 1, 2 및 3이 각각 물리 시퀀서들 3, 4, 5 및 10으로 맵핑됨을 지시한다.
도 8은 도 7에 도시된 예시적인 시나리오의 동작 AF 후에 시퀀서 페이지 테이블들(610a-610d)의 내용을 나타낸다. 도 8은 스레드 A에 대한 페이지 테이블(610a)이 스레드 A의 페이지들 0, 1 및 2 각각의 물리 페이지 프레임들 0, 1 및 2로의 맵핑을 지시함을 나타낸다. 페이지 테이블(610a)의 각 엔트리에 대한 "존재/부재" 필드(도 6의 634 참조)의 값(P)은 페이지들에 대한 컨텍스트 정보가 보조 저장 장치가 아니라 물리 시퀀서 프레임들 상에 로딩됨을 지시한다.
마찬가지로, 도 8은 스레드 C에 대한 페이지 테이블(610c)이 스레드 C의 페이지들 0, 1, 2 및 3 각각의 물리 페이지 프레임들 6, 7, 8 및 9로의 맵핑을 지시함을 나타낸다. 스레드 D에 대한 페이지 테이블(610d)은 스레드 D의 페이지들 0, 1, 2 및 3 각각의 물리 시퀀서들 3, 4, 5 및 10으로의 맵핑을 지시한다. 또한, 테이블들(610c, 610d)의 각 엔트리에 대한 존재/부재 필드(도 6의 634 참조)의 값들은 엔트리들에 대한 어드레스가 현재 컨텍스트를 유지하는 물리 시퀀서 프레임들을 지시함을 나타낸다.
도 8은 또한 스레드 B에 대한 페이지 테이블(610b)이 페이지 테이블(610b)의 각 엔트리에 대한 존재/부재 필드(634) 내의 부재 값 "A"를 지시함을 나타낸다. 따라서, 스레드 B의 페이지들에 대한 컨텍스트는 보조 저장 장치(1275)의 지시된 어드레스(xxx, yyy, zzz 각각)에서 발견될 수 있다.
적어도 일 실시예에서, 존재/부재 필드를 포함하는 스레드 페이지 테이블들(610a-610b)의 갱신은 도 13의 블록 1312에서 할당 논리에 의해 수행된다.
마지막으로, 도 8은 자유 프레임 리스트(620)가 물리 시퀀서 프레임(11)이 비할당 상태임을 지시함을 나타낸다.
도 15는 개시되는 기술들을 수행할 수 있는 컴퓨팅 시스템(1500)의 적어도 일 실시예를 나타낸다. 컴퓨팅 시스템(1500)은 적어도 하나의 프로세서 코어(1504) 및 메모리 시스템(1540)을 포함한다. 메모리 시스템(1540)은 보다 크고 상대적으로 느린 메모리 저장 장치(1502)는 물론, 명령 캐시(1544) 및/또는 데이터 캐시(1542)와 같은 하나 이상의 보다 작고 상대적으로 빠른 캐시를 포함할 수 있다. 메모리 저장 장치(1502)는 프로세서(1504)의 동작을 제어하기 위한 명령어(1510) 및 데이터(1512)를 저장할 수 있다. 메모리 저장 장치(1502)의 적어도 일 실시예는 맵핑 구조(1580)를 더 포함할 수 있다.
메모리 시스템(1540)은 메모리의 일반화된 표현으로서 의도되며, 하드 드라이브, CD-ROM, RAM, DRAM, SRAM, 플래시 메모리 및 관련 회로와 같은 다양한 형태의 메모리를 포함할 수 있다. 메모리 시스템(1540)은 프로세서(1504)에 의해 실행될 수 있는 데이터 신호로서 표현되는 명령어(1510) 및/또는 데이터(1512)를 저장할 수 있다. 명령어(1510) 및/또는 데이터(1512)는 본 명세서에 설명되는 기술들 중 임의 기술 또는 모든 기술을 수행하기 위한 코드 및/또는 데이터를 포함할 수 있다.
프로세서(1504)는 명령어 정보를 실행 코어(1530)에 제공하는 프론트 엔드(1520)를 포함할 수 있다. 페치된 명령어 정보는 실행 코어(1530)에 의한 실행을 기다리기 위해 캐시(1525)에 버퍼링될 수 있다. 프론트 엔드(1520)는 명령어 정보를 프로그램 순으로 실행 코어(1530)에 제공할 수 있다. 적어도 일 실시예에서, 프론트 엔드(1520)는 실행될 다음 명령어를 결정하는 페치/디코드 유닛(122)을 포함한다. 시스템(1500)의 적어도 일 실시예에서, 페치/디코드 유닛(122)은 단일 다음 명령어 포인터 및 페치 논리(120)를 포함할 수 있다. 그러나 각각의 프로세서(1504)가 다수의 스레드 컨텍스트를 지원하는 실시예에서, 페치/디코드 유닛(122)은 각각의 지원 스레드 컨텍스트에 대하여 별개의 다음 명령어 포인터 및 페치 논리(120)를 구현한다. 멀티 프로세서 시스템에서의 추가적인 다음 명령어 포인터 및 페치 논리(120)의 옵션 특성은 도 15에서 점선으로 표시되어 있다.
본 명세서에 설명되는 방법들의 실시예는 하드웨어, 하드웨어 에뮬레이션 소프트웨어 또는 다른 소프트웨어, 펌웨어, 또는 이러한 구현 접근법들의 조합으로 구현될 수 있다. 본 발명의 실시예들은 적어도 하나의 프로세서, 데이터 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 소자를 포함), 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함하는 프로그램 가능 시스템에 대해 구현될 수 있다. 본 출원의 목적을 위해, 처리 시스템은 예를 들어 디지털 신호 처리기(DSP), 마이크로컨트롤러, ASIC 또는 마이크로프로세서와 같은 프로세서를 구비하는 임의의 시스템을 포함한다.
프로그램은 범용 또는 특수 목적의 프로그램 가능 처리 시스템에 의해 판독될 수 있는 저장 매체 또는 장치(예를 들어, 하드 디스크 드라이브, 플로피 디스크 드라이브, ROM, CD-ROM 장치, 플래시 메모리 장치, DVD 또는 다른 저장 장치) 상에 저장될 수 있다. 처리 시스템의 프로세서에 의해 액세스될 수 있는 명령어들은 본 명세서에 설명되는 프로시저를 수행하기 위해 처리 시스템에 의해 저장 매체 또는 장치가 판독될 때 처리 시스템의 구성 및 동작을 제공한다. 본 발명의 실시예들은 또한 처리 시스템과 함께 사용되도록 구성되는 머신 판독 가능 저장 매체로서 구현되는 것으로 간주될 수 있는데, 이러한 구성되는 저장 매체는 처리 시스템이 미리 정의된 특정 방식으로 동작하여 본 명세서에 설명되는 기능들을 수행하게 한다.
샘플 시스템(1500)은, 다른 시스템들(다른 마이크로프로세서를 구비한 PC, 엔지니어링 워크스테이션, PDA 및 다른 핸드헬드 장치, 셋톱 박스 등을 포함함)도 사용될 수 있지만, 인텔사로부터 입수할 수 있는 펜티엄, 펜티엄 프로, 펜티엄 II, 펜티엄 III, 펜티엄 4, 및 이타늄 및 이타늄 2 마이크로프로세서에 기초하는 처리 시스템을 나타낸다. 일 실시예에서, 샘플 시스템은, 예를 들어 다른 운영 체제 및 그래픽 사용자 인터페이스도 사용될 수 있지만, 마이크로소프트사로부터 입수할 수 있는 윈도우 운영 체제의 버전을 실행할 수 있다.
본 발명의 특정 실시예들이 도시되고 설명되었지만, 첨부된 청구범위의 범위를 벗어나지 않고 변경 및 수정이 이루어질 수 있음은 이 분야의 전문가에게 자명할 것이다. 예를 들어, 도 5에 도시된 맵핑 구조(580)는 전술한 것과 다른 방식으로 구성될 수 있다. 예를 들어, 맵핑 구조(580)는 물리 시퀀서 프레임의 수와 동일한 수의 테이블 엔트리를 갖는 해시 테이블인 반전 시퀀서 페이지 테이블로서 구성될 수 있다. 또한, 맵핑 구조(580)의 각각의 해시 테이블 엔트리는 가상 페이지의 페이지 프레임으로의 맵핑들의 연결 리스트와 연관될 수 있다.
또한, 예를 들어, 맵핑 관리자(도 5의 502 참조)는 세그먼트와 및 페이징 양자를 조합하는 하이브리드 맵핑 스킴을 지원할 수 있다. 맵핑 관리자는 이러한 접근법을 위해 프로세스 내의 각 세그먼트에 대해 상이한 페이지 테이블을 사용할 수 있으며, 따라서 페이지의 수는 상이한 세그먼트들에 대해 다를 수 있다.
다른 대안 실시예에서, 맵핑 관리자는 시퀀서 할당을 수행할 때 시퀀서 속성을 고려할 수 있을 뿐만 아니라, 물리 시퀀서 자체에 의해 수행되는 타임아웃 동작들을 고려할 수도 있다. 즉, 시퀀서는 타임아웃 이벤트의 발생시 이벤트 핸들러를 호출하도록 프로그래밍될 수 있다. 타임아웃 이벤트는 예를 들어 시퀀서가 진행하지 않고 있음(긴 대기시간 최종 레벨 캐시 미스, 동기화 객체 상의 동기를 위한 대기 등)을 지시하는 임의의 이벤트일 수 있다. 시퀀서가 타임아웃되는 경우, 타임아웃 이벤트를 위한 이벤트 핸들러는 시퀀서의 현재 명령어 스트림을 "미결 큐(pending queue)"에 배치하고 물리 시퀀서를 다시 자유 리스트에 배치하기 위해 양보를 수행할 수 있다. 또는, 전술한 바와 같은 LSCQ를 지원하는 대안 실시예에서, 타임아웃은 현재 활성인 논리 시퀀서가 LSCQ로 소개되게 할 수 있으며, 맵핑 관리자(502)는 이어서 LSCQ로부터 교체 논리 시퀀서 컨텍스트를 발견할 수 있다. 이것은 스케쥴링 논리(예를 들어, 도 4 및 5의 487 참조)에 의해 수행될 수 있다. 스케쥴링 논리(487)는 소개된 물리 시퀀서 상에서 실행할 교체 논리 컨텍스트를 스케쥴링할 수 있다.
이벤트 핸들러는 양보를 수행하는 대신에, 또는 그에 더하여, 활성 시퀀서 검사(live-ness sequencer check)를 다음 가상 시퀀서 또는 시퀀서 페이지에 전송할 수 있다. 실제로, 이러한 활성 조회의 전송은 노화 메커니즘(클록 또는 WSClock과 유사함)을 제공하여, 스레드에 대한 모든 가상 시퀀서가 예측 가능한 기간에 페이징될 것임을 규정한다.
따라서, 이 분야의 전문가는 보다 넓은 양태에서 본 발명으로부터 벗어나지 않고도 변경 및 수정이 이루어질 수 있음을 인식할 것이다. 첨부된 청구범위는 본 발명의 진정한 범위에 속하는 그러한 모든 변경 및 수정을 그 범위 내에 포함하기 위한 것이다.

Claims (21)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 멀티 시퀀서 멀티스레딩 시스템을 위한 맵핑 관리자에 의해 수행되는 방법으로서,
    사용자 명령어에서 지정된 논리 시퀀서 어드레스를 수신하는 단계;
    상기 논리 시퀀서 어드레스를 복수의 물리 시퀀서 프레임 중 하나에 할당하는 단계;
    제2 사용자 명령어와 관련하여 상기 논리 시퀀서 어드레스를 수신하는 단계; 및
    상기 할당된 물리 시퀀서 프레임을 지시하기 위한 식별자를 제공하는 단계
    를 포함하고,
    상기 할당 단계는 복수의 활성 시퀀서 중에서 희생자(victim)를 선택하는 단계를 더 포함하는 방법.
  10. 멀티 시퀀서 멀티스레딩 시스템을 위한 맵핑 관리자에 의해 수행되는 방법으로서,
    사용자 명령어에서 지정된 논리 시퀀서 어드레스를 수신하는 단계;
    상기 논리 시퀀서 어드레스를 복수의 물리 시퀀서 프레임 중 하나에 할당하는 단계;
    제2 사용자 명령어와 관련하여 상기 논리 시퀀서 어드레스를 수신하는 단계; 및
    상기 할당된 물리 시퀀서 프레임을 지시하기 위한 식별자를 제공하는 단계
    를 포함하고,
    상기 할당 단계는 상기 복수의 물리 시퀀서 프레임의 하나 이상의 속성을 평가하는 단계를 더 포함하는 방법.
  11. 삭제
  12. 멀티 시퀀서 멀티스레딩 시스템상에 맵핑 관리자 기능을 구현하기 위한 컴퓨터 실행가능 프로그램을 기록한 컴퓨터 판독가능 기록 매체로서,
    상기 맵핑 관리자 기능은,
    논리 시퀀서 어드레스를 물리 시퀀서에 할당하기 위한 할당 기능; 및
    상기 논리 시퀀서 어드레스를 수신하고, 할당된 물리 시퀀서와 연관된 식별자를 제공하기 위한 변환 기능
    을 포함하고,
    상기 할당 기능은 특정의 사전 결정된 조건들 하에 제1 시퀀서가 제2 시퀀서에 액세스하는 것을 가능하게 하는 공유 기능을 더 포함하는, 컴퓨터 판독가능 기록 매체.
  13. 멀티 시퀀서 멀티스레딩 시스템상에 맵핑 관리자 기능을 구현하기 위한 컴퓨터 실행가능 프로그램을 기록한 컴퓨터 판독가능 기록 매체로서,
    상기 맵핑 관리자 기능은,
    논리 시퀀서 어드레스를 물리 시퀀서에 할당하기 위한 할당 기능;
    상기 논리 시퀀서 어드레스를 수신하고, 할당된 물리 시퀀서와 연관된 식별자를 제공하기 위한 변환 기능; 및
    시퀀서에 대한 컨텍스트 정보를 보조 저장 장치(backing store)에 스왑핑하기 위한 재배치 기능
    을 포함하는, 컴퓨터 판독가능 기록 매체.
  14. 멀티 시퀀서 멀티스레딩 시스템상에 맵핑 관리자 기능을 구현하기 위한 컴퓨터 실행가능 프로그램을 기록한 컴퓨터 판독가능 기록 매체로서,
    상기 맵핑 관리자 기능은,
    논리 시퀀서 어드레스를 물리 시퀀서에 할당하기 위한 할당 기능;
    상기 논리 시퀀서 어드레스를 수신하고, 할당된 물리 시퀀서와 연관된 식별자를 제공하기 위한 변환 기능; 및
    허가없이 제1 시퀀서가 제2 시퀀서에 액세스하는 것을 방지하기 위한 보호 기능
    을 포함하는, 컴퓨터 판독가능 기록 매체.
  15. 멀티 시퀀서 멀티스레딩 시스템상에 맵핑 관리자 기능을 구현하기 위한 컴퓨터 실행가능 프로그램을 기록한 컴퓨터 판독가능 기록 매체로서,
    상기 맵핑 관리자 기능은,
    논리 시퀀서 어드레스를 물리 시퀀서에 할당하기 위한 할당 기능; 및
    상기 논리 시퀀서 어드레스를 수신하고, 할당된 물리 시퀀서와 연관된 식별자를 제공하기 위한 변환 기능
    을 포함하고,
    상기 변환 기능은 또한 사용자 명령어 내의 참조에 응답하여 상기 논리 시퀀서 어드레스를 수신하는, 컴퓨터 판독가능 기록 매체.
  16. 멀티 시퀀서 멀티스레딩 시스템상에 맵핑 관리자 기능을 구현하기 위한 컴퓨터 실행가능 프로그램을 기록한 컴퓨터 판독가능 기록 매체로서,
    상기 맵핑 관리자 기능은,
    논리 시퀀서 어드레스를 물리 시퀀서에 할당하기 위한 할당 기능;
    상기 논리 시퀀서 어드레스를 수신하고, 할당된 물리 시퀀서와 연관된 식별자를 제공하기 위한 변환 기능; 및
    한 세트의 논리 시퀀서들을 보다 작은 세트의 물리 시퀀서들 상에서의 실행을 위해 스케쥴링하기 위한 스케쥴링 기능
    을 포함하는, 컴퓨터 판독가능 기록 매체.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 사용자 프로그램을 저장하기 위한 메모리 시스템;
    동시 스레드 실행이 가능한 복수의 물리 시퀀서;
    논리 시퀀서에 대한 어드레스를 물리 시퀀서 프레임에 맵핑하기 위한 맵핑 관리자; 및
    상기 논리 시퀀서와 연관된 컨텍스트 정보를 저장하기 위한 보조 저장 장치
    를 포함하는 멀티 시퀀서 멀티스레딩 시스템.
  21. 사용자 프로그램을 저장하기 위한 메모리 시스템;
    동시 스레드 실행이 가능한 복수의 물리 시퀀서;
    논리 시퀀서에 대한 어드레스를 물리 시퀀서 프레임에 맵핑하기 위한 맵핑 관리자; 및
    상기 논리 시퀀서에 대한 컨텍스트 정보를 저장하기 위한 논리 시퀀서 컨텍스트 큐(logical sequencer context queue)
    를 포함하는 멀티 시퀀서 멀티스레딩 시스템.
KR1020077025166A 2005-04-05 2006-04-05 시퀀서 어드레스를 관리하기 위한 방법, 맵핑 관리자 및 멀티 시퀀서 멀티스레딩 시스템 KR100996753B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/100,032 2005-04-05
US11/100,032 US7743233B2 (en) 2005-04-05 2005-04-05 Sequencer address management

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020097012951A Division KR101136610B1 (ko) 2005-04-05 2006-04-05 시퀀서 어드레스 관리

Publications (2)

Publication Number Publication Date
KR20070121812A KR20070121812A (ko) 2007-12-27
KR100996753B1 true KR100996753B1 (ko) 2010-11-25

Family

ID=36649509

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020077025166A KR100996753B1 (ko) 2005-04-05 2006-04-05 시퀀서 어드레스를 관리하기 위한 방법, 맵핑 관리자 및 멀티 시퀀서 멀티스레딩 시스템
KR1020097012951A KR101136610B1 (ko) 2005-04-05 2006-04-05 시퀀서 어드레스 관리

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020097012951A KR101136610B1 (ko) 2005-04-05 2006-04-05 시퀀서 어드레스 관리

Country Status (6)

Country Link
US (1) US7743233B2 (ko)
JP (1) JP5058970B2 (ko)
KR (2) KR100996753B1 (ko)
CN (1) CN101189575B (ko)
DE (1) DE112006000807B4 (ko)
WO (1) WO2006108169A2 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7743233B2 (en) 2005-04-05 2010-06-22 Intel Corporation Sequencer address management
US8079035B2 (en) * 2005-12-27 2011-12-13 Intel Corporation Data structure and management techniques for local user-level thread data
US20070204266A1 (en) * 2006-02-28 2007-08-30 International Business Machines Corporation Systems and methods for dynamically managing virtual machines
JP2008152594A (ja) * 2006-12-19 2008-07-03 Hitachi Ltd マルチコアプロセッサ計算機の高信頼化方法
US8074274B2 (en) * 2006-12-29 2011-12-06 Intel Corporation User-level privilege management
US8959516B2 (en) 2007-07-30 2015-02-17 International Business Machines Corporation Methods and systems for coordinated financial transactions in distributed and parallel environments
US7904696B2 (en) * 2007-09-14 2011-03-08 Intel Corporation Communication paths for enabling inter-sequencer communication following lock competition and accelerator registration
US8719547B2 (en) 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
US8669990B2 (en) 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
JP5533206B2 (ja) * 2010-04-30 2014-06-25 富士通株式会社 検証支援プログラム、検証支援装置、および検証支援方法
US8639993B2 (en) 2010-11-11 2014-01-28 Microsoft Corporation Encoding data to enable it to be stored in a storage block that includes at least one storage failure
US9081660B2 (en) 2011-08-09 2015-07-14 Sandisk Technologies Inc. Method and system for efficiently swapping pieces into and out of DRAM
CN103136047B (zh) * 2011-11-30 2016-08-17 大唐联诚信息系统技术有限公司 一种多线程管理方法及架构
US8694995B2 (en) 2011-12-14 2014-04-08 International Business Machines Corporation Application initiated negotiations for resources meeting a performance parameter in a virtualized computing environment
US8863141B2 (en) 2011-12-14 2014-10-14 International Business Machines Corporation Estimating migration costs for migrating logical partitions within a virtualized computing environment based on a migration cost history
US10303618B2 (en) * 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
US9130979B2 (en) * 2012-12-11 2015-09-08 Microsoft Technology Licensing, Llc Systems and methods for using virtual machines to sequence native applications into virtual packages and for reimaging virtual machines
US9619364B2 (en) 2013-03-14 2017-04-11 Nvidia Corporation Grouping and analysis of data access hazard reports
US10193956B2 (en) 2013-11-13 2019-01-29 Five3 Genomics, Llc Grouping and transferring omic sequence data for sequence analysis
US9886736B2 (en) 2014-01-20 2018-02-06 Nvidia Corporation Selectively killing trapped multi-process service clients sharing the same hardware context
US10152312B2 (en) 2014-01-21 2018-12-11 Nvidia Corporation Dynamic compiler parallelism techniques
US9817664B2 (en) 2015-02-19 2017-11-14 Apple Inc. Register caching techniques for thread switches
CN106598545B (zh) * 2015-10-08 2020-04-14 上海兆芯集成电路有限公司 沟通共享资源的处理器与方法及非瞬时计算机可使用媒体
US10223295B2 (en) * 2016-03-10 2019-03-05 Microsoft Technology Licensing, Llc Protected pointers
US10453427B2 (en) 2017-04-01 2019-10-22 Intel Corporation Register spill/fill using shared local memory space
US10606641B2 (en) 2017-10-20 2020-03-31 Graphcore Limited Scheduling tasks in a multi-threaded processor
GB201717303D0 (en) 2017-10-20 2017-12-06 Graphcore Ltd Scheduling tasks in a multi-threaded processor
WO2019157743A1 (zh) * 2018-02-14 2019-08-22 华为技术有限公司 线程处理方法和图形处理器
KR20200085966A (ko) * 2019-01-07 2020-07-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
CN115190102B (zh) * 2022-07-22 2024-04-16 北京象帝先计算技术有限公司 信息广播方法、装置、电子单元、soc及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000057297A1 (en) 1999-03-22 2000-09-28 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US6349363B2 (en) * 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
US6349380B1 (en) * 1999-03-12 2002-02-19 Intel Corporation Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4320453A (en) * 1978-11-02 1982-03-16 Digital House, Ltd. Dual sequencer microprocessor
US5627987A (en) * 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5559977A (en) * 1992-08-04 1996-09-24 Intel Corporation Method and apparatus for executing floating point (FP) instruction pairs in a pipelined processor by stalling the following FP instructions in an execution stage
US5359570A (en) * 1992-11-13 1994-10-25 Silicon Storage Technology, Inc. Solid state peripheral storage device
EP0649083B1 (en) * 1993-10-18 2000-07-19 National Semiconductor Corporation A microcontrol unit for a superpipelined, superscalar microprocessor
US5701450A (en) * 1994-02-25 1997-12-23 Seagate Technology, Inc. System including ATA sequencer microprocessor which executes sequencer instructions to handle plurality of real-time events allowing to perform all operations without local microprocessor intervention
JP3231571B2 (ja) * 1994-12-20 2001-11-26 日本電気株式会社 順序付きマルチスレッド実行方法とその実行装置
US5812741A (en) * 1996-02-14 1998-09-22 Jack Kennedy Metal Products And Buildings, Inc. Serial sequencers connected in parallel
US5961639A (en) * 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
WO1998043193A2 (en) * 1997-03-21 1998-10-01 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
CN1206145A (zh) * 1997-06-30 1999-01-27 索尼公司 带有流水线处理电路的信号处理器及其方法
US6243735B1 (en) 1997-09-01 2001-06-05 Matsushita Electric Industrial Co., Ltd. Microcontroller, data processing system and task switching control method
US6263404B1 (en) * 1997-11-21 2001-07-17 International Business Machines Corporation Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system
US6209066B1 (en) * 1998-06-30 2001-03-27 Sun Microsystems, Inc. Method and apparatus for memory allocation in a multi-threaded virtual machine
US7409694B2 (en) * 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
US6374314B1 (en) * 1998-09-28 2002-04-16 Raytheon Company Method for managing storage of data by storing buffer pointers of data comprising a sequence of frames in a memory location different from a memory location for pointers of data not comprising a sequence of frames
US6578133B1 (en) * 2000-02-24 2003-06-10 Stanley M. Hyduke MIMD array of single bit processors for processing logic equations in strict sequential order
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
FR2809508B1 (fr) * 2000-05-23 2002-08-30 Thomson Csf Systeme et methode de gestion d'une architecture multi-ressources
US6665755B2 (en) * 2000-12-22 2003-12-16 Nortel Networks Limited External memory engine selectable pipeline architecture
US6810472B2 (en) * 2002-06-24 2004-10-26 Intel Corporation Page handling efficiency in a multithreaded processor
US7562362B1 (en) * 2003-06-18 2009-07-14 Apple Inc. User control of task priority
KR100591755B1 (ko) * 2003-07-22 2006-06-22 삼성전자주식회사 복수의 스레드를 동시에 처리하는 장치 및 방법
JP2005044363A (ja) * 2003-07-22 2005-02-17 Samsung Electronics Co Ltd 複数のスレッドを同時に処理する装置及び方法
US7424599B2 (en) * 2003-08-28 2008-09-09 Mips Technologies, Inc. Apparatus, method, and instruction for software management of multiple computational contexts in a multithreaded microprocessor
US7743233B2 (en) 2005-04-05 2010-06-22 Intel Corporation Sequencer address management

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6349363B2 (en) * 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
US6349380B1 (en) * 1999-03-12 2002-02-19 Intel Corporation Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor
WO2000057297A1 (en) 1999-03-22 2000-09-28 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors

Also Published As

Publication number Publication date
CN101189575A (zh) 2008-05-28
KR20070121812A (ko) 2007-12-27
JP5058970B2 (ja) 2012-10-24
KR20090081436A (ko) 2009-07-28
WO2006108169A2 (en) 2006-10-12
DE112006000807T5 (de) 2008-01-31
US20060224858A1 (en) 2006-10-05
KR101136610B1 (ko) 2012-04-23
CN101189575B (zh) 2010-05-19
DE112006000807B4 (de) 2014-01-30
WO2006108169A3 (en) 2007-04-12
US7743233B2 (en) 2010-06-22
JP2008536224A (ja) 2008-09-04

Similar Documents

Publication Publication Date Title
KR100996753B1 (ko) 시퀀서 어드레스를 관리하기 위한 방법, 맵핑 관리자 및 멀티 시퀀서 멀티스레딩 시스템
US10963387B2 (en) Methods of cache preloading on a partition or a context switch
US9921972B2 (en) Method and apparatus for implementing a heterogeneous memory subsystem
US10365938B2 (en) Systems and methods for managing data input/output operations in a virtual computing environment
US9747218B2 (en) CPU security mechanisms employing thread-specific protection domains
US7461209B2 (en) Transient cache storage with discard function for disposable data
US7716446B1 (en) System and method for cooperative virtual machine memory scheduling
US8990531B2 (en) Multiple time granularity support for online classification of memory pages based on activity level
US9032398B2 (en) Online classification of memory pages based on activity level represented by one or more bits
US20150378762A1 (en) Monitoring and dynamic configuration of virtual-machine memory-management
US7873961B2 (en) Supervisory operating system for running multiple child operating systems simultaneously and optimizing resource usage
US20110010503A1 (en) Cache memory
US10255069B2 (en) Cleared memory indicator
US20130262816A1 (en) Translation lookaside buffer for multiple context compute engine
US10831537B2 (en) Dynamic update of the number of architected registers assigned to software threads using spill counts
JP2019523920A (ja) ページ・フォールト解決法
WO2017172220A1 (en) Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga
Silberschatz et al. Operating systems
CN112965921A (zh) 一种多任务gpu中tlb管理方法及系统
Ozcelebi et al. Memory management (part 2) Virtual memory
KR20100073801A (ko) 동적 스크래치패드 메모리 관리 장치 및 방법, 프로세서 시스템
Franke Operating Systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
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: 20131101

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141031

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151030

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee