KR20160086820A - 메모리에 동시에 액세스하는 기법 - Google Patents

메모리에 동시에 액세스하는 기법 Download PDF

Info

Publication number
KR20160086820A
KR20160086820A KR1020167009643A KR20167009643A KR20160086820A KR 20160086820 A KR20160086820 A KR 20160086820A KR 1020167009643 A KR1020167009643 A KR 1020167009643A KR 20167009643 A KR20167009643 A KR 20167009643A KR 20160086820 A KR20160086820 A KR 20160086820A
Authority
KR
South Korea
Prior art keywords
transaction
read
conflict
write
processor
Prior art date
Application number
KR1020167009643A
Other languages
English (en)
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 KR20160086820A publication Critical patent/KR20160086820A/ko

Links

Images

Classifications

    • 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
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1615Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
    • 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/466Transaction processing
    • 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/466Transaction processing
    • G06F9/467Transactional 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

제1 트랜잭션이 제1 데이터에 대해 기입 동작을 실시해야 할 때, 제1 데이터의 판독 동작을 실시했거나 또는 제1 데이터의 판독 동작을 실시 예정인 제2 트랜잭션이 존재한다고 결정한 이후에, 제1 트랜잭션의 기입 동작과 제2 트랜잭션의 판독 동작 사이의 충돌을 나타내는 레코드(record)가 생성된다. 제2 트랜잭션의 처리가 수행된다. 이 처리가 완료된 이후에, 제2 트랜잭션이 제출(submitted)되고 레코드에 따라서 제1 트랜잭션이 통지된다. 제1 트랜잭션의 처리가 수행된다. 이 처리가 완료되고 제2 트랜잭션의 통지가 수신된 이후에, 제1 트랜잭션이 제출된다. 본원의 기술은 다중 코어 시스템에서 트랜잭션 메모리에 대한 동시 방문(concurrently visiting)을 개선하고, 충돌에 의해 초래되는 롤백(rollback)을 막아주며, 전체 시스템 성능을 개선한다.

Description

메모리에 동시에 액세스하는 기법{CONCURRENTLY ACCESSING MEMORY}
관련 특허 출원에 대한 교차 참조
본 출원은 발명의 명칭이 "Method and Device for Concurrently Accessing Memory"인 2013년 10월 18일자 중국 특허출원번호 제201310492402.3호를 우선권 주장하며, 본원에서는 그 내용 전체를 참조하고 있다.
기술분야
본원은 컴퓨터 기술에 관한 것으로, 더 구체적으로는 메모리를 동시에 액세스하는 방법 및 장치에 관한 것이다.
최근 몇 년간, 프로세서 제조사는 전력 소비와 온도가 제한되는 조건에서도 고성능 연산의 지속적인 성장을 유지하기 위해 노력하였기에 컴퓨터는 다중 코어의 아키텍처로 개발되었다. 다중 코어 아키텍처를 완전하게 활용하기 위해서 애플리케이션 프로그램은 복수의 스레드(threads)로 분할되는데, 이때 각각의 스레드는 단일의 중앙 처리 장치(CPU)에서 독립적으로 실행될 수 있다. 그러므로 애플리케이션 프로그램은 전체 동작 효율을 증강하도록 병렬로 실행될 수 있다. 이러한 프로시저 체계를 기반으로 하는 시스템은 데이터 처리에서 데이터의 동시성(data concurrency)과 데이터 무결성(data integrity)을 보장할 것을 요구하며, 그 결과로 스레드 사이에서 공유 영역을 직렬로 액세스하는 데 소정의 동시성 메커니즘이 요구된다.
스레드의 병렬 동작의 정도를 개선하기 위해 트랜잭션 메모리(transaction memory)가 도입된다. 트랜잭션 메모리는 공유 데이터를 액세스할 때 다중 코어의 스레드 사이에 기입-판독, 판독-기입 및 기입-기입의 충돌이 거의 없다고 가정하므로 다중 스레드는 시험적으로 병렬 실행되는 것이 허용된다. 어떤 충돌이 발견될 때, 애플리케이션 프로그램을 충돌 이전의 상태로 복원하도록 롤백 동작(rollback operation)이 수행된다. 따라서, 데이터 무결성에는 영향을 받지 않으면서 시스템의 성능과 확장성(expandability)이 개선된다.
트랜잭션 메모리 체계는 시스템 아키텍처의 확장성을 증강하기 위해 병렬 시스템에 널리 이용된다. 트랜잭션 메모리 기술은 IBM사의 블루진/큐(Blue Gene/Q)와 인텔사의 하스웰(Haswell)을 포함한 CPU의 아키텍처에 내장된다.
비록 트랜잭션 메모리 체계가 스레드의 병렬 동작 정도를 개선하더라도, 병렬 동작 정도의 개선과 함께 충돌의 가능성도 증가한다. 충돌이 존재할 때 롤백 동작이 수행되면 프로그램의 성능은 심각하게 손상되었을 것이다.
본 요약은 아래의 상세한 설명에 추가로 설명되는 개념들 중 엄선한 것을 단순화된 형태로 소개하기 위해 제공된다. 이 요약은 특허청구된 주제의 모든 핵심 특징 또는 필수 특징을 식별하려는 의도가 아니며, 이 요약 자체가 특허청구된 주제의 범주를 결정하는데 일조하는 것도 아니다. 일 예로 "기술"이라는 용어는 위의 내용과 본원 전반에서 허용되는 장치, 시스템, 방법 및/또는 컴퓨터 판독가능 명령어를 지칭할 수도 있다.
본원에 의해 해결될 기술적인 문제점은 다중 코어 시스템에서 트랜잭션 메모리를 액세스하는 동시성을 개선하고 충돌과 관련한 롤백 동작을 줄여서 전체 시스템 성능을 개선하는 것이다.
본원은 메모리를 동시에 액세스하는 예시의 방법을 제공한다.
제1 트랜잭션이 제1 데이터에 대해 기입 동작을 실시해야 할 때, 제1 데이터의 판독 동작을 실시했던(제1 데이터를 판독했던) 또는 제1 데이터의 판독 동작을 실시 예정인 제2 트랜잭션이 존재한다는 결정이 내려진 이후에, 제1 트랜잭션의 기입 동작과 제2 트랜잭션의 판독 동작 사이의 충돌을 나타내는 레코드(record)가 생성된다.
제2 트랜잭션의 처리가 수행된다. 이 처리가 완료된 이후, 제2 트랜잭션이 제출되고, 레코드에 따라 제1 트랜잭션이 통지된다. 제1 트랜잭션의 처리가 수행된다. 이 처리가 완료되고 제2 트랜잭션의 통지가 수신된 이후, 제1 트랜잭션이 제출된다.
예를 들어, 제1 트랜잭션의 기입 동작과 제2 트랜잭션의 판독 동작 사이의 충돌을 나타내는 레코드의 생성 단계는 다음 동작들을 포함할 수 있다.
제1 트랜잭션을 운용하는 제1 프로세서의 제1 판독 및 기입 충돌 검출 레지스터(first reading and writing conflict detection register)에서, 제2 트랜잭션을 운용하는 제2 프로세서에 대응하는 프로세서 플래그 비트(processor flag bit)가 세팅(set)되고, 동작 충돌 플래그 비트(operation conflict flag bit)가 기입 동작 충돌의 발생을 나타내는 값으로 세팅된다.
제2 프로세서의 제2 판독 및 기입 충돌 검출 레지스터에서, 제1 프로세서에 대응하는 프로세서 플래그 비트가 세팅되고, 동작 충돌 플래그 비트가 판독 동작 충돌의 발생을 나타내는 값으로 세팅된다.
예를 들어, 레코드에 따라 제1 트랜잭션을 통지하는 단계는 다음 동작들을 포함할 수 있다.
제2 판독 및 기입 충돌 검출 레지스터에서, 세팅된 프로세서 플래그 비트가 탐색된다. 세팅된 프로세서 플래그 비트가 제1 프로세서에 대응하는 것으로 결정된다. 제1 프로세서에서 운용되는 제1 트랜잭션이 통지된다.
예를 들어, 제1 트랜잭션의 처리를 수행하는 단계와, 상기 처리가 완료되고 제2 트랜잭션의 통지가 수신된 이후에 제1 트랜잭션을 제출하는 단계는 다음 동작들을 포함할 수 있다.
단계 A에서, 제1 트랜잭션의 처리가 수행된다. 이 처리가 완료된 이후에 단계 B에서 동작이 수행된다.
단계 B에서, 제1 판독 및 기입 충돌 검출 레지스터에서 동작 충돌 플래그 비트가 기입 동작 충돌의 발생을 나타내는 값으로 표시되었는지 결정된다. 만약 결과가 긍정이라면 단계 C에서 동작이 수행된다. 만약 동작 충돌 플래그 비트가 판독 동작 충돌의 발생을 나타내는 값으로 표시된다면 단계 E에서 동작이 수행된다.
단계 C에서, 제1 판독 및 기입 충돌 검출 레지스터에서 프로세서 플래그 비트 중 어떤 것도 세팅되지 않았는지 결정된다. 프로세서 플래그 비트 중 적어도 하나가 세팅되었다면 동작들은 대기(standby) 상태가 된다. 프로세서 플래그 비트 중 어떤 것도 세팅되지 않았다면 단계 E의 동작들이 수행된다.
단계 D에서, 제2 트랜잭션의 통지가 수신된 이후, 제1 판독 및 기입 충돌 검출 레지스터에서 제2 프로세서에 대응하는 프로세서 플래그 비트가 리셋(reset)된다. 동작은 단계 C로 복귀한다.
단계 E에서, 제1 트랜잭션이 제출된다.
예를 들어, 제1 데이터를 판독했거나 제1 데이터를 판독 예정인 제2 트랜잭션이 존재하는지 여부를 결정하는 단계 이후에, 예시의 방법은 추가로 다음 동작들을 포함할 수 있다.
만약 제1 트랜잭션의 처리 이전에 제2 트랜잭션이 제1 데이터의 판독 동작을 실시했다면, 제2 트랜잭션에 대응하는 제1 데이터의 캐시 라인(cache line)이 제1 트랜잭션에 대응하는 프라이빗 인비저블 캐시(private invisible cache)에 복사된다.
만약 제2 트랜잭션의 처리 이전에 제2 트랜잭션이 제1 데이터의 판독 동작을 실시 예정이라면, 제1 트랜잭션에 대응하는 캐시 라인으로부터, 기입 동작이 아직 수행되지 않은 제1 데이터가 제2 트랜잭션에 대응하는 캐시로 복사된다.
본원은 메모리에 동시에 액세스하는 예시의 장치도 제공한다. 이 장치는 캐시 관리 유닛과 제1 처리 유닛과 제2 처리 유닛을 포함할 수 있다.
캐시 관리 유닛은, 제1 트랜잭션이 제1 데이터에 대해 기입 동작을 실시해야 할 때, 만약에 제1 데이터의 판독 동작을 실시했거나 또는 제1 데이터의 판독 동작을 실시할 예정인 제2 트랜잭션이 존재한다면, 제1 트랜잭션의 기입 동작과 제2 트랜잭션의 판독 동작 사이의 충돌을 나타내는 레코드를 생성한다.
제1 처리 유닛은 제1 트랜잭션의 처리를 수행하고, 이 처리가 완료되고 제2 트랜잭션의 통지가 수신된 이후에 제1 트랜잭션을 제출한다.
제2 처리 유닛은 제2 트랜잭션의 처리를 수행하고, 이 처리가 완료된 이후에 제2 트랜잭션을 제출하고 레코드에 따라 제1 트랜잭션을 통지한다.
대안으로서, 장치는 제1 처리 유닛에 대응하는 제1 판독 및 기입 충돌 검출 레지스터와, 제2 처리 유닛에 대응하는 제2 판독 및 기입 충돌 검출 레지스터를 포함할 수 있다.
대안으로서, 캐시 관리 유닛이 제1 트랜잭션의 기입 동작과 제2 트랜잭션의 판독 동작 사이의 충돌을 나타내는 레코드를 생성하는 처리는 다음 동작들을 포함할 수 있다. 캐시 관리 유닛은 제1 판독 및 기입 충돌 검출 레지스터에서 제2 처리 유닛에 대응하는 프로세서 플래그 비트를 세팅하고, 동작 충돌 플래그 비트를 기입 동작 충돌의 발생을 나타내는 값으로 세팅한다. 캐시 관리 유닛은 제2 판독 및 기입 충돌 검출 레지스터에서 제1 처리 유닛에 대응하는 프로세서 플래그 비트를 세팅하고, 동작 충돌 플래그 비트를 판독 동작 충돌의 발생을 나타내는 값으로 세팅한다.
대안으로서, 제2 처리 유닛이 레코드에 따라 제1 트랜잭션을 통지하는 처리는 다음의 동작들을 포함할 수 있다. 제2 처리 유닛은 제2 판독 및 기입 충돌 검출 레지스터에서 세팅된 프로세서 플래그 비트를 탐색하고, 이 세팅된 프로세서 플래그 비트가 제1 처리 유닛에 대응함을 결정하고, 제1 처리 유닛에서 운용되는 제1 트랜잭션을 통지한다.
대안으로서, 제1 처리 유닛은 제1 결정 모듈, 제2 결정 모듈, 수행 모듈(performing module) 및 클리어링 모듈(clearing module)을 포함할 수 있다. 수행 모듈은 제1 트랜잭션의 처리를 수행하고, 이 처리가 완료된 이후에 제1 결정 모듈에게 결정 동작을 실행할 것을 명령한다.
클리어링 모듈은 제2 트랜잭션의 통지가 수신된 이후에 제1 판독 및 기입 충돌 검출 레지스터에서 제2 처리 유닛에 대응하는 프로세서 플래그 비트를 리셋하고, 제2 결정 모듈에게 결정 동작을 실행할 것을 명령한다.
제1 결정 모듈은 제1 판독 및 기입 충돌 검출 레지스터의 동작 충돌 플래그 비트가 기입 동작 충돌의 발생을 나타내는 값인지 결정한다. 만약 이 결정 결과가 긍정이면, 제1 결정 모듈은 결정을 관련해 제2 결정 모듈에게 명령한다. 만약 그 값이 판독 동작 충돌의 발생을 나타낸다면, 제1 결정 모듈은 제출 모듈에게 제1 트랜잭션을 제출할 것을 명령한다.
제2 결정 모듈은 제1 판독 및 기입 충돌 검출 레지스터에서 프로세서 플래그 비트 중 어떤 것도 세팅되지 않았는지를 결정한다. 만약 결정 결과가 긍정이라면, 제2 결정 모듈은 제출 모듈에게 제1 트랜잭션을 제출할 것을 명령한다.
대안으로서, 캐시 관리 유닛은, 제1 데이터의 판독 동작이 제2 트랜잭션에서 발생되었음이 결정될 때, 제1 처리 유닛이 제1 트랜잭션을 수행하기 전에, 제2 트랜잭션에 대응하는 제1 데이터의 캐시 라인을 제1 트랜잭션에 대응하는 프라이빗 인비저블 캐시로 복사한다.
만약 제2 처리 유닛이 제2 트랜잭션의 처리를 수행하기 전에 캐시 관리 유닛이 제1 데이터의 판독 동작이 제2 트랜잭션에서 발생될 예정임을 결정한다면, 제1 트랜잭션에 대응하는 캐시 라인으로부터, 기입 동작이 수행되지 않은 제1 데이터를 제2 트랜잭션에 대응하는 캐시로 복사한다.
본 기술은 하나의 스레드가 데이터를 기입하는 동안에 다른 코어가 동시에 동일 데이터를 판독할 수 있게 한다. 본 기술은 다중 코어의 병렬 판독 동작을 개선하고, 데이터 무결성을 유지하는 전제 조건을 기반으로 하여 판독 및 기입 동작 충돌과 기입-판독 동작 충돌으로 인한 트랜잭션 메모리를 롤백하는 시간을 없애준다. 결과적으로, 본 기술은 시스템의 정확도와 처리율을 개선하고, 이로써 다중 코어 시스템의 전체 성능과 확장성을 개선한다. 본원의 다른 예시적인 실시예에서는, 충돌의 유형과 대상을 효과적으로 기록하기 위한 트랜잭션 충돌 레지스터가 제공되고, 트랜잭션의 제출 시퀀스가 이 트랜잭션 충돌 레지스터에 의해 보장된다. 그러나 본원에 의해 구현되는 모든 제품이 반드시 전술한 것과 같은 이점을 모두 가질 필요는 없음을 유의해야 한다.
도 1은 본원의 제1 예시적인 실시예에 따라 메모리를 동시에 액세스하는 예시적인 방법을 예시한 흐름도이다.
도 2는 본원의 제1 예시적인 실시예에 따른 예시적인 판독 및 기입 동작 충돌 레지스터를 예시하는 개략도이다.
도 3은 본원의 제1 예시적인 실시예에 따른 도 1의 예시적인 단계(106)를 예시하는 흐름도이다.
도 4는 본원의 제1 실시예에서 첫 번째 예를 예시하는 개략적인 흐름도이다.
도 5는 본원의 제1 실시예에서 두 번째 예를 예시하는 개략적인 흐름도이다.
도 6은 본원의 예시적인 장치를 예시하는 도면이다.
본원의 세부사항은 첨부 도면들과 예시적인 실시예들을 참조하여 상세히 설명될 것이다.
본원의 실시예들과 그 특징들은 조합될 수도 있으며, 이러한 조합은 여전히 본원의 범주내에 있음을 유의해야 한다. 또한, 논리적 시퀀스가 흐름도 또는 도면에 도시되었더라도, 도시된 것과 상이한 일부 시퀀스가 수행될 수도 있다.
전형적인 구성에서, 다중 코어 시스템은 복수의 중앙 처리 장치(CPU), 하나 이상의 입력/출력 인터페이스, 네트워크 인터페이스 및 메모리를 포함할 수 있다.
메모리는 휘발성 메모리나, RAM 및/또는 예컨대 ROM이나 플래시 RAM 같은 비휘발성 메모리를 포함한 하나 이상의 형태의 컴퓨터 판독가능 매체일 수 있다. 메모리는 컴퓨터 판독가능 매체의 예시적인 일 예이다.
컴퓨터 판독가능 매체는 임의의 방법 또는 체계에 의해 정보 저장의 목적을 달성할 수 있는 영구적인 매체, 비 영구적인 매체, 이동식 매체 및 고정식 매체를 포함한다. 정보는 컴퓨터 판독가능 명령어, 데이터 구조, 처리 모듈 또는 임의의 다른 데이터일 수 있다. 컴퓨터 판독가능 매체의 예로서, 제한하려는 것은 아니지만, PRAM(phase-change RAM), SRAM(static random access memory), DRAM(dynamic random access memory), 임의의 다른 유형의 RAM, ROM, EEPROM(electrically erasable programmable ROM), 다른 기술의 플래시 메모리나 메모리, CD-ROM(compact disc ROM), DVD(digital versatile disc)이나 다른 광학 저장장치, 자기 카세트, 자기 디스크 저장장치 또는 다른 자기 테이프 저장장치를 들 수 있으며, 또는 컴퓨터 장치에 의해 액세스 가능한 정보를 저장하는데 이용될 수 있는 임의의 다른 비 전송 매체(non-transmission medium)도 가능하다. 본원의 정의에 따르면, 컴퓨터 판독가능 매체는 예컨대 변조된 데이터 신호 및 반송파 같은 일시적 매체(transitory media)는 포함하지 않는다.
개발 이후 거의 20년이 지나서 트랜잭션 메모리는 소프트웨어 또는 하드웨어로 구현될 수 있다. 트랜잭션 메모리의 소프트웨어 구현은 매우 낮은 효율을 가지고, 트랜잭션 메모리의 하드웨어 구현은 메모리의 활용도를 상당히 개선한다. 그러므로 본원은 주로 하드웨어 기반의 트랜잭션 메모리에 초점을 맞춘다.
먼저, 하드웨어 기반 트랜잭션 메모리의 작동원리가 아래에 설명된다. 트랜잭션 메모리는 예컨대 "Transaction_start" 및 "Transaction_end"처럼 트랜잭션 메모리 영역의 시작과 종료를 CPU에 알리는데 코드를 이용한다. 트랜잭션을 실행하는 영역은 코드 "Transaction_start"와 "Transaction_end" 사이의 중간 섹션이다. 일단 실행이 종료하면, "Transaction_end"의 명령어가 CPU에게 모든 수정된 데이터를 모듈러 형태로 제출하라고 요청할 것이다(다시 말해서, 이 제출 처리는 인터럽트(interrupted)되지 않거나 또는 방문(visited)되지 않을 것이다).
트랜잭션 처리 동안, 판독 또는 기입된 임의의 메모리 영역이 기입-판독 동작 충돌, 판독 및 기입 동작 충돌 및 기입-기입 동작 충돌을 방지하기 위해서 감시될 것이다. 예를 들어, 각각의 캐시 라인은 기입 동작과 판독 동작의 발생을 각기 나타내는 기입-비트 및 판독-비트를 포함하는 두 비트와 함께 제공된다. 예를 들어, 데이터 A의 판독 동작이 제1 트랜잭션 Transaction0에서 발생할 때, 데이터 A에 대응하는 캐시 라인의 판독 비트가 판독 동작의 발생을 나타내는 1로 세팅된다. (판독 동작의 발생은 Transaction0에 대응하는 캐시에서 발생했지만 Transaction0이 아직 제출되지는 않았음을 의미하며, Transaction0이 제출된 이후에는 판독 비트가 리셋되는데, 즉, 0으로 세팅된다.) 만약 Transaction0이 데이터 A를 다시 기입한 이후라면, 데이터 A에 대응하는 캐시 라인의 데이터가 예컨대 제1-레벨 캐시 같은 프라이빗 인비저블 캐시 영역에 복사되어 갱신 동작을 수행한다. 이 동안에 원래 데이터 A에 대응하는 캐시 라인의 기입-비트와 판독-비트가 각각 "1"과 "0"으로 설정된다.
제1 스레드 P0가 CPU0를 이용해 제1 트랜잭션 Transaction0의 영역으로 진입하여 캐시 라인의 데이터(예컨대, 64바이트)를 판독 또는 기입할 때, 캐시 라인의 대응하는 기입 비트 또는 판독 비트가 세팅될 것이다. 한편, 제2 스레드 P1가 CPU1를 이용해 제1 트랜잭션 Transaction0 또는 임의의 다른 트랜잭션의 영역으로 진입하여 이전에 기입 또는 판독되었던 동일한 캐시 라인을 판독 또는 기입할 때, 이러한 동작 상황은 제1 프로세서 CPU0에 의해 포착될 것이다. 따라서 제1 스레드 P0 또는 제2 스레드 P1의 롤백 동작이 그 결과 실행될 것이다. 더 나아가, 롤백 동작은 기입-기입 동작 충돌에서도 발생하는데, 이 충돌은 특히 공유 메모리(하나 이상의 캐시 라인)를 판독 또는 기입하는 동작이 빈번할 때 CPU의 성능을 떨어뜨릴 것이다. 다시 말해서, 동시 동작이 수행될 수 없고 중복 롤백 동작이 발생하여 심각한 성능 저하가 일어난다.
데이터 충돌에서, 트랜잭션 영역에 진입하는 초기 상태로 롤백하기 위해서, 기입 동작 이전에 원래 데이터가 현재 트랜잭션 메모리내의 임의의 메모리로 복사된다. 예를 들어, 기입 동작이 실시 예정인 캐시 라인에서 기입 동작이 프라이빗 인비저블 캐시 예컨대 제1-레벨 캐시로 복사될 수 있다. 기입 동작은 캐시 라인을 프라이빗 인비저블 캐시에 기입하고 갱신한다. 그 결과, 일단 충돌이 발생하면, 프라이빗 인비저블 캐시 즉 제1-레벨 캐시의 갱신된 데이터(캐시 라인의 단위로)는 폐기되고, 프로시저는 트랜잭션의 진입 포인트로부터 다시 동작할 것이다. 만약 트랜잭션이 성공적으로 완료되면, 프라이빗 인비저블 캐시 즉, 제1-레벨 캐시에서 가장 최근에 갱신된 기입 데이터는 원래 데이터로 대체될 것이다.
제1 예시적인 실시예가 아래에 설명된다. 본원은 메모리를 동시에 액세스하는 예시적인 방법을 제공한다.
도 1에 도시된 것처럼, 단계(102)에서, 제1 트랜잭션이 제1 데이터에 대해 기입 동작의 실시를 요구할 때, 만약에 제1 데이터의 판독 동작을 실시했거나 제1 데이터의 판독 동작을 실시예정인 제2 트랜잭션이 존재한다면, 제1 트랜잭션의 기입 동작과 제2 트랜잭션의 판독 동작 사이의 충돌을 나타내는 레코드가 생성된다.
단계(104)에서, 제2 트랜잭션의 처리가 수행된다. 이 처리가 완료된 이후, 제2 트랜잭션이 제출되고, 제1 트랜잭션은 레코드에 따라 통지된다.
단계(106)에서, 제1 트랜잭션의 처리 수행된다. 이 처리가 완료되고 제2 트랜잭션의 통지가 수신된 이후, 제1 트랜잭션이 제출된다.
제1 트랜잭션의 처리를 수행하는 단계와 제2 트랜잭션의 처리를 수행하는 단계는 어떤 특정한 시퀀스없이 발생할 수도 있고 병렬로 발생할 수도 있다. "제2 트랜잭션이 판독 동작을 실시했다"는 말은 제2 트랜잭션에 대응하는 캐시에서 데이터가 판독되었지만 아직 제출되지는 않았음을 말한다.
본 기술은 제출 시퀀스를 구현하고, 충돌이 발생할 때 이 제출 시퀀스의 완료를 보장한다. 본 기술은 트랜잭션이 반드시 판독 동작 및 기입 동작의 시퀀스에 따라서 제출되게 하여, 판독 동작이 적용 예정인 데이터가 판독된 판독 및 기입 동작 충돌 상황과, 기입 동작이 적용 예정인 데이터가 판독될 예정인 기입-판독 동작 충돌 상황에서 롤백 동작을 회피하게 한다. 그러므로 본 기술은 판독 동작의 동시성을 개선하고 롤백 동작의 발생을 줄여서 다중 코어 시스템의 전체 성능을 개선한다.
본원의 예시적인 실시예에서, 다중 코어 시스템의 각각의 프로세서에는 도 2에 도시된 포맷을 갖는 판독 및 기입 충돌 검출 레지스터(이후부터 T-CCR로 지칭함)가 추가로 제공될 수 있다. 도 2의 예시의 포맷은 다중 코어 시스템의 각각의 프로세서에 각기 대응하는 프로세서 플래그 비트 C0, C1,...Cn와, 프로세서가 실행중인 현재 트랜잭션에서 판독 동작 충돌 또는 기입 동작 충돌의 발생을 나타내는 동작 충돌 플래그 비트 Reader/Writer를 포함한다. 단일 트랜잭션에서는, 판독 동작 충돌 및 기입 동작 충돌이 동시에 발생하는 것이 허용되지 않는다. 만약에 이들이 동시에 발생하면, 롤백 동작이 요청된다.
예시적인 실시예에서, 제1 트랜잭션의 기입 동작과 제2 트랜잭션의 판독 동작 사이의 충돌을 나타내는 레코드의 생성 단계는 다음 동작들을 포함할 수 있다.
제1 트랜잭션을 운용하는 제1 프로세서의 제1 판독 및 기입 충돌 검출 레지스터에서, 제2 트랜잭션을 운용하는 제2 프로세서에 대응하는 프로세서 플래그 비트가 세팅되고, 동작 충돌 플래그 비트는 기입 동작 충돌의 발생을 나타내는 값으로 세팅된다.
제2 프로세서의 제2 판독 및 기입 충돌 검출 레지스터에서, 제1 프로세서에 대응하는 프로세서 플래그 비트가 세팅되고, 동작 충돌 플래그 비트는 판독 동작 충돌의 발생을 나타내는 값으로 세팅된다.
예를 들어, 레코드에 따라 제1 트랜잭션을 통지하는 단계는 다음 동작들을 포함할 수 있다.
제2 판독 및 기입 충돌 검출 레지스터에서, 세팅된 프로세서 플래그 비트가 탐색된다. 세팅된 프로세서 플래그 비트가 제1 프로세서에 대응하는 것으로 결정된다. 제1 프로세서에서 운용되는 제1 트랜잭션이 통지된다.
예를 들어, 판독 및 기입 충돌(예컨대 제1 프로세서 CPU0에서 운용되는 Transaction0이 기입 예정인 캐시 라인과 제2 프로세서 CPU1에서 운용되는 Transaction1에 의해 판독된 캐시 라인 사이의 충돌)이 발생할 때, 제1 프로세서 CPU0의 T-CCR0에서, 제2 프로세서 CPU1에 대응하는 프로세서 플래그 비트 C1이 세팅된다. 이러는 동안에, 대응하는 Reader/Writer가 제1 프로세서 CPU0상에서 현재 운용중인 Transaction0에 대한 기입 동작 충돌의 발생을 나타내는 "1"로 세팅된다. 더 나아가, 제2 프로세서 CPU1의 T-CCR1에서, 제1 프로세서 CPU0에 대응하는 프로세서 플래그 비트 C0이 리셋된다. 이러는 동안에, 대응하는 Reader/Writer가 제2 프로세서 CPU1상에서 현재 운용중인 Transaction1에 대한 판독 동작 충돌의 발생을 나타내는 "0"으로 세팅된다. 판독/기입 동작 충돌을 나타내는 값들은 교체 가능하다.
판독 동작을 수행하는 제2 트랜잭션과 관련하여(제2 트랜잭션을 실행중인 제2 프로세서의 Reader/Writer T-CCR1이 "0"으로 세팅되고, 다른 프로세서에 대응하는 프로세서 플래그 비트 C0~Cn 중 어떤 것도 설정되지 않음), 특정 환경으로 인해 롤백이 발생할지라도, 제2 프로세서의 T-CCR1에서 대응하는 충돌 비트(즉, 또 다른 프로세서에 대응하는 C0~Cn에서 설정된 프로세서 플래그 비트로, 이 예에서는 C0임)에 따라서 이 충돌 비트에 대응하는 프로세서의 T-CCR에서 제2 프로세서에 대응하는 프로세서 플래그 비트(즉, 이 예에서는 T-CCR0에서 프로세서 플래그 비트 C1)가 소거된다.
예를 들어, 단계(106)은 다음 동작들을 포함할 수 있다.
단계(302)에서, 제1 트랜잭션의 처리가 수행된다. 이 처리가 완료된 이후에 단계(304)에서 동작이 수행된다.
단계(304)에서, 제1 판독 및 기입 충돌 검출 레지스터에서 동작 충돌 플래그 비트가 기입 동작 충돌의 발생을 나타내는 값으로 표시되었는지 결정된다. 만약 결과가 긍정이라면 단계(306)에서 동작이 수행된다. 만약 동작 충돌 플래그 비트가 판독 동작 충돌의 발생을 나타내는 값으로 표시된다면 단계(310)에서 동작이 수행된다.
단계(306)에서, 제1 판독 및 기입 충돌 검출 레지스터에서 프로세서 플래그 비트 중 하나도 세팅되지 않았는지 결정된다. 프로세서 플래그 비트 중 적어도 하나가 세팅되었다면 동작들은 대기 상태가 된다. 프로세서 플래그 비트 중 하나도 세팅되지 않았다면 단계(310)에서 동작들이 수행된다.
단계(308)에서, 제2 트랜잭션의 통지가 수신된 이후, 제1 판독 및 기입 충돌 검출 레지스터에서 제2 프로세서에 대응하는 프로세서 플래그 비트가 리셋된다. 동작은 단계(306)로 복귀한다.
단계(310)에서, 제1 트랜잭션이 제출된다.
예를 들어, 하나 이상의 제2 트랜잭션이 존재할 수도 있다. 일 예로, 제1 데이터의 판독 동작을 실시했거나(판독했거나) 또는 제1 데이터의 판독 동작을 실시 예정인 두 개의 트랜잭션이 존재한다. 선택적으로, 하나의 트랜잭션은 제1 데이터의 판독 동작을 실시했고, 다른 트랜잭션은 제1 데이터의 판독 동작을 실시 예정이다. 이 상황에서, 제1 판독 및 기입 동작 충돌 레지스터의 대응하는 프로세서 플래그 비트는 세팅된다. Reader/Writer는 기입 동작 충돌을 나타내는 값으로 세팅된다. 제1 데이터를 판독한 또는 제1 데이터를 판독 예정인 모든 트랜잭션이 제출된 이후에(제1 판독 및 기입 동작 충돌 레지스터의 프로세서 플래그 비트가 모두 리섹셋되었음), 제1 트랜잭션이 제출된다.
예를 들어, 제1 데이터를 판독한 또는 제1 데이터를 판독 예정인 제2 트랜잭션이 존재하는지 결정하는 단계 이후에, 예시의 방법은 다음 동작들을 더 포함할 수도 있다.
만약 제1 트랜잭션의 처리 이전에 제2 트랜잭션이 제1 데이터의 판독 동작을 실시했다면, 제2 트랜잭션에 대응하는 제1 데이터의 캐시 라인이 제1 트랜잭션에 대응하는 프라이빗 인비저블 캐시에 복사된다.
만약 제2 트랜잭션의 처리 이전에 제2 트랜잭션이 제1 데이터의 판독 동작을 실시 예정이라면, 제1 트랜잭션에 대응하는 캐시 라인으로부터, 기입 동작이 아직 수행되지 않은 제1 데이터가 제2 트랜잭션에 대응하는 캐시로 복사된다.
롤백이 발생할 때 데이터를 복원하기 위해서, 트랜잭션은 기입 동작 이전에 복사된다. 예시적인 실시예에서는, 복사된 콘텐츠를 동시에 판독하는데 이러한 기입 이전의 복사 특징을 활용하여, 전체적인 동시성 정도를 개선하고 충돌의 발생을 줄여주며 성능도 개선한다.
다음은 예시적인 실시예를 예시하는 두 가지 예이다.
첫 번째 예에서는 판독 및 기입 동작 충돌을 줄이기 위해 제출이 연기되며, 이것은 단계(402) 내지 단계(414)의 동작을 포함하는 도 4에 도시된다.
단계(402)에서, 제1 트랜잭션 Transaction0이 제1 프로세서 CPU0을 통해 실행되고, 데이터 A를 기입할 준비가 되도록 제1 프로세서 CPU0의 T-CCR0이 소거된다.
단계(404)에서, 본 기술은 데이터 A가 다른 트랜잭션에 의해 판독되었는지(데이터 A에 대응하는 캐시 라인의 판독 비트가 세팅되었는지)를 질의(inquire)한다. 판독 동작이 발생하지 않았다면 동작은 단계(408)로 진행하고 데이터 A가 판독되었다면 단계(406)로 진행한다.
단계(406)에서, 만약 데이터 A가 제2 트랜잭션 Transaction1에 의해 판독되었다면(데이터 A에 대응하는 캐시 라인의 판독 비트가 세팅되었다면), 본 기술은 T-CCR0와 T-CCR1를 세팅한다. 제2 트랜잭션 Transaction1을 운용하는 제2 프로세서 CPU1의 T-CCR1에서, 제1 프로세서 CPU0에 대응하는 프로세서 플래그 비트 C0은 "1"로 세팅되고, 동작 플래그 비트 Reader/Writer는 판독 동작 충돌의 발생을 나타내는 "0"의 값으로 세팅된다. 캐시 라인은 갱신을 위해 제1 트랜잭션 Transaction0에 대응하는 프라이빗 인비저블 캐시로 복사된다. 제1 트랜잭션 Transaction0을 운용하는 제1 프로세서 CPU0의 T-CCR0에서, 제2 프로세서 CPU1에 대응하는 프로세서 플래그 비트 C1은 "1"로 세팅되고, 동작 플래그 비트 Reader/Writer는 기입 동작 충돌의 발생을 나타내는 "1"의 값으로 세팅된다.
단계(408)에서, 제1 트랜잭션 Transaction0은 완료될 때까지 트랜잭션 처리를 수행한다.
단계(410)에서, 본 기술은 임의의 다른 트랜잭션의 제출을 대기해야 하는지 결정한다.
예를 들어, 본 기술은 제1 트랜잭션 Transaction0의 T-CCR0에서 프로세서 플래그 비트(C1~Cn) 중 어떤 것도 세팅되지 않았는지 결정할 것이다. 만약 프로세서 플래그 비트 중 어떤 것도 세팅되지 않았다면, 이것은 대기 없이 정상적인 제출을 수행할 것을 나타내고, 단계(414)에서 동작이 수행된다.
만약 프로세서 플래그 비트 중 적어도 하나가 ("0"이 아닌 값으로) 세팅되고 T-CCR0의 Reader/Writer가 "1"이라면, 이것은 제2 트랜잭션 Transaction1이 데이터 A를 이용중이고 따라서 제2 트랜잭션 Transaction1의 제출을 대기해야 함을 나타낸다. 단계(412)에서 동작이 수행된다.
단계(412)에서, 제2 트랜잭션 Transaction1이 제출될 때, T-CCR1에서 "1"의 값을 갖는 프로세서 플래그 비트에 대응하는 프로세서상에서 운용되는 트랜잭션이 통지된다(이 예에서, 프로세서 플래그 비트 C0가 "1"이므로 본 기술은 제1 트랜잭션 Transaction0을 통지한다). 이 통지에 따라서, 제2 트랜잭션 Transaction1이 제출될 때, 제2 프로세서에 대응하는 프로세서 플래그 비트 C1는 소거된다. 동작은 단계(410)로 진행한다.
단계(412)에서 동작이 제1 트랜잭션 Transaction0에 의해 실시되는 처리의 완료 이전에 수행되므로 제1 트랜잭션 Transaction0은 대기 없이 곧장 제출될 수 있다.
단계(414)에서, 제1 트랜잭션 Transaction0이 제출된다.
두 번째 예에서는 기입 및 판독 동작 충돌(기입 예정인 데이터가 다른 트랜잭션에 의해 판독 예정임)을 줄이기 위해 제출이 연기되며, 이것은 단계(502) 내지 단계(514)의 동작을 포함하는 도 5에 도시된다.
단계(502)에서, 제1 트랜잭션 Transaction0이 제1 프로세서 CPU0을 통해 실행되고, 데이터 A를 기입할 준비가 되도록 제1 프로세서 CPU0의 T-CCR0이 소거된다.
단계(504)에서, 본 기술은 데이터 A를 판독해야 하는 임의의 다른 트랜잭션이 존재하는지 결정한다. 만약 데이터 A를 판독해야 하는 트랜잭션이 존재하지 않는다면, 동작은 단계(508)로 진행한다. 만약 데이터 A를 판독해야 하는 제2 트랜잭션 Transaction1이 존재한다면, 동작은 단계(506)로 진행한다.
단계(506)에서, T-CCR0에서 제2 프로세서 CPU1에 대응하는 프로세서 플래그 비트 C1은 "1"로 세팅되고, Reader/Writer는 "1"로 세팅된다. 원래 데이터 A(기입되지 않은 데이터 A)에 대응하는 제1 트랜잭션 Transaction0에의 캐시 라인은 제2 트랜잭션 Transaction1내의 캐시(또는 프라이빗 캐시)로 복사된다. T-CCR1에서 제2 프로세서 CPU1에 대응하는 프로세서 플래그 비트 C1는 "1"로 세팅되고, Reader/Writer는 "0"로 세팅된다.
단계(508)에서, 제1 트랜잭션 Transaction0은 완료될 때까지 트랜잭션 처리를 수행한다.
단계(510)에서, 본 기술은 임의의 다른 트랜잭션의 제출을 대기해야 하는지 결정한다.
예를 들어, 본 기술은 제1 트랜잭션 Transaction0의 T-CCR0에서 프로세서 플래그 비트(C1~Cn) 중 어떤 것도 세팅되지 않았는지 결정할 것이다. 만약 프로세서 플래그 비트 중 어떤 것도 세팅되지 않았다면, 이것은 대기 없이 정상적인 제출을 수행할 것을 나타내고, 단계(514)에서 동작이 수행된다.
만약 프로세서 플래그 비트 중 적어도 하나가 ("0"이 아닌 값으로) 세팅되고 T-CCR0의 Reader/Writer가 "1"이라면, 이것은 제2 트랜잭션 Transaction1이 데이터 A를 이용중이고 따라서 제2 트랜잭션 Transaction1의 제출을 대기해야 함을 나타낸다. 단계(512)에서 동작이 수행된다.
단계(512)에서, 제2 트랜잭션 Transaction1이 제출될 때, T-CCR1에서 "1"의 값을 갖는 프로세서 플래그 비트에 대응하는 프로세서상에서 운용되는 트랜잭션이 통지된다(이 예에서, 프로세서 플래그 비트 C0가 "1"이므로 본 기술은 제1 트랜잭션 Transaction0을 통지한다). 이 통지에 따라서, 제2 트랜잭션 Transaction1이 제출될 때, 제2 프로세서에 대응하는 프로세서 플래그 비트 C1는 소거된다. 동작은 단계(510)로 진행한다.
단계(512)에서 동작이 제1 트랜잭션 Transaction0에 의해 실시되는 처리의 완료 이전에 수행되므로 제1 트랜잭션 Transaction0은 대기 없이 곧장 제출될 수 있다.
단계(514)에서, 제1 트랜잭션 Transaction0이 제출된다.
예시적인 실시예에서, 제1 트랜잭션 Transaction0이 다른 트랜잭션에 의해 기입된 데이터를 판독해야 할 때, Reader/Writer가 제1 트랜잭션 Transaction0의 기입 동작과 다른 트랜잭션의 판독 동작 사이에 충돌이 있음을 나타내는 "1"이므로, Transaction0 또는 다른 트랜잭션이 롤백되어서 교착상태(deadlock)를 막아야만 한다. (예를 들어, 다른 트랜잭션이 제2 트랜잭션 Transaction1일 때, 데이터를 기입하는 트랜잭션은 데이터를 판독하는 트랜잭션의 제출을 대기해야만 하므로, 제1 트랜잭션과 제2 트랜잭션은 모두 제출을 위해 서로 대기해야만 한다. 제1 트랜잭션과 제2 트랜잭션은 서로의 제출을 대기해야 하고, 따라서 트랜잭션 중 어떤 것도 제출될 수 없다.) 대응하는 T-CCR내의 프로세서 플래그 비트는 롤백 동작에서 소거될 것이다.
본원은 메모리를 동시에 액세스하는 예시의 장치(600)를 제공한다. 장치(600)는 캐시 관리 유닛(602), 제1 처리 유닛(604) 및 제2 처리 유닛(606)을 포함할 수 있다.
제1 트랜잭션이 제1 데이터에 대해 기입 동작을 실시해야만 할 때, 만약에 제1 데이터의 판독 동작을 실시했거나 또는 제1 데이터의 판독 동작을 실시 예정인 제2 트랜잭션이 존재한다면, 캐시 관리 유닛(602)은 제1 트랜잭션의 기입 동작과 제2 트랜잭션의 판독 동작 사이의 충돌을 나타내는 레코드를 생성한다.
제1 처리 유닛(604)은 제1 트랜잭션의 처리를 수행하고, 이 처리가 완료되고 제2 트랜잭션의 통지가 수신된 이후에 제1 트랜잭션을 제출한다.
제2 처리 유닛(606)은 제2 트랜잭션의 처리를 수행하고, 이 처리가 완료된 이후에 제2 트랜잭션을 제출하고 레코드에 따라 제1 트랜잭션을 통지한다.
예를 들어, 예시의 장치는 제1 처리 유닛에 대응하는 제1 판독 및 기입 충돌 검출 레지스터(도 6에 도시되지 않음)와, 제2 처리 유닛에 대응하는 제2 판독 및 기입 충돌 검출 레지스터(도 6에 도시되지 않음)를 포함할 수 있다.
예를 들어, 캐시 관리 유닛(602)이 제1 트랜잭션의 기입 동작과 제2 트랜잭션의 판독 동작 사이의 충돌을 나타내는 레코드를 생성하는 처리는 다음 동작들을 포함할 수 있다. 캐시 관리 유닛(602)은 제1 판독 및 기입 충돌 검출 레지스터에서 제2 처리 유닛에 대응하는 프로세서 플래그 비트를 세팅하고, 동작 충돌 플래그 비트를 기입 동작 충돌의 발생을 나타내는 값으로 세팅한다. 캐시 관리 유닛(602)은 제2 판독 및 기입 충돌 검출 레지스터에서 제1 처리 유닛에 대응하는 프로세서 플래그 비트를 세팅하고, 동작 충돌 플래그 비트를 판독 동작 충돌의 발생을 나타내는 값으로 세팅한다.
예를 들어, 제2 처리 유닛(606)이 레코드에 따라 제1 트랜잭션을 통지하는 처리는 다음의 동작들을 포함할 수 있다. 제2 처리 유닛(606)은 제2 판독 및 기입 충돌 검출 레지스터에서 세팅된 프로세서 플래그 비트를 탐색하고, 이 세팅된 프로세서 플래그 비트가 제1 처리 유닛에 대응함을 결정하고, 제1 처리 유닛에서 운용되는 제1 트랜잭션을 통지한다.
예를 들어, 제1 처리 유닛(604)은 제1 결정 모듈, 제2 결정 모듈, 수행 모듈(performing module) 및 클리어링 모듈(clearing module)을 포함할 수 있다(이 모듈 모두는 도 6에 도시되지 않음). 수행 모듈은 제1 트랜잭션의 처리를 수행하고, 이 처리가 완료된 이후에 제1 결정 모듈에게 결정을 실행할 것을 명령한다.
클리어링 모듈은 제2 트랜잭션의 통지가 수신된 이후에 제1 판독 및 기입 충돌 검출 레지스터에서 제2 처리 유닛에 대응하는 프로세서 플래그 비트를 리셋하고, 제2 결정 모듈에게 결정을 실행할 것을 명령한다.
제1 결정 모듈은 제1 판독 및 기입 충돌 검출 레지스터의 동작 충돌 플래그 비트가 기입 동작 충돌의 발생을 나타내는 값인지 결정한다. 만약 이 결정 결과가 긍정이면, 제1 결정 모듈은 결정을 관련해 제2 결정 모듈에게 명령한다. 만약 그 값이 판독 동작 충돌의 발생을 나타낸다면, 제1 결정 모듈은 제출 모듈에게 제1 트랜잭션을 제출할 것을 명령한다.
제2 결정 모듈은 제1 판독 및 기입 충돌 검출 레지스터에서 프로세서 플래그 비트 중 어떤 것도 세팅되지 않았는지를 결정한다. 만약 결정 결과가 긍정이라면, 제2 결정 모듈은 제출 모듈에게 제1 트랜잭션을 제출할 것을 명령한다.
예를 들어, 캐시 관리 유닛(602)은, 제2 트랜잭션이 제1 데이터를 판독하였다고 결정되면, 제1 처리 유닛이 제1 트랜잭션을 수행하기 전에, 제2 트랜잭션에 대응하는 제1 데이터의 캐시 라인을 제1 트랜잭션에 대응하는 프라이빗 인비저블 캐시로 복사한다.
만약 제2 처리 유닛이 제2 트랜잭션의 처리를 수행하기 전에 캐시 관리 유닛(602)이 제2 트랜잭션이 제1 데이터를 판독 예정이라고 결정하면, 제1 트랜잭션에 대응하는 캐시 라인으로부터, 기입 동작이 수행되지 않은 제1 데이터를 제2 트랜잭션에 대응하는 캐시로 복사한다.
본 기술분야에서 통상의 지식을 가진 사람이라면, 본원의 방법의 모든 또는 부분적인 단계들 또는 동작들이 프로그램 명령어 또는 컴퓨터 실행가능 명령어에 의해 지시되는 관련 하드웨어에 의해 구현될 수 있음을 이해할 것이다. 프로그램 명령어는 예컨대 ROM, 자기 디스크 또는 광학 디스크 등의 컴퓨터 판독가능 저장 매체에 저장될 수 있다. 선택적으로, 본원의 실시예의 모든 또는 부분적인 단계들 또는 동작들이 하나 이상의 집적회로에 의해 구현될 수도 있다. 따라서, 본원의 실시예의 모든 모듈/유닛은 하드웨어 또는 소프트웨어 기능 모듈의 형태로 구현될 수 있다. 본원은 하드웨어와 소프트웨어의 임의의 특정 조합에 제한되지 않는다.
본원이 다양한 실시예를 가질 수도 있음을 유의해야 한다. 본 기술분야에서 통상의 지식을 가진 사람이라면, 본원의 사상과 핵심을 이탈하지 않으면서 본원에 따른 다양한 수정안 및 변형안을 만들 수 있을 것이다. 이러한 수정안 및 변형안은 본원과 특허청구범위의 보호 범주내에 있는 것이다.

Claims (20)

  1. 제1 트랜잭션이 제1 데이터에 대한 기입 동작을 실시해야 할 경우, 제2 트랜잭션이 상기 제1 데이터의 판독 동작을 실시했거나 또는 상기 제1 데이터의 판독 동작을 실시할 예정임을 결정한 이후에, 상기 제1 트랜잭션의 기입 동작과 상기 제2 트랜잭션의 판독 동작 사이의 충돌을 나타내는 레코드(a record)를 생성하는 단계와,
    상기 제2 트랜잭션의 처리를 수행하고, 상기 제2 트랜잭션의 처리가 완료된 이후, 상기 제2 트랜잭션을 제출(submitting)하고, 상기 레코드에 따라 상기 제1 트랜잭션을 통지하는 단계와,
    상기 제1 트랜잭션의 처리를 수행하고, 상기 제1 트랜잭션의 처리가 완료되고 상기 제2 트랜잭션의 통지가 수신된 이후, 상기 제1 트랜잭션을 제출하는 단계를 포함하는
    방법.
  2. 제1항에 있어서,
    상기 제1 트랜잭션의 기입 동작과 제2 트랜잭션의 판독 동작 사이의 충돌을 나타내는 레코드를 생성하는 단계는,
    상기 제2 트랜잭션을 운용하는 제2 프로세서에 대응하는 프로세서 플래그 비트(a processor flag bit)를 세팅하고(setting), 제1 판독 및 기입 충돌 검출 레지스터(a first reading and writing conflict detection register)의 동작 충돌 플래그 비트(an operation conflict flag bit)를 상기 제1 트랜잭션을 운용하는 제1 프로세서의 제1 판독 및 기입 충돌 검출 레지스터에서 기입 동작 충돌의 발생을 나타내는 값으로 세팅하는 단계와,
    상기 제1 프로세서에 대응하는 프로세서 플래그 비트를 세팅하고, 제2 판독 및 기입 충돌 검출 레지스터의 동작 충돌 플래그 비트를 상기 제2 프로세서의 상기 제2 판독 및 기입 충돌 검출 레지스터에서 판독 동작 충돌의 발생을 나타내는 값으로 세팅하는 단계를 포함하는
    방법.
  3. 제2항에서,
    상기 레코드에 따라 상기 제1 트랜잭션을 통지하는 단계는,
    상기 제2 판독 및 기입 충돌 검출 레지스터에 세팅된 프로세서 플래그 비트를 탐색하는 단계와,
    상기 세팅된 프로세서 플래그 비트가 상기 제1 프로세서에 대응함을 결정하는 단계와,
    상기 제1 프로세서에서 운용되는 상기 제1 트랜잭션을 통지하는 단계를 포함하는
    방법.
  4. 제2항에 있어서,
    상기 제1 트랜잭션의 처리를 수행하고, 상기 제1 트랜잭션의 처리가 완료되고 상기 제2 트랜잭션의 통지가 수신된 이후, 상기 제1 트랜잭션을 제출하는 단계는,
    단계 A에서, 상기 제1 트랜잭션의 처리를 수행하고, 상기 제1 트랜잭션의 처리가 완료된 이후에 단계 B를 수행하는 단계와,
    단계 B에서, 상기 제1 판독 및 기입 충돌 검출 레지스터의 동작 충돌 플래그 비트가 상기 기입 동작 충돌의 발생을 나타내는 값으로 세팅되었는지 여부를 결정하는 단계와,
    만약 상기 결정의 결과가 긍정이라면, 단계 C를 수행하는 단계 또는
    만약 상기 동작 충돌 플래그 비트가 상기 판독 동작 충돌의 발생을 나타내는 값으로 세팅되었다면, 단계 E를 수행하는 단계와,
    단계 C에서, 상기 제1 판독 및 기입 충돌 검출 레지스터의 프로세서 플래그 비트 중 어떤 것도 세팅되지 않았는지 여부를 결정하는 단계와,
    만약 상기 프로세서 플래그 비트 중 적어도 하나가 세팅되었다면, 대기 상태(standby state)가 되는 단계 또는
    만약 상기 프로세서 플래그 비트 중 어떤 것도 세팅되지 않았다면, 단계 E를 수행하는 단계와,
    단계 D에서, 상기 제2 트랜잭션의 통지가 수신된 이후, 상기 제1 판독 및 기입 충돌 검출 레지스터에서, 상기 제2 프로세서에 대응하는 프로세서 플래그 비트를 리셋(reset)하고 단계 C로 복귀하는 단계와,
    단계 E에서, 상기 제1 트랜잭션을 제출하는 단계를 포함하는
    방법.
  5. 제1항에 있어서,
    상기 방법은 상기 제1 데이터의 판독 동작을 실시했거나 또는 상기 제1 데이터의 판독 동작을 실시할 예정인 제2 트랜잭션이 존재함을 결정한 이후에,
    만약 상기 제1 트랜잭션의 처리 이전에 상기 제2 트랜잭션이 상기 제1 데이터의 판독 동작을 실시했다면, 상기 제2 트랜잭션에 대응하는 상기 제1 데이터의 캐시 라인(a cache line)을 상기 제1 트랜잭션에 대응하는 프라이빗 인비저블 캐시(a private invisible cache)에 복사하는 단계 또는
    만약 상기 제2 트랜잭션의 처리 이전에 상기 제2 트랜잭션이 상기 제1 데이터의 판독 동작을 실시할 예정이라면, 상기 제1 트랜잭션에 대응하는 캐시 라인으로부터, 기입 동작이 아직 수행되지 않은 상기 제1 데이터를 상기 제2 트랜잭션에 대응하는 캐시로 복사하는 단계를 포함하는
    방법.
  6. 제1 트랜잭션이 제1 데이터에 대해 기입 동작을 실시해야 할 경우, 상기 제1 데이터의 판독 동작을 실시했거나 또는 상기 제1 데이터의 판독 동작을 실시할 예정인 제2 트랜잭션이 존재하면, 상기 제1 트랜잭션의 기입 동작과 상기 제2 트랜잭션의 판독 동작 사이의 충돌을 나타내는 레코드를 생성하는 캐시 관리 유닛과,
    상기 제1 트랜잭션의 처리를 수행하고, 상기 제1 트랜잭션의 처리가 완료되고 상기 제2 트랜잭션의 통지가 수신된 이후에, 상기 제1 트랜잭션을 제출하는 제1 처리 유닛과,
    상기 제2 트랜잭션의 처리를 수행하고, 상기 제2 트랜잭션의 처리가 완료된 이후에, 상기 제2 트랜잭션을 제출하고 상기 레코드에 따라 상기 제1 트랜잭션을 통지하는 제2 처리 유닛을 포함하는
    장치.
  7. 제6항에 있어서,
    상기 제1 처리 유닛에 대응하는 제1 판독 및 기입 충돌 검출 레지스터와,
    상기 제2 처리 유닛에 대응하는 제2 판독 및 기입 충돌 검출 레지스터를 더 포함하는
    장치.
  8. 제7항에 있어서,
    상기 캐시 관리 유닛은 또한
    상기 제1 판독 및 기입 충돌 검출 레지스터에 상기 제2 처리 유닛에 대응하는 프로세서 플래그 비트를 세팅하고, 상기 제1 판독 및 기입 충돌 검출 레지스터의 동작 충돌 플래그 비트를 기입 동작 충돌의 발생을 나타내는 값으로 세팅하는
    장치.
  9. 제7항에 있어서,
    상기 캐시 관리 유닛은 또한
    상기 제2 판독 및 기입 충돌 검출 레지스터에 상기 제1 처리 유닛에 대응하는 프로세서 플래그 비트를 세팅하고, 상기 제2 판독 및 기입 충돌 검출 레지스터의 동작 충돌 플래그 비트를 판독 동작 충돌의 발생을 나타내는 값으로 세팅하는
    장치.
  10. 제7항에 있어서,
    상기 제2 처리 유닛은 또한
    상기 제2 판독 및 기입 충돌 검출 레지스터에서 상기 세팅된 프로세서 플래그 비트를 탐색하고,
    상기 세팅된 프로세서 플래그 비트가 상기 제1 처리 유닛에 대응함을 결정하며,
    상기 제1 처리 유닛에서 운용되는 상기 제1 트랜잭션을 통지하는
    장치.
  11. 제7항에 있어서,
    상기 제1 처리 유닛은
    제1 결정 모듈(a first determination module)과,
    제2 결정 모듈과,
    상기 제1 트랜잭션의 처리를 수행하고, 상기 제1 트랜잭션의 처리가 완료된 이후에 상기 제1 결정 모듈에게 결정(determination)을 실행할 것을 명령하는 수행 모듈(a performing module)과,
    상기 제2 트랜잭션의 통지가 수신된 이후에 상기 제1 판독 및 기입 충돌 검출 레지스터에서 상기 제2 처리 유닛에 대응하는 프로세서 플래그 비트를 리셋(reset)하고, 상기 제2 결정 모듈에게 결정을 실행할 것을 명령하는 클리어링 모듈(a clearing module)을 포함하되,
    상기 제1 결정 모듈은 상기 제1 판독 및 기입 충돌 검출 레지스터의 동작 충돌 플래그 비트가 상기 기입 동작 충돌의 발생을 나타내는 값으로 설정되는지를 결정하고, 만약 상기 결정의 결과가 긍정이면, 상기 제2 결정 모듈에게 결정을 실행할 것을 명령하고, 또는 만약 상기 동작 충돌 플래그 비트가 상기 판독 동작 충돌의 발생을 나타내는 값으로 세팅되었다면, 제출 모듈(submitting module)에게 상기 제1 트랜잭션을 제출할 것을 명령하며,
    상기 제2 결정 모듈은 상기 제1 판독 및 기입 충돌 검출 레지스터의 프로세서 플래그 비트 중 어떤 것도 세팅되지 않았는지를 결정하고, 상기 프로세서 플래그 비트 중 어떤 것도 세팅되지 않았다는 결정에 응답하여 상기 제출 모듈에게 상기 제1 트랜잭션을 제출할 것을 명령하는
    장치.
  12. 제6항에 있어서,
    상기 캐시 관리 유닛은 또한 상기 제1 트랜잭션의 처리 이전에, 상기 제2 트랜잭션이 상기 제1 데이터의 판독 동작을 실시했을 때, 상기 제2 트랜잭션에 대응하는 상기 제1 데이터의 캐시 라인을 상기 제1 트랜잭션에 대응하는 프라이빗 인비저블 캐시로 복사하는
    장치.
  13. 제6항에 있어서,
    상기 캐시 관리 유닛은, 상기 제2 트랜잭션이 상기 제1 데이터의 판독 동작을 실시할 예정일 때, 상기 제2 트랜잭션의 처리 이전에, 상기 제1 트랜잭션에 대응하는 캐시 라인으로부터, 기입 동작이 아직 수행되지 않은 상기 제1 데이터를 상기 제2 트랜잭션에 대응하는 캐시로 복사하는
    장치.
  14. 하나 이상의 마이크로프로세서에 의해 실행 가능한 컴퓨터 실행가능 명령어가 저장되어 있는 하나 이상의 메모리로서, 상기 컴퓨터 실행가능 명령어는
    제1 트랜잭션이 제1 데이터에 대한 기입 동작을 실시해야 할 경우, 상기 제1 데이터의 판독 동작을 실시했거나 또는 상기 제1 데이터의 판독 동작을 실시할 예정인 제2 트랜잭션이 존재함을 결정한 이후에, 상기 제1 트랜잭션의 기입 동작과 상기 제2 트랜잭션의 판독 동작 사이의 충돌을 나타내는 레코드를 생성하는 동작과,
    상기 제2 트랜잭션의 처리를 수행하고, 상기 제2 트랜잭션의 처리가 완료된 이후에, 상기 제2 트랜잭션을 제출하고 상기 레코드에 따라 상기 제1 트랜잭션을 통지하는 동작과,
    상기 제1 트랜잭션의 처리를 수행하고, 상기 제1 트랜잭션의 처리가 완료되고 상기 제2 트랜잭션의 통지가 수신된 이후에, 상기 제1 트랜잭션을 제출하는 동작을 수행하는
    하나 이상의 메모리.
  15. 제14항에 있어서,
    상기 제1 트랜잭션의 기입 동작과 상기 제2 트랜잭션의 판독 동작 사이의 충돌을 나타내는 레코드를 생성하는 동작은
    상기 제1 트랜잭션을 운용하는 제1 프로세서의 제1 판독 및 기입 충돌 검출 레지스터에, 상기 제2 트랜잭션을 운용하는 제2 프로세서에 대응하는 프로세서 플래그 비트를 세팅하고, 상기 제1 판독 및 기입 충돌 검출 레지스터의 동작 충돌 플래그 비트를 기입 동작 충돌의 발생을 나타내는 값으로 세팅하는 동작을 포함하는
    하나 이상의 메모리.
  16. 제14항에 있어서,
    상기 제1 트랜잭션의 기입 동작과 상기 제2 트랜잭션의 판독 동작 사이의 충돌을 나타내는 레코드를 생성하는 동작은
    상기 제2 프로세서의 제2 판독 및 기입 충돌 검출 레지스터에, 상기 제1 프로세서에 대응하는 프로세서 플래그 비트를 세팅하고, 상기 제2 판독 및 기입 충돌 검출 레지스터의 동작 충돌 플래그 비트를 판독 동작 충돌의 발생을 나타내는 값으로 세팅하는 동작을 포함하는
    하나 이상의 메모리.
  17. 제16항에 있어서,
    상기 레코드에 따라 상기 제1 트랜잭션을 통지하는 동작은
    상기 제2 프로세서의 제2 판독 및 기입 충돌 검출 레지스터에서, 상기 세팅된 프로세서 플래그 비트를 탐색하는 동작과,
    상기 세팅된 프로세서 플래그 비트가 상기 제1 프로세서에 대응함을 결정하는 동작과,
    상기 제1 프로세서에서 운용되는 상기 제1 트랜잭션을 통지하는 동작을 포함하는
    하나 이상의 메모리.
  18. 제15항에 있어서,
    상기 제1 트랜잭션의 처리를 수행하고, 상기 제1 트랜잭션의 처리가 완료되고 상기 제2 트랜잭션의 통지가 수신된 이후에, 상기 제1 트랜잭션을 제출하는 동작은
    단계 A에서, 상기 제1 트랜잭션의 처리를 수행하고, 상기 제1 트랜잭션의 처리가 완료된 이후에 단계 B를 수행하는 동작과,
    단계 B에서, 상기 제1 판독 및 기입 충돌 검출 레지스터의 동작 충돌 플래그 비트가 상기 기입 동작 충돌의 발생을 나타내는 값으로 세팅되었는지 여부를 결정하는 동작과,
    만약 상기 결정의 결과가 긍정이라면, 단계 C를 수행하는 동작 또는
    만약 상기 동작 충돌 플래그 비트가 상기 판독 동작 충돌의 발생을 나타내는 값으로 세팅되었다면, 단계 E를 수행하는 동작과,
    단계 C에서, 상기 제1 판독 및 기입 충돌 검출 레지스터의 프로세서 플래그 비트 중 어떤 것도 세팅되지 않았는지 여부를 결정하는 동작과,
    만약 상기 프로세서 플래그 비트 중 적어도 하나가 세팅되었다면, 대기 상태가 되는 동작 또는
    만약 상기 프로세서 플래그 비트 중 어떤 것도 세팅되지 않았다면, 단계 E를 수행하는 동작과,
    단계 D에서, 상기 제2 트랜잭션의 통지가 수신된 이후, 상기 제1 판독 및 기입 충돌 검출 레지스터에서, 상기 제2 프로세서에 대응하는 프로세서 플래그 비트를 리셋하고 단계 C로 복귀하는 동작과,
    단계 E에서, 상기 제1 트랜잭션을 제출하는 동작을 포함하는
    하나 이상의 메모리.
  19. 제14항에 있어서,
    상기 제1 데이터의 판독 동작을 실시했거나 또는 상기 제1 데이터의 판독 동작을 실시할 예정인 제2 트랜잭션이 존재함을 결정한 이후에,
    만약 상기 제1 트랜잭션의 처리 이전에 상기 제2 트랜잭션이 상기 제1 데이터의 판독 동작을 실시했다면, 상기 제2 트랜잭션에 대응하는 상기 제1 데이터의 캐시 라인을 상기 제1 트랜잭션에 대응하는 프라이빗 인비저블 캐시에 복사하는 동작을 더 포함하는
    하나 이상의 메모리.
  20. 제14항에 있어서,
    상기 제1 데이터의 판독 동작을 실시했거나 또는 상기 제1 데이터의 판독 동작을 실시할 예정인 제2 트랜잭션이 존재함을 결정한 이후에,
    만약 상기 제2 트랜잭션의 처리 이전에 상기 제2 트랜잭션이 상기 제1 데이터의 판독 동작을 실시할 예정이라면, 상기 제1 트랜잭션에 대응하는 캐시 라인으로부터, 기입 동작이 아직 수행되지 않은 상기 제1 데이터를 상기 제2 트랜잭션에 대응하는 캐시로 복사하는 동작을 더 포함하는
    하나 이상의 메모리.
KR1020167009643A 2013-10-18 2014-10-16 메모리에 동시에 액세스하는 기법 KR20160086820A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201310492402.3 2013-10-18
CN201310492402.3A CN104572506B (zh) 2013-10-18 2013-10-18 一种并发访问内存的方法及装置
PCT/US2014/060901 WO2015057962A1 (en) 2013-10-18 2014-10-16 Concurrently accessing memory

Publications (1)

Publication Number Publication Date
KR20160086820A true KR20160086820A (ko) 2016-07-20

Family

ID=51866334

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167009643A KR20160086820A (ko) 2013-10-18 2014-10-16 메모리에 동시에 액세스하는 기법

Country Status (9)

Country Link
US (1) US20150113244A1 (ko)
EP (1) EP3058461A1 (ko)
JP (1) JP2016537708A (ko)
KR (1) KR20160086820A (ko)
CN (1) CN104572506B (ko)
HK (1) HK1205806A1 (ko)
SG (1) SG11201602639TA (ko)
TW (1) TW201516688A (ko)
WO (1) WO2015057962A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106874074B (zh) * 2016-12-26 2020-05-05 哈尔滨工业大学 一种基于软件事务内存的并发缺陷规避系统及方法
CN110059115B (zh) * 2019-03-19 2023-08-11 创新先进技术有限公司 一种数据读取方法和装置
CN110648124B (zh) * 2019-08-30 2021-06-29 创新先进技术有限公司 在区块链中并发执行交易的方法和装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2256514B (en) * 1991-05-21 1994-11-16 Digital Equipment Corp Commitment ordering for guaranteeing serializability across distributed transactions
US5504899A (en) * 1991-10-17 1996-04-02 Digital Equipment Corporation Guaranteeing global serializability by applying commitment ordering selectively to global transactions
US6256713B1 (en) * 1999-04-29 2001-07-03 International Business Machines Corporation Bus optimization with read/write coherence including ordering responsive to collisions
US7558923B1 (en) * 1999-12-22 2009-07-07 Intel Corporation Prevention of live-lock in a multi-processor system
US8180977B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US8024714B2 (en) * 2006-11-17 2011-09-20 Microsoft Corporation Parallelizing sequential frameworks using transactions
US7908255B2 (en) * 2007-04-11 2011-03-15 Microsoft Corporation Transactional memory using buffered writes and enforced serialization order
US8661204B2 (en) * 2007-08-15 2014-02-25 University Of Rochester, Office Of Technology Transfer Mechanism to support flexible decoupled transactional memory
US7971248B2 (en) * 2007-08-15 2011-06-28 Microsoft Corporation Tolerating and detecting asymmetric races
US20090138890A1 (en) * 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory
US9170844B2 (en) * 2009-01-02 2015-10-27 International Business Machines Corporation Prioritization for conflict arbitration in transactional memory management
US8473952B2 (en) * 2010-06-30 2013-06-25 Oracle International Corporation System and method for communication between concurrent transactions using transaction communicator objects
US9619301B2 (en) * 2011-04-06 2017-04-11 Telefonaktiebolaget L M Ericsson (Publ) Multi-core memory model and speculative mode processor management
US20140075124A1 (en) * 2012-09-07 2014-03-13 International Business Machines Corporation Selective Delaying of Write Requests in Hardware Transactional Memory Systems
US9086974B2 (en) * 2013-09-26 2015-07-21 International Business Machines Corporation Centralized management of high-contention cache lines in multi-processor computing environments

Also Published As

Publication number Publication date
JP2016537708A (ja) 2016-12-01
US20150113244A1 (en) 2015-04-23
EP3058461A1 (en) 2016-08-24
SG11201602639TA (en) 2016-05-30
CN104572506A (zh) 2015-04-29
WO2015057962A1 (en) 2015-04-23
HK1205806A1 (en) 2015-12-24
TW201516688A (zh) 2015-05-01
CN104572506B (zh) 2019-03-26

Similar Documents

Publication Publication Date Title
JP6685437B2 (ja) データ処理のための方法及びプロセッサ
TWI397813B (zh) 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統
EP3531292B1 (en) Methods and apparatus for supporting persistent memory
US8706973B2 (en) Unbounded transactional memory system and method
US20190384837A1 (en) Method and apparatus to manage flush of an atomic group of writes to persistent memory in response to an unexpected power loss
JP5745084B2 (ja) ハードウェアトランザクションメモリシステムにおけるトランザクションデータの不慮の喪失の防止
US20090248984A1 (en) Method and device for performing copy-on-write in a processor
CN110515705B (zh) 可扩展的持久性事务内存及其工作方法
KR20160086820A (ko) 메모리에 동시에 액세스하는 기법
US8065489B1 (en) Method and apparatus for managing concurrent access among computers to a bitmap stored on disk storage
US11630772B1 (en) Suppressing cache line modification

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid