KR20040068993A - 특정 메모리 액세스가 발생할 때까지 스레드의 실행을중단하기 위한 방법 및 장치 - Google Patents
특정 메모리 액세스가 발생할 때까지 스레드의 실행을중단하기 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR20040068993A KR20040068993A KR10-2004-7010389A KR20047010389A KR20040068993A KR 20040068993 A KR20040068993 A KR 20040068993A KR 20047010389 A KR20047010389 A KR 20047010389A KR 20040068993 A KR20040068993 A KR 20040068993A
- Authority
- KR
- South Korea
- Prior art keywords
- thread
- monitor
- address
- processor
- response
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000004044 response Effects 0.000 claims abstract description 45
- 238000005192 partition Methods 0.000 claims description 16
- 239000003795 chemical substances by application Substances 0.000 claims description 14
- 238000012360 testing method Methods 0.000 claims description 12
- 239000000872 buffer Substances 0.000 claims description 11
- 238000001514 detection method Methods 0.000 claims description 10
- 238000012544 monitoring process Methods 0.000 claims description 10
- 238000013519 translation Methods 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 7
- 238000000638 solvent extraction Methods 0.000 claims description 7
- 230000010076 replication Effects 0.000 claims description 4
- 239000012536 storage buffer Substances 0.000 claims description 4
- 230000008569 process Effects 0.000 claims description 3
- 238000000137 annealing Methods 0.000 claims 2
- 238000013461 design Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 230000014616 translation Effects 0.000 description 7
- 230000004913 activation Effects 0.000 description 4
- 230000007420 reactivation Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000006378 damage Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010367 cloning Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
Claims (69)
- 제1 스레드(thread)를 포함하는 복수의 스레드(thread)의 실행을 가능하게 하는 복수의 실행 유닛(execution unit) - 상기 제1 스레드는 모니터 주소(monitor address)를 나타내는 관련 주소 피연산자를 갖는 제1 명령어를 가짐 - ;상기 제1 스레드의 실행을 중단시키기 위한 중단 로직(suspend logic); 및상기 모니터 주소로의 메모리 액세스에 응답하여, 상기 제1 스레드를 재개시키기 위한 모니터를 포함하는 프로세서.
- 제1항에 있어서, 상기 메모리 액세스가 상기 모니터 주소로의 실제적 또는 잠재적 기록(write)을 나타내는 경우에만, 상기 모니터가 상기 메모리 액세스에 응답하여 재개시키도록 하는 프로세서.
- 제1항에 있어서, 만약 상기 제1 스레드가 중단되고 모니터 이벤트들이 언마스킹된다면(unmasked), 상기 모니터는 상기 모니터 주소로의 상기 메모리 액세스에 응답하여 상기 제1 스레드를 재개시키도록 하는 프로세서.
- 제3항에 있어서, 상기 메모리 액세스 이외의 이벤트에 응답하여 상기 제1 스레드를 재개시키는 이벤트 검출 로직(event detection logic)을 더 포함하는 프로세서.
- 제4항에 있어서, 상기 이벤트는 인터럽트(interrupt)인 프로세서.
- 제1항에 있어서, 상기 관련 주소 피연산자는 암시적 피연산자(implicit operand)인 프로세서.
- 제6항에 있어서, 상기 관련 주소 피연산자는 소정의 레지스터에 저장되는 프로세서.
- 제1항에 있어서,상기 중단 로직은 제2 명령어에 응답하여 상기 제1 스레드의 실행을 중단시키며,상기 제1 명령어는 상기 모니터를 인에이블(enable)시키고, 상기 제2 명령어는 상기 모니터에 의해 전달된 이벤트 신호를 언마스킹하는 프로세서.
- 제8항에 있어서, 만약 상기 제1 명령어가 실행되었다면, 상기 제2 명령어는 상기 모니터를 단지 인에이블시키는 프로세서.
- 제1항에 있어서, 상기 중단 로직은 상기 제1 명령어에 응답하여 상기 제1 스레드의 실행을 중단시키는 프로세서.
- 제8항에 있어서,상기 모니터 주소에 대한 저장소(stores)의 가시성을 향상시키기 위한 일관성 로직(coherency logic)을 더 포함하는 프로세서.
- 제11항에 있어서, 상기 일관성 로직은, 일관성 도메인 내의 어떠한 캐시도 변경된 상태(modified state)나 배타적 상태(exclusive state)에서 상기 모니터링되는 주소에 있는 정보를 저장하지 않음을 보장하는 프로세서.
- 제12항에 있어서,상기 일관성 로직은, 임의의 내부 캐시들로부터의 상기 모니터링되는 주소에 연관된 캐시 라인을 플러싱(flushing)하고, 상기 모니터 주소에 연관된 상기 캐시 라인의 버스 판독 라인 트랜잭션(bus read line transaction)을 상기 프로세서에 결합된 다른 프로세서들로 생성시키며,상기 버스 판독 라인 트랜잭션은 파이프라인 버스 프로토콜(pipelined bus protocol)에 따라 제공되는 다중 위상 트랜잭션(multi-phase transaction)인 프로세서.
- 제11항에 있어서, 상기 일관성 로직은, 임의의 다른 버스 에이전트들이 기록트랜잭션을 브로드캐스팅(broadcasting)하지 않고 상기 모니터 주소로의 상기 기록 트랜잭션을 수행하지 못하도록, 상기 프로세서로 하여금 버스 사이클을 생성하도록 하는 프로세서.
- 제14항에 있어서, 다른 버스 에이전트의 상기 모니터 주소에 있는 정보의 판독에 응답하여 히트 신호(hit signal)를 확인하기 위한 버스 제어 로직을 더 포함하는 프로세서.
- 제1항에 있어서, 상기 관련 주소 피연산자에 의해 지시된 상기 모니터 주소는, 상기 관련 주소 피연산자에 의해 지시되는 주소에 있는 데이터에 대한 캐시 라인 중의 하나, 캐시 라인의 일부, 또는 대안적인 크기의 유닛(alternatively sized unit)을 나타내는 프로세서.
- 제1항에 있어서, 상기 관련 주소 피연산자를 물리적 주소인 상기 모니터 주소로 변환하기 위한 주소 변환 로직(address translation logic)을 더 포함하는 프로세서.
- 제1항에 있어서, 상기 모니터 주소는, 물리적 주소, 가상 주소(virtual address), 상대 주소(relative address), 및 선형 주소(linear address)로 이루어진 집합에서 선택되는 프로세서.
- 제1항에 있어서,다중 스레드들이 활성인 경우에, 상기 복수의 스레드 중의 각각의 활성 스레드에 각각의 분할 가능한 자원의 일부를 제공하기 위해 분할되는 복수의 분할 가능한 자원을 더 포함하고,상기 중단 로직은, 상기 제1 스레드의 실행 중단에 응답하여 상기 제1 스레드에 제공된 상기 복수의 분할들 중의 임의의 분할을 포기하는 프로세서.
- 제19항에 있어서, 상기 모니터는, 상기 모니터 주소로의 상기 메모리 액세스에 응답하여 상기 제1 스레드의 실행을 수용하기 위하여 상기 복수의 분할 가능한 자원이 재분할되도록 하는 프로세서.
- 제20항에 있어서, 상기 복수의 분할 가능한 자원은명령어 큐;재정렬 버퍼(re-order buffer);레지스터 풀(pool); 및복수의 저장 버퍼를 포함하는 프로세서.
- 제21항에 있어서,상기 복수의 스레드의 각각에 대해 복제되는 복수의 복제 자원을 더 포함하고,상기 복수의 복제 자원은복수의 프로세서 상태 변수;명령어 포인터; 및레지스터 리네이밍 로직(register renaming logic)을 포함하는 프로세서.
- 제22항에 있어서,상기 복수의 스레드 중의 임의의 스레드에 이용될 수 있는 복수의 공유 자원을 더 포함하고,상기 복수의 공유 자원은상기 복수의 실행 유닛;캐시; 및스케쥴러를 포함하는 프로세서.
- 제1 스레드로부터 모니터 주소를 나타내는 제1 명령어를 수신하고, 상기 제1 스레드로부터 제2 명령어를 수신하기 위한 프론트 엔드(front end);상기 제1 명령어 및 상기 제2 명령어를 실행하고, 상기 제2 명령어에 응답하여 상기 제1 스레드의 실행을 중단시키기 위한 실행 자원들; 및상기 모니터 주소로의 메모리 액세스에 응답하여 상기 제1 스레드를 재개시키는 모니터를 포함하는 프로세서.
- 제24항에 있어서,상기 제1 명령어는 선형 주소를 나타내는 피연산자를 가지고,상기 프로세서는, 물리적 주소인 상기 모니터 주소를 얻기 위하여 상기 선형 주소를 변환하는 주소 변환 로직을 더 포함하는 프로세서.
- 제25항에 있어서,상기 프로세서에 결합된 다른 프로세서에서의 어떠한 캐시도 변경된 상태나 배타적 상태에서 상기 모니터 주소에 있는 정보를 저장하지 않음을 보장하기 위한 일관성 로직을 더 포함하는 프로세서.
- 제26항에 있어서, 상기 일관성 로직은 다른 프로세서가 상기 모니터 주소를 스누핑(snooping)하는 것에 응답하여 히트 신호를 선언하는 프로세서.
- 제1 스레드로부터 관련 모니터 주소를 갖는 제1 명령어를 수신하기 위한 프론트 엔드 로직; 및상기 모니터 주소를 수신하고, 상기 제1 명령어에 응답하여 상기 모니터 주소로의 메모리 액세스를 모니터링하며, 상기 모니터 주소로의 액세스가 발생하는 경우에 이벤트 신호를 생성하기 위해 결합된 모니터를 포함하는 프로세서.
- 제28항에 있어서, 상기 모니터는 상기 모니터 주소에 기록하는 기록 메모리 액세스에 응답하여 상기 이벤트 신호를 생성하는 프로세서.
- 제28항에 있어서, 상기 모니터는 라인 무효화 트랜잭션(line invalidating transaction)에 응답하여 상기 이벤트 신호를 생성하는 프로세서.
- 제28항에 있어서, 상기 프로세서에 결합된 다른 프로세서에서의 어떠한 캐시도 변경된 상태나 배타적 상태에서 상기 모니터 주소에 있는 정보를 저장하지 않음을 보장하기 위한 일관성 로직을 더 포함하는 프로세서.
- 제31항에 있어서, 상기 일관성 로직은, 내부 캐시 플러시 사이클(cach flush cycle)을 생성하고, 외부 판독 라인 트랜잭션을 생성하기 위한 로직을 포함하는 프로세서.
- 제28항에 있어서, 상기 모니터로부터의 모니터 이벤트들을 언마스킹하고,제2 명령어에 응답하여 상기 제1 스레드를 중단시키기 위한 로직을 더 포함하는 프로세서.
- 복수의 스레드를 실행하기 위한 복수의 실행 유닛;상기 복수의 스레드 중의 제1 스레드로부터 명령어를 수신하기 위한 프론트 엔드 로직; 및만약 어떠한 모니터 이벤트도 보류 중이지 않다면, 상기 명령어에 응답하여 상기 제1 스레드를 중단시키고, 상기 복수의 스레드 중의 다른 스레드들이 실행될 수 있도록 하기 위한 중단 로직을 포함하는 프로세서.
- 제34항에 있어서, 상기 중단 로직은 이미 보류 중인 모니터 이벤트들을 포함한 모니터 이벤트들을 인식할 수 있도록 하는 프로세서.
- 제35항에 있어서,상기 프로세서는 복수의 분할 가능한 자원을 포함하고,상기 중단 로직은, 상기 명령어에 응답하여 상기 제1 스레드를 중단시키는 것 이외에 상기 제1 스레드에 연관된 상기 복수의 분할 가능한 자원의 각각의 분할 영역들을 포기하는 프로세서.
- 명령어들을 수신하기 위한 복수의 스레드 분할 가능 자원;상기 복수의 스레드 분할 가능 자원과 협력하여 명령어들을 실행하기 위한 복수의 공유 자원;상기 제1 스레드에서의 명령어에 응답하여 제1 스레드를 중단시키며, 상기 제1 스레드를 중단시키는 것 이외에 상기 제1 스레드에 연관된 상기 복수의 스레드 분할 가능 자원의 분할 영역들을 포기하기 위한 스레드 중단 로직; 및상기 프로세서로 하여금 상기 제1 스레드에 의해 표시되는 메모리 주소로의 액세스에 응답하여 상기 복수의 스레드 분할 가능 자원을 재분할하고, 상기 제1 스레드의 실행을 재개시키도록 하기 위한 모니터를 포함하는 프로세서.
- 제37항에 있어서,상기 메모리 주소로의 상기 액세스는 상기 제1 스레드에서 실행되는 제1 명령어에 의해 명시되며,상기 명령어에 의해, 스레드를 재개시키도록 하는 모니터 이벤트들 신호를 생성하기 위해 상기 모니터가 언마스킹되며, 상기 명령어에 응답하여 상기 스레드 중단 로직이 상기 제1 스레드를 중단시키는 프로세서.
- 실행 중인 복수의 스레드 중의 제1 스레드를 중단시키기 위한 수단;메모리 위치로의 액세스를 검출하기 위한 수단; 및상기 검출 수단이 상기 메모리 위치로의 상기 액세스를 검출한 것에 응답하여 상기 제1 스레드를 재개시키기 위한 수단을 포함하는 장치.
- 제39항에 있어서,상기 메모리 지점으로의 상기 액세스를 검출하기 위한 상기 수단은, 상기 제1 스레드에서 실행되는 제1 명령어에 응답하여 인에이블되며,상기 제1 스레드를 중단시키기 위한 상기 수단은, 상기 제1 스레드에서 실행되는 제2 명령어에 응답하여 상기 제1 스레드를 중단시키는 장치.
- 제40항에 있어서, 상기 메모리 위치로의 상기 액세스의 검출을 단순화하기 위한 일관성 수단을 더 포함하는 장치.
- 제41항에 있어서, 상기 메모리 위치로의 상기 액세스는 기록(write) 또는 무효화(invalidating) 액세스인 장치.
- 제41항에 있어서,중단시키기 위한 상기 수단이 상기 제1 스레드의 실행을 중단시키는 것에 응답하여 자원들을 어닐링(annealing)하기 위한 수단 - 어닐링하기 위한 상기 수단은 상기 복수의 스레드 중의 다른 스레드들에 의한 사용을 위해 상기 제1 스레드에 연관된 분할 자원들을 해제함 - ;자원들을 재분할하여 상기 제1 스레드의 재개를 수용하기 위하여 자원들을 분할하기 위한 수단을 더 포함하는 장치.
- 실행 중인 제1 스레드에서의 제1 연산 코드(opcode)를 수신하는 단계 - 상기 제1 연산 코드는 모니터 주소를 나타내는 관련 주소 피연산자를 가짐 - ;상기 제1 스레드를 중단시키는 단계;상기 모니터 주소로의 메모리 액세스를 검출하는 단계; 및상기 모니터 주소로의 상기 메모리 액세스를 검출한 것에 응답하여 상기 제1 스레드를 재개시키는 단계를 포함하는 방법.
- 제44항에 있어서, 상기 제1 스레드를 중단시키는 단계는상기 제1 스레드에서 제2 명령어를 수신하는 단계; 및상기 제2 명령어에 응답하여 상기 제1 스레드를 중단시키는 단계를 포함하는 방법.
- 제45항에 있어서, 상기 메모리 액세스는 기록 액세스인 방법.
- 제45항에 있어서,상기 관련 주소 피연산자를 모니터링되는 물리적 주소로 변환하는 단계를 더 포함하고,상기 모니터 주소로의 상기 메모리 액세스를 검출하는 단계는, 상기 모니터링되는 물리적 주소로의 기록 액세스를 검출하는 단계를 포함하는 방법.
- 제44항에 있어서, 다른 에이전트들이 상기 모니터 주소에 저장된 정보의 소유권(ownership)을 획득하는 것을 방지하는 단계를 더 포함하는 방법.
- 제44항에 있어서, 상기 검출 단계는외부 버스 트랜잭션들로부터 사이클 정보를 수신하는 단계; 및상기 모니터 주소로의 기록을 검출하는 단계를 포함하는 방법.
- 제44항에 있어서,상기 메모리 주소로의 상기 메모리 액세스 이외의 이벤트에 응답하여 상기 제1 스레드를 재개시키는 단계를 더 포함하는 방법.
- 제50항에 있어서, 상기 이벤트는 인터럽트인 방법.
- 제51항에 있어서, 상기 인터럽트는, 제2 피연산자에 의해 파괴 이벤트(break event)로 간주되도록 지시되는 마스킹된 인터럽트(masked interrupt)인 방법.
- 실행 중인 제1 스레드에서 실행되는 제1 연산 코드를 수신하는 단계;상기 제1 연산 코드에 연관된 선형 주소를 물리적 주소로 변환하는 단계;다른 버스 에이전트로 하여금 모니터링 버스 에이전트(monitoring bus agent)에 알리지 않고 상기 데이터를 변경할 수 있도록 하기 위해, 어떠한 다른 버스 에이전트도 상기 물리적 주소에 연관된 데이터에 대한 충분한 소유권을 갖지 않는다는 것을 보장하도록 상기 모니터링 버스 에이전트에 의한 버스 트랜잭션을 수행하는 단계;상기 물리적 주소로의 기록 액세스를 위해 모니터링하는 단계;만약 다른 버스 에이전트가 상기 물리적 주소를 판독한다면, 히트 신호를 생성하는 단계;실행 중인 상기 제1 스레드에서의 제2 연산 코드를 수신하는 단계;상기 제2 연산 코드에 응답하여 실행 중인 상기 제1 스레드를 중단시키고, 모니터 이벤트의 인식을 인에이블하는 단계;만약 상기 기록 액세스가 발생한다면, 상기 제1 스레드를 재개시키는 단계;이벤트들의 제1 세트 중의 임의의 이벤트에 응답하여 상기 제1 스레드의 실행을 재개시키는 단계; 및이벤트들의 제2 세트를 무시하는 단계를 포함하는 방법.
- 제53항에 있어서, 상기 제2 연산 코드에 응답하여 실행 중인 상기 제1 스레드를 중단시키는 상기 중단 단계는,상기 모니터 이벤트가 보류 중인지 여부를 테스트하는 단계;모니터가 활성인지 여부를 테스트하는 단계; 및만약 상기 모니터가 활성이고 어떠한 모니터 이벤트도 보류 중이지 않다면, 제1 스레드 중단 상태(thread suspended state)에 진입하는 단계를 포함하는 방법.
- 제54항에 있어서, 상기 제1 스레드 중단 상태에 진입하는 상기 진입 단계는,레지스터 풀에서의 복수의 레지스터를 포기하는 단계;명령어 큐에서의 복수의 명령어 큐 엔트리를 포기하는 단계;저장 버퍼에서의 복수의 저장 버퍼 엔트리를 포기하는 단계; 및재정렬 버퍼에서의 복수의 재정렬 버퍼 엔트리를 포기하는 단계를 포함하는 방법.
- 제1 스레드로부터의 제1 명령어를 저장하기 위한 메모리 - 상기 제1 명령어는 모니터 주소를 나타내는 관련 주소 피연산자를 가짐 -; 및모니터로 하여금 상기 제1 명령어에 응답하여 상기 모니터 주소로의 메모리액세스를 검출하기 위해 메모리 트랜잭션들을 모니터링할 수 있도록 하고, 상기 모니터 주소로의 상기 메모리 액세스에 응답하여 상기 제1 스레드를 재개하도록 하며, 상기 메모리에 결합되는 제1 프로세서를 포함하는 시스템.
- 제56항에 있어서,상기 메모리는 상기 제1 스레드로부터의 제2 명령어를 저장하며,상기 제1 프로세서는 상기 제2 명령어에 응답하여 상기 제1 스레드를 중단시키는 시스템.
- 제57항에 있어서,상기 모니터는 상기 메모리 액세스 발생에 응답하여 모니터 이벤트 보류 지시자(monitor event pending indicator)를 설정하며,상기 모니터 이벤트 보류 지시자는 상기 제1 프로세서로 하여금 상기 제2 명령어에 의해 일단 언마스킹된 스레드를 재개시키는 시스템.
- 제56항에 있어서,상기 제1 프로세서는 제1 캐시를 포함하고,상기 시스템은 제2 캐시를 포함하는 제2 프로세서를 포함하고,상기 제1 프로세서는, 상기 제2 프로세서로 하여금 상기 제2 캐시에서 상기모니터 주소에 저장된 데이터를 변경할 수 있는 임의의 트랜잭션들을 상기 제1 프로세서에게 브로드캐스팅하도록 하기 위해, 버스 트랜잭션을 상기 제2 프로세서에서 수행하도록 하는 시스템.
- 제59항에 있어서,상기 제1 프로세서는, 상기 제2 프로세서가 변경이 발생하고 있다는 점을 브로드캐스팅하지 않고 상기 제2 캐시에서 상기 모니터 주소에 저장된 데이터를 변경할 수 있도록 하는 상태에서, 상기 제2 프로세서로 하여금 상기 모니터 주소에 있는 데이터를 캐싱하지 못하도록 하는 신호를 확인하는 시스템.
- 제60항에 있어서, 상기 신호는 캐시 히트를 나타내며, 상기 제2 캐시로 하여금 배타적 상태에서 상기 모니터 주소에 있는 데이터를 저장하지 못하도록 하는 시스템.
- 제58항에 있어서, 상기 제1 프로세서는 또한, 만약 대체 이벤트가 발생한다면 상기 제1 스레드를 재개시키는 시스템.
- 제62항에 있어서, 상기 대체 이벤트는 인터럽트인 시스템.
- 제62항에 있어서,상기 메모리에 저장된 상기 제1 스레드는 루프를 포함하고,상기 루프는 상기 제1 명령어 및 상기 제2 명령어뿐만 아니라, 상기 모니터 주소에 있는 데이터가 변경되었는지 여부를 결정하고 만약 상기 모니터 주소에 있는 데이터가 변경되지 않았다면 상기 루프를 재시작하기 위한 테스트를 포함하는 시스템.
- 컴퓨터 판독 가능 매체를 포함하는 제품인 프로세서에 있어서,제1 스레드를 포함하는 복수의 스레드의 실행을 가능하게 하는 복수의 실행 유닛 - 상기 제1 스레드는 모니터 주소를 나타내는 관련 주소 피연산자를 갖는 제1 명령어를 가짐 - ;상기 제1 스레드의 실행을 중단시키기 위한 중단 로직; 및상기 모니터 주소로의 메모리 액세스에 응답하여, 상기 제1 스레드를 재개시키도록 하기 위한 모니터를 포함하는 프로세서.
- 제65항에 있어서, 상기 모니터는 상기 메모리 액세스가 상기 모니터 주소로의 실제적 또는 잠재적 기록을 나타내는 경우에만, 상기 메모리 액세스에 응답하여 재개시키도록 하는 프로세서.
- 제65항에 있어서, 상기 모니터는 만약 상기 제1 스레드가 중단되고 모니터이벤트가 언마스킹된다면, 상기 모니터 주소로의 상기 메모리 액세스에 응답하여 상기 제1 스레드를 재개시키도록 하는 프로세서.
- 제65항에 있어서, 상기 프로세서는 상기 메모리 액세스 이외의 이벤트에 응답하여 상기 제1 스레드를 재개시키도록 하는 이벤트 검출 로직을 더 포함하는 프로세서.
- 제68항에 있어서,상기 프로세스는 다중 스레드들이 동작 중인 경우에, 상기 복수의 스레드 중의 각각의 활성 스레드에 각각의 분할 가능한 자원의 일부를 제공하기 위해 분할되는 복수의 분할 가능한 자원을 더 포함하고,상기 중단 로직은, 상기 제1 스레드의 실행 중단에 응답하여 상기 제1 스레드에 제공된 상기 복수의 분할 영역 중의 임의의 분할 영역을 포기하는 프로세서.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/039,579 US7363474B2 (en) | 2001-12-31 | 2001-12-31 | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
US10/039,579 | 2001-12-31 | ||
PCT/US2002/039786 WO2003058447A2 (en) | 2001-12-31 | 2002-12-11 | A method and apparatus for suspending execution of a thread until a specified memory access occurs |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040068993A true KR20040068993A (ko) | 2004-08-02 |
KR100814993B1 KR100814993B1 (ko) | 2008-03-18 |
Family
ID=21906217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020047010389A KR100814993B1 (ko) | 2001-12-31 | 2002-12-11 | 특정 메모리 액세스가 발생할 때까지 스레드의 실행을중단하기 위한 방법 및 장치 |
Country Status (11)
Country | Link |
---|---|
US (2) | US7363474B2 (ko) |
JP (2) | JP4601958B2 (ko) |
KR (1) | KR100814993B1 (ko) |
CN (1) | CN100383740C (ko) |
AU (1) | AU2002364557A1 (ko) |
DE (2) | DE10297596B4 (ko) |
GB (1) | GB2400947B (ko) |
HK (1) | HK1066883A1 (ko) |
RU (1) | RU2308754C2 (ko) |
TW (2) | TWI322959B (ko) |
WO (1) | WO2003058447A2 (ko) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100102283A (ko) * | 2009-03-11 | 2010-09-24 | 삼성전자주식회사 | 플래시 메모리 장치 및 그 제어 방법 |
US8286166B2 (en) | 2006-02-24 | 2012-10-09 | Samsung Electronics Co., Ltd. | Interruptible thread synchronization method and apparatus |
KR101370314B1 (ko) * | 2009-06-26 | 2014-03-05 | 인텔 코포레이션 | 언바운디드 트랜잭션 메모리 (utm) 시스템의 최적화 |
KR20160118937A (ko) * | 2015-04-02 | 2016-10-12 | 에이알엠 리미티드 | 멀티스레드 데이터 처리장치의 이벤트 감시 |
KR20170051465A (ko) * | 2014-09-08 | 2017-05-11 | 에이알엠 리미티드 | 복수의 쓰레드를 실행하기 위한 데이터 처리장치에서의 공유 자원 |
KR20190088188A (ko) * | 2018-01-18 | 2019-07-26 | 주식회사 알티스트 | 파티셔닝을 적용하여 프로세스를 모니터링하는 컴퓨팅 시스템 |
Families Citing this family (132)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7127561B2 (en) * | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques for suspending execution of a thread until a specified memory access occurs |
US7653912B2 (en) * | 2003-05-30 | 2010-01-26 | Steven Frank | Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations |
US7213093B2 (en) * | 2003-06-27 | 2007-05-01 | Intel Corporation | Queued locks using monitor-memory wait |
US8984199B2 (en) * | 2003-07-31 | 2015-03-17 | Intel Corporation | Inter-processor interrupts |
US20050108711A1 (en) * | 2003-11-13 | 2005-05-19 | Infineon Technologies North America Corporation | Machine instruction for enhanced control of multiple virtual processor systems |
US7310722B2 (en) * | 2003-12-18 | 2007-12-18 | Nvidia Corporation | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
US7490218B2 (en) * | 2004-01-22 | 2009-02-10 | University Of Washington | Building a wavecache |
US7657882B2 (en) | 2004-01-22 | 2010-02-02 | University Of Washington | Wavescalar architecture having a wave order memory |
US7552042B1 (en) | 2004-01-30 | 2009-06-23 | Xilinx, Inc. | Method for message processing on a programmable logic device |
US7823162B1 (en) | 2004-01-30 | 2010-10-26 | Xilinx, Inc. | Thread circuits and a broadcast channel in programmable logic |
US7770179B1 (en) * | 2004-01-30 | 2010-08-03 | Xilinx, Inc. | Method and apparatus for multithreading on a programmable logic device |
US8984517B2 (en) * | 2004-02-04 | 2015-03-17 | Intel Corporation | Sharing idled processor execution resources |
US7581214B2 (en) * | 2004-04-15 | 2009-08-25 | Intel Corporation | Live set transmission in pipelining applications |
JP4376692B2 (ja) * | 2004-04-30 | 2009-12-02 | 富士通株式会社 | 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ |
US8607241B2 (en) * | 2004-06-30 | 2013-12-10 | Intel Corporation | Compare and exchange operation using sleep-wakeup mechanism |
US7703098B1 (en) | 2004-07-20 | 2010-04-20 | Sun Microsystems, Inc. | Technique to allow a first transaction to wait on condition that affects its working set |
US7206903B1 (en) * | 2004-07-20 | 2007-04-17 | Sun Microsystems, Inc. | Method and apparatus for releasing memory locations during transactional execution |
US8074030B1 (en) | 2004-07-20 | 2011-12-06 | Oracle America, Inc. | Using transactional memory with early release to implement non-blocking dynamic-sized data structure |
KR101051703B1 (ko) | 2004-08-09 | 2011-07-25 | 삼성전자주식회사 | 서스펜드/리쥼 기능을 갖는 집적 회로 카드 및 집적 회로카드 시스템 |
US7434009B2 (en) * | 2004-09-30 | 2008-10-07 | Freescale Semiconductor, Inc. | Apparatus and method for providing information to a cache module using fetch bursts |
US7257679B2 (en) | 2004-10-01 | 2007-08-14 | Advanced Micro Devices, Inc. | Sharing monitored cache lines across multiple cores |
US7313673B2 (en) * | 2005-06-16 | 2007-12-25 | International Business Machines Corporation | Fine grained multi-thread dispatch block mechanism |
US9003421B2 (en) * | 2005-11-28 | 2015-04-07 | Intel Corporation | Acceleration threads on idle OS-visible thread execution units |
KR100771877B1 (ko) | 2006-07-21 | 2007-11-01 | 삼성전자주식회사 | 오동작 방지용 커맨드 세트 프로토콜 처리 방법 및 장치 |
US20080022079A1 (en) * | 2006-07-24 | 2008-01-24 | Archer Charles J | Executing an allgather operation with an alltoallv operation in a parallel computer |
US8443341B2 (en) * | 2006-11-09 | 2013-05-14 | Rogue Wave Software, Inc. | System for and method of capturing application characteristics data from a computer system and modeling target system |
US8239657B2 (en) * | 2007-02-07 | 2012-08-07 | Qualcomm Incorporated | Address translation method and apparatus |
US8898438B2 (en) * | 2007-03-14 | 2014-11-25 | XMOS Ltd. | Processor architecture for use in scheduling threads in response to communication activity |
US7937532B2 (en) * | 2007-03-30 | 2011-05-03 | Intel Corporation | Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine |
JP4420055B2 (ja) | 2007-04-18 | 2010-02-24 | 日本電気株式会社 | マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法 |
US8161480B2 (en) | 2007-05-29 | 2012-04-17 | International Business Machines Corporation | Performing an allreduce operation using shared memory |
JP5099131B2 (ja) * | 2007-06-20 | 2012-12-12 | 富士通株式会社 | 演算装置 |
US20090006663A1 (en) * | 2007-06-27 | 2009-01-01 | Archer Charles J | Direct Memory Access ('DMA') Engine Assisted Local Reduction |
JP2009110209A (ja) * | 2007-10-29 | 2009-05-21 | Panasonic Corp | 演算処理装置、プロセッサ、プログラム変換装置およびプログラム |
US8341635B2 (en) | 2008-02-01 | 2012-12-25 | International Business Machines Corporation | Hardware wake-and-go mechanism with look-ahead polling |
US8732683B2 (en) * | 2008-02-01 | 2014-05-20 | International Business Machines Corporation | Compiler providing idiom to idiom accelerator |
US8516484B2 (en) * | 2008-02-01 | 2013-08-20 | International Business Machines Corporation | Wake-and-go mechanism for a data processing system |
US8640141B2 (en) * | 2008-02-01 | 2014-01-28 | International Business Machines Corporation | Wake-and-go mechanism with hardware private array |
US8612977B2 (en) * | 2008-02-01 | 2013-12-17 | International Business Machines Corporation | Wake-and-go mechanism with software save of thread state |
US8225120B2 (en) * | 2008-02-01 | 2012-07-17 | International Business Machines Corporation | Wake-and-go mechanism with data exclusivity |
US8725992B2 (en) | 2008-02-01 | 2014-05-13 | International Business Machines Corporation | Programming language exposing idiom calls to a programming idiom accelerator |
US8386822B2 (en) * | 2008-02-01 | 2013-02-26 | International Business Machines Corporation | Wake-and-go mechanism with data monitoring |
US8127080B2 (en) | 2008-02-01 | 2012-02-28 | International Business Machines Corporation | Wake-and-go mechanism with system address bus transaction master |
US8250396B2 (en) * | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Hardware wake-and-go mechanism for a data processing system |
US8145849B2 (en) | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Wake-and-go mechanism with system bus response |
US8312458B2 (en) * | 2008-02-01 | 2012-11-13 | International Business Machines Corporation | Central repository for wake-and-go mechanism |
US8171476B2 (en) * | 2008-02-01 | 2012-05-01 | International Business Machines Corporation | Wake-and-go mechanism with prioritization of threads |
US8316218B2 (en) | 2008-02-01 | 2012-11-20 | International Business Machines Corporation | Look-ahead wake-and-go engine with speculative execution |
US8452947B2 (en) * | 2008-02-01 | 2013-05-28 | International Business Machines Corporation | Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms |
US8788795B2 (en) * | 2008-02-01 | 2014-07-22 | International Business Machines Corporation | Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors |
US8880853B2 (en) * | 2008-02-01 | 2014-11-04 | International Business Machines Corporation | CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock |
US8422402B2 (en) | 2008-04-01 | 2013-04-16 | International Business Machines Corporation | Broadcasting a message in a parallel computer |
US8281053B2 (en) | 2008-07-21 | 2012-10-02 | International Business Machines Corporation | Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations |
CN101788922B (zh) * | 2009-01-22 | 2013-12-25 | 国际商业机器公司 | 基于辅助线程实现事务存储***的方法和装置 |
US8230201B2 (en) * | 2009-04-16 | 2012-07-24 | International Business Machines Corporation | Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system |
US8886919B2 (en) | 2009-04-16 | 2014-11-11 | International Business Machines Corporation | Remote update programming idiom accelerator with allocated processor resources |
US8145723B2 (en) * | 2009-04-16 | 2012-03-27 | International Business Machines Corporation | Complex remote update programming idiom accelerator |
US8082315B2 (en) * | 2009-04-16 | 2011-12-20 | International Business Machines Corporation | Programming idiom accelerator for remote update |
US8156275B2 (en) | 2009-05-13 | 2012-04-10 | Apple Inc. | Power managed lock optimization |
US8364862B2 (en) * | 2009-06-11 | 2013-01-29 | Intel Corporation | Delegating a poll operation to another device |
EP2284693A1 (en) | 2009-08-03 | 2011-02-16 | C.R.F. Società Consortile per Azioni | Wait instruction |
US8695002B2 (en) * | 2009-10-20 | 2014-04-08 | Lantiq Deutschland Gmbh | Multi-threaded processors and multi-processor systems comprising shared resources |
US20110173420A1 (en) * | 2010-01-08 | 2011-07-14 | International Business Machines Corporation | Processor resume unit |
US8447960B2 (en) * | 2010-01-08 | 2013-05-21 | International Business Machines Corporation | Pausing and activating thread state upon pin assertion by external logic monitoring polling loop exit time condition |
US8464035B2 (en) * | 2009-12-18 | 2013-06-11 | Intel Corporation | Instruction for enabling a processor wait state |
US9424087B2 (en) | 2010-04-29 | 2016-08-23 | International Business Machines Corporation | Optimizing collective operations |
US8949577B2 (en) | 2010-05-28 | 2015-02-03 | International Business Machines Corporation | Performing a deterministic reduction operation in a parallel computer |
US8898671B2 (en) | 2010-07-07 | 2014-11-25 | Panasonic Corporation | Processor that executes a plurality of threads by promoting efficiency of transfer of data that is shared with the plurality of threads |
US8776081B2 (en) | 2010-09-14 | 2014-07-08 | International Business Machines Corporation | Send-side matching of data communications messages |
US8566841B2 (en) | 2010-11-10 | 2013-10-22 | International Business Machines Corporation | Processing communications events in parallel active messaging interface by awakening thread from wait state |
US8713362B2 (en) | 2010-12-01 | 2014-04-29 | International Business Machines Corporation | Obviation of recovery of data store consistency for application I/O errors |
US8694821B2 (en) * | 2010-12-03 | 2014-04-08 | International Business Machines Corporation | Generation of standby images of applications |
CN102736945B (zh) * | 2011-03-31 | 2016-05-18 | 国际商业机器公司 | 一种运行应用程序的多个实例的方法和*** |
CN102760176B (zh) * | 2011-04-29 | 2015-02-11 | 无锡江南计算技术研究所 | 硬件事务级仿真方法、引擎及*** |
US8893083B2 (en) | 2011-08-09 | 2014-11-18 | International Business Machines Coporation | Collective operation protocol selection in a parallel computer |
US8667501B2 (en) | 2011-08-10 | 2014-03-04 | International Business Machines Corporation | Performing a local barrier operation |
US8910178B2 (en) | 2011-08-10 | 2014-12-09 | International Business Machines Corporation | Performing a global barrier operation in a parallel computer |
US8868843B2 (en) | 2011-11-30 | 2014-10-21 | Advanced Micro Devices, Inc. | Hardware filter for tracking block presence in large caches |
US9798548B2 (en) * | 2011-12-21 | 2017-10-24 | Nvidia Corporation | Methods and apparatus for scheduling instructions using pre-decode data |
CN106909444B (zh) | 2011-12-22 | 2021-01-12 | 英特尔公司 | 用于指定应用线程性能状态的指令的指令处理装置及相关方法 |
JP5819184B2 (ja) | 2011-12-28 | 2015-11-18 | 富士通株式会社 | 情報処理装置及び情報処理装置の制御方法 |
WO2013101188A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Memory event notification |
US9495135B2 (en) | 2012-02-09 | 2016-11-15 | International Business Machines Corporation | Developing collective operations for a parallel computer |
US8706847B2 (en) | 2012-02-09 | 2014-04-22 | International Business Machines Corporation | Initiating a collective operation in a parallel computer |
US9396020B2 (en) | 2012-03-30 | 2016-07-19 | Intel Corporation | Context switching mechanism for a processing core having a general purpose CPU core and a tightly coupled accelerator |
US9218288B2 (en) | 2012-06-15 | 2015-12-22 | International Business Machines Corporation | Monitoring a value in storage without repeated storage access |
US9256455B2 (en) * | 2012-11-20 | 2016-02-09 | Red Hat Isreal, Ltd. | Delivery of events from a virtual machine to host CPU using memory monitoring instructions |
US9563425B2 (en) | 2012-11-28 | 2017-02-07 | Intel Corporation | Instruction and logic to provide pushing buffer copy and store functionality |
US9141454B2 (en) * | 2012-12-27 | 2015-09-22 | Intel Corporation | Signaling software recoverable errors |
US10705961B2 (en) | 2013-09-27 | 2020-07-07 | Intel Corporation | Scalably mechanism to implement an instruction that monitors for writes to an address |
US9250935B2 (en) * | 2013-11-25 | 2016-02-02 | Marvell World Trade Ltd. | Systems and methods for loop suspension in java programming |
US9921848B2 (en) | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction in a multithreading computer system |
US9354883B2 (en) | 2014-03-27 | 2016-05-31 | International Business Machines Corporation | Dynamic enablement of multithreading |
US9218185B2 (en) | 2014-03-27 | 2015-12-22 | International Business Machines Corporation | Multithreading capability information retrieval |
US9804846B2 (en) | 2014-03-27 | 2017-10-31 | International Business Machines Corporation | Thread context preservation in a multithreading computer system |
US9594660B2 (en) | 2014-03-27 | 2017-03-14 | International Business Machines Corporation | Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores |
US9417876B2 (en) | 2014-03-27 | 2016-08-16 | International Business Machines Corporation | Thread context restoration in a multithreading computer system |
US10102004B2 (en) | 2014-03-27 | 2018-10-16 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
US9552033B2 (en) | 2014-04-22 | 2017-01-24 | Qualcomm Incorporated | Latency-based power mode units for controlling power modes of processor cores, and related methods and systems |
US9778949B2 (en) * | 2014-05-05 | 2017-10-03 | Google Inc. | Thread waiting in a multithreaded processor architecture |
US9477521B2 (en) | 2014-05-29 | 2016-10-25 | Netapp, Inc. | Method and system for scheduling repetitive tasks in O(1) |
US9256477B2 (en) * | 2014-05-29 | 2016-02-09 | Netapp, Inc. | Lockless waterfall thread communication |
US9304702B2 (en) | 2014-05-29 | 2016-04-05 | Netapp, Inc. | System and method for parallelized performance data collection in a computing system |
JP6227151B2 (ja) * | 2014-10-03 | 2017-11-08 | インテル・コーポレーション | アドレスへの書き込みに対する監視命令を実行するスケーラブル機構 |
US9575802B2 (en) | 2014-10-28 | 2017-02-21 | International Business Machines Corporation | Controlling execution of threads in a multi-threaded processor |
US11080064B2 (en) | 2014-10-28 | 2021-08-03 | International Business Machines Corporation | Instructions controlling access to shared registers of a multi-threaded processor |
US20170300329A1 (en) * | 2014-11-11 | 2017-10-19 | Renesas Electronics Corporation | Instruction execution control system and instruction execution control method |
WO2016088220A1 (ja) * | 2014-12-03 | 2016-06-09 | 株式会社日立製作所 | 計算機及び論理プロセッサの制御方法 |
CN105843592A (zh) * | 2015-01-12 | 2016-08-10 | 芋头科技(杭州)有限公司 | 一种在预设嵌入式***中实现脚本操作的*** |
US10908909B2 (en) * | 2015-06-09 | 2021-02-02 | Optimum Semiconductor Technologies Inc. | Processor with mode support |
KR102476357B1 (ko) | 2015-08-06 | 2022-12-09 | 삼성전자주식회사 | 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법 |
US9916178B2 (en) | 2015-09-25 | 2018-03-13 | Intel Corporation | Technologies for integrated thread scheduling |
GB2544994A (en) * | 2015-12-02 | 2017-06-07 | Swarm64 As | Data processing |
CN105677487B (zh) * | 2016-01-12 | 2019-02-15 | 浪潮通用软件有限公司 | 一种控制资源占用的方法及装置 |
US11023233B2 (en) | 2016-02-09 | 2021-06-01 | Intel Corporation | Methods, apparatus, and instructions for user level thread suspension |
US11061730B2 (en) * | 2016-11-18 | 2021-07-13 | Red Hat Israel, Ltd. | Efficient scheduling for hyper-threaded CPUs using memory monitoring |
CN108255587B (zh) * | 2016-12-29 | 2021-08-24 | 展讯通信(上海)有限公司 | 一种同步多线程处理器 |
US10353817B2 (en) * | 2017-03-07 | 2019-07-16 | International Business Machines Corporation | Cache miss thread balancing |
US10275254B2 (en) | 2017-03-08 | 2019-04-30 | International Business Machines Corporation | Spin loop delay instruction |
TWI648620B (zh) * | 2017-08-07 | 2019-01-21 | 慧榮科技股份有限公司 | 記憶體裝置以及操作指令錯誤處理方法 |
CN109508229A (zh) * | 2018-09-19 | 2019-03-22 | 安徽慧视金瞳科技有限公司 | 一种多点同时绘制的匹配方法 |
US11068407B2 (en) | 2018-10-26 | 2021-07-20 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction |
US10884740B2 (en) | 2018-11-08 | 2021-01-05 | International Business Machines Corporation | Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads |
US11119781B2 (en) | 2018-12-11 | 2021-09-14 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a fronting load |
US11086672B2 (en) | 2019-05-07 | 2021-08-10 | International Business Machines Corporation | Low latency management of processor core wait state |
US11231881B2 (en) | 2020-04-02 | 2022-01-25 | Dell Products L.P. | Raid data storage device multi-step command coordination system |
US11106608B1 (en) | 2020-06-22 | 2021-08-31 | International Business Machines Corporation | Synchronizing access to shared memory by extending protection for a target address of a store-conditional request |
CN111857591A (zh) * | 2020-07-20 | 2020-10-30 | 北京百度网讯科技有限公司 | 用于执行指令的方法、装置、设备和计算机可读存储介质 |
CN114489792B (zh) * | 2021-03-25 | 2022-10-11 | 沐曦集成电路(上海)有限公司 | 处理器装置及其指令执行方法 |
US11693776B2 (en) | 2021-06-18 | 2023-07-04 | International Business Machines Corporation | Variable protection window extension for a target address of a store-conditional request |
CN116089116B (zh) * | 2022-12-16 | 2024-05-31 | 成都海光集成电路设计有限公司 | 数据处理方法及装置 |
CN116185891B (zh) * | 2023-04-27 | 2023-07-21 | 珠海妙存科技有限公司 | 描述符管理方法 |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4491910A (en) * | 1982-02-22 | 1985-01-01 | Texas Instruments Incorporated | Microcomputer having data shift within memory |
JPS59111526A (ja) | 1982-12-16 | 1984-06-27 | Fujitsu Ltd | 信号処理方式 |
JPH06105460B2 (ja) | 1988-06-07 | 1994-12-21 | 富士通株式会社 | マルチプロセッサのプロセッサ切換え装置 |
GB8817911D0 (en) | 1988-07-27 | 1988-09-01 | Int Computers Ltd | Data processing apparatus |
US4965718A (en) | 1988-09-29 | 1990-10-23 | International Business Machines Corporation | Data processing system incorporating a memory resident directive for synchronizing multiple tasks among plurality of processing elements by monitoring alternation of semaphore data |
US5357617A (en) | 1991-11-22 | 1994-10-18 | International Business Machines Corporation | Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor |
JP2866241B2 (ja) | 1992-01-30 | 1999-03-08 | 株式会社東芝 | コンピュータシステムおよびスケジューリング方法 |
US5428757A (en) * | 1992-04-29 | 1995-06-27 | International Business Machines Corporation | Method for reducing translation look aside buffer purges in a multitasking system |
US5546593A (en) | 1992-05-18 | 1996-08-13 | Matsushita Electric Industrial Co., Ltd. | Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream |
JP3678759B2 (ja) | 1992-07-21 | 2005-08-03 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 割込を発生するための装置および割込を発生するための方法 |
US5493660A (en) * | 1992-10-06 | 1996-02-20 | Hewlett-Packard Company | Software assisted hardware TLB miss handler |
US5584031A (en) | 1993-11-09 | 1996-12-10 | Motorola Inc. | System and method for executing a low power delay instruction |
US5546037A (en) | 1993-11-15 | 1996-08-13 | Cirrus Logic, Inc. | NAPNOP circuit for conserving power in computer systems |
US5584014A (en) * | 1994-12-20 | 1996-12-10 | Sun Microsystems, Inc. | Apparatus and method to preserve data in a set associative memory device |
JPH08212512A (ja) * | 1995-02-03 | 1996-08-20 | Hitachi Ltd | 磁気記憶装置及びそれに用いる薄膜磁気ヘッドとその製造方法 |
JPH08320797A (ja) | 1995-05-24 | 1996-12-03 | Fuji Xerox Co Ltd | プログラム制御システム |
JPH096633A (ja) | 1995-06-07 | 1997-01-10 | Internatl Business Mach Corp <Ibm> | データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム |
US5933627A (en) | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
CN1147785C (zh) | 1996-08-27 | 2004-04-28 | 松下电器产业株式会社 | 执行多个指令流的多程序流程同时处理器 |
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 |
US5835705A (en) * | 1997-03-11 | 1998-11-10 | International Business Machines Corporation | Method and system for performance per-thread monitoring in a multithreaded processor |
WO1998043193A2 (en) | 1997-03-21 | 1998-10-01 | University Of Maryland | Spawn-join instruction set architecture for providing explicit multithreading |
UA55489C2 (uk) * | 1997-10-07 | 2003-04-15 | Каналь+ Сосьєте Анонім | Пристрій для багатопотокової обробки даних (варіанти) |
US6076157A (en) | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
US6016542A (en) * | 1997-12-31 | 2000-01-18 | Intel Corporation | Detecting long latency pipeline stalls for thread switching |
JP2000010910A (ja) * | 1998-06-22 | 2000-01-14 | Nec Corp | データ転送制御装置およびデータ転送制御方法ならびに記録媒体 |
US6920634B1 (en) * | 1998-08-03 | 2005-07-19 | International Business Machines Corporation | Detecting and causing unsafe latent accesses to a resource in multi-threaded programs |
US6505229B1 (en) * | 1998-09-25 | 2003-01-07 | Intelect Communications, Inc. | Method for allowing multiple processing threads and tasks to execute on one or more processor units for embedded real-time processor systems |
US6401155B1 (en) * | 1998-12-22 | 2002-06-04 | Philips Electronics North America Corporation | Interrupt/software-controlled thread processing |
SG65097A1 (en) | 1998-12-28 | 2001-08-21 | Compaq Computer Corp | Break event generation during transitions between modes of operation in a computer system |
US6535905B1 (en) | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US6351808B1 (en) * | 1999-05-11 | 2002-02-26 | Sun Microsystems, Inc. | Vertically and horizontally threaded processor with multidimensional storage for storing thread data |
US6341347B1 (en) * | 1999-05-11 | 2002-01-22 | Sun Microsystems, Inc. | Thread switch logic in a multiple-thread processor |
US6493741B1 (en) | 1999-10-01 | 2002-12-10 | Compaq Information Technologies Group, L.P. | Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit |
US6357016B1 (en) | 1999-12-09 | 2002-03-12 | Intel Corporation | Method and apparatus for disabling a clock signal within a multithreaded processor |
US6496925B1 (en) | 1999-12-09 | 2002-12-17 | Intel Corporation | Method and apparatus for processing an event occurrence within a multithreaded processor |
US6671795B1 (en) | 2000-01-21 | 2003-12-30 | Intel Corporation | Method and apparatus for pausing execution in a processor or the like |
US7856633B1 (en) | 2000-03-24 | 2010-12-21 | Intel Corporation | LRU cache replacement for a partitioned set associative cache |
US6931639B1 (en) * | 2000-08-24 | 2005-08-16 | International Business Machines Corporation | Method for implementing a variable-partitioned queue for simultaneous multithreaded processors |
TW461627U (en) * | 2000-12-21 | 2001-10-21 | Hon Hai Prec Ind Co Ltd | Electrical connector |
US6625698B2 (en) * | 2000-12-28 | 2003-09-23 | Unisys Corporation | Method and apparatus for controlling memory storage locks based on cache line ownership |
US6463511B2 (en) * | 2000-12-29 | 2002-10-08 | Intel Corporation | System and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model |
US7120762B2 (en) * | 2001-10-19 | 2006-10-10 | Wisconsin Alumni Research Foundation | Concurrent execution of critical sections by eliding ownership of locks |
US20030126416A1 (en) | 2001-12-31 | 2003-07-03 | Marr Deborah T. | Suspending execution of a thread in a multi-threaded processor |
US20030126379A1 (en) | 2001-12-31 | 2003-07-03 | Shiv Kaushik | Instruction sequences for suspending execution of a thread until a specified memory access occurs |
US7127561B2 (en) | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques for suspending execution of a thread until a specified memory access occurs |
-
2001
- 2001-12-31 US US10/039,579 patent/US7363474B2/en active Active
-
2002
- 2002-12-11 JP JP2003558691A patent/JP4601958B2/ja not_active Expired - Lifetime
- 2002-12-11 CN CNB028265904A patent/CN100383740C/zh not_active Expired - Lifetime
- 2002-12-11 DE DE10297596.5T patent/DE10297596B4/de not_active Expired - Lifetime
- 2002-12-11 RU RU2004123622/09A patent/RU2308754C2/ru not_active IP Right Cessation
- 2002-12-11 AU AU2002364557A patent/AU2002364557A1/en not_active Abandoned
- 2002-12-11 DE DE10297856.5A patent/DE10297856B4/de not_active Expired - Lifetime
- 2002-12-11 GB GB0412867A patent/GB2400947B/en not_active Expired - Lifetime
- 2002-12-11 WO PCT/US2002/039786 patent/WO2003058447A2/en active Application Filing
- 2002-12-11 KR KR1020047010389A patent/KR100814993B1/ko active IP Right Grant
- 2002-12-25 TW TW091137282A patent/TWI322959B/zh not_active IP Right Cessation
- 2002-12-25 TW TW097151472A patent/TWI590153B/zh not_active IP Right Cessation
-
2004
- 2004-12-07 HK HK04109671A patent/HK1066883A1/xx not_active IP Right Cessation
-
2007
- 2007-08-08 US US11/891,076 patent/US20080034190A1/en not_active Abandoned
-
2008
- 2008-03-26 JP JP2008081180A patent/JP4990829B2/ja not_active Expired - Lifetime
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8286166B2 (en) | 2006-02-24 | 2012-10-09 | Samsung Electronics Co., Ltd. | Interruptible thread synchronization method and apparatus |
KR20100102283A (ko) * | 2009-03-11 | 2010-09-24 | 삼성전자주식회사 | 플래시 메모리 장치 및 그 제어 방법 |
KR101370314B1 (ko) * | 2009-06-26 | 2014-03-05 | 인텔 코포레이션 | 언바운디드 트랜잭션 메모리 (utm) 시스템의 최적화 |
KR20170051465A (ko) * | 2014-09-08 | 2017-05-11 | 에이알엠 리미티드 | 복수의 쓰레드를 실행하기 위한 데이터 처리장치에서의 공유 자원 |
KR20160118937A (ko) * | 2015-04-02 | 2016-10-12 | 에이알엠 리미티드 | 멀티스레드 데이터 처리장치의 이벤트 감시 |
KR20190088188A (ko) * | 2018-01-18 | 2019-07-26 | 주식회사 알티스트 | 파티셔닝을 적용하여 프로세스를 모니터링하는 컴퓨팅 시스템 |
Also Published As
Publication number | Publication date |
---|---|
CN100383740C (zh) | 2008-04-23 |
JP4601958B2 (ja) | 2010-12-22 |
DE10297596B4 (de) | 2017-09-07 |
KR100814993B1 (ko) | 2008-03-18 |
TWI322959B (en) | 2010-04-01 |
GB0412867D0 (en) | 2004-07-14 |
DE10297596T5 (de) | 2004-12-02 |
JP4990829B2 (ja) | 2012-08-01 |
GB2400947B (en) | 2005-08-24 |
AU2002364557A1 (en) | 2003-07-24 |
RU2308754C2 (ru) | 2007-10-20 |
JP2006500639A (ja) | 2006-01-05 |
GB2400947A (en) | 2004-10-27 |
WO2003058447A2 (en) | 2003-07-17 |
DE10297856B4 (de) | 2014-07-17 |
TWI590153B (zh) | 2017-07-01 |
CN1688974A (zh) | 2005-10-26 |
US20030126186A1 (en) | 2003-07-03 |
US7363474B2 (en) | 2008-04-22 |
JP2008165834A (ja) | 2008-07-17 |
HK1066883A1 (en) | 2005-04-01 |
RU2004123622A (ru) | 2005-03-27 |
TW200305820A (en) | 2003-11-01 |
AU2002364557A8 (en) | 2003-07-24 |
TW200941340A (en) | 2009-10-01 |
WO2003058447A3 (en) | 2004-12-16 |
US20080034190A1 (en) | 2008-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100814993B1 (ko) | 특정 메모리 액세스가 발생할 때까지 스레드의 실행을중단하기 위한 방법 및 장치 | |
US7127561B2 (en) | Coherency techniques for suspending execution of a thread until a specified memory access occurs | |
KR100864747B1 (ko) | 모니터-메모리 대기를 사용하여 큐잉된 로크들 | |
US20030126379A1 (en) | Instruction sequences for suspending execution of a thread until a specified memory access occurs | |
US6687809B2 (en) | Maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses | |
KR100617417B1 (ko) | 멀티-스레딩 프로세서에서 스레드의 실행을 정지시키기위한 시스템 및 방법 | |
US8539485B2 (en) | Polling using reservation mechanism | |
US8868887B2 (en) | Programmable event driven yield mechanism which may activate other threads | |
US8694976B2 (en) | Sleep state mechanism for virtual multithreading | |
US20070174555A1 (en) | Future execution prefetching technique and architecture | |
TW201508635A (zh) | 多核心微處理器動態重新配置 | |
TW201510860A (zh) | 多核心同步機制 | |
US6006325A (en) | Method and apparatus for instruction and data serialization in a computer processor | |
Becker et al. | Measuring software performance on linux | |
GB2441903A (en) | Resuming control of resources by a processor on exiting a sleep mode and disabling an associated monitor. | |
KR19990082743A (ko) | 개별프로세서의초기해제에의한시스템직렬화및그멀티프로세서시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
AMND | Amendment | ||
B601 | Maintenance of original decision after re-examination before a trial | ||
E801 | Decision on dismissal of amendment | ||
S901 | Examination by remand of revocation | ||
GRNO | Decision to grant (after opposition) | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130228 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20140303 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20150227 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20160303 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20170302 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20190227 Year of fee payment: 12 |
|
FPAY | Annual fee payment |
Payment date: 20200227 Year of fee payment: 13 |