KR20080048543A - 스레드 통신 및 동기화 기법 - Google Patents

스레드 통신 및 동기화 기법 Download PDF

Info

Publication number
KR20080048543A
KR20080048543A KR1020087009297A KR20087009297A KR20080048543A KR 20080048543 A KR20080048543 A KR 20080048543A KR 1020087009297 A KR1020087009297 A KR 1020087009297A KR 20087009297 A KR20087009297 A KR 20087009297A KR 20080048543 A KR20080048543 A KR 20080048543A
Authority
KR
South Korea
Prior art keywords
cache line
thread
state
data
instruction
Prior art date
Application number
KR1020087009297A
Other languages
English (en)
Other versions
KR101126820B1 (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 KR20080048543A publication Critical patent/KR20080048543A/ko
Application granted granted Critical
Publication of KR101126820B1 publication Critical patent/KR101126820B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Time-Division Multiplex Systems (AREA)

Abstract

스레드의 동기화 및 통신 기법. 더 특정적으로, 본 발명의 실시예는 하나 이상의 마이크로프로세서 또는 마이크로프로세서 코어에 의해 실행되는 두 개 이상의 명령어 스레드 간의 통신 및 동기화의 관리에 관한 것이다.
스레드, 캐시 메모리, 캐시 라인, 마이크로프로세서, 감시, 정합 비트

Description

스레드 통신 및 동기화 기법{TECHNIQUE FOR THREAD COMMUNICATION AND SYNCHRONIZATION}
본 발명의 실시예는 마이크로프로세서 아키텍처에 관련되어 있다. 더 특정적으로, 본 발명의 실시예는 하나 이상의 마이크로프로세서 또는 마이크로프로세서 코어 내에서 실행되는 두 개 이상의 스레드 간의 통신 및 동기화의 관리와 관련되어 있다.
현대 컴퓨터 프로그램 내의 명령어는 다양한 명령열(instruction string), 즉 "스레드"에 따라 실행되도록 구성된다. 통상적으로, 프로세싱 자원 내에서 실행되는 명령어의 스레드는 특정 스레드에 고유한 또는 적어도 연관된 상태 정보 집합을 사용하고/하거나 생성한다. 그러나, 스레드는 하나 이상의 스레드 상에서 조작되는 데이터와 같은 상태정보 또는 기타 정보 또한 공유할 수 있는데, 이 경우 정보는 한 스레드에서 또 다른 스레드로 전달될 필요가 있을 수 있다.
통상적인 메모리 공유 마이크로프로세서 또는 프로세싱 시스템에서, 스레드는 메모리 위치에 또 다른 스레드(수신 스레드)에 의해 판독될 수 있는 정보를 저장하는 한 스레드(전송 스레드)에 의해 정보를 교환한다. 통상적으로, 수신 스레드는 언제 전송 스레드가 데이터를 갱신하였는지를 탐지하기 위해 다양한 시점에서 메모리 위치를 폴링(poll)할 수 있다. 몇몇 종래 기술 구현에서, 탐지 메커니즘은 언제 공유 정보가 기록되는지를 탐지할 수 있고 이에 응답하여 수신 스레드에 알려줄 수 있다.
탐지 메커니즘이 메모리 위치에 언제 공유정보가 기록되었는지를 탐지하고 수신 스레드에 알리는 후자의 경우, 몇몇 종래 기법은 마이크로프로세서 간의 또는 마이크로프로세서와 DRAM과 같은 메모리 간의 상호 연결을 감시(monitor)하거나 "스누핑"하는 특수 하드웨어 탐지 로직을 사용하였다. 탐지 로직은 상호 연결을 거쳐 전송될 특정 어드레스로의 명령을 감시하도록 구성될 수 있고, 감시되어야할 각각의 메모리 위치에 대한 탐지 로직을 요구할 수 있다.
상기에 기술된 것과 같은 종래 기술 기법들은 다이 영역(die area) 및 전력의 관점에서 볼 때 많은 비용이 들 수 있다. 나아가, 이 종래 기술 기법들은 복수의 메모리 위치에 대한 갱신을 언제 감시할지를 쉽게 기준화(scale)하지 못할 수 있기 때문에 소프트웨어 개발에 어려움을 줄 수 있었다.
마이크로프로세서상에서 실행되는 사용자 레벨 스레드에 전통적인 기술처럼 운영 체제가 개입하여 인터럽트 또는 예외 사례를 통지할 필요없이 직접 이벤트를 통보하는 메커니즘을 포함하는 종래 기술이 있다. 이런 사용자 레벨 인터럽트 또는 사용자 레벨 예외는 스레드의 현재 상태에 대한 정보가 충분하지 않아도 되도록 해주며 사전 정의된 "핸들러" 코드 블록을 실행하여 이벤트에 응답하도록 스레드를 재지정하는 메커니즘을 가지는 것에 기초한다. 스레드는 핸들러 코드의 일부분으로서 원하는 임의의 작업을 수행할 수 있고, 스레드가 이벤트 전에 위치했던 실행 경로로 돌아갈 수 있다. 또한 스레드는 실행 경로를 반환하지 않고 대신에 완전히 다른 작업 집합으로의 속행을 선택할 수 있다.
본 발명은 스레드 간의 통신 및 동기화를 수행하는 장치, 시스템 및 방법에 관한 것이다. 스레드 간의 통신 및 동기화를 수행하는 장치는 대응되는 캐시 라인이 상기 캐시 라인에 대응되는 데이터를 스레드가 수정하는 것을 가능하게 할 수 있는 이벤트에 대하여 감시되어야 하는지를 표시하는 하나 이상의 감시 비트 필드를 포함하는 캐시 메모리 및 만일 상기 하나 이상의 비트 필드 내의 감시 비트가 설정(set)되면 상기 캐시 라인에 데이터가 기록되었는지를 탐지하는 탐지 로직으로 구성된다. 또한, 스레드 간의 통신 및 동기화를 수행하는 시스템은 대응되는 캐시 라인이 상기 캐시 라인에 대응되는 데이터를 스레드가 전송 스레드에 의하여 수정하는 것을 가능하게 할 수 있는 이벤트에 대하여 감시되어야 하는지를 표시하는 하나 이상의 감시 비트 필드를 포함하는 캐시 메모리 및 상기 복수의 감시 비트 필드 내의 비트를 설정하는 제1 명령어 및 상기 전송 스레드에 의해 상기 캐시 라인에 데이터가 기록되었는지를 탐지하는 탐지 로직을 인에이블하는 제3 명령어를 저장하는 제1 메모리로 구성된다. 스레드 간의 통신 및 동기화를 수행하는 방법은 캐시 라인이 전송 스레드 내의 명령어에 의해 상기 캐시 라인에 기록되는 데이터에 대하여 감시될 수 있도록 하는 단계, 상기 캐시 라인에 기록된 상기 데이터의 탐지를 인에이블하는 단계, 또 다른 스레드가 상기 캐시 라인에 대응되는 데이터를 수정하는 것을 가능하게 하는 이벤트를 탐지하는 단계, 상기 캐시 라인에 기록된 상기 데이터의 탐지에 응답하여 핸들러를 호출하는 단계, 상기 데이터를 수신 스레드에 전달하는 단계로 구성이 된다. 본 발명의 실시예에 따르면 상기에 서술한 장치, 시스템, 방법에서 캐시 라인에 데이터가 기록되었는지를 나타내는데 정합 상태 필드를 사용할 수 있다.
또한 본 발명의 일 실시예로서 본 발명의 방법이 컴퓨터 소프트웨어로서 구현되는 것을 고려할 수 있다. 구체적으로, 감시되어야할 캐시 라인에 대응되는 변수를 기술하는 정보를 저장하는 단계, 비교 규칙을 사용하여 상기 변수가 제1 값으로 설정되었는지를 결정하는 단계, 상기 비교 규칙이 충족되면 실행될 적어도 하나의 명령어로 포인터를 지정하는 단계를 포함하고, 상기 적어도 하나의 명령어는 상기 비교 규칙이 충족되는 것에 응답하여 두 개 이상의 스레드 간에 정보가 공유되는 것을 가능하게 하는 방법이 구현되는 컴퓨터 소프트웨어에 의해 스레드 간의 통신 및 동기화가 이루어질 수 있다.
본 발명의 실시예들은 첨부된 도면의 그림에 한정이 아닌 예시로서 도시되어 있는데, 여기서 동일한 도면 부호는 동일한 요소를 나타낸다.
도 1은 본 발명의 실시예 중 적어도 하나와 관련하여 사용될 수 있는 프로세싱 시스템의 일부분을 도시하는 도면.
도 2는 본 발명의 일 실시예에 따라 사용할 수 있는 캐시 엔트리 및 상응하는 정합(coherency) 및 감시 엔트리를 도시하는 도면.
도 3은 일 실시예에 따라 캐시 라인에 스레드에 의한 기록이 이루어졌음을 나타내는 정합 상태 변화의 탐지에 관련된 동작을 도시하는 흐름도.
도 4는 본 발명의 일 실시예가 사용될 수 있는 프런트 사이드 버스(front side bus: FSB) 컴퓨터 시스템을 도시하는 도면.
도 5는 점 대 점(point to point: PtP) 구성으로 배치된 컴퓨터 시스템을 도시하는 도면.
본 발명의 실시예는 마이크로프로세서 아키텍처에 관한 것이다. 더 특정적으로, 본 발명의 실시예는 하나 이상의 마이크로프로세서 또는 마이크로프로세서 코어에 의해 실행되는 두 개 이상의 스레드 간의 통신 및 동기화에 관한 것이다. 본 발명의 실시예 중 적어도 하나는, 임의의 다른 스레드가 이 메모리 위치에 저장된 값을 수정하는 이벤트가 있을 때 통지받을 메모리 위치 집합을 스레드가 식별하는 기법을 제공한다. 일 실시예에서, 마이크로프로세서 내에서 사용자 레벨 인터럽트/예외 메커니즘에 의해 통지가 수행되거나 컴퓨팅 시스템 내에서 어떤 기타 로직 또는 소프트웨어에 의해 통지가 구현될 수 있다. 일 실시예에서, 스레드로 하여금 하나 이상의 다른 스레드에 의해 액세스되는 캐시 라인에 관한 특정 캐시 정합 이벤트를 통지받도록 함으로써 스레드 간의 통신 및 동기화가 이루어진다.
몇몇 종래의 스레드 간 통신 기법과 달리, 본 발명의 실시예는 전송 스레드에 의해 기록될 특정 메모리 위치를 특수 탐지 하드웨어를 사용하여 감시하는 대신에 프로세서 또는 컴퓨터 시스템 내의 다수의 기존 자원을 사용한다. 특히, 적어도 하나의 실시예는 캐시 라인 내에 이미 존재할 수 있는 정합 정보를 사용하여 DRAM과 같은 메모리 내의 기억 장소에 대응되는 캐시 라인에 언제 정보가 기록되는지를 탐지한다. 더 특정적으로, 현재 라인에 대응되는 데이터 값을 로컬에서 판독하는 것을 허용하는 ("공유" 상태와 같은) 상태에 있는 캐시 라인은 또 다른 스레드가 라인에 대응되는 임의의 데이터 값을 수정하는 것에 앞서 정합 행위가 수행되도록 하여야 한다.
몇몇 종래 스레드 간 통신 기법과 달리, 본 발명의 실시예는 메모리 위치에 대한 다수의 고유한 갱신이 다른 스레드에 의해 감시되는 것을 가능하게 한다. 특히, 적어도 하나의 실시예는 감시되고 있는 하나 이상의 메모리 위치가 또 다른 스레드에 의해 갱신되었는지를 일반적인 보고(report) 메커니즘을 사용하여 나타낸다.
본 발명의 일 실시예는 캐시 라인 상태 변화를 단지 탐지만 하는 최소한의 탐지 로직을 사용하여 캐시 라인 상태 변화를 탐지할 수 있고 사용자 레벨 인터럽트 메커니즘을 사용하여 수신 스레드에 통지함으로써 수신 스레드가 캐시 라인에 기록된 정보를 검색할 수 있도록 할 수 있다. 다른 실시예에서, 캐시 라인 상태 변화의 탐지는 프로세서의 상태 채널 내에 감시 이벤트 또는 "시나리오"로서 프로그램될 수 있다. 다른 실시예에서, 캐시 라인 상태 변화 탐지는 인터럽트, 예외, 트랩, 장애 등과 같은 하드웨어 메커니즘에 응답하여 발생할 수 있다.
일 실시예에서, 하나 이상의 캐시 라인은, 캐시 라인이 캐시 라인 또는 그 외의 캐시 라인과 연관된 것 중 어느 하나 내에 하나 이상의 감시 비트를 포함하는 것에 의하여 감시될 수 있게 되거나 "표시(mark)"될 수 있다. 적어도 하나의 실시 예는, 감시 비트를 설정(set)하기 위해서 명령 또는 명령어 또는 소정의 다른 수단을 사용할 수 있다. 나아가, 다수의 감시 비트가 사용되어 사용자 코드의 일정 부분이 코드의 다른 부분과 독립적으로 감시되는 캐시 라인을 구성하게 될 수 있다. 캐시 라인 상태가 탐지된 후에 감시 비트는 소거하는 명령 또는 명령어 또는 소정의 다른 수단을 통하여 소거(clear)될 수 있다.
도 1은 본 발명의 실시예 중 적어도 하나와 관련하여 사용될 수 있는 프로세싱 시스템의 일부분을 도시한다. 특히, 도 1은 캐시 메모리(105)와 연관되는 프로세서 또는 프로세서 코어(101)를 도시하는데, 캐시 메모리는 프로세서/코어(101) 또는 소정의 기타 프로세싱 자원(미도시) 내에서 실행되는 명령어에 대한 하나 이상의 스레드에 의해 공유될 수 있다. 본 발명의 일 실시예에서, 캐시 메모리(105)는 스레드에 의해 명시적으로 사용됨에 따라 그 스레드에게 접근이 허용되어, 캐시 라인을 사용할 수 있는 다른 스레드에 상관없이 스레드가 캐시 라인 내에 정보를 저장할 수 있게 된다.
도 1에는 DRAM 또는 SRAM, 자기 또는 콤팩트 디스크 등과 같은 몇몇 기타 메모리 기술로 구성될 수 있는 메모리(110) 또한 도시되어 있다. 일 실시예에서, 캐시 메모리(105)는 메모리(110)의 엔트리의 부분 집합을 반영하는 엔트리를 포함한다. 따라서, 캐시 메모리는 특정 캐시 라인(예: 도 1의 캐시 라인 "A")이 무효 데이터를 포함할 때("I" 상태), 또는 캐시 라인이 수정되었을 때("M" 상태) 캐시 메모리로부터 데이터를 액세스할 것을 에이전트에 통지하는 정합 정보를 포함하여, 다수의 에이전트, 스레드 또는 프로그램 간에 캐시 라인이 공유될 수 있을 때("S" 상태), 또는 캐시 라인이 스레드, 에이전트, 프로그램에 의해 명시적으로 사용될 때("E" 상태), 대응되는 메모리 엔트리(예: 도 1의 "A")와 동일한 데이터를 저장하고 있지 않도록 할 수 있다.
도 2는 본 발명의 일 실시예에 따라 사용될 수 있는 캐시 엔트리 및 상응하는 정합 및 감시 엔트리를 도시하고 있다. 특히, 캐시(200)의 캐시 라인(201)은 필드(203)에서 캐시 라인에 대응되는 데이터를 저장할 수 있는데, 어드레스 태그 및 정합 정보는 필드(205)에, 그리고 감시 정보는 필드(207)에 저장한다. 캐시 라인으로의 상태 변화 감시를 인에이블하기 위하여, 감시 정보 필드 내에서 하나 이상의 비트가 설정된다. 나아가, 만일 복수의 하드웨어 스레드에 의해 캐시가 공유된다면, (예를 들어, 각각 독립적인 소프트웨어 스레드를 실행한다면) 각각의 스레드는 감시 정보 필드 내의 복수의 비트에 대응될 수 있는데, 이는 스레드 내에서 얼마나 많은 수의 인스턴스가 캐시 라인을 감시하고 있는지에 달려 있다.
예를 들어, 도 2에서 상응하는 캐시 라인이 감시되는 스레드 내에 오직 세 개의 (반복될 수 있는) 인스턴스 만을 가지는 제1 스레드에 대응되는 감시 비트는 "a"로 라벨이 붙여진다. 캐시 라인이 감시되는 두 개의 (반복될 수 있는) 인스턴스를 가지는 제2 스레드에 대응되는 감시 비트는 "b"로 라벨이 붙여진다. 대응되는 캐시 라인이 감시되는 스레드 내의 오직 한 개의 (반복될 수 있는) 인스턴스 만을 가지는 제3 스레드에 대응되는 감시 비트는 "d"로 라벨이 붙여진다. 따라서, 각각의 스레드 내의 각각의 인스턴스에 대응되는 각각의 비트는 감시될 수 있고, 독립적으로 설정되거나 소거될 수 있다.
더 많은 감시 비트 필드가 캐시 라인에 나타날수록, 당연히 한꺼번에 더 많은 스레드 및 스레드 내의 인스턴스가 캐시 라인을 감시할 수 있다. 일 실시예에서, 캐시 라인이 여섯 개의 감시 비트 필드를 포함함으로써 두 개의 스레드가 각각의 내부의 세 개의 서로 다른 인스턴스에서 캐시 라인을 감시하는 것이 가능하다. 다른 실시예에서, 더 많거나 적은 비트가 사용되어 더 많거나 적은 스레드 또는 스레드 내의 인스턴스가 캐시 라인을 감시하는 것을 가능하게 된다.
일 실시예에서 캐시를 공유하는 하나의 스레드에 의해 수행된 메모리 갱신은, 동일한 캐시를 공유하는 다른 스레드에 대하여, 캐시를 공유하지 않는 다른 스레드로부터 발생한 정합 이벤트와 동일하게 취급받는다. 예를 들어, 스레드가 캐시 라인 내에 저장된 값을 갱신하는 경우, 감시 비트 집합을 가지는 다른 스레드는 이 갱신 및 사용자 레벨 인터럽트 메커니즘과 같은 인터럽트 메커니즘에 의해 통지받은 해당 스레드를 탐지할 수 있다. 다른 실시예에서, 인터럽트 메커니즘은 사용자 비가시적 인터럽트 메커니즘(user-invisible interrupt mechanism)일 수 있다.
일 실시예에서, 두 개의 분리된 명령 또는 명령어가 프로세서 또는 캐시 메모리 내의 로직 내에서 수행되어 감시 비트를 각각 설정하고 소거할 수 있다. 예를 들어, 일 실시예에서, "감시 로드" 명령어는 어드레스를 가지면서 수행될 수 있는데, 이 어드레스는 캐시 라인에 대응되고, 대응되는 데이터가 속성으로서 감시 비트에 기록된다. 유사하게, 일 실시예에서, "감시 소거" 명령어는 어드레스를 가지면서 수행될 수 있는데, 이 어드레스는 캐시 라인에 대응되고, 대응되는 데이터가 속성으로서 기록되어 감시 비트를 소거한다. 일 실시예에서, 일 명령어는 명령 어의 감시 비트 속성에 의거하여 감시 비트를 설정하고 소거하는데 사용된다. 또 다른 실시예에서, 일 명령어는 모든 캐시 라인의 모든 특정 속성을 소거하는데 사용된다.
여러 방법에 의해 (예를 들어, 일 실시예에서는 대응되는 감시 비트를 설정함으로써) 감시되도록 플래그된 캐시 라인의 변화 상태의 탐지가 수행될 수 있다. 예를 들어, 일 실시예에서, 불리언 "OR" 함수를 실행하는 로직과 같은 로직(예: "OR" 게이트)은 캐시 라인에 대응되는 임의의 감시 비트가 설정되어 있는지, 만일 그렇다면 또 다른 스레드에 의해 그 캐시 라인에 기록이 수행되었는지를 표시하는 캐시 라인의 (도 2 내에 "c"로 라벨이 붙여진) 정합 비트의 상태 변화가 있었는지를 탐지하는데 사용된다. 일 실시예에서, 대응되는 데이터의 로컬 판독을 허용하는 임의의 상태로부터 I 상태로의 상태 변화는 스레드가 대응되는 캐시 라인에 정보를 기록했거나 곧 기록할 것이라는 것을 나타낸다. 게다가 캐시를 공유하는 또 다른 스레드가 캐시 라인에 수행한 기록 또한 갱신으로서 탐지될 수 있다.
다른 실시예에서, 캐시 라인의 정합 상태 변화는 스레드가 캐시 라인에 정보를 기록했음을 표시하는 프로세싱 하드웨어 내의 인터럽트, 예외, 장애, 트랩 또는 다른 신호 메커니즘을 유발할 수 있다. 다른 실시예에서, 스레드가 특정 캐시 라인에 데이터를 기록했음을 나타내는 정합 상태 변화를 표시하는데 다른 메커니즘이 사용될 수 있다.
이벤트가 스레드 별로 감시되는 일 실시예에서, "시나리오"로 알려진 이벤트의 논리적 조합이 정의되어 캐시 라인에 데이터가 기록되었음을 표시할 수 있는 캐 시 라인에 대한 정합 상태 변화를 탐지할 수 있다. 이 경우, "채널"로 알려진 프로세서 상태 저장 영역은 상기에 언급된 캐시 라인에서의 정합 상태 변화를 탐지하는 하드웨어 및/또는 소프트웨어와 실질적으로 동일한 논리적 기능을 수행하도록 프로그램될 수 있다. 이런 시나리오의 발생은 시나리오에 대처할 산출 이벤트 핸들러(yield event handler)를 호출할 수 있는 장애 유사 또는 트랩 유사 산출(yield)과 같은 소프트 산출 이벤트(soft yield event)를 유발할 수 있다.
일 실시예에서, 감시된 라인이 수정되었거나 곧 수정될 수 있음을 나타내는 이벤트를 스레드에 통지하는 메커니즘은 감시 비트의 임의의 집합에 프로그램될 수 있는 마스크를 포함할 수 있다. 예를 들어, 일 실시예에서 채널 마스크와 채널에 기록될 프로그래밍 비트 간에 "AND" 논리 연산과 같은 불리언 연산을 수행함으로써 채널이 프로그램된다. 다른 실시예에서 이 메커니즘이 사용자 비가시적 인터럽트 메커니즘인 반면에 일 실시예에서 이 메커니즘은 사용자 레벨 인터럽트 메커니즘이다. 일 실시예에서, 감시되는 라인이 수정되었거나 곧 수정될 것이라는 것을 나타내는 이벤트를 통지하는 메커니즘은 또한 소프트웨어 스레드가 하드웨어로 전환되는 환경에 있다는 이벤트 같은 다른 이벤트에 응답하여 소프트웨어 스레드에 통지할 수 있다.
감시되는 라인의 가능한 갱신이 어떻게 감시되는지에 관계없이, 특정 캐시 라인에 스레드가 기록되었거나 또는 잠재적으로 기록될 것임을 나타내는, 이런 상태 변화의 탐지에 의해 탐지를 처리할 핸들러가 호출될 수 있다. 핸들러가 수행할 가능성이 있는 작업 중 하나는 감시되고 있는 어드레스 또는 한 세트의 감시되고 있는 어드레스를 판독할 수 있고, 또 다른 스레드가 메모리 위치를 주요 값으로 갱신하는지를 볼 수 있으며, 만일 메모리 위치가 주요 값으로 갱신되었으면 특정 소프트웨어 함수를 호출하는 것과 같은 적절한 행위를 수행할 수 있다.
도 3은 일 실시예에 따라 스레드가 캐시 라인에 기록을 수행하였음을 나타내는 정합 상태 변화를 감지하는 것과 관련된 동작을 도시하는 흐름도이다. 동작(301)에서, 감시 비트의 수를 캐시 라인이 감시되어야 하는 각각의 스레드 내의 인스턴스 수와 동일하게 설정함으로써 캐시 라인은 하나 이상의 스레드에 의해 감시될 수 있게 된다. 일 실시예에서, 캐시 라인은 설정될 감시 비트에 해당하는 속성을 가지는 명령어(예: "감시 로드")를 실행함으로써 감시 가능하게(enable)된다. 동작 305에서, 스레드는 감시되는 캐시 라인에 정보를 기록하여 정합 상태 변화를 일으키고, 그러면 동작 310에서 감시(수신) 스레드로 정보가 전달될 수 있도록 핸들러가 호출되어 캐시 라인에 기록된 정보를 검색한다.
일 실시예에서, 정합 상태 변화는 감시 비트가 설정되어 있는지, 만일 그렇다면 정합 상태 변화가 발생하였는지를 탐지하는 로직을 사용하여 탐지될 수 있다. 다른 실시예에서, 정합 상태 변화는 소프트웨어, 하드웨어 또는 이들의 소정의 집합에 의해 탐지될 수 있다. 나아가, 적어도 하나의 실시예에서, 프로세서 상태 채널에 시나리오를 프로그램하는 것에 의해 정합 상태 변화가 탐지되고 사용자 레벨 인터럽트 메커니즘에 의해 수신 스레드에 보고된다.
동작(315)에서, 탐지된 정합 상태 변화에 대응되는 감시 비트는 또 다른 스레드 또는 동일한 스레드 내의 감시 인스턴스에 의해 소거되고 선택적으로 리셋될 수 있다. 일 실시예에서, 감시 비트를 설정하는 명령어와 상이한, 소거된 감시 비트에 해당하는 속성을 가지는 명령어(예: "감시 소거" 명령어)를 실행함으로써 감시 비트가 소거될 수 있다. 다른 실시예에서, 소거된 감시 비트에 해당하는 속성을 사용함으로써, 감시 비트를 소거하는데에 감시 비트를 설정하는데 사용된 것과 동일한 명령어(예: "감시 로드" 명령어)가 사용될 수 있다.
일 실시예에서, 소프트웨어가 감시할 변수를 지정하고 그에 대응하여 취할 행위를 지정할 수 있는 사용자 소프트웨어 프로그램에 인터페이스가 제공된다. 일 실시예에서, 사용자 소프트웨어 프로그램은 특정 메모리 변수, 지정된 메모리 변수의 값을 평가하는 특정 비교 규칙 및 메모리 변수가 평가 기준을 만족할 때 호출할, 선택적 인자를 가진 함수 포인터를 제공할 수 있다. 이런 실시예에서 소프트웨어는 명령어와 같은 도구를 통하거나 복수의 명령어 집합을 통하여 특정할 수 있다.
게다가, 사용자 소프트웨어는 각각이 고유하거나 일반적인 응답 행위에 대응되는 복수의 변수를 감시하도록 지정할 수 있다. 변수(들)가 감시되는 동안, 스레드는 계속하여 다른 함수를 실행할 수 있다. 감시되는 변수의 발생에 응답하여 함수가 호출될 때, 스레드가 계속하여 실행될 수 있도록 함수가 스레드에 제어권을 반환할 수 있어서 안정적이고 유연한 인터페이스를 제공할 수 있다.
일 실시예에서, 상기에 기술된 것과 같은 인터페이스는 각각의 변수를 기술하는 정보, 그 변수에 대한 비교 규칙 및 호출될 행위 또는 함수 및 그 인자를 포함한다. 일 실시예에서 이 정보는 메인 컴퓨터 시스템 메모리(예: DRAM)와 같은 저장 영역 내의 테이블에 저장된다. 소프트웨어, 펌웨어 또는 하드웨어는 적절한 시점에 이 테이블을 판독하고 각각의 엔트리에 대하여 지정된 변수를 판독하고 비교 규칙을 실행하여 행위가 호출되어야 하는지를 결정한다.
나아가, 앞에서 기술한 감시되어야할 캐시 내의 라인에 표시하는 메커니즘은 감시되어야할 변수에 대응되는 각각의 라인에 표시하는데 사용될 수 있다. 만일 또 다른 스레드에 의해 라인이 지금 수정될 수 있음을 나타내는 이벤트가 감시되는 라인 내에서 탐지되면 적절한 소프트웨어, 펌웨어 또는 하드웨어가 상기에 기술된 바와 같이 가동되어 감시되는 테이블 내의 모든 변수가 평가될 수 있다. 만일 어떤 변수도 판단 기준에 합치하지 않는다면, 소프트웨어, 펌웨어 또는 하드웨어는 모든 적절한 라인들이 여전히 감시되고 있음을 확실히 하고 호출 전에 수행하던 작업으로 돌아갈 것이다.
변수 테이블을 평가하고 적절한 함수를 호출하는 소프트웨어, 펌웨어 또는 하드웨어는 스레드 메모리 스택을 조작하여 판단 기준에 대한 변수의 합치에 응답하여 함수를 호출할 때 그 함수가 이전에 실행중이었던 작업으로 바로 되돌아가도록 할 수 있다. 다른 방법으로 소프트웨어, 펌웨어 또는 하드웨어는 스택을 조작하여 결국 이전에 실행중이었던 작업으로 돌아가기 전에 함수가 코드의 특수한 부분을 반환하여 변수에 대응되는 모든 캐시 라인이 적절하게 감시되고 있음을 확실히 할 수 있다. 또 다른 대안은 판단 기준에 합치하는 변수에 응답하여 호출된 함수가 사용할 특수 반환 명령어를 가지는 것이다. 이 특수 반환 명령어는 변수에 대응되는 모든 캐시 라인이 결국 이전에 실행중이었던 작업으로 돌아가기 전에 변 수에 대응되는 모든 캐시 라인이 적절하게 감시되고 있음을 확실히 할 것이다.
도 4는 본 발명의 일 실시예가 사용될 프런트 사이드 버스(FSB) 컴퓨터 시스템을 도시한다. 프로세서(505)는 레벨 1(L1) 캐시 메모리(510) 및 메인 메모리(515)로부터 데이터를 액세스한다. 본 발명의 다른 실시예에서, 캐시 메모리는 레벨 2(L2) 캐시 메모리 또는 컴퓨터 시스템 메모리 계층 구조 내의 기타 메모리일 수 있다. 나아가, 몇몇 실시예에서, 도 4의 컴퓨터 시스템은 L1 캐시 및 L2 캐시 양쪽 모두를 포함할 수 있다.
도 4의 프로세서 내에 도시되어 있는 것은 머신 상태에 대한 저장 영역(506)이다. 일 실시예에서 저장 영역은 한 세트의 레지스터일 수 있는 반면에, 다른 실시예에서는 저장 영역은 다른 메모리 구조이다. 또한 도 4에 도시된 것은 일 실시예를 따르는 보관 영역 구획(save area segment)에 대한 저장 영역(507)이다. 다른 실시예에서, 보관 영역 구획은 다른 장치 또는 메모리 구조 내에 위치할 수 있다. 프로세서는 임의의 수의 프로세싱 코어를 가질 수 있다. 그러나, 본 발명의 다른 실시예는 개별 버스 에이전트와 같은 시스템 내의 다른 장치에 구현되거나 하드웨어, 소프트웨어 또는 이들의 소정의 조합을 통하여 분산될 수 있다.
다양한 저장 장치 및 기술을 포함하는 동적 랜덤 액세스 메모리(dynamic random access memory: DRAM), 하드 디스크 드라이브(HDD; 520) 또는 네트워크 인터페이스(530)를 통하여 컴퓨터 시스템으로부터 원격에 위치한 메모리 소스와 같은 다양한 메모리 소스에 메인 메모리가 구현될 수 있다. 캐시 메모리는 프로세서 내 또는 프로세서의 로컬 버스(507) 상과 같이 프로세서에 아주 근접하여 위치할 수 있다.
나아가, 캐시 메모리는, 6 트랜지스터(6T) 셀 또는 근사적으로 동등하거나 그 이상의 액세스 속도를 가지는 다른 메모리 셀과 같은 상대적으로 빠른 메모리 셀을 내장할 수 있다. 도 4의 컴퓨터 시스템은 마이크로프로세서와 같은 버스 에이전트의 점 대 점(PtP) 네트워크일 수 있는데, 버스 에이전트는 PtP 네트워크상에서 각각의 에이전트 전용 버스 신호를 통해 통신한다. 도 5는 점 대 점(PtP) 구성으로 배치된 컴퓨터 시스템을 도시한다. 특히, 도 5는 프로세서, 메모리 및 입/출력 장치가 다수의 점 대 점 인터페이스에 의해 상호 연결되는 시스템을 나타낸다.
도 5의 시스템은 또한 수 개의 프로세서를 포함할 수 있는데, 명확성을 위해 단지 두 개의 프로세서(670, 680)만이 도시되었다. 프로세서(670, 680)는 각각 로컬 메모리 컨트롤러 허브(MCH; 672, 682)를 포함하여서 메모리(22, 24)와 연결될 수 있다. 프로세서(670, 680)는 PtP 인터페이스 회로(678, 688)를 사용하여 점 대 점(PtP) 인터페이스(650)를 통해 데이터를 교환할 수 있다. 프로세서(670, 680)는 각각 점 대 점 인터페이스 회로(676, 694, 686, 698)를 사용하여 개별 PtP 인터페이스(652, 654)를 통해 칩셋(690)과 데이터를 교환할 수 있다. 또한 칩셋(690)은 고성능 그래픽 인터페이스(639)를 통해 고성능 그래픽 회로(638)와 데이터를 교환할 수 있다. 본 발명의 실시예는 임의의 수의 프로세싱 코어를 가지는 임의의 프로세서 내에 또는 도 5의 각각의 PtP 버스 에이전트 내에 위치할 수 있다.
그러나, 본 발명의 다른 실시예는 도 5의 시스템 내의 다른 회로, 로직 유닛 또는 장치 내에 존재할 수 있다. 나아가, 본 발명의 다른 실시예는 도 5에 도시된 수 개의 회로, 로직 유닛 또는 장치에 걸쳐서 분산될 수 있다.
본 발명의 다양한 특징은 상보성 금속 산화막 반도체(complimentary metal oxide semiconductor: CMOS) 회로 및 논리 장치(하드웨어)를 사용하여 구현될 수 있는 한편, 다른 특징은, 프로세서에 의해 실행되면 프로세서로 하여금 본 발명의 실시예를 실행하도록 하는 머신 판독가능 매체(소프트웨어) 상에 저장된 명령어를 사용하여 구현될 수도 있다. 나아가, 본 발명의 몇몇 실시예는 오직 하드웨어에서만 실행되는 반면에 다른 실시예에서는 소프트웨어 내에서만 실행된다.
예시적인 실시예를 참조하여 본 발명을 기술하였지만, 이 기술은 제한적인 견지에서 해석되는 것을 의도한 것이 아니다. 예시적인 실시예와 더불어 다른 실시예에 가해진 당업자에게 자명한 다양한 변형은 본 발명의 사상과 범주 내에 포함되는 것으로 간주 된다.

Claims (30)

  1. 대응되는 캐시 라인이, 상기 캐시 라인에 대응되는 데이터를 스레드가 수정하는 것을 가능하게 할 수 있는 이벤트에 대하여, 감시되어야 하는지를 표시하는 하나 이상의 감시 비트 필드를 포함하는 캐시 메모리; 및
    상기 하나 이상의 비트 필드 내의 감시 비트가 설정(set)된 경우에 상기 캐시 라인에 데이터가 기록되었는지를 탐지하는 탐지 로직
    을 포함하는 장치.
  2. 제1항에 있어서,
    상기 감시 비트를 설정하는 제1 명령어, 상기 감시 비트를 소거하는 제2 명령어 및 상기 탐지 로직을 인에이블하는 제3 명령어를 포함하는 복수의 명령어를 저장하는 메모리를 포함하는 장치.
  3. 제2항에 있어서,
    상기 제1 명령어 및 상기 제2 명령어는 동일한 명령어인 장치.
  4. 제1항에 있어서,
    상기 이벤트는 인터럽트 메커니즘 또는 사용자 레벨 인터럽트 메커니즘에 의한 통지를 발생시키는 장치.
  5. 제4항에 있어서,
    상기 사용자 레벨 인터럽트 메커니즘은 실행될 명령어가 상기 스레드에 의해 표시되도록 할 수 있는 장치.
  6. 제1항에 있어서,
    상기 캐시 메모리는 상기 캐시 라인에 관련된 정합 정보를 저장할 정합 상태 필드를 포함하는 장치.
  7. 제6항에 있어서,
    상기 탐지 로직은 상기 캐시 라인에 상기 데이터가 기록된다는 것을 표시하는 상기 정합 상태 필드 내의 변화를 탐지할 수 있는 장치.
  8. 제7항에 있어서,
    상기 정합 상태 필드 내의 상기 변화는 공유 상태로부터 무효 상태로의 변화를 포함하는 장치.
  9. 대응되는 캐시 라인이 상기 캐시 라인에 대응되는 데이터를 스레드가 전송 스레드에 의하여 수정하는 것을 가능하게 할 수 있는 이벤트에 대하여, 감시되어야 하는지를 표시하는 하나 이상의 감시 비트 필드를 포함하는 캐시 메모리; 및
    상기 복수의 감시 비트 필드 내의 비트를 설정하는 제1 명령어 및 상기 전송 스레드에 의해 상기 캐시 라인에 데이터가 기록되었는지를 탐지하는 탐지 로직을 인에이블하는 제3 명령어를 저장하는 제1 메모리
    를 포함하는 시스템.
  10. 제9항에 있어서,
    상기 탐지 로직이 상기 캐시 라인에 데이터가 기록되었음을 탐지하고 상기 복수의 감시 비트 필드 내에 수신 스레드에 대응되는 감시 비트가 설정된 경우에 상기 캐시 라인으로부터 상기 데이터를 판독하도록 수신 스레드를 실행하는 프로세서를 더 포함하는 시스템.
  11. 제10항에 있어서,
    상기 제1 메모리는 상기 복수의 감시 비트 필드 중 적어도 몇 개를 소거하는 제2 명령어를 포함하는 시스템.
  12. 제10항에 있어서,
    상기 제1 메모리는 상기 전송 스레드에 의해 상기 캐시 라인에 데이터가 기록되었는지를 탐지하는 탐지 로직을 인에이블하는 복수의 명령어를 저장할 수 있고, 상기 복수의 명령어 각각 및 상기 제3 명령어는 연관된 우선 순위 레벨을 가지는 시스템.
  13. 제12항에 있어서,
    상기 탐지 로직은 시나리오를 탐지하는 정보로 프로그램된 상태 채널을 포함하는 시스템.
  14. 제9항에 있어서,
    상기 캐시 메모리는 상기 캐시 라인에 관련된 정합 정보를 저장하는 정합 상태 필드를 포함하는 시스템.
  15. 제14항에 있어서,
    상기 탐지 로직은 상기 캐시 라인에 상기 데이터가 기록되었음을 표시하는 상기 정합 상태 필드의 변화를 탐지할 수 있는 시스템.
  16. 제9항에 있어서,
    상기 탐지 로직은 상기 캐시 라인에 기록된 데이터에 응답하여 예외, 장애, 트랩, 인터럽트로 구성된 그룹 중 하나를 탐지할 로직을 포함하는 장치.
  17. 캐시 라인이, 전송 스레드 내의 명령어에 의해 상기 캐시 라인에 기록되는 데이터에 대하여, 감시될 수 있도록 하는 단계;
    상기 캐시 라인에 기록된 상기 데이터의 탐지를 인에이블하는 단계;
    또 다른 스레드가 상기 캐시 라인에 대응되는 데이터를 수정하는 것을 가능하게 하는 이벤트를 탐지하는 단계;
    상기 캐시 라인에 기록된 상기 데이터의 탐지에 응답하여 핸들러를 호출하는 단계; 및
    상기 데이터를 수신 스레드에 전달하는 단계
    를 포함하는 방법.
  18. 제17항에 있어서,
    상기 캐시 라인이 감시될 수 있도록 하는 단계는 상기 캐시 라인에 대응되는 감시 비트 필드 내에 적어도 하나의 감시 비트를 설정하는 명령어를 실행하는 것을 포함하는 방법.
  19. 제18항에 있어서,
    상기 캐시 라인에 기록되는 데이터의 탐지를 인에이블하는 단계는 감시되어야 하는 상기 캐시 라인에 대응되는 시나리오를 탐지하도록 상태 채널 로직을 프로그램하는 명령어를 실행하는 것을 포함하는 방법.
  20. 제19항에 있어서,
    상기 캐시 라인에 기록되는 데이터의 탐지를 인에이블하는 단계는 탐지 로직이 예외, 장애, 트랩, 인터럽트로 구성된 그룹으로부터 선택된, 상기 캐시 라인에 기록되는 상기 데이터에 응답하여 어서트(assert)되는 신호를 탐지할 수 있도록 하는 단계를 포함하는 방법.
  21. 제19항에 있어서,
    상기 탐지 단계는 상기 캐시 라인의 제1 상태로부터 제2 상태로의 정합 상태 변화를 탐지하는 단계를 포함하는 방법.
  22. 제21항에 있어서,
    상기 제1 상태는 공유 상태이고 상기 제2 상태는 무효 상태인 방법.
  23. 제19항에 있어서,
    상기 시나리오는 상기 캐시 라인이 감시되어야하는지 여부 및 상기 캐시라인이 감시되어야 한다면 상기 캐시 라인에 대하여 제1 상태로부터 무효 상태로 정합 상태 변화가 발생하였는지를 탐지하는 단계를 포함하는 방법.
  24. 제23항에 있어서,
    상태 채널 로직을 프로그램하는 상기 명령어는 상태 채널 로직을 프로그램하는 복수의 명령어 중 하나이고, 상기 복수의 명령어 각각은 상기 캐시 라인이 감시되어야 하는 하나 이상의 스레드 내의 서로 다른 인스턴스에 대응되는 방법.
  25. 제24항에 있어서,
    상기 복수의 명령어 각각은 상기 복수의 명령어가 실행될 순서를 제어할 고유한 우선 순위를 가지는 방법.
  26. 머신(machine)에 의해 실행될 때 상기 머신이 방법을 수행하게 하는 한 세트의 명령어들을 저장한 머신 판독가능 매체로서,
    상기 방법은,
    감시되어야 하는 캐시 라인에 대응되는 변수를 기술하는 정보를 저장하는 단계;
    비교 규칙을 사용하여 상기 변수가 제1 값으로 설정되었는지를 결정하는 단계; 및
    상기 비교 규칙이 충족되면 실행되어야 하는 적어도 하나의 명령어로 포인터를 지정하는 단계를 포함하고, 상기 적어도 하나의 명령어는 상기 비교 규칙이 충족되는 것에 응답하여 두 개 이상의 스레드 간에 정보가 공유되는 것을 가능하게 하는, 머신 판독가능 매체.
  27. 제26항에 있어서,
    상기 비교 규칙이 충족되는 것에 응답하여 적어도 하나의 인자가 상기 적어도 하나의 명령어로 선택적으로 전달될 수 있는, 머신 판독가능 매체.
  28. 제27항에 있어서,
    상기 방법은 상기 비교 규칙이 충족된 후에 상기 변수를 소거하는 단계를 더 포함하는, 머신 판독가능 매체.
  29. 제28항에 있어서,
    상기 두 개 이상의 스레드는 상기 비교 규칙이 충족되는지에 관계없이 계속해서 실행될 수 있는, 머신 판독가능 매체.
  30. 제29항에 있어서,
    상기 비교 규칙은 상기 변수가 상기 제1 값으로 설정되었는지를 결정하는데 프로세서 로직을 사용하는, 머신 판독가능 매체.
KR1020087009297A 2005-10-19 2006-10-19 스레드 통신 및 동기화 기법 KR101126820B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/254,286 2005-10-19
US11/254,286 US8019947B2 (en) 2005-10-19 2005-10-19 Technique for thread communication and synchronization
PCT/US2006/041094 WO2007047959A1 (en) 2005-10-19 2006-10-19 Technique for thread communication and synchronization

Publications (2)

Publication Number Publication Date
KR20080048543A true KR20080048543A (ko) 2008-06-02
KR101126820B1 KR101126820B1 (ko) 2012-03-23

Family

ID=37757207

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087009297A KR101126820B1 (ko) 2005-10-19 2006-10-19 스레드 통신 및 동기화 기법

Country Status (7)

Country Link
US (1) US8019947B2 (ko)
JP (2) JP5204656B2 (ko)
KR (1) KR101126820B1 (ko)
CN (2) CN102736956B (ko)
DE (1) DE112006002908T5 (ko)
GB (1) GB2446089B (ko)
WO (1) WO2007047959A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019947B2 (en) 2005-10-19 2011-09-13 Intel Corporation Technique for thread communication and synchronization
US7610448B2 (en) 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns
US9081687B2 (en) 2007-12-28 2015-07-14 Intel Corporation Method and apparatus for MONITOR and MWAIT in a distributed cache architecture
JP5663941B2 (ja) * 2010-04-30 2015-02-04 富士ゼロックス株式会社 印刷文書変換装置およびプログラム
US8468531B2 (en) 2010-05-26 2013-06-18 International Business Machines Corporation Method and apparatus for efficient inter-thread synchronization for helper threads
CN103109279B (zh) 2010-06-22 2016-08-31 富士通株式会社 多核处理器系统,控制程序以及控制方法
GB2524085B (en) * 2014-03-14 2021-01-20 Advanced Risc Mach Ltd Exception handling in microprocessor systems
JP5776810B2 (ja) * 2014-03-20 2015-09-09 富士通株式会社 マルチプロセッサシステム、制御プログラム、および制御方法
US9898351B2 (en) * 2015-12-24 2018-02-20 Intel Corporation Method and apparatus for user-level thread synchronization with a monitor and MWAIT architecture
US10346306B2 (en) * 2016-04-02 2019-07-09 Intel Corporation Processor and method for memory performance monitoring utilizing a monitor flag and first and second allocators for allocating virtual memory regions
US10394678B2 (en) 2016-12-29 2019-08-27 Intel Corporation Wait and poll instructions for monitoring a plurality of addresses
US10649684B2 (en) 2017-03-16 2020-05-12 Arm Limited Memory access monitoring
CN109408248B (zh) * 2018-09-19 2021-12-24 福建星网智慧科技有限公司 一种Linux下线程间通信系统
US11080122B2 (en) * 2019-09-19 2021-08-03 International Business Machines Corporation Software-invisible interrupt for a microprocessor

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5202998A (en) * 1990-08-31 1993-04-13 International Business Machines Corporation Fast, simultaneous multi-processor system status communication interface
US5555398A (en) * 1994-04-15 1996-09-10 Intel Corporation Write back cache coherency module for systems with a write through cache supporting bus
JP2902976B2 (ja) * 1995-06-19 1999-06-07 株式会社東芝 キャッシュフラッシュ装置
JP3139392B2 (ja) 1996-10-11 2001-02-26 日本電気株式会社 並列処理システム
US6874087B1 (en) * 1999-07-13 2005-03-29 International Business Machines Corporation Integrity checking an executable module and associated protected service provider module
US6681318B2 (en) * 2000-09-08 2004-01-20 Sun Microsystems, Inc. Method and apparatus for using an assist processor to prefetch instructions for a primary processor
JP2002342163A (ja) 2001-05-15 2002-11-29 Fujitsu Ltd マルチスレッドプロセッサ用キャッシュ制御方式
JP3661614B2 (ja) 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム
US6785774B2 (en) * 2001-10-16 2004-08-31 International Business Machines Corporation High performance symmetric multiprocessing systems via super-coherent data mechanisms
US20030126379A1 (en) * 2001-12-31 2003-07-03 Shiv Kaushik Instruction sequences for suspending execution of a thread until a specified memory access occurs
GB2402785B (en) * 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Processor switching between secure and non-secure modes
GB2395583B (en) * 2002-11-18 2005-11-30 Advanced Risc Mach Ltd Diagnostic data capture control for multi-domain processors
US7269717B2 (en) * 2003-02-13 2007-09-11 Sun Microsystems, Inc. Method for reducing lock manipulation overhead during access to critical code sections
US7287126B2 (en) * 2003-07-30 2007-10-23 Intel Corporation Methods and apparatus for maintaining cache coherency
US7114036B2 (en) * 2004-01-14 2006-09-26 International Business Machines Corporation Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected
US7624236B2 (en) * 2004-12-27 2009-11-24 Intel Corporation Predictive early write-back of owned cache blocks in a shared memory computer system
US8019947B2 (en) 2005-10-19 2011-09-13 Intel Corporation Technique for thread communication and synchronization

Also Published As

Publication number Publication date
CN101292226A (zh) 2008-10-22
GB2446089B (en) 2010-12-01
CN101292226B (zh) 2012-05-30
DE112006002908T5 (de) 2008-09-18
JP5204656B2 (ja) 2013-06-05
JP2009512078A (ja) 2009-03-19
GB2446089A (en) 2008-07-30
GB0808945D0 (en) 2008-06-25
JP2012234561A (ja) 2012-11-29
KR101126820B1 (ko) 2012-03-23
JP5449472B2 (ja) 2014-03-19
WO2007047959A1 (en) 2007-04-26
CN102736956B (zh) 2015-09-30
US8019947B2 (en) 2011-09-13
CN102736956A (zh) 2012-10-17
US20070088916A1 (en) 2007-04-19

Similar Documents

Publication Publication Date Title
KR101126820B1 (ko) 스레드 통신 및 동기화 기법
JP4764360B2 (ja) メモリ属性を用いるための技術
US9767027B2 (en) Private memory regions and coherency optimization by controlling snoop traffic volume in multi-level cache hierarchy
JP4925973B2 (ja) 装置、システム、方法およびプログラム
US8949671B2 (en) Fault detection, diagnosis, and prevention for complex computing systems
US20170109288A1 (en) System and method for false sharing prediction
US9575816B2 (en) Deadlock/livelock resolution using service processor
US8473921B2 (en) Debugging mechanisms in a cache-based memory isolation system
JP2004103024A (ja) キャッシュをベースとしたソフトウェア・ブレークポイントを有するプロセッサ・システム
US10318340B2 (en) NVRAM-aware data processing system
US9372773B2 (en) User-level hardware branch records
KR20230098610A (ko) 시스템 온 칩(soc들)을 위한 향상된 내구성
WO2009111108A1 (en) Method and apparatus for sharing debug resources
US7765383B2 (en) Data processing unit and data processing apparatus using data processing unit
JP2010009201A (ja) プロセッサおよびデバッグ装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
E902 Notification of reason for refusal
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150227

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160303

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170302

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee