KR101460985B1 - 스레드 레벨 추론에서의 동적 데이터 동기화 - Google Patents
스레드 레벨 추론에서의 동적 데이터 동기화 Download PDFInfo
- Publication number
- KR101460985B1 KR101460985B1 KR1020127034256A KR20127034256A KR101460985B1 KR 101460985 B1 KR101460985 B1 KR 101460985B1 KR 1020127034256 A KR1020127034256 A KR 1020127034256A KR 20127034256 A KR20127034256 A KR 20127034256A KR 101460985 B1 KR101460985 B1 KR 101460985B1
- Authority
- KR
- South Korea
- Prior art keywords
- thread
- synchronization
- dependent
- synchronization bit
- processor
- Prior art date
Links
- 230000001419 dependent effect Effects 0.000 claims abstract description 26
- 238000000034 method Methods 0.000 claims description 21
- 230000015654 memory Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 9
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 235000009854 Cucurbita moschata Nutrition 0.000 description 1
- 240000001980 Cucurbita pepo Species 0.000 description 1
- 235000009852 Cucurbita pepo Nutrition 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 235000020354 squash Nutrition 0.000 description 1
Images
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
-
- 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30087—Synchronisation or serialisation 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/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/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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
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)
Abstract
일 실시예에서, 본 발명은 직렬 명령으로부터 개별 스레드를 생성하고 의존 소스 이전에 동기화 비트를 설정하며 의존 소스 이후에 동기화 비트를 클리어하도록 프로세서 명령을 삽입함으로써 직렬 명령을 병렬화하는 추론 엔진을 도입하고, 여기서 동기화 비트는 개별 코어 상에서 구동 중인 스레드로부터 의존 싱크를 중지시키도록 디자인된다. 다른 실시예가 설명되고 청구된다.
Description
본 발명은 스레드 레벨 추론에서의 동적 데이터 동기화에 관한 것이다.
현대의 프로세서에서, 병렬로 실행하는 것이 가능한 다수의 컴퓨팅 코어를 갖는 것은 보통이다. 그러나, 많은 순차적 또는 직렬 애플리케이션 및 프로그램은 병렬 구조를 효과적으로 활용하지 못한다. 스레드 레벨 추론(Thread-level speculation;TLS)은 추론착오(mis-speculation)가 발생하는 경우 복구를 위해 정적 또는 동적 컴파일러 및 하드웨어와 함께 순차적 프로그램을 병렬화하는 유망한 기술이다. 하지만, 적합한 동기화 없이는, 의존적인 로드 및 저장 명령 사이에서, 예를 들어, 로드는 저장 이전에 실행할 수 있고 추론적 스레드를 스쿼싱(squash)하고 재로딩된 데이터와 함께 재실행을 필요로 하는 데이터 바이얼레이션(violation)을 야기할 수 있다.
다양한 실시예에서, 프로세서는 설정되었을 때, 캐시 라인 또는 워드의 판독을 중지시킬 수 있는, 동기화 비트를 갖는 추론적 캐시와 함께 도입된다. 이는 추론착오 및 스쿼싱된 스레드의 연관된 비효율성을 방지한다는 것을 당업자는 인식할 수 있을 것이다. 또한, 동기화 비트를 설정 및 클리어하기 위한 프로세서 명령이 제시된다. 컴파일러는 데이터 의존성을 동기화하기 위해 이들 명령을 이용할 수 있다. 본 발명은 추가적인 병렬화 및/또는 스레드 추론 피쳐를 포함할 수 있는 프로세서 및 시스템에서 실시되도록 하기 위한 것이다.
도 1은 본 발명의 일 실시예에 따른 예시의 시스템의 블록도이다.
도 2는 본 발명의 실시예에 따른 예시의 추론 엔진의 블록도이다.
도 3a 및 도 3b는 본 발명의 실시예에 따른 예시의 소프트웨어 코드의 블록도이다.
도 4는 본 발명의 실시예에 따른 스레드 레벨 추론에서의 동적 데이터 동기화에 대한 흐름도이다.
도 5는 본 발명의 실시예에 따른 시스템의 블록도이다.
도 2는 본 발명의 실시예에 따른 예시의 추론 엔진의 블록도이다.
도 3a 및 도 3b는 본 발명의 실시예에 따른 예시의 소프트웨어 코드의 블록도이다.
도 4는 본 발명의 실시예에 따른 스레드 레벨 추론에서의 동적 데이터 동기화에 대한 흐름도이다.
도 5는 본 발명의 실시예에 따른 시스템의 블록도이다.
이제 도 1을 참조하면, 본 발명의 일 실시예에 따른 예시의 시스템의 블록도가 도시된다. 도 1에서 도시된 바와 같이, 시스템(100)은 프로세서(102) 및 동적 랜덤 액세스 메모리(dynamic random access memory;DRAM)와 같은, 메모리(104)를 포함할 수 있다. 프로세서(102)는 코어(106 내지 110), 추론적 캐시(112) 및 추론 엔진(118)을 포함할 수 있다. 코어(106 내지 110)은 서로 독립적으로 명령을 실행하는 것이 가능할 수 있고 임의의 타입의 구조를 포함할 수 있다. 세 개의 코어를 포함하는 것으로서 도시되었지만, 프로세서(102)는 임의의 개수의 코어를 가질 수 있고, 도시 되지 않은 다른 컴포넌트 또는 제어기를 포함할 수 있다. 일 실시예에서, 프로세서(102)는 시스템 온 칩(a system on a chip;SOC)이다.
추론적 캐시(112)는 임의의 개수의 개별 캐시를 포함할 수 있고 임의의 개수의 엔트리를 포함할 수 있다. 저지연 레벨 원 캐시(a low latency level one cache)로서 의도되었지만, 추론적 캐시(112)는 임의의 계층적인 레벨에서 임의의 메모리 기술로 구현될 수 있다. 추론적 캐시(112)는 캐시 라인 또는 워드(116)와 연관된 동기화 비트(114)를 포함한다. 이하에서 더 자세하게 설명되는 바와 같이, 동기화 비트(114)가 설정될 때, 라인 또는 워드(116)는 코어에 의해 로딩되는 것이 가능하지 않을 것이고, 이는, 예를 들어, 다른 코어는 상기 로드가 의존하는 저장을 수행하려고 할 수 있기 때문이다. 일 실시예에서, 동기화 비트(114)가 설정될 때 캐시 라인 또는 워드(116)로부터의 로드를 시도하는 코어는 동기화 비트(114)가 클리어될 때까지 정지(stall)할 것이다.
추론 엔진(118)은 예를 들어, 도 4를 참조하여 설명된 바와 같이, 스레드 레벨 추론에서의 동적 데이터 동기화를 위한 방법을 구현할 수 있고, 도 2와 관련하여 설명된 바와 같은 구조를 가질 수 있다. 추론 엔진(118)은 프로세서(102)로부터 분리될 수 있고 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어의 조합으로 구현될 수 있다.
이제 도 2를 참조하면, 본 발명의 실시예에 따른 예시의 추론 엔진의 블록도가 도시된다. 도 2에서 도시된 바와 같이, 추론 엔진(118)은 병렬화 서비스(202), 병렬 출력 코드(204) 및 직렬 입력 코드(206)를 포함할 수 있다. 병렬화 서비스(202)는 직렬 명령을 병렬화하고 스레드 레벨 추론에 동적 데이터 동기화를 추가하는 기능을 갖는 추론 엔진(118)을 제공할 수 있다.
병렬화 서비스(202)는 스레드 서비스(208), 동기화 설정 서비스(210), 및 동기화 클리어 서비스(212)를 포함할 수 있고, 각각은, 직렬 명령으로부터 병렬 스레드를 생성하고, 의존 소스 이전에 동기화 비트를 설정하기 위해 프로세서 명령을 삽입하고, 의존 소스 이후에 동기화 비트를 클리어하기 위해 프로세서 명령을 삽입할 수 있다. 병렬화 서비스(202)는 직렬 입력 코드(206)(예를 들어, 도 3a에서 도시됨)로부터 병렬 출력 코드(204)(예를 들어 도 3b에서 도시됨)를 생성할 수 있다.
이제 도 3a 및 도 3b를 참조하면, 본 발명의 실시예에 따른 예시의 소프트웨어 코드의 블록도가 도시된다. 도 3a에서 도시된 바와 같이, 순차적 명령(300)은 직렬로 진행하고 프로세서의 단일 코어에 의해 실행되도록 의도된 다양한 로드(loads) 및 저장(stores)을 포함한다. 순차적 명령(300)은 추론 엔진(118)의 직렬 입력 코드(206)로서 역할을 할 수 있다. 도 3b에서 도시된 바와 같이, 병렬 명령(302)은 추론 엔진(118)의 병렬 출력 코드(204)를 나타낼 수 있다. 스레드(304 내지 308)는 코어(106 내지 110)에 의해 개별적으로 실행되는 것이 가능할 수 있다.
스레드(304 내지 308)는 각각 프로세서 명령(예를 들어, mark_comm_addr)을 포함할 수 있고, 프로세서 명령은 실행될 때, 저장 명령과 같이, 의존 소스 이전에 특정 캐시 라인 또는 워드(116)를 위한 동기화 비트(114)를 설정한다. 스레드(304 내지 308)는 또한 각각 대응 프로세서 명령(예를 들어, clear_comm_addr)을 포함할 수 있고, 이 프로세서 명령은 실행될 때, 의존 소스 이후에 동기화 비트(114)를 클리어한다. 데이터 의존의 예시는 스레드(304 및 308)에서 볼 수 있고, 여기서 의존 싱크(a dependence sink)는 동기화 비트를 완료 및 클리어하기 위해 의존 소스를 기다려야만 한다. 이 경우에 로드(310)는 저장(312)이 완료되고 스레드(304)가 연관된 동기화 비트를 클리어할 때까지 스레드(308)의 진행을 정지시킨다.
이제 도 4를 참조하면, 본 발명의 실시예에 따른 스레드 레벨 추론에서의 동적 데이터 동기화에 대한 흐름도가 도시된다. 도 4에서 도시된 바와 같이, 방법은 직렬 명령으로부터 병렬 스레드를 생성하는 단계(402)로 시작한다. 일 실시예에서, 스레드 서비스(208)는 순차적 명령(300)으로부터 병렬 명령(302)을 생성하도록 호출된다. 다른 실시예에서, 생성된 다수의 스레드(304 내지 308)는 프로세서의 다수의 코어(106 내지 110)에 적어도 부분적으로 기초한다.
방법은 동기화 비트를 설정 및 클리어하기 위해 프로세서 명령을 삽입하는 단계(404)로 계속된다. 일 실시예에서, 어드레스가 생성될 때 의존 소스 또는 잠재적인 의존 소스 이전의 이른 시점에 동기화 설정 서비스(210)는 명령(mark_comm_addr)을 스레드(304 내지 308)로 삽입한다. 다른 실시예에서, 동기화 클리어 서비스(212)는 의존 소스 또는 잠재적인 의존 소스 이후에 명령(clear_comm_addr)을 스레드(304 내지 308)로 삽입한다.
방법은 멀티 코어 프로세서의 코어 상에서 병렬 스레드를 실행하는 단계(406)로 종결된다. 일 실시예에서, 스레드(304 내지 308)는 코어(106 내지 110) 상에서 각각 실행된다. 일 실시예에서, 코어(110)의 실행은 동기화 비트(114)가 코어(106) 상에서 실행하는 스레드(304)에 의해 클리어될 때까지 로드(310)에 대해 정지될 수 있다.
실시예는 많은 상이한 시스템 타입으로 구현될 수 있다. 이제 도 5를 참조하면, 본 발명의 실시예에 따른 시스템의 블록도가 도시된다. 도 5에서 도시된 바와 같이, 멀티프로세서 시스템(500)은 포인트 투 포인트 상호접속 시스템(a point-to-point interconnect system)이고, 포인트 투 포인트 상호접속(550)을 통해 연결되는 제 1 프로세서(570) 및 제 2 프로세서(580)를 포함한다. 도 5에서 도시된 바와 같이, 프로세서(570 및 580)의 각각은 제 1 및 제 2 프로세서 코어(즉, 프로세서 코어(574a 및 574b) 및 프로세서 코어(584a 및 584b))를 포함하는, 멀티코어 프로세서가 될 수 있다. 각 프로세서는 본 발명의 실시예에 따른 동적 데이터 동기화 스레드 레벨 추론 하드웨어, 소프트웨어, 및 펌웨어를 포함할 수 있다.
계속해서 도 5를 참조하면, 제 1 프로세서(570)는 메모리 제어기 허브(a memory controller hub;MCH)(572) 및 포인트 투 포인트(P-P) 인터페이스(576 및 578)를 더 포함한다. 유사하게, 제 2 프로세서(580)는 MCH(582) 및 P-P 인터페이스(586 및 588)를 포함한다. 도 5에서 도시된 바와 같이, MCH(572 및 582)는 프로세서들을 각각의 메모리, 즉 메모리(532) 및 메모리(534)에 연결하며, 이들 메모리는 각각의 프로세서에 국부적으로 부착된 주 메모리(예를 들어, 동적 랜덤 액세스 메모리(DRAM))의 부분이 될 수 있으며, 각각은 본 발명의 일 실시예에 따른 확장된 페이지 테이블(extended page tables)을 포함할 수 있다. 제 1 프로세서(570) 및 제 2 프로세서(580)는 각각 P-P 상호접속(552 및 554)을 통해 칩셋(590)에 연결될 수 있다. 도 5에서 도시된 바와 같이, 칩셋(590)은 P-P 인터페이스(594 및 598)를 포함한다.
또한, 칩셋(590)은 고성능 그래픽 엔진(538)을 칩셋(590)과 연결하는 인터페이스(592)를 포함한다. 결국, 칩셋(590)은 인터페이스(596)를 통해 제 1 버스(516)에 연결될 수 있다. 도 5에서 도시된 바와 같이, 제 1 버스(516)를 제 2 버스(520)에 연결하는 버스 브릿지(518)를 따라, 다양한 I/O 디바이스(514)가 제 1 버스(516)에 연결될 수 있다. 일 실시예에서, 다양한 디바이스는 예를 들어, 키보스/마우스(522), 통신 디바이스(526), 및 디스크 드라이브 또는 다른 대용량 저장 디바이스와 같은 코드(530)를 포함할 수 있는 데이터 저장 유닛(528)을 포함하는, 제 1 버스(520)에 연결될 수 있다. 또한 오디오 I/O(524)는 제 2 버스(520)에 연결될 수 있다.
실시예는 코드로 구현될 수 있고 저장된 명령어를 갖는 저장 매체 상에 저장될 수 있고 명령을 수행하는 시스템을 프로그래밍하는 데 사용될 수 있다. 저장 매체는, 플로피 디스크, 광학 디스크, CD-ROM(compact disk read-only memories), CD-RW(compact disk rewritables), 및 자기광학 디스크(magneto-optical disks)를 포함하는 임의의 타입의 디스크, ROM(read-only memories), DRAM(dynamic random access memories), SRAM(static random access memories)과 같은 RAM(random access memories), EPROM(erasable programmable read-only memories), 플래쉬 메모리, EEPROM(electrically erasable programmable read-only memories), 자기 또는 광학 카드와 같은 반도체 디바이스, 또는 전자 명령을 저장하기에 적합한 임의의 다른 타입의 매체를 포함할 수 있지만, 이에 제한되지 않는다.
본 발명은 제한된 숫자의 실시예와 관련하여 설명되었지만, 당업자는 이로부터의 많은 수정 및 변형을 인식할 것이다. 첨부된 청구항은 본 발명의 참 사상 및 범위 내에 속하는 모든 이러한 수정 및 변형을 커버함이 의도된 것이다.
Claims (20)
- 콘텐츠를 포함하는 비일시적 컴퓨터 판독가능한 저장 매체로서,
상기 콘텐츠는 액세싱 머신(an accessing machine)에 의해 실행될 때, 상기 액세싱 머신으로 하여금,
멀티 코어 프로세서의 개별 코어에서 개별 스레드를 실행하게 하고,
의존 소스(a dependence source)를 포함하는 제 1 스레드 내의 전용 프로세서 명령을 실행함으로써 추론적 캐시(a speculative cache)에서 동기화 비트를 설정하게 하고,
상기 의존 소스 이후에 상기 제 1 스레드 내의 전용 프로세서 명령을 실행함으로써 상기 동기화 비트를 클리어하게 하고,
의존 싱크(a dependence sink)를 포함하는 제 2 스레드의 데이터와 연관된 동기화 비트가 설정되면, 상기 제 2 스레드의 상기 데이터에 액세스하는 것을 대기하도록 하는
컴퓨터 판독가능한 저장 매체.
- 삭제
- 삭제
- 제 1 항에 있어서,
상기 의존 싱크는 로드 명령(a load instruction)을 포함하는
컴퓨터 판독가능한 저장 매체.
- 제 1 항에 있어서,
상기 의존 소스는 저장 명령(a store instruction)을 포함하는
컴퓨터 판독가능한 저장 매체.
- 제 1 항에 있어서,
상기 제 2 스레드의 상기 데이터와 연관된 상기 동기화 비트는 캐시 라인 비트를 포함하는
컴퓨터 판독가능한 저장 매체.
- 제 1 항에 있어서,
상기 제 2 스레드의 상기 데이터와 연관된 상기 동기화 비트는 캐시 워드 비트를 포함하는
컴퓨터 판독가능한 저장 매체.
- 제 1 항에 있어서,
프로세서 명령을 실행함으로써 상기 동기화 비트를 설정하게 하는 상기 콘텐츠는 의존 소스 어드레스가 생성될 때 상기 동기화 비트를 설정하게 하는 콘텐츠를 포함하는
컴퓨터 판독가능한 저장 매체.
- 명령을 실행하는 제 1 코어 및 제 2 코어를 포함하는 프로세서와,
상기 프로세서에 대해 데이터 및 명령을 저장하는 추론적 캐시―상기 추론적 캐시는 연관된 데이터가 의존 소스에 영향을 받는지 여부를 나타내고 동기화 비트가 설정될 때 의존 싱크 작동을 정지(stall)시키는 동기화 비트를 포함함―와,
상기 프로세서에 연결된 동적 랜덤 액세스 메모리(a dynamic random access memory;DRAM)―상기 DRAM은 직렬 명령을 저장함―와,
추론 엔진(a speculation engine)―상기 추론 엔진은, 개별 스레드(separate threads)를 생성하고 의존 소스 이전에 상기 동기화 비트를 설정하도록 상기 스레드에 전용 프로세서 명령을 삽입함으로써 상기 직렬 명령을 병렬화함―을 포함하는
시스템.
- 제 9 항에 있어서,
상기 추론 엔진은 또한 의존 소스 이후에 상기 동기화 비트를 클리어하도록 대응하는 프로세서 명령을 삽입하는
시스템.
- 제 10 항에 있어서,
상기 의존 소스는 저장 명령을 포함하는
시스템.
- 제 10 항에 있어서,
상기 의존 싱크는 로드 명령을 포함하는
시스템.
- 제 9 항에 있어서,
상기 동기화 비트는 캐시 라인 비트를 포함하는
시스템.
- 제 9 항에 있어서,
상기 동기화 비트는 캐시 워드 비트를 포함하는
시스템.
- 추론 엔진에 의해 수행되는 방법에 있어서,
직렬 명령의 세트로부터 병렬화된 스레드를 생성하는 단계와,
의존 소스 이전에 동기화 비트를 설정하고 상기 동기화 비트를 상기 의존 소스 이후에 클리어하도록 상기 병렬화된 스레드에 전용 프로세서 명령을 삽입하는 단계-상기 동기화 비트는 설정될 때 의존 싱크를 정지시키도록 디자인됨-와,
멀티 코어 프로세서의 코어 상에서 상기 병렬화된 스레드를 실행하는 단계를 포함하는
방법.
- 제 15 항에 있어서,
상기 의존 소스는 저장 명령을 포함하는
방법.
- 제 15 항에 있어서,
상기 의존 싱크는 로드 명령을 포함하는
방법.
- 제 15 항에 있어서,
상기 동기화 비트는 캐시 라인 비트를 포함하는
방법.
- 제 15 항에 있어서,
상기 동기화 비트는 캐시 워드 비트를 포함하는
방법.
- 제 15 항에 있어서,
의존 소스 이전에 동기화 비트를 설정하기 위해 상기 병렬화된 스레드에 전용 프로세서 명령을 삽입하는 단계는 의존 소스 어드레스가 생성될 때 동기화 비트를 설정하도록 프로세서 명령을 삽입하는 단계를 포함하는
방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/826,287 US20110320781A1 (en) | 2010-06-29 | 2010-06-29 | Dynamic data synchronization in thread-level speculation |
US12/826,287 | 2010-06-29 | ||
PCT/US2011/042040 WO2012006030A2 (en) | 2010-06-29 | 2011-06-27 | Dynamic data synchronization in thread-level speculation |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130040957A KR20130040957A (ko) | 2013-04-24 |
KR101460985B1 true KR101460985B1 (ko) | 2014-11-13 |
Family
ID=45353688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127034256A KR101460985B1 (ko) | 2010-06-29 | 2011-06-27 | 스레드 레벨 추론에서의 동적 데이터 동기화 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20110320781A1 (ko) |
EP (1) | EP2588959A4 (ko) |
JP (1) | JP2013527549A (ko) |
KR (1) | KR101460985B1 (ko) |
CN (1) | CN103003796B (ko) |
AU (1) | AU2011276588A1 (ko) |
TW (1) | TWI512611B (ko) |
WO (1) | WO2012006030A2 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9697003B2 (en) | 2013-06-07 | 2017-07-04 | Advanced Micro Devices, Inc. | Method and system for yield operation supporting thread-like behavior |
CN112130898A (zh) * | 2019-06-24 | 2020-12-25 | 华为技术有限公司 | 一种插入同步指令的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100508320B1 (ko) | 2000-02-14 | 2005-08-17 | 인텔 코오퍼레이션 | 고속 및 저속 리플레이 경로를 갖는 리플레이 구조를구비한 프로세서 |
KR20050095836A (ko) * | 2003-02-13 | 2005-10-04 | 썬 마이크로시스템즈, 인코포레이티드 | 임계 부분의 추측 실행에 의하여 잠금을 피하는 방법 및장치 |
JP2009501366A (ja) | 2005-06-23 | 2009-01-15 | インテル コーポレイション | スレッドレベルの投機実行を拡張するためのプリミティブ |
KR20100013326A (ko) * | 2007-06-20 | 2010-02-09 | 후지쯔 가부시끼가이샤 | 캐시 제어 장치 및 제어 방법 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5655096A (en) * | 1990-10-12 | 1997-08-05 | Branigin; Michael H. | Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution |
US6785803B1 (en) * | 1996-11-13 | 2004-08-31 | Intel Corporation | Processor including replay queue to break livelocks |
US6282637B1 (en) * | 1998-12-02 | 2001-08-28 | Sun Microsystems, Inc. | Partially executing a pending atomic instruction to unlock resources when cancellation of the instruction occurs |
US7257814B1 (en) | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
US7340569B2 (en) * | 2004-02-10 | 2008-03-04 | Wisconsin Alumni Research Foundation | Computer architecture providing transactional, lock-free execution of lock-based programs |
JP2005284749A (ja) * | 2004-03-30 | 2005-10-13 | Kyushu Univ | 並列処理コンピュータ |
US20060143384A1 (en) * | 2004-12-27 | 2006-06-29 | Hughes Christopher J | System and method for non-uniform cache in a multi-core processor |
US7587555B2 (en) * | 2005-11-10 | 2009-09-08 | Hewlett-Packard Development Company, L.P. | Program thread synchronization |
US7930695B2 (en) * | 2006-04-06 | 2011-04-19 | Oracle America, Inc. | Method and apparatus for synchronizing threads on a processor that supports transactional memory |
WO2007138124A1 (es) * | 2006-05-30 | 2007-12-06 | Intel Corporation | Método aparato y sistema aplicado en un protocolo de coherencia de una memoria cache |
US8719807B2 (en) * | 2006-12-28 | 2014-05-06 | Intel Corporation | Handling precompiled binaries in a hardware accelerated software transactional memory system |
US8855138B2 (en) * | 2008-08-25 | 2014-10-07 | Qualcomm Incorporated | Relay architecture framework |
JP5320618B2 (ja) * | 2008-10-02 | 2013-10-23 | 株式会社日立製作所 | 経路制御方法及びアクセスゲートウェイ装置 |
US8732407B2 (en) * | 2008-11-19 | 2014-05-20 | Oracle America, Inc. | Deadlock avoidance during store-mark acquisition |
CN101657028B (zh) * | 2009-09-10 | 2011-09-28 | 新邮通信设备有限公司 | 一种建立s1接口连接的方法、设备及系统 |
-
2010
- 2010-06-29 US US12/826,287 patent/US20110320781A1/en not_active Abandoned
-
2011
- 2011-06-27 WO PCT/US2011/042040 patent/WO2012006030A2/en active Application Filing
- 2011-06-27 AU AU2011276588A patent/AU2011276588A1/en not_active Abandoned
- 2011-06-27 CN CN201180027637.4A patent/CN103003796B/zh not_active Expired - Fee Related
- 2011-06-27 EP EP11804093.0A patent/EP2588959A4/en not_active Withdrawn
- 2011-06-27 KR KR1020127034256A patent/KR101460985B1/ko not_active IP Right Cessation
- 2011-06-27 JP JP2013513423A patent/JP2013527549A/ja active Pending
- 2011-06-28 TW TW100122652A patent/TWI512611B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100508320B1 (ko) | 2000-02-14 | 2005-08-17 | 인텔 코오퍼레이션 | 고속 및 저속 리플레이 경로를 갖는 리플레이 구조를구비한 프로세서 |
KR20050095836A (ko) * | 2003-02-13 | 2005-10-04 | 썬 마이크로시스템즈, 인코포레이티드 | 임계 부분의 추측 실행에 의하여 잠금을 피하는 방법 및장치 |
JP2009501366A (ja) | 2005-06-23 | 2009-01-15 | インテル コーポレイション | スレッドレベルの投機実行を拡張するためのプリミティブ |
KR20100013326A (ko) * | 2007-06-20 | 2010-02-09 | 후지쯔 가부시끼가이샤 | 캐시 제어 장치 및 제어 방법 |
Also Published As
Publication number | Publication date |
---|---|
AU2011276588A1 (en) | 2013-01-10 |
WO2012006030A2 (en) | 2012-01-12 |
JP2013527549A (ja) | 2013-06-27 |
CN103003796B (zh) | 2017-08-25 |
TW201229893A (en) | 2012-07-16 |
CN103003796A (zh) | 2013-03-27 |
EP2588959A4 (en) | 2014-04-16 |
US20110320781A1 (en) | 2011-12-29 |
TWI512611B (zh) | 2015-12-11 |
EP2588959A2 (en) | 2013-05-08 |
KR20130040957A (ko) | 2013-04-24 |
WO2012006030A3 (en) | 2012-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6525286B2 (ja) | プロセッサコア及びプロセッサシステム | |
US9477465B2 (en) | Arithmetic processing apparatus, control method of arithmetic processing apparatus, and a computer-readable storage medium storing a control program for controlling an arithmetic processing apparatus | |
JP5455936B2 (ja) | 効率的な同期および並列リダクション演算を可能にするベクトル命令 | |
US9424009B2 (en) | Handling pointers in program code in a system that supports multiple address spaces | |
Bauer et al. | Singe: Leveraging warp specialization for high performance on gpus | |
CN111090464B (zh) | 一种数据流处理方法及相关设备 | |
US8789031B2 (en) | Software constructed strands for execution on a multi-core architecture | |
JP6457200B2 (ja) | プロセッシング装置 | |
US8949777B2 (en) | Methods and systems for mapping a function pointer to the device code | |
US9665354B2 (en) | Apparatus and method for translating multithread program code | |
KR101460985B1 (ko) | 스레드 레벨 추론에서의 동적 데이터 동기화 | |
CN102375801A (zh) | 一种多核处理器存储系统装置及方法 | |
CN113791770B (zh) | 代码编译器、代码编译方法、代码编译系统和计算机介质 | |
Zhai et al. | Design and optimization of a big Data computing framework based on CPU/GPU cluster | |
US9286090B2 (en) | Method and system for compiler identification of code for parallel execution | |
CN118192983A (zh) | 语言编译方法、电子设备及存储介质 | |
WO2014119003A1 (ja) | コンパイラ、オブジェクトコード生成方法、情報処理装置及び情報処理方法 | |
JP2005267024A (ja) | 並列処理装置、方法、およびプログラム | |
JP2011145899A (ja) | オブジェクトプログラム作成装置、及びオブジェクトプログラム作成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20171027 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |