KR101460985B1 - 스레드 레벨 추론에서의 동적 데이터 동기화 - Google Patents

스레드 레벨 추론에서의 동적 데이터 동기화 Download PDF

Info

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
Application number
KR1020127034256A
Other languages
English (en)
Other versions
KR20130040957A (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 KR20130040957A publication Critical patent/KR20130040957A/ko
Application granted granted Critical
Publication of KR101460985B1 publication Critical patent/KR101460985B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

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

스레드 레벨 추론에서의 동적 데이터 동기화{DYNAMIC DATA SYNCHRONIZATION IN THREAD-LEVEL SPECULATION}
본 발명은 스레드 레벨 추론에서의 동적 데이터 동기화에 관한 것이다.
현대의 프로세서에서, 병렬로 실행하는 것이 가능한 다수의 컴퓨팅 코어를 갖는 것은 보통이다. 그러나, 많은 순차적 또는 직렬 애플리케이션 및 프로그램은 병렬 구조를 효과적으로 활용하지 못한다. 스레드 레벨 추론(Thread-level speculation;TLS)은 추론착오(mis-speculation)가 발생하는 경우 복구를 위해 정적 또는 동적 컴파일러 및 하드웨어와 함께 순차적 프로그램을 병렬화하는 유망한 기술이다. 하지만, 적합한 동기화 없이는, 의존적인 로드 및 저장 명령 사이에서, 예를 들어, 로드는 저장 이전에 실행할 수 있고 추론적 스레드를 스쿼싱(squash)하고 재로딩된 데이터와 함께 재실행을 필요로 하는 데이터 바이얼레이션(violation)을 야기할 수 있다.
다양한 실시예에서, 프로세서는 설정되었을 때, 캐시 라인 또는 워드의 판독을 중지시킬 수 있는, 동기화 비트를 갖는 추론적 캐시와 함께 도입된다. 이는 추론착오 및 스쿼싱된 스레드의 연관된 비효율성을 방지한다는 것을 당업자는 인식할 수 있을 것이다. 또한, 동기화 비트를 설정 및 클리어하기 위한 프로세서 명령이 제시된다. 컴파일러는 데이터 의존성을 동기화하기 위해 이들 명령을 이용할 수 있다. 본 발명은 추가적인 병렬화 및/또는 스레드 추론 피쳐를 포함할 수 있는 프로세서 및 시스템에서 실시되도록 하기 위한 것이다.
도 1은 본 발명의 일 실시예에 따른 예시의 시스템의 블록도이다.
도 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)

  1. 콘텐츠를 포함하는 비일시적 컴퓨터 판독가능한 저장 매체로서,
    상기 콘텐츠는 액세싱 머신(an accessing machine)에 의해 실행될 때, 상기 액세싱 머신으로 하여금,
    멀티 코어 프로세서의 개별 코어에서 개별 스레드를 실행하게 하고,
    의존 소스(a dependence source)를 포함하는 제 1 스레드 내의 전용 프로세서 명령을 실행함으로써 추론적 캐시(a speculative cache)에서 동기화 비트를 설정하게 하고,
    상기 의존 소스 이후에 상기 제 1 스레드 내의 전용 프로세서 명령을 실행함으로써 상기 동기화 비트를 클리어하게 하고,
    의존 싱크(a dependence sink)를 포함하는 제 2 스레드의 데이터와 연관된 동기화 비트가 설정되면, 상기 제 2 스레드의 상기 데이터에 액세스하는 것을 대기하도록 하는
    컴퓨터 판독가능한 저장 매체.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 의존 싱크는 로드 명령(a load instruction)을 포함하는
    컴퓨터 판독가능한 저장 매체.
  5. 제 1 항에 있어서,
    상기 의존 소스는 저장 명령(a store instruction)을 포함하는
    컴퓨터 판독가능한 저장 매체.
  6. 제 1 항에 있어서,
    상기 제 2 스레드의 상기 데이터와 연관된 상기 동기화 비트는 캐시 라인 비트를 포함하는
    컴퓨터 판독가능한 저장 매체.
  7. 제 1 항에 있어서,
    상기 제 2 스레드의 상기 데이터와 연관된 상기 동기화 비트는 캐시 워드 비트를 포함하는
    컴퓨터 판독가능한 저장 매체.
  8. 제 1 항에 있어서,
    프로세서 명령을 실행함으로써 상기 동기화 비트를 설정하게 하는 상기 콘텐츠는 의존 소스 어드레스가 생성될 때 상기 동기화 비트를 설정하게 하는 콘텐츠를 포함하는
    컴퓨터 판독가능한 저장 매체.
  9. 명령을 실행하는 제 1 코어 및 제 2 코어를 포함하는 프로세서와,
    상기 프로세서에 대해 데이터 및 명령을 저장하는 추론적 캐시―상기 추론적 캐시는 연관된 데이터가 의존 소스에 영향을 받는지 여부를 나타내고 동기화 비트가 설정될 때 의존 싱크 작동을 정지(stall)시키는 동기화 비트를 포함함―와,
    상기 프로세서에 연결된 동적 랜덤 액세스 메모리(a dynamic random access memory;DRAM)―상기 DRAM은 직렬 명령을 저장함―와,
    추론 엔진(a speculation engine)―상기 추론 엔진은, 개별 스레드(separate threads)를 생성하고 의존 소스 이전에 상기 동기화 비트를 설정하도록 상기 스레드에 전용 프로세서 명령을 삽입함으로써 상기 직렬 명령을 병렬화함―을 포함하는
    시스템.
  10. 제 9 항에 있어서,
    상기 추론 엔진은 또한 의존 소스 이후에 상기 동기화 비트를 클리어하도록 대응하는 프로세서 명령을 삽입하는
    시스템.
  11. 제 10 항에 있어서,
    상기 의존 소스는 저장 명령을 포함하는
    시스템.
  12. 제 10 항에 있어서,
    상기 의존 싱크는 로드 명령을 포함하는
    시스템.
  13. 제 9 항에 있어서,
    상기 동기화 비트는 캐시 라인 비트를 포함하는
    시스템.
  14. 제 9 항에 있어서,
    상기 동기화 비트는 캐시 워드 비트를 포함하는
    시스템.
  15. 추론 엔진에 의해 수행되는 방법에 있어서,
    직렬 명령의 세트로부터 병렬화된 스레드를 생성하는 단계와,
    의존 소스 이전에 동기화 비트를 설정하고 상기 동기화 비트를 상기 의존 소스 이후에 클리어하도록 상기 병렬화된 스레드에 전용 프로세서 명령을 삽입하는 단계-상기 동기화 비트는 설정될 때 의존 싱크를 정지시키도록 디자인됨-와,
    멀티 코어 프로세서의 코어 상에서 상기 병렬화된 스레드를 실행하는 단계를 포함하는
    방법.
  16. 제 15 항에 있어서,
    상기 의존 소스는 저장 명령을 포함하는
    방법.
  17. 제 15 항에 있어서,
    상기 의존 싱크는 로드 명령을 포함하는
    방법.
  18. 제 15 항에 있어서,
    상기 동기화 비트는 캐시 라인 비트를 포함하는
    방법.
  19. 제 15 항에 있어서,
    상기 동기화 비트는 캐시 워드 비트를 포함하는
    방법.
  20. 제 15 항에 있어서,
    의존 소스 이전에 동기화 비트를 설정하기 위해 상기 병렬화된 스레드에 전용 프로세서 명령을 삽입하는 단계는 의존 소스 어드레스가 생성될 때 동기화 비트를 설정하도록 프로세서 명령을 삽입하는 단계를 포함하는
    방법.
KR1020127034256A 2010-06-29 2011-06-27 스레드 레벨 추론에서의 동적 데이터 동기화 KR101460985B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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接口连接的方法、设备及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
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