KR101574007B1 - 트랜잭션 메모리를 구현하기 위한 시스템들 및 방법들 - Google Patents
트랜잭션 메모리를 구현하기 위한 시스템들 및 방법들 Download PDFInfo
- Publication number
- KR101574007B1 KR101574007B1 KR1020140028430A KR20140028430A KR101574007B1 KR 101574007 B1 KR101574007 B1 KR 101574007B1 KR 1020140028430 A KR1020140028430 A KR 1020140028430A KR 20140028430 A KR20140028430 A KR 20140028430A KR 101574007 B1 KR101574007 B1 KR 101574007B1
- Authority
- KR
- South Korea
- Prior art keywords
- transaction
- memory
- memory access
- memory location
- buffer
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0857—Overlapped cache accessing, e.g. pipeline by multiple requestors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
트랜잭션 메모리 액세스를 구현하기 위한 시스템들 및 방법들이 기술된다. 일례의 방법은, 메모리 액세스 트랜잭션을 개시하는 단계; 제1 메모리 로케이션에 대하여, 메모리 액세스 추적 로직과 연관된 제1 버퍼를 사용하는, 트랜잭션 판독 동작, 및/또는 제2 메모리 로케이션에 대하여, 메모리 액세스 추적 로직과 연관된 제2 버퍼를 사용하는, 트랜잭션 기록 동작을 실행하는 단계; 제3 메모리 로케이션에 대하여 논-트랜잭션 판독 동작, 및/또는 제4 메모리 로케이션에 대하여 논-트랜잭션 기록 동작을 실행하는 단계; 메모리 액세스 추적 로직에 의해, 제1 메모리 로케이션 또는 제2 메모리 로케이션에 대한 프로세서가 아닌 장치에 의한 액세스를 검출함에 응답해서, 메모리 액세스 트랜잭션을 중단하는 단계; 및 제3 메모리 로케이션의 상태 및 제4 메모리 로케이션의 상태와 무관하게, 트랜잭션 중단 조건의 검출 실패에 응답해서, 메모리 액세스 트랜잭션을 완료하는 단계를 포함할 수 있다.
Description
본 발명은 일반적으로 컴퓨터 시스템들에 관한 것으로, 특히, 트랜잭션 메모리를 구현하기 위한 시스템들 및 방법들에 관한 것이다.
2개의 또는 그 이상의 프로세스들의 동시 실행은 동기화 메커니즘이 공유 리소스(예를 들어, 2개의 또는 그 이상의 프로세서들에 의해 액세스 가능한 메모리)에 대하여 구현될 것을 요구할 수 있다. 이러한 동기화 메커니즘의 일례는 세마포어-기반 로킹(a semaphore-based locking)으로, 이는 프로세스 실행의 직렬화를 야기해서, 잠재적으로 총 시스템 성능에 악영향을 준다. 또한, 세마포어-기반 로킹은 교착 상태(2개의 또는 그 이상의 프로세스들이 각각 다른 프로세스가 리소스 로크를 해제하기를 기다리고 있을 때 발생하는 상태)를 야기할 수 있다.
본 발명은 제한이 아니라, 일례로서 도시되어 있고, 도면들과 관련해서 고려될 때 이하의 상세한 설명을 참조해서 더 완전히 이해될 수 있다.
도 1은 본 발명의 하나의 또는 그 이상의 양상들에 따른, 일례의 컴퓨터 시스템의 고수준 컴포넌트 도면을 도시한다.
도 2는 본 발명의 하나의 또는 그 이상의 양상들에 따른, 프로세서의 블록도를 도시한다.
도 3a-3b는 본 발명의 하나의 또는 그 이상의 양상들에 따른, 프로세서 마이크로-아키텍처의 요소들을 개략적으로 도시한다.
도 4는 본 발명의 하나의 또는 그 이상의 양상들에 따른, 트랜잭션 메모리 액세스를 구현하는 일례의 컴퓨터 시스템의 수개의 양상들을 도시한다.
도 5는 본 발명의 하나의 또는 그 이상의 양상들에 따른, 트랜잭션 모드 명령들의 사용을 도시하는 일례의 코드 단편이다.
도 6은 본 발명의 하나의 또는 그 이상의 양상들에 따른, 트랜잭션 메모리 액세스를 구현하기 위한 방법의 흐름도를 도시한다.
도 7은 본 발명의 하나의 또는 그 이상의 양상들에 따른, 일례의 컴퓨터 시스템의 블록도를 도시한다.
도 1은 본 발명의 하나의 또는 그 이상의 양상들에 따른, 일례의 컴퓨터 시스템의 고수준 컴포넌트 도면을 도시한다.
도 2는 본 발명의 하나의 또는 그 이상의 양상들에 따른, 프로세서의 블록도를 도시한다.
도 3a-3b는 본 발명의 하나의 또는 그 이상의 양상들에 따른, 프로세서 마이크로-아키텍처의 요소들을 개략적으로 도시한다.
도 4는 본 발명의 하나의 또는 그 이상의 양상들에 따른, 트랜잭션 메모리 액세스를 구현하는 일례의 컴퓨터 시스템의 수개의 양상들을 도시한다.
도 5는 본 발명의 하나의 또는 그 이상의 양상들에 따른, 트랜잭션 모드 명령들의 사용을 도시하는 일례의 코드 단편이다.
도 6은 본 발명의 하나의 또는 그 이상의 양상들에 따른, 트랜잭션 메모리 액세스를 구현하기 위한 방법의 흐름도를 도시한다.
도 7은 본 발명의 하나의 또는 그 이상의 양상들에 따른, 일례의 컴퓨터 시스템의 블록도를 도시한다.
컴퓨터 시스템들에 의해 트랜잭션 메모리 액세스를 구현하기 위한 방법들 및 시스템들이 본 명세서에 기술된다. "트랜잭션 메모리 액세스(transactional memory access)"는, 명령들이 총체적으로 성공하거나 또는 총체적으로 실패하도록, 프로세서에 의해, 원자적 동작(atomic operation)으로서 2개의 또는 그 이상의 메모리 액세스 명령들을 실행하는 것과 관련된다. 총체적 실패의 상황에서, 메모리는 일련의 동작들 중 제1 동작을 실행하기 전에 존재하는 상태로 변경되지 않은 채로 유지될 수 있고/있거나, 다른 교정 동작들이 실행될 수 있다. 특정 구현들에서, 트랜잭션 메모리 액세스는 추론적으로, 즉, 액세스되고 있는 메모리를 로킹하지 않고, 실행될 수 있어서, 2개의 또는 그 이상의 동시 실행중인 스레드들 및/또는 프로세스들에 의한 공유 리소스에 대한 액세스를 동기화하기 위한 효율적인 메커니즘들을 제공한다.
트랜잭션 메모리 액세스를 구현하기 위해, 프로세서 명령 집합은 트랜잭션 개시 명령 및 트랜잭션 종료 명령을 포함할 수 있다. 트랜잭션 동작 모드에서, 프로세서는 각각의 판독 버퍼들 및/또는 기록 버퍼들을 통해 복수의 메모리 판독 및/또는 메모리 기록 동작들을 추론적으로 실행할 수 있다. 기록 버퍼들은 데이터를 대응 메모리 로케이션들에 커밋하지 않고 메모리 기록 동작들의 결과들을 유지할 수 있다. 버퍼와 연관된 메모리 추적 로직은 특정 메모리 로케이션들에 대한 다른 장치의 액세스를 검출하고, 오류 상태를 프로세서에 신호할 수 있다. 오류 신호의 수신에 응답해서, 프로세서는 트랜잭션을 중단하고 제어를 오류 복구 루틴에 넘겨줄 수 있다. 대안으로, 프로세서는 트랜잭션 종료 명령에 도달할 때 오류들을 검사할 수 있다. 트랜잭션 중단 상태들의 부재시, 프로세서는 기록 동작 결과들을 대응 메모리 또는 캐시 로케이션들에 커밋할 수 있다. 트랜잭션 동작 모드에서, 프로세서는, 트랜잭션 성공적 완료 또는 중단에 무관하게, 결과들이 즉시 다른 장치들(예를 들어, 다른 프로세서 코어들 또는 다른 프로세서들)에게 보이게 될 수 있도록 즉시 커밋될 수 있는 하나의 또는 그 이상의 메모리 판독 및/또는 기록 동작들을 또한 실행할 수 있다. 트랜잭션 내에서 논-트랜잭션 메모리 액세스를 실행하는 기능은 프로세서 프로그래밍에서 더 나은 유연성을 제공하고, 잠재적으로 소정의 프로그래밍 태스크를 달성하는데 필요한 트랜잭션들의 수를 감소시킴으로써 총 실행 효율을 증가시킨다.
상술된 방법들 및 시스템들의 각종 양상들은 제한이 아니라 일례들로서 본 명세서에서 상세히 후술된다.
이하의 설명에서, 다수의 특정 세부 사항들, 예를 들어, 특정 타입들의 프로세서들 및 시스템 구성들, 특정 하드웨어 구조들, 특정 아키텍처 및 마이크로 아키텍처 세부 사항들, 특정 레지스터 구성들, 특정 명령 타입들, 특정 시스템 컴포넌트들, 특정 측정/높이, 특정 프로세서 파이프라인 스테이지들 및 동작 등의 일례들이 본 발명의 철저한 이해를 제공하기 위해 기재된다. 그러나, 이러한 특정 세부 사항들이 본 발명을 구현하기 위해 반드시 사용될 필요는 없음이 당업자에게 명백할 것이다. 다른 실례들에서, 특정 및 대안 프로세서 아키텍처들, 기술된 알고리즘들을 위한 특정 논리 회로들/코드, 특정 펌웨어 코드, 특정 상호 연결 동작, 특정 논리 구성들, 특정 제조 기술들 및 재료들, 특정 컴파일러 구현들, 알고리즘들의 특정 코드 표현, 특정 전원 차단 및 게이팅 기술들/논리 및 컴퓨터 시스템의 다른 특정 동작 세부 사항들 등의 널리 공지된 컴포넌트들 또는 방법들은 본 발명을 불필요하게 모호하게 하는 것을 방지하기 위해 상세히 기술되지 않았다.
이하의 실시예들이 프로세서를 참조해서 기술되지만, 다른 실시예들이 다른 타입들의 집적 회로들 및 논리 장치들에 적용될 수 있다. 본 발명의 실시예들의 유사한 기술들 및 교시들이 더 높은 파이프라인 처리량 및 향상된 성능으로 이익을 얻을 수 있는 다른 타입들의 회로들 또는 반도체 장치들에 적용될 수 있다. 본 발명의 실시예들의 교시들은 데이터 조작들을 실행하는 임의의 프로세서 또는 기계에 적용될 수 있다. 그러나, 본 발명은 512 비트, 256 비트, 128 비트, 64 비트, 32 비트, 또는 16 비트 데이터 동작들을 실행하는 프로세서들 또는 기계들로 제한되지 않으며, 데이터의 조작 또는 관리가 실행되는 임의의 프로세서 및 기계에 적용될 수 있다. 또한, 이하의 설명은 일례들을 제공하며, 첨부 도면들은 설명을 위해 각종 일례들을 도시한다. 그러나, 이러한 일례들은 본 발명의 실시예들의 모든 가능한 구현들의 철저한 리스트를 제공하기보다는 본 발명의 실시예들의 일례들을 제공하도록 단지 의도된 것이므로 제한의 의미로 해석되지 않아야만 한다.
이하의 일례들이 실행 유닛들 및 논리 회로들의 맥락에서 명령 처리 및 분산을 기술하지만, 본 발명의 다른 실시예들이, 기계에 의해 실행될 때, 기계가 본 발명의 적어도 하나의 실시예와 일치하는 기능들을 실행하게 야기하는 기계 판독 가능, 유형 매체에 저장된 데이터 또는 명령들에 의해 달성될 수 있다. 일 실시예에서, 본 발명의 실시예들과 연관된 기능들이 기계 실행 가능 명령들로 구현된다. 명령들은 명령들로 프로그래밍된 범용 또는 특별 목적 프로세서가 본 발명의 단계들을 실행하게 야기하는데 사용될 수 있다. 본 발명의 실시예들은 본 발명의 실시예들에 따라 하나의 또는 그 이상의 동작들을 실행하도록 컴퓨터(또는 다른 전자 장치들)를 프로그래밍하는데 사용될 수 있는 명령들이 저장되어 있는 기계 또는 컴퓨터 판독 가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 대안으로, 본 발명의 실시예들의 동작들은 동작들을 실행하기 위한 고정 기능 로직을 포함하는 특정 하드웨어 컴포넌트들에 의해, 또는 프로그래밍된 컴퓨터 컴포넌트들 및 고정 기능 하드웨어 컴포넌트들의 임의의 조합에 의해 실행될 수 있다.
본 발명의 실시예들을 실행하도록 논리를 프로그래밍하는데 사용되는 명령들은 DRAM, 캐시, 플래시 메모리, 또는 다른 기억 장치 등의 시스템의 메모리 내에 저장될 수 있다. 게다가, 명령들은 네트워크를 통해 또는 다른 컴퓨터 판독 가능 매체에 의해 배포될 수 있다. 따라서, 기계 판독 가능 매체는 기계(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장 또는 송신하기 위한 임의의 메커니즘, 플로피 디스켓들, 광 디스크들, 컴팩트 디스크, 판독 전용 메모리(CD-ROM들), 및 광자기 디스크들, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 소거 가능 프로그래밍 가능 판독 전용 메모리(EPROM), 전기적 소거 가능 프로그래밍 가능 판독 전용 메모리(EEPROM), 자기 또는 광 카드들, 플래시 메모리, 또는 전기, 광, 음향 또는 다른 형태들의 전파 신호들(예를 들어, 반송파들, 적외선 신호들, 디지털 신호들 등)을 통해 인터넷을 통한 정보의 송신에 사용되는 유형의 기계 판독 가능 기억 장치를 포함할 수 있지만, 이들로만 제한되지 않는다. 따라서, 컴퓨터 판독 가능 매체는 기계(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 전자 명령들 또는 정보를 저장 또는 송신하기에 적합한 임의의 타입의 유형의 기계 판독 가능 매체를 포함한다.
"프로세서"는 본 명세서에서 연산, 논리, 또는 I/O 동작들을 인코딩하는 명령들을 실행할 수 있는 장치를 말한다. 예시적인 일례에서, 프로세서는 폰 노이만(Von Neumann) 아키텍처 모델을 따를 수 있으며, 산술 논리 유닛(ALU), 제어 유닛, 및 복수의 레지스터들을 포함할 수 있다. 다른 양상에서, 프로세서는 하나의 또는 그 이상의 프로세서 코어들을 포함할 수 있으며, 따라서, 통상 단일 명령 파이프라인을 처리할 수 있는 단일 코어 프로세서, 또는 다수의 명령 파이프라인들을 동시에 처리할 수 있는 멀티-코어 프로세서일 수 있다. 다른 양상에서, 프로세서는 단일 집적 회로, 2개의 또는 그 이상의 집적 회로들로서 구현될 수 있으며, 또는 (예를 들어, 개별 마이크로프로세서 다이들이 단일 집적 회로 패키지에 포함되어서 단일 소켓을 공유하는) 멀티-칩 모듈의 컴포넌트일 수 있다.
도 1은 본 발명의 하나의 또는 그 이상의 양상들에 따른 컴퓨터 시스템의 고수준 컴포넌트 도면을 도시한다. 컴퓨터 시스템(100)은, 본 명세서에 기술된 실시예에 따라, 데이터를 처리하기 위한 알고리즘들을 실행하는 논리를 포함하는 실행 유닛들을 사용하는 프로세서(102)를 포함할 수 있다. 시스템(100)은, 다른 시스템들(다른 마이크로프로세서들을 가진 PC들, 엔지니어링 워크스테이션들, 셋톱 박스들 등을 포함함)이 또한 사용될 수도 있지만, 캘리포니아주, 산타 클라라(Santa Clara, California)의 인텔사(Intel Corporation)로부터 입수 가능한 PENTIUM Ⅲ™, PENTIUM 4™, Xeon™, Itanium, XScale™ 및/또는 StrongARM™ 마이크로프로세서들에 기초한 프로세싱 시스템들을 대표한다. 일 실시예에서, 샘플 시스템(100)은, 다른 운영 체제들(예를 들어, UNIX 및 Linux), 내장 소프트웨어, 및/또는 그래픽 사용자 인터페이스들이 또한 사용될 수도 있지만, 워싱톤주, 레드몬드(Redmond, Washington)의 마이크로소프트사(Microsoft Corporation)로부터 입수 가능한 WINDOWS™ 운영 체제의 한 버전을 실행한다. 따라서, 본 발명의 실시예들은 하드웨어 회로 및 소프트웨어의 임의의 특정 조합으로 제한되지 않는다.
실시예들은 컴퓨터 시스템들로 제한되지 않는다. 본 발명의 대안의 실시예들이 핸드헬드 장치들 및 내장 애플리케이션들 등의 다른 장치들에서 사용될 수 있다. 핸드헬드 장치들의 일부 일례들은 휴대 전화들, 인터넷 프로토콜 장치들, 디지털 카메라들, 개인 휴대 정보 단말기들(PDA들), 및 핸드헬드 PC들을 포함한다. 내장 애플리케이션들은 마이크로 제어기, 디지털 신호 프로세서(DSP), 시스템 온 칩, 네트워크 컴퓨터들(NetPC), 셋톱 박스들, 네트워크 허브들, 광역 통신망(WAN) 스위치들, 또는 적어도 일 실시예에 따라 하나의 또는 그 이상의 명령들을 실행할 수 있는 임의의 다른 시스템을 포함할 수 있다.
본 예시적인 일례에서, 프로세서(102)는 하나의 또는 그 이상의 명령들, 예를 들어, 트랜잭션 메모리 액세스 명령들을 실행하기 위한 알고리즘을 구현하기 위한 하나의 또는 그 이상의 실행 유닛들(108)을 포함한다. 일 실시예는 단일 프로세서 데스크탑 또는 서버 시스템의 맥락에서 기술될 수 있지만, 대안의 실시예들은 멀티프로세서 시스템에 포함될 수 있다. 시스템(100)은 '허브' 시스템 아키텍처의 일례이다. 컴퓨터 시스템(100)은 데이터 신호들을 처리하기 위한 프로세서(102)를 포함한다. 예를 들어, 프로세서(102)는, 한 예시적인 일례로서, 복합 명령 집합 컴퓨터(CISC) 마이크로프로세서, 감소 명령 집합 컴퓨팅(RISC) 마이크로프로세서, 훨씬 긴 명령어(VLIW) 마이크로프로세서, 명령 집합들의 조합을 구현하는 프로세서, 또는 디지털 신호 프로세서 등의 임의의 다른 프로세서 장치를 포함한다. 프로세서(102)는 프로세서(102)와 시스템(100)의 다른 컴포넌트들 간에 데이터 신호들을 송신하는 프로세서 버스(110)에 연결된다. 시스템(100)의 요소들(예를 들어, 그래픽 가속도계(112), 메모리 제어기 허브(116), 메모리(120), I/O 제어기 허브(124), 무선 트랜시버(126), 플래시 BIOS(128), 네트워크 제어기(134), 오디오 제어기(136), 직렬 확장 포트(138), I/O 제어기(140) 등)은 당업자에게 널리 공지된 종래의 기능들을 실행한다.
일 실시예에서, 프로세서(102)는 레벨 1(L1) 내부 캐시(104)를 포함한다. 아키텍처에 따라, 프로세서(102)는 단일 내부 캐시 또는 다수의 레벨들의 내부 캐시들을 가질 수 있다. 다른 실시예들은 특정 구현 및 요구 사항들에 따라 내부 캐시 및 외부 캐시의 조합을 포함한다. 레지스터 파일(106)은 내부 레지스터들, 부동 소수점 레지스터들, 벡터 레지스터들, 뱅크 레지스터들, 섀도 레지스터들, 체크포인트 레지스터들, 상태 레지스터들, 및 명령 포인터 레지스터를 포함하는 각종 레지스터들에 상이한 타입들의 데이터를 저장하기 위한 것이다.
정수 및 부동 소수점 연산들을 실행하기 위한 로직을 포함하는, 실행 유닛(108)은 프로세서(102)에 또한 상주한다. 프로세서(102)는, 일 실시예에서, 실행될 때, 특정 매크로명령들을 위한 알고리즘들을 실행하거나 복합 시나리오들을 처리하기 위한 마이크로코드를 저장하는 마이크로코드(ucode) ROM을 포함한다. 여기서, 마이크로코드는 프로세서(102)를 위한 논리 버그들/픽스들을 처리하기 위해 잠재적으로 갱신 가능하다. 일 실시예에서, 실행 유닛(108)은 패킹 명령 집합(109)을 처리하기 위한 로직을 포함한다. 명령들을 실행하기 위한 연관된 회로와 함께, 패킹 명령 집합(109)을 범용 프로세서(102)의 명령 집합에 포함시킴으로써, 다수의 멀티미디어 애플리케이션들에 의해 사용된 동작들은 범용 프로세서(102)의 패킹 데이터를 사용해서 실행될 수 있다. 따라서, 다수의 멀티미디어 애플리케이션들은 패킹 데이터에 대한 연산들을 실행하기 위한 프로세서의 데이터 버스의 총 폭을 사용해서 더 효율적으로 가속 및 실행된다. 이는 하나의 또는 그 이상의 동작들을 실행하기 위해 프로세서의 데이터 버스에 걸쳐 더 작은 유닛들의 데이터를, 한번에 한 데이터 요소씩 전송할 필요성을 잠재적으로 제거한다.
다른 일례들에서, 실행 유닛(108)은 마이크로 제어기들, 내장 프로세서들, 그래픽 장치들, DSP들, 및 다른 타입들의 논리 회로들에서 또한 사용될 수 있다. 시스템(100)은 메모리(120)를 포함한다. 메모리(120)는 동적 랜덤 액세스 메모리(DRAM) 장치, 정적 랜덤 액세스 메모리(SRAM) 장치, 플래시 메모리 장치, 또는 다른 메모리 장치를 포함한다. 메모리(120)는 프로세서(102)에 의해 실행될 데이터 신호들에 의해 표현된 명령들 및/또는 데이터를 저장한다.
시스템 논리 칩(116)은 프로세서 버스(110) 및 메모리(120)에 연결된다. 본 실시예에서 시스템 논리 칩(116)은 메모리 제어기 허브(MCH)이다. 프로세서(102)는 프로세서 버스(110)를 통해 MCH(116)와 통신할 수 있다. MCH(116)는 명령 및 데이터의 저장을 위해 또한 그래픽 커맨드들, 데이터 및 텍스처들의 저장을 위해 메모리(120)에 고 대역폭 메모리 경로(118)를 제공한다. MCH(116)는 프로세서(102), 메모리(120), 및 시스템(100)의 다른 컴포넌트들 간의 데이터 신호들의 전송 및 프로세서 버스(110), 메모리(120), 및 시스템 I/O(122) 간의 데이터 신호들의 브리지를 위한 것이다. 일부 실시예들에서, 시스템 논리 칩(116)은 그래픽 제어기(112)에 연결하기 위한 그래픽 포트를 제공할 수 있다. MCH(116)는 메모리 인터페이스(118)를 통해 메모리(120)에 연결된다. 그래픽 카드(112)는 가속 그래픽 포트(AGP) 인터커넥트(114)를 통해 MCH(116)에 연결된다.
시스템(100)은 전용 허브 인터페이스 버스(122)를 사용해서 MCH(116)를 I/O 제어기 허브(ICH)(130)에 연결한다. ICH(130)는 로컬 I/O 버스를 통해 일부 I/O 장치들에 다이렉트 커넥션들을 제공한다. 로컬 I/O 버스는 메모리(120), 칩셋, 및 프로세서(102)에 주변 장치들을 연결하기 위한 고속 I/O 버스이다. 일부 일례들은 오디오 제어기, 펌웨어 허브(플래시 BIOS)(128), 무선 트랜시버(126), 데이터 기억 장치(124), 사용자 입력 및 키보드 인터페이스들을 포함하는 레거시 I/O 제어기, 범용 직렬 버스(USB) 등의 직렬 확장 포트, 및 네트워크 제어기(134)이다. 데이터 기억 장치(124)는 하드 디스크 드라이브, 플로피 디스크 드라이브, CD-ROM 장치, 플래시 메모리 장치, 또는 다른 대용량 기억 장치를 포함할 수 있다.
시스템의 다른 일례에서, 일 실시예에 따른 명령은 시스템 온 칩과 함께 사용될 수 있다. 시스템 온 칩의 일 실시예는 프로세서 및 메모리로 구성된다. 이러한 하나의 시스템을 위한 메모리는 플래시 메모리이다. 플래시 메모리는 프로세서 및 다른 시스템 컴포넌트들과 동일한 다이에 위치할 수 있다. 또한, 메모리 제어기 또는 그래픽 제어기 등의 다른 논리 블록들이 또한 시스템 온 칩에 위치할 수 있다.
상기 일례들의 프로세서(102)는 트랜잭션 메모리 액세스를 실행할 수 있다. 특정 구현들에서, 프로세서(102)는, 본 명세서에서 더 상세히 후술되는 바와 같이, 트랜잭션 성공적 완료 또는 중단에 무관하게, 결과들이 즉시 다른 장치들(예를 들어, 다른 프로세서 코어들 또는 다른 프로세서들)에게 보이게 될 수 있도록 즉시 커밋될 수 있는 하나의 또는 그 이상의 메모리 판독 및/또는 기록 동작들을 또한 실행할 수 있다.
도 2는 본 발명의 일 실시예에 따른 트랜잭션 메모리 액세스 명령들 및/또는 논-트랜잭션 메모리 액세스 명령들을 실행하기 위한 논리 회로들을 포함하는 프로세서(200)의 마이크로-아키텍처의 블록도이다. 일부 실시예들에서, 일 실시예들에 따른 명령은 단정도 및 배정도 정수 및 부동 소수점 데이터타입들 등의 데이터타입들뿐만 아니라, 바이트, 워드, 더블워드, 쿼드워드 등의 크기들을 가진 데이터 요소들에 대해 동작하도록 구현될 수 있다. 일 실시예에서, 순차적 프론트 엔드(201)는 실행될 명령들을 페칭하고 차후에 프로세서 파이프라인에서 사용되도록 그 명령들을 준비하는 프로세서(200)의 일부분이다. 프론트 엔드(201)는 수개의 유닛들을 포함할 수 있다. 일 실시예에서, 명령 프리페처(226)는 메모리로부터 명령들을 페칭하고, 그 명령들을 명령 디코더(228)에 전송하며, 차례로 디코더(228)는 그 명령들을 디코딩 또는 해석한다. 예를 들어, 일 실시예에서, 디코더는 수신된 명령을 기계가 실행할 수 있는 "마이크로-명령들" 또는 "마이크로-연산들"(micro op 또는 uop들이라고도 함)이라고 하는 하나의 또는 그 이상의 동작들로 디코딩한다. 다른 실시예들에서, 디코더는 명령을 일 실시예에 따라 동작들을 실행하기 위해 마이크로-아키텍처에 의해 사용되는 연산 코드 및 대응 데이터 및 제어 필드들로 파싱한다. 일 실시예에서, 추적 캐시(230)는 디코딩된 uop들을 취하고, 이들을 실행을 위해 uop 큐(234)의 프로그램 순서 시퀀스들 또는 트레이스들로 어셈블링한다. 추적 캐시(230)가 복합 명령을 마주할 때, 마이크로코드 ROM(232)은 동작을 완료하는데 필요한 uop들을 제공한다.
일부 명령들은 단일 마이크로-op로 변환되는 반면, 다른 명령들은 전체 동작을 완료하기 위해 수개의 마이크로-op들을 요구한다. 일 실시예에서, 4보다 더 많은 마이크로-op들이 명령을 완료하는데 필요하면, 디코더(228)는 명령을 실행하기 위해 마이크로코드 ROM(232)에 액세스한다. 일 실시예에서, 명령은 명령 디코더(228)에서의 처리를 위해 작은 수의 마이크로 op들로 디코딩될 수 있다. 다른 실시예에서, 동작을 달성하기 위해 다수의 마이크로-op들이 요구되면, 명령은 마이크로코드 ROM(232)에 저장될 수 있다. 추적 캐시(230)는 마이크로-코드 ROM(232)으로부터 일 실시예에 따라 하나의 또는 그 이상의 명령들을 완료하기 위해 마이크로-코드 시퀀스들을 판독하기 위한 정확한 마이크로-명령 포인터를 결정하기 위한 엔트리 포인트 프로그래밍 가능 논리 어레이(PLA)와 관련된다. 마이크로코드 ROM(232)이 명령을 위한 마이크로-op들의 시퀀싱을 마친 후에, 기계의 프론트 엔드(201)는 추적 캐시(230)로부터의 마이크로-op들의 페칭을 재개한다.
비순차적 실행 엔진(203)은 명령들이 실행을 위해 준비되는 곳이다. 비순차적 실행 논리는 명령들이 파이프라인을 따라 진행하며 실행을 위해 스케줄링됨에 따라 성능을 최적화하기 위해 명령들의 흐름을 매끄럽게 하고 재정렬하도록 다수의 버퍼들을 가진다. 할당기 논리는 각각의 uop가 순차적으로 실행하기 위해 필요로 하는 기계 버퍼들 및 리소스들을 할당한다. 레지스터 재명명 로직은 논리 레지스터들을 레지스터 파일의 엔트리들로 재명명한다. 할당기는 명령 스케줄러들: 메모리 스케줄러, 고속 스케줄러(202), 저속/일반 부동 소수점 스케줄러(204), 및 간단한 부동 소수점 스케줄러(206)의 앞에, 2개의 uop 큐들 - 하나는 메모리 동작들을 위한 것이고, 하나는 논-메모리 동작들을 위한 것임 - 중 한 큐의 각각의 uop에 대한 엔트리를 할당한다. uop 스케줄러들(202, 204, 206)은 종속적 입력 레지스터 피연산자 소스들의 준비성 및 동작을 완료하기 위해 uop가 필요로 하는 실행 리소스들의 유효성에 기초하여 uop가 실행될 준비가 될 때를 결정한다. 일 실시예의 고속 스케줄러(202)는 메인 클록 사이클의 각각의 절반에 대해 스케줄링할 수 있으며, 다른 스케줄러들은 메인 프로세서 클록 사이클 당 한번 스케줄링할 수 있다. 스케줄러들은 실행을 위해 uop들을 스케줄링하기 위해 디스패치 포트들을 중재한다.
레지스터 파일들(208, 210)은 스케줄러들(202, 204, 206), 및 실행 블록(211)의 실행 유닛들(212, 214, 216, 218, 220, 222, 224) 사이에 있다. 정수 및 부동 소수점 연산들에 대해 각각 별개의 레지스터 파일(208, 210)이 존재한다. 일 실시예의 각각의 레지스터 파일(208, 210)은 레지스터 파일에 아직 기록되지 않은 막 완료된 결과들을 새로운 종속적 uop들에게 바이패스 또는 전달할 수 있는 바이패스 네트워크를 또한 포함한다. 정수 레지스터 파일(208) 및 부동 소수점 레지스터 파일(210)은 또한 서로 데이터를 전달할 수 있다. 일 실시예에서, 정수 레지스터 파일(208)은 2개의 별개의 레지스터 파일들로 분할되며, 한 레지스터 파일은 데이터의 하위 32 비트들에 대한 것이고, 제2 레지스터 파일은 데이터의 상위 32 비트들에 대한 것이다. 부동 소수점 명령들이 폭이 64 내지 128 비트들인 피연산자들을 통상 가지기 때문에, 일 실시예의 부동 소수점 레지스터 파일(210)은 128 비트 폭 엔트리들을 가진다.
실행 블록(211)은 명령들이 실제로 실행되는 실행 유닛들(212, 214, 216, 218, 220, 222, 224)을 포함한다. 이 섹션은, 마이크로-명령들이 실행을 위해 필요로 하는 정수 및 부동 소수점 데이터 피연산자 값들을 저장하는, 레지스터 파일들(208, 210)을 포함한다. 일 실시예의 프로세서(200)는 다수의 실행 유닛들: 어드레스 생성 유닛(AGU)(212), AGU(214), 고속 ALU(216), 고속 ALU(218), 저속 ALU(220), 부동 소수점 ALU(222), 부동 소수점 이동 유닛(224)으로 구성된다. 일 실시예에서, 부동 소수점 실행 블록들(222, 224)은, 부동 소수점, MMX, SIMD, 및 SSE, 또는 다른 연산들을 실행한다. 일 실시예에의 부동 소수점 ALU(222)는 나눗셈, 제곱근, 및 나머지 마이크로-op들을 실행하기 위해 64 비트 × 64 비트 부동 소수점 디바이더를 포함한다. 본 발명의 실시예들에서, 부동 소수점 값을 수반하는 명령들은 부동 소수점 하드웨어로 처리될 수 있다. 일 실시예에서, ALU 연산들은 고속 ALU 실행 유닛들(216, 218)로 간다. 일 실시예의 고속 ALU들(216, 218)은 클록 사이클의 절반의 효과적인 레이턴시로 고속 연산들을 실행할 수 있다. 일 실시예에서, 저속 ALU(220)가 곱셈기, 시프트, 플래그 논리, 및 브랜치 프로세싱 등의, 긴 레이턴시 타입의 연산들을 위한 정수 실행 하드웨어를 포함하기에, 대부분의 복잡한 정수 연산들은 저속 ALU(220)로 간다. 메모리 로드/저장 동작들은 AGU들(212, 214)에 의해 실행된다. 일 실시예에서, 정수 ALU들(216, 218, 220)은 64 비트 데이터 피연산자들에 대한 정수 연산들을 실행하는 맥락에서 기술된다. 대안의 실시예들에서, ALU들(216, 218, 220)은 16, 32, 128, 256 등을 포함하는 각종 데이터 비트들을 지원하도록 구현될 수 있다. 유사하게, 부동 소수점 유닛들(222, 224)은 각종 폭들의 비트들을 가진 한 범위의 피연산자들을 지원하도록 구현될 수 있다. 일 실시예에서, 부동 소수점 유닛들(222, 224)은 SIMD 및 멀티미디어 명령들과 함께 128 비트 폭 패킹 데이터 피연산자들에 대해 동작할 수 있다.
일 실시예에서, uop 스케줄러들(202, 204, 206)은 부모 로드가 실행을 완료하기 전에 종속적 동작들을 디스패치한다. uop들이 프로세서(200)에서 추론적으로 스케줄링 및 실행되기에, 프로세서(200)는 메모리 미스들(memory misses)을 처리하기 위한 로직을 또한 포함한다. 데이터 로드가 데이터 캐시에서 미스되면, 일시적으로 부정확한 데이터와 함께 스케줄러를 떠난 파이프라인에서 진행중인 종속적 동작들이 있을 수 있다. 응답 메커니즘은 부정확한 데이터를 사용하는 명령들을 추적하여 재실행한다. 종속적 동작들은 리플레이되어야만 하고 독립적인 동작들은 완료가 허용된다. 프로세서의 일 실시예의 스케줄러들 및 응답 메커니즘은 텍스트 스트링 비교 동작들을 위한 명령 시퀀스들을 캐치하도록 또한 설계된다.
용어 "레지스터들(registers)"은 피연산자들을 식별하기 위해 명령들의 일부로서 사용되는 온-보드 프로세서 기억 로케이션들과 관련될 수 있다. 다시 말해서, 레지스터들은 (프로그래머의 관점에서 볼 때) 프로세서의 밖으로부터 사용 가능한 레지스터들일 수 있다. 그러나, 일 실시예의 레지스터들은 의미상 특정 타입의 회로로 제한되지 않아야만 한다. 오히려, 일 실시예의 레지스터는 데이터를 저장 및 제공하고, 본 명세서에 기술된 기능들을 실행할 수 있다. 본 명세서에 기술된 레지스터들은, 전용 물리 레지스터들, 레지스터 재명명을 사용하는 동적 할당 물리 레지스터들, 전용 및 동적 할당 물리 레지스터들의 조합 등, 임의의 수의 상이한 기술들을 사용해서 프로세서 내에서 회로로 구현될 수 있다. 일 실시예에서, 정수 레지스터들은 32 비트 정수 데이터를 저장한다. 일 실시예의 레지스터 파일은 패킹 데이터를 위해 8개의 멀티미디어 SIMD 레지스터들을 또한 포함한다. 후술되는 바와 같이, 레지스터들은, 캘리포니아주, 산타 클라라의 인텔사로부터의 MMX™ 기술로 인에이블된 마이크로프로세서들의 64 비트 폭 MMX 레지스터들(일부 실례들에서 'mm' 레지스터들이라고도 함) 등의, 패킹 데이터를 유지하도록 설계된 데이터 레지스터들이라고 이해된다. 정수 및 부동 소수점 형태들 둘 다에서 유효한, 이 MMX 레지스터들은 SIMD 및 SSE 명령들을 동반하는 패킹 데이터 요소들로 동작할 수 있다. 유사하게, SSE2, SSE3, SSE4, 또는 그 이후(일반적으로 "SSEx"라고 함) 기술과 관련된 128 비트 폭 XMM 레지스터들이 이러한 패킹 데이터 피연산자들을 유지하는데 또한 사용될 수 있다. 일 실시예에서, 패킹 데이터 및 정수 데이터를 저장할 때, 레지스터들은 2개의 데이터 타입들을 구별할 필요가 없다. 일 실시예에서, 정수 및 부동 소수점은 동일한 레지스터 파일에 또는 상이한 레지스터 파일들에 포함된다. 게다가, 일 실시예에서, 부동 소수점 및 정수 데이터는 상이한 레지스터들에 또는 동일한 레지스터에 저장될 수 있다.
도 3a-3b는 본 발명의 하나의 또는 그 이상의 양상들에 따른, 프로세서 마이크로-아키텍처의 요소들을 개략적으로 도시한다. 도 3a에서, 프로세서 파이프라인(400)은 페치 스테이지(402), 길이 디코딩 스테이지(404), 디코딩 스테이지(406), 할당 스테이지(408), 재명명 스테이지(410), 스케줄링(디스패치 또는 발행으로도 공지됨) 스테이지(412), 레지스터 판독/메모리 판독 스테이지(414), 실행 스테이지(416), 라이트백(write back)/메모리 기록 스테이지(418), 예외 처리 스테이지(422), 및 커밋 스테이지(424)를 포함한다.
도 3b에서, 화살표들은 2개의 또는 그 이상의 유닛들 간의 연결을 나타내고, 화살표의 방향은 이 유닛들 간의 데이터 흐름의 방향을 나타낸다. 도 3b는 실행 엔진 유닛(450)에 연결된 프론트 엔드 유닛(430)을 포함하는 프로세서 코어(490)를 도시하고, 유닛들(430, 450)은 둘 다 메모리 유닛(470)에 연결된다.
코어(490)는 감소 명령 집합 컴퓨팅(RISC) 코어, 복합 명령 집합 컴퓨팅(CISC) 코어, 훨씬 긴 명령어(VLIW) 코어, 또는 하이브리드 또는 대안의 코어 타입일 수 있다. 또 다른 옵션으로서, 코어(490)는, 예를 들어, 네트워크 또는 통신 코어, 압축 엔진, 그래픽 코어 등의 특수 목적 코어일 수 있다. 특정 구현들에서, 코어(490)는, 본 발명의 하나의 또는 그 이상의 양상들에 따라, 트랜잭션 메모리 액세스 명령들 및/또는 논-트랜잭션 메모리 액세스 명령들을 실행할 수 있다.
프론트 엔드 유닛(430)은, 디코딩 유닛(440)에 연결된, 명령 페치 유닛(438)에 연결된, 명령 TLB(translation lookaside buffer)(436)에 연결된, 명령 캐시 유닛(434)에 연결된 브랜치 예측 유닛(432)을 포함한다. 디코딩 유닛 또는 디코더는 명령들을 디코딩할 수 있으며, 원래의 명령들으로부터 디코딩되거나, 달리 원래의 명령들을 반영하거나, 또는 원래의 명령들으로부터 유도된 하나의 또는 그 이상의 마이크로-연산들, 마이크로-코드 엔트리 포인트들, 마이크로명령들, 다른 명령들, 또는 다른 제어 신호들을 출력으로서 생성할 수 있다. 디코더는 각종 상이한 메커니즘들을 사용해서 구현될 수 있다. 적합한 메커니즘들의 일례들은, 룩업 테이블들, 하드웨어 구현들, 프로그래밍 가능 논리 어레이들(PLA들), 마이크로코드 판독 전용 메모리들(ROM들) 등을 포함하지만, 이들로만 제한되지 않는다. 명령 캐시 유닛(434)은 메모리 유닛(470)의 레벨 2(L2) 캐시 유닛(476)에 더 연결된다. 디코딩 유닛(440)은 실행 엔진 유닛(450)의 재명명/할당기 유닛(452)에 연결된다.
실행 엔진 유닛(450)은 회수(retirement) 유닛(454) 및 하나의 또는 그 이상의 스케줄러 유닛(들)(456)의 집합에 연결된 재명명/할당기 유닛(452)을 포함한다. 스케줄러 유닛(들)(456)은, 예약 국들, 중앙 명령 윈도 등을 포함하는, 임의의 수의 상이한 스케줄러들을 나타낸다. 스케줄러 유닛(들)(456)은 물리 레지스터 파일(들) 유닛(들)(458)에 연결된다. 물리 레지스터 파일(들) 유닛들(458) 각각은 하나의 또는 그 이상의 물리 레지스터 파일들을 나타내고, 그 중 상이한 물리 레지스터 파일들은 스칼라 정수, 스칼라 부동 소수점, 패킹 정수, 패킹 부동 소수점, 벡터 정수, 벡터 부동 소수점 등의 하나의 또는 그 이상의 상이한 데이터 타입들, 상태(예를 들어, 실행될 다음 명령의 어드레스인 명령 포인터) 등을 저장한다. 물리 레지스터 파일(들) 유닛(들)(458)은, (예를 들어, 재정렬 버퍼(들) 및 회수 레지스터 파일(들)을 사용해서, 차후 파일(들), 히스토리 버퍼(들), 및 회수 레지스터 파일(들)을 사용해서; 레지스터 맵들 및 레지스터들의 풀 등을 사용해서) 레지스터 에일리어싱 및 비순차적 실행이 구현될 수 있는 각종 방법들을 설명하기 위해 회수 유닛(454)에 의해 겹쳐진다. 일반적으로, 아키텍처 레지스터들은 프로세서의 밖으로부터 또는 프로그래머의 관점에서 볼 때 가시적이다. 레지스터들은 임의의 공지된 특정 타입의 회로로 제한되지 않는다. 각종 상이한 타입들의 레지스터들은 본 명세서에 기술된 바와 같이 데이터를 저장 및 제공할 수 있는 한 적합하다. 적합한 레지스터들의 일례들은 전용 물리 레지스터들, 레지스터 에일리어싱을 사용하는 동적 할당 물리 레지스터들, 전용 및 동적 할당 물리 레지스터들의 조합 등을 포함하지만, 이들로만 제한되지 않는다. 회수 유닛(454) 및 물리 레지스터 파일(들) 유닛(들)(458)은 실행 클러스터(들)(460)에 연결된다. 실행 클러스터(들)(460)는 하나의 또는 그 이상의 실행 유닛들(462)의 집합 및 하나의 또는 그 이상의 메모리 액세스 유닛들(464)의 집합을 포함한다. 실행 유닛들(462)은 각종 타입들의 데이터(예를 들어, 스칼라 부동 소수점, 패킹 정수, 패킹 부동 소수점, 벡터 정수, 벡터 부동 소수점)에 대해 각종 연산들(예를 들어, 시프트, 덧셈, 뺄셈, 곱셈)을 실행할 수 있다. 일부 실시예들이 특정 기능들 또는 기능들의 집합들에 전용인 다수의 실행 유닛들을 포함할 수 있지만, 다른 실시예들은 모든 기능들을 모두 실행하는 하나의 실행 유닛 또는 다수의 실행 유닛들을 포함할 수 있다. 특정 실시예들이 특정 타입들의 데이터/연산들을 위한 별개의 파이프라인들(예를 들어, 자신의 스케줄러 유닛, 물리 레지스터 파일(들) 유닛, 및/또는 실행 클러스터를 각각 가지는 스칼라 정수 파이프라인, 스칼라 부동 소수점/패킹 정수/패킹 부동 소수점/벡터 정수/벡터 부동 소수점 파이프라인, 및/또는 메모리 액세스 파이프라인 - 및 별개의 메모리 액세스 파이프라인의 경우에, 이 파이프라인의 실행 클러스터가 메모리 액세스 유닛(들)(464)을 가진 특정 실시예들이 구현됨)을 생성하기 때문에, 스케줄러 유닛(들)(456), 물리 레지스터 파일(들) 유닛(들)(458), 및 실행 클러스터(들)(460)은 가능한 대로 복수로 도시된다. 또한, 별개의 파이프라인들이 사용되는 경우에, 이 파이프라인들 중 하나의 또는 그 이상의 파이프라인들이 비순차적 발행/실행이고 나머지 파이프라인들은 순차적일 수 있음을 알아야만 한다.
메모리 액세스 유닛들(464)의 집합은, 레벨 2(L2) 캐시 유닛(476)에 연결된 데이터 캐시 유닛(474)에 연결된 데이터 TLB 유닛(472)을 포함하는, 메모리 유닛(470)에 연결된다. 일례의 실시예에서, 메모리 액세스 유닛들(464)은 로드 유닛, 어드레스 저장 유닛, 및 데이터 저장 유닛을 포함할 수 있으며, 그 각각은 메모리 유닛(470)의 데이터 TLB 유닛(472)에 연결된다. L2 캐시 유닛(476)은 캐시의 하나의 또는 그 이상의 다른 레벨들에 연결되며, 결국 메인 메모리에 연결된다.
예를 들어, 비순차적 발행/실행 코어 아키텍처는 다음과 같이 파이프라인(400)을 구현할 수 있다: 명령 페치(438)는 페치 및 길이 디코딩 스테이지들(402 및 404)을 실행하고; 디코딩 유닛(440)은 디코딩 스테이지(406)를 실행하며; 재명명/할당기 유닛(452)은 할당 스테이지(408) 및 재명명 스테이지(410)를 실행하고; 스케줄러 유닛(들)(456)은 스케줄링 스테이지(412)를 실행하며; 물리 레지스터 파일(들) 유닛(들)(458) 및 메모리 유닛(470)은 레지스터 판독/메모리 판독 스테이지(414)를 실행하고; 실행 클러스터(460)는 실행 스테이지(416)를 실행하며; 메모리 유닛(470) 및 물리 레지스터 파일(들) 유닛(들)(458)은 라이트백/메모리 기록 스테이지(418)를 실행하고; 각종 유닛들은 예외 처리 스테이지(422)에 수반될 수 있으며; 회수 유닛(454) 및 물리 레지스터 파일(들) 유닛(들)(458)은 커밋 스테이지(424)를 실행한다.
코어(490)는 하나의 또는 그 이상의 명령 집합들(예를 들어, x86 명령 집합(더 새로운 버전들이 추가된 일부 확장들을 가짐); 캘리포니아주, 써니베일(Sunnyvale, CA)의 MIPS 테크놀로지(MIPS Technologies)의 MIPS 명령 집합; 캘리포니아주, 써니베일(Sunnyvale, CA)의 ARM 홀딩스(ARM Holdings)의 ARM 명령 집합(NEON 등의 추가 확장들을 가짐)을 지원할 수 있다.
특정 구현들에서, 코어는 멀티스레딩(2개의 또는 그 이상의 병렬 집합들의 동작들 또는 스레드들을 실행함)을 지원할 수 있고, 타임 슬라이스 멀티스레딩, 동시 멀티스레딩(물리 코어가 동시에 멀티스레딩하는 스레드들 각각에 대한 논리 코어를 단일 물리 코어가 제공함), 또는 그 조합(예를 들어, Intel® Hyperthreading 기술에서와 같이 타임 슬라이스 페칭 및 디코딩 및 그 후 동시 멀티스레딩)을 포함하는 각종 방법들로 그렇게 할 수 있다.
프로세서의 본 실시예가 별개의 명령 및 데이터 캐시 유닛들(434/474) 및 공유 L2 캐시 유닛(476)을 또한 포함하지만, 대안의 실시예들은, 예를 들어, 레벨 1(L1) 내부 캐시, 또는 내부 캐시의 다수의 레벨들 등의, 명령들 및 데이터 둘 다를 위한 단일 내부 캐시를 가질 수 있다. 일부 실시예들에서, 시스템은 코어 및/또는 프로세서 외부에 있는 외부 캐시 및 내부 캐시의 조합을 포함할 수 있다. 대안으로, 모든 캐시는 코어 및/또는 프로세서 외부에 있을 수 있다.
도 4는 본 발명의 하나의 또는 그 이상의 양상들에 따른, 컴퓨터 시스템(100)의 수개의 양상들을 개략적으로 도시한다. 본 명세서에서 상술된 바와 같이, 또한, 도 4에 의해 개략적으로 도시된 바와 같이, 프로세서(102)는, 예를 들어, L1 캐시 및 L2 캐시를 포함하는, 명령들 및/또는 데이터를 저장하기 위한 하나의 또는 그 이상의 캐시들(104)을 포함할 수 있다. 캐시(104)는 하나의 또는 그 이상의 프로세서 코어들(123)에 의해 액세스될 수 있다. 특정 구현들에서, 캐시(104)는 연속 기입(write-through) 캐시로 표현될 수 있으며, 여기서, 모든 캐시 기록 동작은 시스템 메모리(120)로의 기록 동작을 야기한다. 대안으로, 캐시(104)는 라이트백 캐시로 표현될 수 있으며, 여기서, 캐시 기록 동작들은 시스템 메모리(120)에 즉시 반영되지 않는다. 특정 구현들에서, 캐시(104)는, 공유 메모리에 대하여 하나의 또는 그 이상의 캐시들에 저장된 데이터의 일관성을 제공하기 위해, 예를 들어, MESI(Modified-Exclusive-Shared-Invalid) 프로토콜 등의 캐시 코히런시 프로토콜을 구현할 수 있다.
특정 구현들에서, 프로세서(102)는 메모리(120)로부터 판독된/메모리(120)에 기록된 데이터를 유지하기 위해 하나의 또는 그 이상의 판독 버퍼들(127) 및 하나의 또는 그 이상의 기록 버퍼들(129)을 더 포함할 수 있다. 버퍼들은 동일한 크기이거나 수개의 고정 크기들일 수 있으며, 또는 가변 크기들을 가질 수 있다. 일례에서, 판독 버퍼들 및 기록 버퍼들은 동일한 복수의 버퍼들로 표현될 수 있다. 일례에서, 판독 버퍼들 및/또는 기록 버퍼들은 캐시(104)의 복수의 캐시 엔트리들로 표현될 수 있다.
프로세서(102)는 버퍼들(127 및 129)과 연관된 메모리 추적 로직(131)을 더 포함할 수 있다. 메모리 추적 로직은 버퍼들(127 및/또는 129)에 이전에 버퍼링된 메모리 로케이션들(예를 들어, 물리 어드레스들에 의해 식별된)에 대한 액세스를 추적하도록 구성된 회로를 포함할 수 있어서, 대응 메모리 로케이션들에 대하여 버퍼들(127 및/또는 129)에 의해 저장된 데이터의 코히런시를 제공한다. 특정 구현들에서, 버퍼들(127 및/또는 129)은, 버퍼링되는 메모리 로케이션들의 어드레스들을 유지하기 위해, 해당 버퍼들과 연관된 어드레스 태그들을 가질 수 있다. 메모리 추적 로직(131)을 구현하는 회로는 컴퓨터 시스템(100)의 어드레스 버스에 통신상 연결될 수 있으며, 따라서, 어드레스 버스에서 다른 장치들(예를 들어, 다른 프로세서들 또는 다이렉트 메모리 액세스(DMA) 제어기들)에 의해 명시된 어드레스들을 판독하고, 이 어드레스들을 버퍼들(127 및/또는 129)에 이전에 버퍼링된 메모리 로케이션들을 식별하는 어드레스들과 비교함으로써, 스누핑을 구현할 수 있다.
프로세서(102)는, 본 명세서에서 더 상세히 후술되는 바와 같이, 비정상적으로 트랜잭션이 종료되는 경우에 실행될 오류 복구 루틴의 어드레스를 유지하기 위해 오류 복구 루틴 어드레스 레지스터(135)를 더 포함할 수 있다. 프로세서(102)는, 본 명세서에서 더 상세히 후술되는 바와 같이, 트랜잭션 오류 코드를 유지하기 위해 트랜잭션 상태 레지스터(137)를 더 포함할 수 있다.
프로세서(102)가 트랜잭션 메모리 액세스를 구현할 수 있게 하기 위해, 그 명령 집합은 트랜잭션 개시(TX_START) 명령 및 트랜잭션 종료(TX_END) 명령을 포함할 수 있다. TX_START 명령은, 비정상적으로 트랜잭션이 종료되는 경우에 프로세서(102)에 의해 실행될 오류 복구 루틴의 어드레스, 및/또는 트랜잭션을 실행하는데 필요한 하드웨어 버퍼들의 수를 포함하는 하나의 또는 그 이상의 피연산자들을 포함할 수 있다.
특정 구현들에서, 트랜잭션 개시 명령은 프로세서가 트랜잭션을 실행하기 위한 판독 및/또는 기록 버퍼들을 할당하게 야기할 수 있다. 특정 구현들에서, 트랜잭션 개시 명령은 이전에 실행된 메모리 액세스 동작들의 결과들이 동일한 메모리에 액세스하는 다른 장치들에 보이게 됨을 보장하기 위해 프로세서가 모든 미결 저장 동작들을 커밋하게 또한 야기할 수 있다. 특정 구현들에서, 트랜잭션 개시 명령은 프로세서가 데이터 프리페칭을 정지하게 더 야기할 수 있다. 특정 구현들에서, 트랜잭션 개시 명령은 프로세서가 트랜잭션의 성공 가능성을 향상시키기 위해 정의된 수의 사이클들 동안 인터럽트들을 디스에이블하게 더 야기할 수 있다(트랜잭션이 미결인 동안 발생하는 인터럽트는 트랜잭션을 무효화할 수 있기에).
TX_START 명령의 처리에 응답해서, 프로세서(102)는 대응 TX_END 명령에 의해 또는 오류 상태 검출에 의해 종료될 수 있는 트랜잭션 동작 모드로 들어갈 수 있다. 트랜잭션 동작 모드에서, 프로세서(102)는 각각의 판독 버퍼들(127) 및/또는 기록 버퍼들(129)을 통해 복수의 메모리 판독 및/또는 메모리 기록 동작들을 추론적으로(즉, 액세스되는 메모리에 대한 로크를 획득하지 않고) 실행할 수 있다.
트랜잭션 동작 모드에서, 프로세서는 각각의 로드 획득 동작을 위한 판독 버퍼(127)를 할당할 수 있다(기존 버퍼는 액세스되는 메모리 로케이션의 콘텐츠를 이미 유지한 경우 재사용될 수 있으며; 그렇지 않으면, 새로운 버퍼가 할당될 수 있음). 프로세서는 각각의 저장 획득 동작을 위한 기록 버퍼(129)를 더 할당할 수 있다(기존 버퍼는 액세스되는 메모리 로케이션의 콘텐츠를 이미 유지한 경우 재사용될 수 있으며; 그렇지 않으면, 새로운 버퍼가 할당될 수 있음). 기록 버퍼들(129)은 데이터를 대응 메모리 로케이션들에 커밋하지 않고 기록 동작들의 결과들을 유지할 수 있다. 메모리 추적 로직(131)은 명시된 메모리 로케이션들에 대한 다른 장치의 액세스를 검출하고, 오류 상태를 프로세서(102)에게 신호할 수 있다. 오류 신호의 수신에 응답해서, 프로세서(102)는 트랜잭션을 중단하고, 대응 TX_START 명령에 의해 명시된 오류 복구 루틴에 제어를 넘겨줄 수 있다. 다른 경우, TX_END 명령의 수신에 응답해서, 프로세서(102)는 대응 메모리 또는 캐시 로케이션들에 기록 동작들을 커밋할 수 있다.
트랜잭션 동작 모드에서, 프로세서는, 트랜잭션 성공적 완료 또는 중단에 무관하게, 결과들이 즉시 다른 장치들(예를 들어, 다른 프로세서 코어들 또는 다른 프로세서들)에게 보이게 될 수 있도록 즉시 커밋될 수 있는 하나의 또는 그 이상의 메모리 판독 및/또는 기록 동작들을 또한 실행할 수 있다. 트랜잭션 내에서 논-트랜잭션 메모리 액세스를 실행하는 기능은 프로세서의 프로그래밍 유연성을 강화하고, 실행 효율을 더 향상시킬 수 있다.
판독 버퍼들(127) 및/또는 기록 버퍼들(129)은 복수의 캐시 엔트리들을 프로세서(102)의 최저 레벨 데이터 캐시에 할당함으로써 구현될 수 있다. 트랜잭션이 중단되면, 판독 및/또는 기록 버퍼들은 무효 및/또는 유효로 표시될 수 있다. 본 명세서에서 상술된 바와 같이, 트랜잭션은 트랜잭션 실행 모드 중에 판독 및/또는 변경되는 메모리에 대한 다른 장치에 의한 액세스를 검출함에 응답해서 중단될 수 있다. 다른 트랜잭션 중단 조건은, 하드웨어 인터럽트, 하드 버퍼들의 오버플로, 및/또는 트랜잭션 실행 모드 중에 검출된 프로그램 오류를 포함할 수 있다. 특정 구현들에서, 예를 들어, 제로 플래그, 캐리 플래그, 및/또는 오버플로 플래그를 포함하는 상태 플래그들이 트랜잭션 실행 모드에서 검출된 오류의 소스를 나타내는 상태를 유지하는데 사용될 수 있다. 대안으로, 트랜잭션 오류 코드는 트랜잭션 상태 레지스터(137)에 저장될 수 있다.
트랜잭션은, 실행이 대응 TX_END 명령에 도달하고 버퍼들(127 및/또는 129)에 의해 버퍼링된 데이터가 판독 또는 변경되지 않았으면 정상적으로 완료한다. TX_END 명령에 도달할 때, 프로세서는, 트랜잭션 동작 모드 중에 트랜잭션 중단 상태들이 발생하지 않았음을 확인함에 응답해서, 기록 동작 결과들을 대응 메모리 또는 캐시 로케이션들에 커밋하고, 트랜잭션을 위해 이전에 할당된 버퍼들(127 및/또는 129)을 해제할 수 있다. 특정 구현들에서, 프로세서(102)는 논-트랜잭션 메모리 액세스 동작들에 의해 판독 및/또는 변경된 메모리 로케이션들의 상태와 무관하게 트랜잭션 기록 동작들을 커밋할 수 있다.
트랜잭션 중단 상태가 검출되었으면, 프로세서는 트랜잭션을 중단하고, 오류 복구 루틴에 제어를 넘겨줄 수 있으며, 오류 복구 루틴의 어드레스는 오류 복구 루틴 어드레스 레지스터(135)에 저장될 수 있다. 트랜잭션이 중단되면, 트랜잭션을 위해 이전에 할당된 버퍼들(127 및/또는 129)은 무효 및/또는 유효로서 표시될 수 있다.
특정 구현들에서, 프로세서(102)는 중첩 트랜잭션들을 지원할 수 있다. 중첩 트랜잭션은 다른 (외부) 트랜잭션의 범위 내에서 실행되는 TX_START 명령에 의해 개시될 수 있다. 중첩 트랜잭션의 커밋은, 중첩 트랜잭션의 결과들에 대해 외부 트랜잭션의 범위 내에서 가시성을 제공하는 것 외에, 외부 트랜잭션의 상태에 영향을 주지 않을 수 있다; 그러나, 그 결과는 외부 트랜잭션이 커밋할 때까지 다른 장치들로부터 여전히 숨겨질 수 있다.
중첩 트랜잭션을 구현하기 위해, TX_END 명령은 대응 TX_START 명령의 어드레스를 나타내는 피연산자를 포함할 수 있다. 또한, 오류 복구 루틴 어드레스 레지스터(135)는 동시에 활동 상태일 수 있는 수개의 중첩 트랜잭션들에 대한 오류 복구 루틴 어드레스를 유지하도록 확장될 수 있다.
중첩 트랜잭션의 범위 내에서 발생하는 오류는 모든 외부 트랜잭션들을 무효화할 수 있다. 중첩 트랜잭션들의 체인 내의 각각의 오류 복구 루틴은 대응 외부 트랜잭션의 오류 복구 루틴을 호출할 책임이 있을 수 있다.
특정 구현들에서, 트랜잭션 개시 및 트랜잭션 종료 명령들은, 본 명세서에서 더 상세히 상술된 바와 같이, 수개의 로드 획득 및/또는 저장 획득 명령들을 트랜잭션 모드에서 실행된 명령들의 시퀀스로 그룹화함으로써, 프로세서의 명령 집합에 존재하는 로드 획득 및/또는 저장 획득 명령들의 동작을 변경하는데 사용될 수 있다.
트랜잭션 모드 명령들의 사용을 도시한 일례의 코드 단편이 도 5에 도시되어 있다. 코드 단편(500)은 2개의 계정들 간의 돈 이체를 도시한다: EBX에 저장된 총액이 SrcAccount로부터 DstAccount로 이체된다. 코드 단편(500)은 논-트랜잭션 메모리 동작들을 더 도시한다: SomeStatistic 카운터의 콘텐츠가 판독 및/또는 변경되는 메모리의 상태를 모니터하지 않고 레지스터에 로드되고, 증분되어, 메모리에 다시 저장된다. SomeStatistic 카운터의 어드레스에 대한 저장 동작의 결과는 즉시 커밋되고, 따라서, 모든 다른 장치들에 즉시 보이게 된다.
도 6은 본 발명의 하나의 또는 그 이상의 양상들에 따른, 트랜잭션 메모리 액세스를 위한 일례의 방법의 흐름도를 도시한다. 방법(600)은 하드웨어(예를 들어, 회로, 전용 로직, 및/또는 프로그래밍 가능 로직), 소프트웨어(예를 들어, 하드웨어 시뮬레이션을 실행하기 위해 컴퓨터 시스템에서 실행 가능한 명령들), 또는 그 조합을 포함할 수 있는 컴퓨터 시스템에 의해 실행될 수 있다. 방법(600) 및/또는 그 기능들, 루틴들, 서브루틴들, 또는 동작들 각각은 방법을 실행하는 컴퓨터 시스템의 하나의 또는 그 이상의 물리 프로세서들에 의해 실행될 수 있다. 방법(600)의 2개의 또는 그 이상의 기능들, 루틴들, 서브루틴들, 또는 동작들은 동일한 메모리에 액세스하는 상이한 프로세서들에 의해 병렬로 또는 상술된 순서와 상이할 수 있는 순서로 실행될 수 있다. 일례에서, 도 6에 도시된 바와 같이, 방법(600)은 트랜잭션 메모리 액세스를 구현하기 위한, 도 1의 컴퓨터 시스템(100)에 의해 실행될 수 있다.
도 6을 참조하면, 블록(610)에서, 프로세서는 메모리 액세스 트랜잭션을 개시할 수 있다. 본 명세서에서 상술된 바와 같이, 메모리 액세스 트랜잭션은 전용 트랜잭션 개시 명령에 의해 개시될 수 있다. 트랜잭션 개시는, 비정상적으로 트랜잭션이 종료되는 경우에 프로세서에 의해 실행될 오류 복구 루틴의 어드레스, 및/또는 트랜잭션을 실행하는데 필요한 하드웨어 버퍼들의 수를 포함하는 하나의 또는 그 이상의 피연산자들을 포함할 수 있다. 특정 구현들에서, 트랜잭션 개시 명령은 프로세서가 트랜잭션을 실행하기 위한 판독 및/또는 기록 버퍼들을 할당하게 더 야기할 수 있다. 특정 구현들에서, 트랜잭션 개시 명령은 이전에 실행된 메모리 액세스 동작들의 결과들이 동일한 메모리에 액세스하는 다른 장치들에 보이게 됨을 보장하기 위해 프로세서가 모든 미결 저장 동작들을 커밋하게 또한 야기할 수 있다. 특정 구현들에서, 트랜잭션 개시 명령은 프로세서가 데이터 프리페칭을 정지하게 더 야기할 수 있다.
블록(620)에서, 프로세서는 메모리 추적 로직과 연관된 하나의 또는 그 이상의 하드웨어 버퍼들을 통해 하나의 또는 그 이상의 판독 동작들을 추론적으로 실행할 수 있다. 판독될 각각의 메모리 블록은 개시 어드레스 및 크기에 의해, 또는 어드레스 범위에 의해 식별될 수 있다. 메모리 추적 로직은 다른 장치들에 의한 명시된 메모리 어드레스들에 대한 액세스를 검출하고, 오류 상태를 프로세서에 신호할 수 있다.
블록(630)에서, 프로세서는 메모리 추적 로직과 연관된 하나의 또는 그 이상의 하드웨어 버퍼들을 통해 하나의 또는 그 이상의 기록 동작들을 추론적으로 실행할 수 있다. 기록될 각각의 메모리 블록은 개시 어드레스 및 크기에 의해, 또는 어드레스 범위에 의해 식별될 수 있다. 기록 버퍼들은 데이터를 대응 메모리 로케이션들에 커밋하지 않고 메모리 기록 동작들의 결과들을 유지할 수 있다. 메모리 추적 로직은 다른 장치들에 의한 명시된 메모리 어드레스들에 대한 액세스를 검출하고, 오류 상태를 프로세서에 신호할 수 있다.
블록(640)에 의해 개략적으로 도시된 바와 같이, 블록(630)에 의해 언급된 메모리 기록 동작 중에 오류를 검출함에 응답해서, 프로세서는, 블록(660)에서, TX_START 명령에 의해 명시된 오류 복구 루틴을 실행할 수 있다; 그렇지 않으면, 프로세싱은 블록(670)에서 계속될 수 있다.
블록(670)에서, 프로세서는 하나의 또는 그 이상의 메모리 판독 및/또는 기록 동작들을 실행하고 즉시 커밋할 수 있다. 이 동작들이 즉시 커밋됨에 따라, 트랜잭션 성공적 완료 또는 중단과 무관하게, 그 결과들은 다른 장치들(예를 들어, 다른 프로세서 코어들 또는 다른 프로세서들)에 즉시 보이게 된다.
트랜잭션 종료 명령에 도달할 때, 블록(670)에 의해 개략적으로 도시된 바와 같이, 프로세서는 트랜잭션 동작 모드 중에 트랜잭션 중단 상태들이 발생하지 않았음을 확인할 수 있다. 블록(610)에서 개시된 트랜잭션 동작 모드 중에 오류를, 블록(670)에서, 검출함에 응답해서, 블록(660)에 의해 개략적으로 도시된 바와 같이, 프로세서는 오류 복구 루틴을 실행할 수 있다; 그렇지 않으면, 블록(670)에서 언급된 논-트랜잭션 메모리 액세스 동작들에 의해 판독 및/또는 변경된 메모리 로케이션들의 상태와 무관하게, 프로세서는, 블록(680)에 의해 개략적으로 도시된 바와 같이, 트랜잭션을 완료할 수 있다. 프로세서는 기록 동작 결과들을 대응 메모리 또는 캐시 로케이션들에 커밋하고, 트랜잭션을 위해 이전에 할당된 버퍼들을 해제할 수 있다. 블록(670)에 의해 언급된 동작들을 완료할 때, 방법은 종료할 수 있다.
특정 구현들에서, 트랜잭션 오류들은 트랜잭션 동작 모드에서 수개의 명령들(예를 들어, 로드 또는 저장 명령들)의 실행 중에 또한 검출될 수 있다. 도 6에서, 블록들(620 및 630)로부터 비롯된 점선들은 트랜잭션 동작 모드에서 실행된 수개의 명령들로부터 오류 복구 루틴으로의 브랜칭을 개략적으로 도시한다.
특정 구현들에서, 트랜잭션 오류들은 트랜잭션 종료 명령의 실행 중에 또한 검출될 수 있다(예를 들어, 다른 장치들에 의한 트랜잭션 메모리에 대한 액세스를 보고하는 로직에서 지연들이 있는 경우). 도 6에서, 블록(680)으로부터 비롯된 점선들은 트랜잭션 종료 명령로부터 오류 복구 루틴으로의 브랜칭을 개략적으로 도시한다.
도 7은 본 발명의 하나의 또는 그 이상의 양상들에 따른, 일례의 컴퓨터 시스템의 블록도를 도시한다. 도 7에 도시된 바와 같이, 멀티프로세서 시스템(700)은 지점간 인터커넥트 시스템이며, 지점간 인터커넥트(750)를 통해 연결된 제1 프로세서(770) 및 제2 프로세서(780)를 포함한다. 프로세서들(770 및 780) 각각은, 본 명세서에서 더 상세히 상술된 바와 같이, 트랜잭션 메모리 액세스 동작들 및/또는 논-트랜잭션 메모리 액세스 동작들을 실행할 수 있는 프로세서(102)의 일부 버전일 수 있다.
2개의 프로세서들(770 및 780)만이 도시되어 있지만, 본 발명의 범위는 그렇제 제한되지 않음을 알 것이다. 다른 실시예들에서, 하나의 또는 그 이상의 추가 프로세서들이 소정의 프로세서 내에 존재할 수 있다.
프로세서들(770 및 780)은, 각각, 통합 메모리 제어기 유닛들(772 및 782)을 포함하는 것으로 도시된다. 프로세서(770)는 버스 제어기 유닛들의 일부로서 지점간(P-P) 인터페이스들(776 및 778)을 더 포함한다; 유사하게, 제2 프로세서(780)는 P-P 인터페이스들(786 및 788)을 포함한다. 프로세서들(770 및 780)은 P-P 인터페이스 회로들(778 및 788)을 사용해서 지점간(P-P) 인터페이스(750)를 통해 정보를 교환할 수 있다. 도 7에 도시된 바와 같이, IMC들(772 및 782)은, 각각의 프로세서들에 국부적으로 부착된 메인 메모리의 일부분들일 수 있는, 각각의 메모리들, 즉, 메모리(732) 및 메모리(734)에 프로세서들을 연결한다.
프로세서들(770 및 780)은 각각 지점간 인터페이스 회로들(776, 794, 786, 798)을 사용해서 개별 P-P 인터페이스들(752, 754)을 통해 칩셋(790)과 정보를 교환할 수 있다. 칩셋(790)은 또한 고성능 그래픽 인터페이스(739)를 통해 고성능 그래픽 회로(738)와 정보를 교환할 수 있다.
프로세서가 저전력 모드로 되면 어느 한 프로세서의 또는 양 프로세서들의 로컬 캐시 정보가 공유 메모리에 저장될 수 있도록, 공유 캐시(도시되지 않음)가 어느 한 프로세서 내에 포함되거나, 또는 양 프로세서들 밖에 있지만 P-P 인터커넥트를 통해 프로세서들에 연결될 수 있다.
칩셋(790)은 인터페이스(796)를 통해 제1 버스(716)에 연결될 수 있다. 일 실시예에서, 제1 버스(716)는 주변 컴포넌트 인터커넥트(PCI) 버스이거나, 또는 PCI 익스프레스 버스 또는 다른 3세대 I/O 인터커넥트 버스 등의 버스일 수 있지만, 본 발명의 범위는 그렇게 제한되지 않는다.
도 7에 도시된 바와 같이, 각종 I/O 장치들(714)은, 제1 버스(716)를 제2 버스(720)에 연결하는 버스 브리지(718)와 함께, 제1 버스(716)에 연결될 수 있다. 일 실시예에서, 제2 버스(720)는 로우 핀 카운트(LPC) 버스일 수 있다. 일 실시예에서, 예를 들어, 키보드 및/또는 마우스(722), 통신 장치들(727) 및 명령들/코드 및 데이터(730)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 기억 장치 등의 기억 유닛(728)을 포함하는 각종 장치들이 제2 버스(720)에 연결될 수 있다. 또한, 오디오 I/O(724)가 제2 버스(720)에 연결될 수 있다. 다른 아키텍처들이 가능함을 주지하라. 예를 들어, 도 7의 지점간 아키텍처 대신, 시스템은 멀티-드롭 버스 또는 다른 아키텍처를 구현할 수 있다.
이하의 일례들은 본 발명의 하나의 또는 그 이상의 양상들에 따른 각종 구현들을 설명한다.
일례 1은, 프로세서에 의해, 메모리 액세스 트랜잭션을 개시하는 단계; 제1 메모리 로케이션에 대하여, 메모리 액세스 추적 로직과 연관된 제1 버퍼를 사용하는, 트랜잭션 판독 동작, 및 제2 메모리 로케이션에 대하여, 메모리 액세스 추적 로직과 연관된 제2 버퍼를 사용하는, 트랜잭션 기록 동작 중 적어도 하나를 실행하는 단계; 제3 메모리 로케이션에 대하여 논-트랜잭션 판독 동작, 및 제4 메모리 로케이션에 대하여 논-트랜잭션 기록 동작 중 적어도 하나를 실행하는 단계; 메모리 액세스 추적 로직에 의해, 제1 메모리 로케이션 및 제2 메모리 로케이션 중 적어도 하나에 대한 프로세서가 아닌 장치에 의한 액세스를 검출함에 응답해서, 메모리 액세스 트랜잭션을 중단하는 단계; 및 트랜잭션 중단 조건의 검출 실패에 응답해서, 또한, 제3 메모리 로케이션의 상태 및 제4 메모리 로케이션의 상태와 무관하게, 메모리 액세스 트랜잭션을 완료하는 단계를 포함하는, 트랜잭션 메모리 액세스를 위한 방법이다.
일례 2에서, 일례 1의 방법의 제1 버퍼 및 제2 버퍼는 하나의 버퍼로 표현될 수 있다.
일례 3에서, 일례 1의 방법의 제1 메모리 로케이션 및 제2 메모리 로케이션은 하나의 메모리 로케이션으로 표현될 수 있다.
일례 4에서, 일례 1의 방법의 제3 메모리 로케이션 및 제4 메모리 로케이션은 하나의 메모리 로케이션으로 표현될 수 있다.
일례 5에서, 일례 1의 방법의 제1 버퍼 및 제2 버퍼 중 적어도 하나는 데이터 캐시의 한 엔트리에 의해 제공될 수 있다.
일례 6에서, 일례들 1-6 중 어느 한 일례의 방법의 실행 동작은 제2 기록 동작의 커밋을 포함할 수 있다.
일례 7에서, 일례들 1-6 중 어느 한 일례의 방법의 완료 동작은 제2 버퍼로부터 더 높은 레벨의 캐시 엔트리 및 메모리 로케이션 중 하나로의 데이터의 복사를 포함할 수 있다.
일례 8에서, 일례들 1-6 중 어느 한 일례의 방법은 인터럽트, 버퍼 오버플로, 및 프로그램 오류 중 적어도 하나를 검출함에 응답해서 메모리 액세스 트랜잭션을 중단하는 단계를 더 포함할 수 있다.
일례 9에서, 일례들 1-6 중 어느 한 일례의 방법의 중단 동작은 제1 버퍼 및 제2 버퍼 중 적어도 하나의 버퍼의 해제를 포함할 수 있다.
일례 10에서, 일례들 1-6 중 어느 한 일례의 방법의 개시 동작은 미결(pending) 기록 동작의 커밋을 포함할 수 있다.
일례 11에서, 일례들 1-6 중 어느 한 일례의 방법의 개시 동작은 인터럽트들의 디스에이블을 포함할 수 있다.
일례 12에서, 일례들 1-6 중 어느 한 일례의 방법의 개시 동작은 데이터 프리페칭의 디스에이블을 포함할 수 있다.
일례 13에서, 일례들 1-6 중 어느 한 일례의 방법은: 메모리 액세스 트랜잭션을 완료하기 전에, 중첩 메모리 액세스 트랜잭션을 개시하는 단계; 메모리 액세스 추적 로직과 연관된 제3 버퍼를 사용하는, 제2 트랜잭션 판독 동작, 및 메모리 액세스 추적 로직과 연관된 제4 버퍼를 사용하는, 제2 트랜잭션 기록 동작 중 적어도 하나를 실행하는 단계; 및 중첩 메모리 액세스 트랜잭션을 완료하는 단계를 더 포함할 수 있다.
일례 14에서, 일례 13의 방법은 트랜잭션 중단 조건의 검출에 응답해서 메모리 액세스 트랜잭션 및 중첩 메모리 액세스 트랜잭션을 중단하는 단계를 더 포함할 수 있다.
일례 15는, 메모리 액세스 추적 로직; 메모리 액세스 추적 로직과 연관된 제1 버퍼; 메모리 액세스 추적 로직과 연관된 제2 버퍼; 제1 버퍼 및 제2 버퍼에 통신상 연결된 프로세서 코어를 포함하는 프로세싱 시스템이고, 프로세서 코어는 메모리 액세스 트랜잭션을 개시하며; 제1 메모리 로케이션에 대하여, 제1 버퍼를 사용하는, 트랜잭션 판독 동작, 및 제2 메모리 로케이션에 대하여, 제2 버퍼를 사용하는, 트랜잭션 기록 동작 중 적어도 하나를 실행하고; 제3 메모리 로케이션에 대하여 논-트랜잭션 판독 동작, 및 제4 메모리 로케이션에 대하여 논-트랜잭션 기록 동작 중 적어도 하나를 실행하며; 메모리 액세스 추적 로직에 의해, 제1 메모리 로케이션 및 제2 메모리 로케이션 중 적어도 하나에 대한 프로세서가 아닌 장치에 의한 액세스를 검출함에 응답해서, 메모리 액세스 트랜잭션을 중단하고; 트랜잭션 중단 조건의 검출 실패에 응답해서, 또한, 제3 메모리 로케이션의 상태 및 제4 메모리 로케이션의 상태와 무관하게, 메모리 액세스 트랜잭션을 완료하는 동작들을 실행하도록 구성된다.
일례 16은, 메모리 액세스 추적 수단; 메모리 액세스 추적 수단과 연관된 제1 버퍼; 메모리 액세스 추적 수단과 연관된 제2 버퍼; 제1 버퍼 및 제2 버퍼에 통신상 연결된 프로세서 코어를 포함하는 프로세싱 시스템이고, 프로세서 코어는 메모리 액세스 트랜잭션을 개시하며; 제1 메모리 로케이션에 대하여, 제1 버퍼를 사용하는, 트랜잭션 판독 동작, 및 제2 메모리 로케이션에 대하여, 제2 버퍼를 사용하는, 트랜잭션 기록 동작 중 적어도 하나를 실행하고; 제3 메모리 로케이션에 대하여 논-트랜잭션 판독 동작, 및 제4 메모리 로케이션에 대하여 논-트랜잭션 기록 동작 중 적어도 하나를 실행하며; 메모리 액세스 추적 수단에 의해, 제1 메모리 로케이션 및 제2 메모리 로케이션 중 적어도 하나에 대한 프로세서가 아닌 장치에 의한 액세스를 검출함에 응답해서, 메모리 액세스 트랜잭션을 중단하고; 트랜잭션 중단 조건의 검출 실패에 응답해서, 또한, 제3 메모리 로케이션의 상태 및 제4 메모리 로케이션의 상태와 무관하게, 메모리 액세스 트랜잭션을 완료하는 동작들을 실행하도록 구성된다.
일례 17에서, 일례들 15-16의 어느 한 일례의 프로세싱 시스템은 데이터 캐시를 더 포함할 수 있고; 제1 버퍼 및 제2 버퍼 중 적어도 하나가 데이터 캐시 내에 상주할 수 있다.
일례 18에서, 일례들 15-16의 어느 한 일례의 프로세싱 시스템은 오류 복구 루틴의 어드레스를 저장하기 위한 레지스터를 더 포함할 수 있다.
일례 19에서, 일례들 15-16의 어느 한 일례의 프로세싱 시스템은 메모리 액세스 트랜잭션의 상태를 저장하기 위한 레지스터를 더 포함할 수 있다.
일례 20에서, 일례들 15-16의 어느 한 일례의 프로세싱 시스템의 제1 버퍼 및 제2 버퍼는 하나의 버퍼로 표현될 수 있다.
일례 21에서, 일례들 15-16의 어느 한 일례의 프로세싱 시스템의 제3 버퍼 및 제4 버퍼는 하나의 버퍼로 표현될 수 있다.
일례 22에서, 일례들 15-16의 어느 한 일례의 프로세싱 시스템의 제1 메모리 로케이션 및 제2 메모리 로케이션은 하나의 메모리 로케이션으로 표현될 수 있다.
일례 23에서, 일례들 15-16의 어느 한 일례의 프로세싱 시스템의 제3 메모리 로케이션 및 제4 메모리 로케이션은 하나의 메모리 로케이션으로 표현될 수 있다.
일례 24에서, 일례들 15-16의 어느 한 일례의 프로세싱 시스템의 프로세서 코어는 인터럽트, 버퍼 오버플로, 및 프로그램 오류 중 적어도 하나를 검출함에 응답해서 메모리 액세스 트랜잭션을 중단하도록 더 구성될 수 있다.
일례 25에서, 일례 15의 프로세싱 시스템의 프로세서 코어는: 메모리 액세스 트랜잭션을 완료하기 전에, 중첩 메모리 액세스 트랜잭션을 개시하고; 메모리 액세스 추적 로직과 연관된 제3 버퍼를 사용하는, 제2 트랜잭션 판독 동작, 및 메모리 액세스 추적 로직과 연관된 제4 버퍼를 사용하는, 제2 트랜잭션 기록 동작 중 적어도 하나를 실행하며; 중첩 메모리 액세스 트랜잭션을 완료하도록 더 구성될 수 있다.
일례 26에서, 일례 16의 프로세싱 시스템의 프로세서 코어는: 메모리 액세스 트랜잭션을 완료하기 전에, 중첩 메모리 액세스 트랜잭션을 개시하고; 메모리 액세스 추적 수단과 연관된 제3 버퍼를 사용하는, 제2 트랜잭션 판독 동작, 및 메모리 액세스 추적 수단과 연관된 제4 버퍼를 사용하는, 제2 트랜잭션 기록 동작 중 적어도 하나를 실행하며; 중첩 메모리 액세스 트랜잭션을 완료하도록 더 구성될 수 있다.
일례 27에서, 일례들 25-26의 어느 한 일례의 프로세싱 시스템의 프로세서 코어는 트랜잭션 중단 조건의 검출에 응답해서 메모리 액세스 트랜잭션 및 중첩 메모리 액세스 트랜잭션을 중단하도록 더 구성될 수 있다.
일례 28은 메모리 및 메모리에 연결된 프로세싱 시스템을 포함하는 장치이며, 프로세싱 시스템은 일례들 1-14의 어느 한 일례의 방법을 실행하도록 구성된다.
일례 29는 실행 가능한 명령들을 포함하는 컴퓨터 판독 가능 비일시적 기억 매체이며, 명령들은, 프로세서에 의해 실행될 때, 프로세서가: 프로세서에 의해, 메모리 액세스 트랜잭션을 개시하며; 제1 메모리 로케이션에 대하여, 메모리 액세스 추적 로직과 연관된 제1 버퍼를 사용하는, 트랜잭션 판독 동작, 및 제2 메모리 로케이션에 대하여, 메모리 액세스 추적 로직과 연관된 제2 버퍼를 사용하는, 트랜잭션 기록 동작 중 적어도 하나를 실행하고; 제3 메모리 로케이션에 대하여 논-트랜잭션 판독 동작, 및 제4 메모리 로케이션에 대하여 논-트랜잭션 기록 동작 중 적어도 하나를 실행하며; 메모리 액세스 추적 로직에 의해, 제1 메모리 로케이션 및 제2 메모리 로케이션 중 적어도 하나에 대한 프로세서가 아닌 장치에 의한 액세스를 검출함에 응답해서, 메모리 액세스 트랜잭션을 중단하고; 트랜잭션 중단 조건의 검출 실패에 응답해서, 또한, 제3 메모리 로케이션의 상태 및 제4 메모리 로케이션의 상태와 무관하게, 메모리 액세스 트랜잭션을 완료하도록 야기한다.
상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 동작들의 알고리즘들 및 상징적인 표현들로 제시된다. 이 알고리즘 기술들 및 표현들은 당업자들이 그들의 작업 실체를 다른 당업자들에게 가장 효과적으로 전달하기 위해 사용되는 수단이다. 알고리즘은 본 명세서에서 일반적으로 희망 결과를 야기하는 동작들의 자기 부합적 시퀀스라고 생각된다. 동작들은 물리적인 양들의 물리적인 조작들을 요구하는 동작들이다. 통상, 반드시 그런 것은 아니지만, 이 양들은 저장, 전송, 조합, 비교 및 달리 조작될 수 있는 전기 또는 자기 신호들의 형태를 취한다. 원칙적으로 일반적인 용도 때문에, 이 신호들을 비트들, 값들, 요소들, 심볼들, 문자들, 용어들, 숫자들 등으로 언급하는 것이 가끔은 편리함이 입증되었다.
그러나, 모든 이러한 용어들 및 유사한 용어들은 적합한 물리적 양들과 연관되며 이 양들에 적용되는 단지 편리한 라벨들임을 명심해야만 한다. 상술된 설명으로부터 명백한 바와 같이, 달리 특별히 지시되지 않는 한, 설명을 통해, "encrypting(암호화)", "decrypting(해독)", "storing(저장)", "providing(제공)", "deriving(유도)", "obtaining(획득)", "receiving(수신)", "authenticating(인증)", "deleting(삭제)", "executing(실행)", "requesting(요청)", "communicating(통신)" 등의 용어들을 사용하는 설명들은, 컴퓨팅 시스템의 레지스터들 및 메모리들 내의 물리적 (예를 들어, 전자) 양들로서 표현된 데이터를 조작하여 컴퓨팅 시스템 메모리들 또는 레지스터들 또는 다른 정보 기억 장치, 송신 또는 디스플레이 장치들 내의 물리적 양들로서 유사하게 표현된 다른 데이터로 변형하는, 컴퓨팅 시스템, 또는 유사한 전자 컴퓨팅 장치의 동작들 및 프로세스들과 관련된다.
단어들 "example(일례)" 또는 "examplary(일례의)"는 일례, 실례 또는 예시로서 역할함을 의미하기 위해 본 명세서에서 사용된다. "example(일례)" 또는 "examplary(일례의)"로서 본 명세서에서 기술된 임의의 양상 또는 설계는 다른 양상들 또는 설계들보다 양호하거나 유익한 것으로 반드시 해석되는 것은 아니다. 오히려, 단어들 "example(일례)" 또는 "examplary(일례의)"의 사용은 구체적인 방식으로 개념들을 제시하려고 의도된 것이다. 본 출원에서 사용된 용어 "or(또는)"는 배타적인 "or"이 아니라 포괄적인 "or"을 의미하도록 의도된 것이다. 즉, 달리 명시되거나 또는 문맥으로부터 명백하지 않은 한, "X includes A or B(X가 A 또는 B를 포함함)"는 자연스런 포괄적인 순열들 중 임의의 순열을 의미하도록 의도된 것이다. 즉, X가 A를 포함하거나; X가 B를 포함하거나; 또는 X가 A 및 B를 둘 다 포함하면, "X includes A or B(X가 A 또는 B를 포함함)"는 상술된 실례들 중 임의의 실례에서 만족된다. 또한, 본 출원 및 첨부 청구항들에서 사용된 관사들 "a(한, 하나의)" 및 "an(한, 하나의)"은, 단수 형태인 것으로 달리 명시되거나 또는 문맥으로부터 명백하지 않은 한, "one or more(하나 또는 그 이상)"을 의미하는 것을 일반적으로 해석되어야만 한다. 더욱이, 용어 "an embodiment(일 실시예)" 또는 "one embodiment(일 실시예)" 또는 "an implementation(일 구현)" 또는 "one implementation(일 구현)"의 사용은 그렇게 기술되지 않은 한 동일한 실시예 또는 구현을 의미하도록 의도된 것이 아니다. 또한, 본 명세서에서 사용된 용어들 "first(제1)", "second(제2)", "third(제3)", "fourth(제4)" 등은 상이한 요소들을 구별하기 위한 라벨들로 의도된 것이고, 반드시 이들의 숫자 지정에 따른 순서적인 의미를 갖는 것은 아닐 수 있다.
본 명세서에서 기술된 실시예들은 본 명세서에서 동작들을 실행하기 위한 장치와 또한 관련될 수 있다. 이 장치는 요구된 목적들을 위해 특별히 구성될 수 있으며, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화 또는 재구성되는 범용 컴퓨터를 포함할 수 있다. 이 컴퓨터 프로그램은, 플로피 디스크들, 광 디스크들, CD-ROM들 및 광자기 디스크들을 포함하는 임의의 타입의 디스크, 판독 전용 메모리들(ROM들), 랜덤 액세스 메모리들(RAM들), EPROM들, EEPROM들, 자기 또는 광 카드들, 플래시 메모리, 또는 전자 명령들을 저장하기에 적합한 임의의 타입의 매체 등의, 그러나 이들로만 제한되지 않는, 비일시적 컴퓨터 판독 가능 기억 매체에 저장될 수 있다. 용어 "컴퓨터 판독 가능 기억 매체"는 하나의 또는 그 이상의 명령 집합들을 저장하는 단일 매체 또는 다수의 매체들(예를 들어, 중앙 또는 분산 데이터베이스 및/또는 연관된 캐시들 및 서버들)을 포함하는 것으로 여겨져야만 한다. 또한, 용어 "컴퓨터 판독 가능 기억 매체"는 기계에 의한 실행을 위해 명령 집합을 저장, 인코딩 또는 캐리할 수 있고, 기계가 본 실시예들의 방법들 중 임의의 하나의 또는 그 이상의 방법들을 실행하게 야기하는 임의의 매체를 포함하는 것으로 여겨져야만 한다. 따라서, 용어 "컴퓨터 판독 가능 기억 매체"는 고체 상태 메모리들, 광 매체들, 자기 매체들, 기계에 의한 실행을 위해 명령 집합을 저장할 수 있고, 기계가 본 실시예들의 방법들 중 임의의 하나의 또는 그 이상의 방법들을 실행하게 야기하는 임의의 매체를 포함하지만, 이들로만 제한되지 않는 것으로 여겨져야만 한다.
본 명세서에서 제시된 알고리즘들 및 디스플레이들은 본래 임의의 특정 컴퓨터 또는 다른 장치와 관련되는 것은 아니다. 각종 범용 시스템들이 본 명세서의 교시들에 따른 프로그램들과 함께 사용될 수 있으며, 또는 요구된 방법 동작들을 실행하도록 더 특수화된 장치를 구성하는 것이 편리함이 입증될 수 있다. 이러한 각종 시스템들을 위해 필요한 구조는 이하의 설명으로부터 명백해질 것이다. 또한, 본 실시예들은 임의의 특정 프로그래밍 언어를 참조해서 기술되는 것은 아니다. 각종 프로그래밍 언어들은 본 명세서에서 기술된 실시예들의 교시들을 구현하는데 사용될 수 있음을 알 것이다.
상술된 설명은 수개의 실시예들의 양호한 이해를 제공하기 위해, 특정 시스템들, 컴포넌트들, 방법들 등의 일례들 등의 다수의 특정 세부 사항들을 기술한다. 그러나, 적어도 일부 실시예들은 이러한 특정 세부 사항들 없이 구현될 수 있음이 당업자에게 명백할 것이다. 다른 실례들에서, 널리 공지된 컴포넌트들 또는 방법들은 본 실시예들을 불필요하게 모호하게 하는 것을 방지하기 위해 상세히 기술되지 않거나 또는 간단한 블록도 포맷으로 제시된다. 따라서, 상술된 특정 세부 사항들은 단지 일례이다. 특정 구현들은 이러한 일례의 세부 사항들과 다를 수 있으며, 본 실시예들의 범위 내에 있다고 여전히 생각될 수 있다.
상술된 설명이 제한이 아니라 예시적인 것으로 의도된 것임을 알 것이다. 다수의 다른 실시예들은 상술된 설명을 판독 및 이해할 때 당업자에게 명백할 것이다. 따라서, 본 실시예의 범위는, 이러한 청구항들의 자격이 있는 동등물들의 전 범위와 함께, 첨부된 청구항들을 참조해서 결정되어야만 한다.
Claims (20)
- 프로세서에 의해, 메모리 액세스 트랜잭션을 개시하는 단계;
제1 메모리 로케이션에 대하여, 메모리 액세스 추적 로직과 연관된 제1 버퍼를 사용하는, 트랜잭션 판독 동작, 및 제2 메모리 로케이션에 대하여, 상기 메모리 액세스 추적 로직과 연관된 제2 버퍼를 사용하는, 트랜잭션 기록 동작 중 적어도 하나를 실행하는 단계;
제3 메모리 로케이션에 대하여 논-트랜잭션 판독 동작, 및 제4 메모리 로케이션에 대하여 논-트랜잭션 기록 동작 중 적어도 하나를 실행하는 단계;
상기 메모리 액세스 추적 로직에 의해, 상기 트랜잭션 판독 동작 또는 상기 트랜잭션 기록 동작 중 하나의 실행 중에 상기 제1 메모리 로케이션 및 상기 제2 메모리 로케이션 중 적어도 하나에 대한 상기 프로세서가 아닌 장치에 의한 액세스를 검출함에 응답해서, 상기 메모리 액세스 트랜잭션을 중단하는 단계; 및
트랜잭션 중단 조건의 검출 실패에 응답해서, 또한, 상기 제3 메모리 로케이션의 상태 및 상기 제4 메모리 로케이션의 상태와 무관하게, 상기 메모리 액세스 트랜잭션을 완료하는 단계
를 포함하는 방법. - 제1항에 있어서,
상기 제1 버퍼 및 상기 제2 버퍼는 하나의 버퍼로 표현되는 방법. - 제1항에 있어서,
상기 제1 메모리 로케이션 및 상기 제2 메모리 로케이션은 하나의 메모리 로케이션으로 표현되는 방법. - 제1항에 있어서,
상기 제3 메모리 로케이션 및 상기 제4 메모리 로케이션은 하나의 메모리 로케이션으로 표현되는 방법. - 제1항에 있어서,
상기 제1 버퍼 및 상기 제2 버퍼 중 적어도 하나는 데이터 캐시의 한 엔트리에 의해 제공되는 방법. - 제1항에 있어서,
상기 논-트랜잭션 기록 동작을 실행하는 단계는 상기 논-트랜잭션 기록 동작을 커밋하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 메모리 액세스 트랜잭션을 완료하는 단계는 데이터를 상기 제2 버퍼로부터 더 높은 레벨의 캐시 엔트리 및 메모리 로케이션 중 하나로 복사하는 단계를 포함하는 방법. - 제1항에 있어서,
인터럽트, 버퍼 오버플로, 및 프로그램 오류 중 적어도 하나를 검출함에 응답해서 상기 메모리 액세스 트랜잭션을 중단하는 단계를 더 포함하는 방법. - 제1항에 있어서,
상기 중단 단계는 상기 제1 버퍼 및 상기 제2 버퍼 중 적어도 하나를 해제하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 메모리 액세스 트랜잭션을 개시하는 단계는 미결(pending) 기록 동작을 커밋하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 메모리 액세스 트랜잭션을 개시하는 단계는 인터럽트들을 디스에이블하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 메모리 액세스 트랜잭션을 개시하는 단계는 데이터 프리페칭을 디스에이블하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 메모리 액세스 트랜잭션을 완료하기 전에, 중첩 메모리 액세스 트랜잭션을 개시하는 단계;
상기 메모리 액세스 추적 로직과 연관된 제3 버퍼를 사용하는, 제2 트랜잭션 판독 동작, 및 상기 메모리 액세스 추적 로직과 연관된 제4 버퍼를 사용하는, 제2 트랜잭션 기록 동작 중 적어도 하나를 실행하는 단계; 및
상기 중첩 메모리 액세스 트랜잭션을 완료하는 단계
를 더 포함하는 방법. - 제13항에 있어서,
트랜잭션 중단 조건의 검출에 응답해서 상기 메모리 액세스 트랜잭션 및 상기 중첩 메모리 액세스 트랜잭션을 중단하는 단계를 더 포함하는 방법. - 프로세싱 시스템으로서,
메모리 액세스 추적 로직;
상기 메모리 액세스 추적 로직과 연관된 제1 버퍼;
상기 메모리 액세스 추적 로직과 연관된 제2 버퍼; 및
상기 제1 버퍼 및 상기 제2 버퍼에 통신상 연결된 프로세서 코어
를 포함하고,
상기 프로세서 코어는
메모리 액세스 트랜잭션을 개시하는 동작;
제1 메모리 로케이션에 대하여, 상기 제1 버퍼를 사용하는, 트랜잭션 판독 동작, 및 제2 메모리 로케이션에 대하여, 제2 버퍼를 사용하는, 트랜잭션 기록 동작 중 적어도 하나를 실행하는 동작;
제3 메모리 로케이션에 대하여 논-트랜잭션 판독 동작, 및 제4 메모리 로케이션에 대하여 논-트랜잭션 기록 동작 중 적어도 하나를 실행하는 동작;
상기 메모리 액세스 추적 로직에 의해, 상기 트랜잭션 판독 동작 또는 상기 트랜잭션 기록 동작 중 하나의 실행 중에 상기 제1 메모리 로케이션 및 상기 제2 메모리 로케이션 중 적어도 하나에 대한 프로세서가 아닌 장치에 의한 액세스를 검출함에 응답해서, 상기 메모리 액세스 트랜잭션을 중단하는 동작;
트랜잭션 중단 조건의 검출 실패에 응답해서, 또한, 상기 제3 메모리 로케이션의 상태 및 상기 제4 메모리 로케이션의 상태와 무관하게, 상기 메모리 액세스 트랜잭션을 완료하는 동작
을 포함하는 동작들을 수행하는 프로세싱 시스템. - 제15항에 있어서,
데이터 캐시를 더 포함하고; 상기 제1 버퍼 및 상기 제2 버퍼 중 적어도 하나가 상기 데이터 캐시 내에 상주하는 프로세싱 시스템. - 제15항에 있어서,
오류 복구 루틴의 어드레스를 저장하기 위한 레지스터를 더 포함하는 프로세싱 시스템. - 제15항에 있어서,
상기 메모리 액세스 트랜잭션의 상태를 저장하기 위한 레지스터를 더 포함하는 프로세싱 시스템. - 제15항에 있어서,
상기 제1 버퍼 및 상기 제2 버퍼는 하나의 버퍼로 표현되는 프로세싱 시스템. - 실행 가능한 명령들을 포함하는 컴퓨터 판독 가능 비일시적 기억 매체로서,
상기 명령들은, 프로세서에 의해 실행될 때, 상기 프로세서가
메모리 액세스 트랜잭션을 개시하며;
제1 메모리 로케이션에 대하여, 메모리 액세스 추적 로직과 연관된 제1 버퍼를 사용하는, 트랜잭션 판독 동작, 및 제2 메모리 로케이션에 대하여, 상기 메모리 액세스 추적 로직과 연관된 제2 버퍼를 사용하는, 트랜잭션 기록 동작 중 적어도 하나를 실행하고;
제3 메모리 로케이션에 대하여 논-트랜잭션 판독 동작, 및 제4 메모리 로케이션에 대하여 논-트랜잭션 기록 동작 중 적어도 하나를 실행하며;
상기 메모리 액세스 추적 로직에 의해, 상기 트랜잭션 판독 동작 또는 상기 트랜잭션 기록 동작 중 하나의 실행 중에 상기 제1 메모리 로케이션 및 상기 제2 메모리 로케이션 중 적어도 하나에 대한 상기 프로세서가 아닌 장치에 의한 액세스를 검출함에 응답해서, 상기 메모리 액세스 트랜잭션을 중단하고;
트랜잭션 중단 조건의 검출 실패에 응답해서, 또한, 상기 제3 메모리 로케이션의 상태 및 상기 제4 메모리 로케이션의 상태와 무관하게, 상기 메모리 액세스 트랜잭션을 완료하도록
야기하는 컴퓨터 판독 가능 비일시적 기억 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/803,658 US20140281236A1 (en) | 2013-03-14 | 2013-03-14 | Systems and methods for implementing transactional memory |
US13/803,658 | 2013-03-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140113400A KR20140113400A (ko) | 2014-09-24 |
KR101574007B1 true KR101574007B1 (ko) | 2015-12-02 |
Family
ID=50440290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140028430A KR101574007B1 (ko) | 2013-03-14 | 2014-03-11 | 트랜잭션 메모리를 구현하기 위한 시스템들 및 방법들 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20140281236A1 (ko) |
JP (2) | JP2014194754A (ko) |
KR (1) | KR101574007B1 (ko) |
CN (1) | CN104050023B (ko) |
BR (1) | BR102014005697A2 (ko) |
DE (1) | DE102014003399A1 (ko) |
GB (1) | GB2512470B (ko) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9244746B2 (en) * | 2013-08-01 | 2016-01-26 | Intel Corporation | Automatic transaction coarsening |
US20150205721A1 (en) * | 2014-01-22 | 2015-07-23 | Advanced Micro Devices, Inc. | Handling Reads Following Transactional Writes during Transactions in a Computing Device |
WO2015134611A2 (en) * | 2014-03-04 | 2015-09-11 | Michael Manthey | Distributed computing systems and methods |
GB2533415B (en) * | 2014-12-19 | 2022-01-19 | Advanced Risc Mach Ltd | Apparatus with at least one resource having thread mode and transaction mode, and method |
GB2533416A (en) * | 2014-12-19 | 2016-06-22 | Advanced Risc Mach Ltd | Monitoring utilization of transactional processing resource |
US20160179662A1 (en) * | 2014-12-23 | 2016-06-23 | David Pardo Keppel | Instruction and logic for page table walk change-bits |
US10303477B2 (en) | 2015-06-26 | 2019-05-28 | Intel Corporation | Persistent commit processors, methods, systems, and instructions |
US9990291B2 (en) * | 2015-09-24 | 2018-06-05 | Qualcomm Incorporated | Avoiding deadlocks in processor-based systems employing retry and in-order-response non-retry bus coherency protocols |
US9928064B2 (en) | 2015-11-10 | 2018-03-27 | International Business Machines Corporation | Instruction stream modification for memory transaction protection |
US9971687B2 (en) * | 2016-02-15 | 2018-05-15 | International Business Machines Corporation | Operation of a multi-slice processor with history buffers storing transaction memory state information |
US20170270062A1 (en) * | 2016-03-21 | 2017-09-21 | Intel Corporation | In-band retimer register access |
US10795815B2 (en) * | 2016-05-27 | 2020-10-06 | Arm Limited | Method and apparatus for maintaining data coherence in a non-uniform compute device |
US20170371701A1 (en) * | 2016-06-27 | 2017-12-28 | Kshitij A. Doshi | Apparatuses, methods, and systems for granular and adaptive hardware transactional synchronization |
CN109478139B (zh) * | 2016-08-13 | 2024-01-23 | 英特尔公司 | 用于共享存储器中的访问同步的装置、方法和系统 |
US11093414B2 (en) * | 2016-09-28 | 2021-08-17 | Intel Corporation | Measuring per-node bandwidth within non-uniform memory access (NUMA) systems |
US10846126B2 (en) * | 2016-12-28 | 2020-11-24 | Intel Corporation | Method, apparatus and system for handling non-posted memory write transactions in a fabric |
GB2567433B (en) * | 2017-10-10 | 2020-02-26 | Advanced Risc Mach Ltd | Checking lock variables for transactions in a system with transactional memory support |
US10514969B2 (en) * | 2018-01-09 | 2019-12-24 | Microsoft Technology Licensing, Llc | Bit-accurate-tracing analysis with applied memory region lifetimes |
US11620245B2 (en) * | 2021-05-09 | 2023-04-04 | Mellanox Technologies, Ltd. | Multi-socket network interface controller with consistent transaction ordering |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100332807A1 (en) * | 2009-06-26 | 2010-12-30 | Microsoft Corporation | Performing escape actions in transactions |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5291581A (en) * | 1987-07-01 | 1994-03-01 | Digital Equipment Corporation | Apparatus and method for synchronization of access to main memory signal groups in a multiprocessor data processing system |
US6055208A (en) * | 1998-06-05 | 2000-04-25 | Micron Technology, Inc. | Method and circuit for sending a signal in a semiconductor device during a setup time |
US6457065B1 (en) * | 1999-01-05 | 2002-09-24 | International Business Machines Corporation | Transaction-scoped replication for distributed object systems |
US7206805B1 (en) * | 1999-09-09 | 2007-04-17 | Oracle International Corporation | Asynchronous transcription object management system |
US6918053B1 (en) * | 2000-04-28 | 2005-07-12 | Microsoft Corporation | Compensation framework for long running transactions |
EP1182558A1 (en) * | 2000-08-21 | 2002-02-27 | Texas Instruments Incorporated | MME descriptor having big/little endian bit to control the transfer data between devices |
US6983395B2 (en) * | 2001-05-23 | 2006-01-03 | Hewlett-Packard Development Company, L.P. | Multi-agent cooperative transaction method and system |
US6985986B2 (en) * | 2001-06-01 | 2006-01-10 | Microchip Technology Incorporated | Variable cycle interrupt disabling |
US6735113B2 (en) * | 2002-10-15 | 2004-05-11 | T-Ram, Inc. | Circuit and method for implementing a write operation with TCCT-based memory cells |
US7478400B1 (en) * | 2003-12-31 | 2009-01-13 | Symantec Operating Corporation | Efficient distributed transaction protocol for a distributed file sharing system |
DE602005024514D1 (de) * | 2005-03-31 | 2010-12-16 | Texas Instruments Inc | Verfahren und System zum Vereiteln und Neutralisieren von Pufferüberläufangriffen |
US8180977B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory in out-of-order processors |
US8132158B2 (en) * | 2006-12-28 | 2012-03-06 | Cheng Wang | Mechanism for software transactional memory commit/abort in unmanaged runtime environment |
US9367465B2 (en) * | 2007-04-12 | 2016-06-14 | Hewlett Packard Enterprise Development Lp | Method and system for improving memory access performance |
US7899999B2 (en) * | 2007-06-27 | 2011-03-01 | Microsoft Corporation | Handling falsely doomed parents of nested transactions |
US8706982B2 (en) * | 2007-12-30 | 2014-04-22 | Intel Corporation | Mechanisms for strong atomicity in a transactional memory system |
US8533663B2 (en) * | 2008-05-12 | 2013-09-10 | Oracle America, Inc. | System and method for utilizing available best effort hardware mechanisms for supporting transactional memory |
KR20110044884A (ko) * | 2008-07-28 | 2011-05-02 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 가상화가능한 진보된 동기화 기능 |
US20100122073A1 (en) * | 2008-11-10 | 2010-05-13 | Ravi Narayanaswamy | Handling exceptions in software transactional memory systems |
US8473950B2 (en) * | 2009-06-23 | 2013-06-25 | Oracle America, Inc. | Parallel nested transactions |
US8973004B2 (en) * | 2009-06-26 | 2015-03-03 | Oracle America, Inc. | Transactional locking with read-write locks in transactional memory systems |
US9442737B2 (en) * | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US9348642B2 (en) * | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9436477B2 (en) * | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9244846B2 (en) * | 2012-07-06 | 2016-01-26 | International Business Machines Corporation | Ensuring causality of transactional storage accesses interacting with non-transactional storage accesses |
-
2013
- 2013-03-14 US US13/803,658 patent/US20140281236A1/en not_active Abandoned
-
2014
- 2014-02-14 JP JP2014026130A patent/JP2014194754A/ja active Pending
- 2014-02-17 GB GB1402776.7A patent/GB2512470B/en not_active Expired - Fee Related
- 2014-03-07 DE DE102014003399.6A patent/DE102014003399A1/de not_active Withdrawn
- 2014-03-11 KR KR1020140028430A patent/KR101574007B1/ko active IP Right Grant
- 2014-03-12 BR BR102014005697-1A patent/BR102014005697A2/pt not_active Application Discontinuation
- 2014-03-13 CN CN201410093028.4A patent/CN104050023B/zh active Active
-
2016
- 2016-05-06 JP JP2016093506A patent/JP2016157484A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100332807A1 (en) * | 2009-06-26 | 2010-12-30 | Microsoft Corporation | Performing escape actions in transactions |
Also Published As
Publication number | Publication date |
---|---|
GB201402776D0 (en) | 2014-04-02 |
BR102014005697A2 (pt) | 2018-02-27 |
JP2016157484A (ja) | 2016-09-01 |
KR20140113400A (ko) | 2014-09-24 |
CN104050023B (zh) | 2018-03-30 |
CN104050023A (zh) | 2014-09-17 |
JP2014194754A (ja) | 2014-10-09 |
GB2512470B (en) | 2015-06-03 |
GB2512470A (en) | 2014-10-01 |
DE102014003399A1 (de) | 2014-09-18 |
US20140281236A1 (en) | 2014-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101574007B1 (ko) | 트랜잭션 메모리를 구현하기 위한 시스템들 및 방법들 | |
US9870209B2 (en) | Instruction and logic for reducing data cache evictions in an out-of-order processor | |
US9495159B2 (en) | Two level re-order buffer | |
KR101655713B1 (ko) | 이동 제거 연산들에서의 플래그 트래킹을 위한 시스템들 및 방법들 | |
US9971599B2 (en) | Instruction and logic for support of code modification | |
US9569212B2 (en) | Instruction and logic for a memory ordering buffer | |
US10540178B2 (en) | Eliminating redundant stores using a protection designator and a clear designator | |
US9652236B2 (en) | Instruction and logic for non-blocking register reclamation | |
CN108701101B (zh) | 处理器系统管理中断事件的基于仲裁器的串行化 | |
US10007620B2 (en) | System and method for cache replacement using conservative set dueling | |
US10120686B2 (en) | Eliminating redundant store instructions from execution while maintaining total store order | |
EP3519949A2 (en) | System and method for load balancing in out-of-order clustered decoding | |
US10235177B2 (en) | Register reclamation | |
US20160283232A1 (en) | Instruction and Logic for Speculative Request Support for Prefetching | |
US10061587B2 (en) | Instruction and logic for bulk register reclamation | |
US9690582B2 (en) | Instruction and logic for cache-based speculative vectorization | |
US9524170B2 (en) | Instruction and logic for memory disambiguation in an out-of-order processor | |
US9965280B2 (en) | Instruction and logic for processor trace information for control flow integrity | |
WO2017168197A1 (en) | Apparatus and method for improving performance of inter-strand communications | |
EP3274815B1 (en) | Apparatus and method for inter-strand communication |
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 |