KR100810009B1 - 반동기식 메모리 복사 동작에서 사용되는 어드레스 범위의유효성 - Google Patents

반동기식 메모리 복사 동작에서 사용되는 어드레스 범위의유효성 Download PDF

Info

Publication number
KR100810009B1
KR100810009B1 KR1020060114313A KR20060114313A KR100810009B1 KR 100810009 B1 KR100810009 B1 KR 100810009B1 KR 1020060114313 A KR1020060114313 A KR 1020060114313A KR 20060114313 A KR20060114313 A KR 20060114313A KR 100810009 B1 KR100810009 B1 KR 100810009B1
Authority
KR
South Korea
Prior art keywords
memory copy
semi
copy operation
processor
instruction
Prior art date
Application number
KR1020060114313A
Other languages
English (en)
Other versions
KR20070066860A (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 KR20070066860A publication Critical patent/KR20070066860A/ko
Application granted granted Critical
Publication of KR100810009B1 publication Critical patent/KR100810009B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

메모리 페이지의 컨텐트를 보호하는 시스템, 방법 및 컴퓨터 판독가능 매체가 개시되어 있다. 이 방법은 반동기식(semi-synchronous) 메모리 복사 동작의 시작을 결정하는 단계를 포함한다. 반동기식 메모리 복사 동작이 수행되고 있는 어드레스들의 범위가 결정된다. 페이지 테이블 엔트리를 제거하는 발행된 명령어가 검출된다. 이 방법은 발행된 명령어가 어드레스들의 범위 내의 적어도 하나의 어드레스와 연관된 페이지 테이블 엔트리를 제거하기 위한 것인지 여부를 판정하는 단계를 더 포함한다. 발행된 명령어가 페이지 테이블 엔트리를 제거하기 위한 것이라는 것에 응답하여, 반동기식 메모리 복사 동작이 완료될 때까지 발행된 명령어의 실행이 정지된다.
정보 처리 시스템, 메모리 복사, 캐쉬 주입, 페이지 테이블

Description

반동기식 메모리 복사 동작에서 사용되는 어드레스 범위의 유효성{VALIDITY OF ADDRESS RANGES USED IN SEMI-SYNCHRONOUS MEMORY COPY OPERATIONS}
도 1은 본 발명의 일 실시예에 따른, 명령어를 처리하는 예시적인 프로세서를 나타낸 블록도.
도 2는 본 발명의 일 실시예에 따른, 예시적인 메모리 복사 메카니즘을 포함하는 도 1의 프로세서의 보다 간단화된 버전을 나타낸 블록도.
도 3은 본 발명의 일 실시예에 따른, 예시적인 메모리 복사 동작을 메모리 컨트롤러에 인큐잉하는 예시적인 프로세스를 나타낸 동작 흐름도.
도 4는 본 발명의 일 실시예에 따른, 예시적인 반동기식 메모리 복사 동작을 나타내는 동작 흐름도.
도 5는 본 발명의 일 실시예에 따른, 다수의 메모리 복사 명령어를 발행하는 예시적인 프로세스를 나타낸 동작 흐름도.
도 6은 본 발명의 일 실시예에 따른, 목적지 데이터의 캐쉬 주입의 예시적인 프로세스를 나타낸 동작 흐름도.
도 7은 본 발명이 일 실시예에 따른, 변환 색인 버퍼(translation lookaside buffer) 엔트리 무효화 명령(invalidate entry instruction)을 차단하는 예시적인 프로세스를 나타낸 동작 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
100: 프로세서
102: 시스템 메모리
104: 제2 프로세서
106: 상호 연결 패브릭
108: L2 캐쉬
110: L1 캐쉬
본 출원은 발명의 명칭이 "반동기식 메모리 복사 동작을 사용하는 캐쉬 주입(CACHE INJECTION USING SEMI-SYNCHRONOUS MEMORY COPY OPERATION)"인 발명자의 출원 제 호 및 발명의 명칭이 "효율적이고 유연성있는 메모리 복사 동작(EFFICIENT AND FLEXIBLE MEMORY COPY OPERATION)"인 발명자의 출원 제 호에 관한 것이며, 이들은 모두 본 출원과 동일자로 출원되었으며 인터내셔널 비지니스 머신즈 코포레이션에 본 출원과 함께 공동 양도되어 있다. 이 2개의 관련 출원은 여기에 인용함으로써 그 전체 내용이 본 명세서에 포함된다.
본 발명은 일반적으로 정보 처리 시스템 분야에 관한 것으로서, 보다 상세하게는 정보 처리 시스템 내에서의 메모리 복사 동작에 관한 것이다.
메모리 복사 동작은 아주 종종 수행되는 데이터 처리 동작이다. 이러한 동 작은 애플리케이션 레벨에서, 운영 체제(OS) 레벨에서 소프트웨어에 의해, 및 미들웨어 프로그래밍에 의해 개시된다. 메모리 복사 동작은 일반적으로 데이터를 메모리 내의 한 장소에서 다른 장소로 복사하는 반복된 로드(load) 및 저장(store) 동작으로 프로그램된다. 이것에 의해 데이터 전송은 중앙 처리 장치(CPU 또는 보다 간단히 "프로세서")를 통해 실행된다. 이 결과, 이하의 이유로 인해 데이터 처리 시스템의 전체 동작이 비효율적으로 된다.
(1) 복사 동작의 성능은 이용가능한 메모리 대역폭(이는 종종 CPU의 속도와 조화를 이루기에는 불충분함)에 의해 제한된다.
(2) 데이터 전송이 CPU를 통해 로드 및 저장 명령어에 의해 수행되며, 기본적으로 이동(move) 동작 동안에 CPU를 속박하여 CPU가 다른 태스크를 수행하지 못하게 한다.
(3) CPU가 일반적으로 메모리 서브시스템보다 훨씬 더 빠르기 때문에, 데이터가 메모리로부터 CPU 내에 도착하기를 기다릴 때 CPU는 아이들 상태에 있다.
상기 설명으로부터 알 수 있는 바와 같이, 메모리 복사 동작은 애플리케이션, 미들웨어 및 운영 체제의 성능에 민감한 절차이다. 메모리 복사 동작을 수행하는 많은 방법은 데이터가 반복된 로드 및 저장 명령어에 의해 CPU를 통해 실행되게 한다. 상기한 바와 같이, 이러한 속성의 동작은 CPU를 비교적 장기간 동안 속박하며, 대량의 데이터가 복사되어야 하는 경우에 특히 그렇다. 이러한 동작은 또한 느린데 그 이유는 메모리 대기시간 및 메모리 대역폭 제한으로 인해 CPU 속도와 비교하여 전체적인 전송 레이트가 더 느려지게 되고, 그에 따라 바람직하지 않은 성능 레벨이 얻어지기 때문이다.
그렇지만, 피닝된 페이지(pinned page)(따라서 실제 메모리 어드레스(real memory address))에 대한 실제 모드(real mode)에서의 메모리 복사 동작에 대해서는 어떤 해결책들이 존재하지만, 애플리케이션, 미들웨어 및 운영 체제에 의한 일반적인 사용에 대해서는 해결책이 존재하지 않는다. 환언하면, 데이터 프로세서가 가상 어드레싱 모드(virtual addressing mode)에서 기능하고 있을 때, 효율적인 메모리 복사 동작은 도저히 가능하지도 않고 용인되지도 않는다. 본 발명이 있기 까지는, 실제 어드레싱 모드(real addressing mode)가 이용되고 있을 때에만, 메모리 복사 동작 효율성을 향상시키려고 노력이 행해졌으며, 그렇다해도 "페이지의 피닝(pinning)"이 필요하다. 피닝(pinning)이란 메모리의 그 부분에 저장되어 있는 데이터의 페이징 아웃(paging out)을 방지하도록 메모리가 구성되어 있을 때를 말한다. 이것은 임시 버퍼에의 데이터 액세스에 대해 페이지 폴트(page fault)가 일어나지 않도록 보장해준다.
다른 문제는 저장(store) 동작의 일반적인 구현에서는 전체 캐쉬 라인이 궁극적으로 재기록되어 있더라도 목적지 캐쉬 라인이 메모리로부터 페치되도록 되어 있다는 것이다. 이것은 또한 바람직하지 않게도 메모리 대역폭의 많은 부분을 낭비한다.
종래의 메모리 복사에서의 다른 비효율성의 원인은 좋지 않은 데이터 정렬(data alignment)이다. 일반적인 컴퓨터 시스템은 자연스럽게 정렬된 데이터를 로드하고 저장할 때 더 효율적이다. 이들 컴퓨터 시스템은 또한 최소 단 위(granule)가 더 큰 데이터를 로드하고 저장할 때 더 효율적이다(예를 들어, 64-비트 동작이 32-비트 동작보다 더 효율적이다). 안타깝게도, 대부분의 애플리케이션 소프트웨어는 메모리 서브시스템에 관한 데이터의 자연스런 정렬에 대해서는 잘 동작하지 않는다. 그 대신에, 대부분의 애플리케이션 소프트웨어는 메모리 복사 동작을 실시하기 위해 bcopy 또는 유사한 명령어 등의 운영 체제(OS) 명령어에 의존한다. bcopy 루틴은 애플리케이션 정렬 거동에 대해 전혀 모르고 있으며, 모든 정렬 조건 하에서 효율적으로 동작하도록 설계되어야만 한다. 따라서, 상기한 바와 같은 종래 기술에서의 문제점을 극복할 필요가 있다.
요약하면, 본 발명에 따르면, 메모리 페이지의 컨텐트를 보호하는 시스템, 방법, 및 컴퓨터 판독가능 매체가 개시되어 있다. 이 방법은 반동기식(semi-synchronous) 메모리 복사 동작의 시작을 결정하는 단계를 포함한다. 반동기식 메모리 복사 동작이 수행되고 있는 어드레스들의 범위가 결정된다. 페이지 테이블 엔트리를 제거하는 발행된 명령어가 검출된다. 이 방법은 발행된 명령어가 어드레스들의 범위 내의 적어도 하나의 어드레스와 연관된 페이지 테이블 엔트리를 제거하기 위한 것인지 여부를 판정하는 단계를 더 포함한다. 발행된 명령어가 페이지 테이블 엔트리를 제거하기 위한 것이라는 것에 응답하여, 반동기식 메모리 복사 동작이 완료될 때까지 발행된 명령어의 실행이 정지된다.
본 발명의 다른 실시예에서, 메모리 페이지의 컨텐트를 보호하는 시스템이 개시되어 있다. 이 시스템은 적어도 하나의 소스 레지스터 및 그에 연결된 적어도 하나의 타겟 레지스터를 갖는 프로세서를 포함한다. 프로세서와 통신 연결되어 있는 메모리도 역시 포함되어 있다. 반동기식 메모리 복사 동작을 위한, 프로세서에 의해 해석되는 제1 연산 코드가 포함되어 있다. 반동기식 메모리 복사 동작과 연관된 소스 어드레스 범위는 적어도 하나의 소스 레지스터에 저장되어 있고 반동기식 메모리 복사 동작과 연관된 타겟 어드레스 범위는 적어도 하나의 타겟 레지스터에 저장되어 있다. 시스템은 메모리 페이지 테이블 엔트리를 제거하기 위한, 프로세서에 의해 해석되는 제2 연산 코드를 더 포함한다. 제2 연산 코드와 연관된 일련의 어드레스를 반동기식 메모리 복사 동작과 연관된 소스 어드레스 범위 및 타겟 어드레스 범위와 비교하는 어드레스 비교기가 포함되어 있다. 프로세서는, 제2 연산 코드와 연관된 일련의 어드레스가 반동기식 메모리 복사 동작과 연관된 소스 어드레스 범위 및 타겟 어드레스 범위 중 적어도 하나에 대응하는 것에 응답하여, 반동기식 메모리 복사 동작이 완료될 때까지 제2 연산 코드의 실행을 중지시킨다.
본 발명의 또다른 실시예에서, 메모리 페이지의 컨텐트를 보호하는 컴퓨터 판독가능 매체가 개시되어 있다. 컴퓨터 판독가능 매체는 반동기식 메모리 복사 동작의 시작을 판정하는 명령어를 포함한다. 반동기식 메모리 복사 동작이 수행되고 있는 어드레스들의 범위가 결정된다. 페이지 테이블 엔트리를 제거하는 발행된 명령어가 검출된다. 이 방법은 발행된 명령어가 어드레스들의 범위 내의 적어도 하나의 어드레스와 연관된 페이지 테이블 엔트리를 제거하기 위한 것인지 여부를 판정하는 단계를 더 포함한다. 발행된 명령어가 페이지 테이블 엔트리를 제거하기 위한 것이라는 것에 응답하여, 반동기식 메모리 복사 동작이 완료될 때까지 발행된 명령어의 실행이 정지된다.
상기한 실시예들의 이점은 이들이 프로세서로 하여금 메모리 복사 동작 동안에 후속 명령어를 계속 실행할 수 있게 해줌으로써 불필요한 프로세서 정지시간(processor downtime)을 방지하는 메모리 복사 동작을 제공한다는 것이다. 본 발명의 다른 이점은, 메모리 복사 명령어가 인수(argument)로서 유효(가상) 어드레스(effective(virtual) address)를 받기 때문에, 메모리 복사 명령어의 소스 및 타겟에 의해 참조되는 가상 메모리 페이지가 피닝(pinning)되지 않고 또 페이지 폴트(page fault)를 허용할 수 있다는 것이다. 이것은 선험적으로 페이지를 피닝하는 오버헤드가 회피될 수 있게 해준다. 본 발명의 또다른 이점은 메모리 복사 명령어가 명령어 인수로서 그 명령어에 전달되는 어드레스의 정렬에 제약을 가하지 않는다는 것이다. 본 발명의 다른 이점은 데이터 완성(data perfecting)과 함께 캐쉬 주입을 사용함으로써 메모리 대기시간이 회피될 수 있다는 것이다.
유사한 참조 번호가 개별적인 도면들 전체에 걸쳐 동일하거나 기능상 유사한 구성요소를 말하며 또 이하의 상세한 설명과 함께 명세서에 포함되어 그 일부를 형성하는 첨부 도면은, 여러가지 실시예들을 더 상세히 나타내고 또 본 발명에 따른 여러가지 원리 및 이점을 설명하는 데 도움이 된다.
요구되는 바와 같이, 본 발명의 상세한 실시예들이 본 명세서에 개시되어 있지만, 개시된 실시예들이 여러가지 형태로 구현될 수 있는 본 발명을 예시한 것에 불과하다는 것을 잘 알 것이다. 따라서, 본 명세서에 개시된 구체적인 구조상 및 기능상 상세는 제한적인 것으로 해석되어서는 안되며, 청구 범위에 대한 기초로서 또한 당업자가 거의 모든 적절히 상세하게 기술된 구조로 본 발명을 다양하게 이용하기 위한 대표적인 기초로서 해석되어야 한다. 게다가, 본 명세서에서 사용되는 용어 및 구문은 제한하기 위한 것이 아니며, 오히려 본 발명의 이해할만한 설명을 제공하기 위한 것이다.
용어 "하나"는, 본 명세서에서 사용되는 바와 같이, '하나 이상'으로서 정의된다. 용어 "복수"는, 본 명세서에서 사용되는 바와 같이, '2개 이상'으로서 정의된다. 용어 "다른"은, 본 명세서에서 사용되는 바와 같이, '적어도 다른 하나 이상'으로서 정의된다. 용어 "포함하는(including)" 및/또는 "갖는(having)"은, 본 명세서에서 사용되는 바와 같이, '포함하는(comprising)'(즉, 개방적 기재(open language))으로서 정의된다. 용어 "결합된(coupled)"은, 본 명세서에서 사용되는 바와 같이, '연결된(connect)'으로서 정의되지만, 반드시 직접 연결되거나 또 반드시 기계적으로 연결되어 있는 것은 아니다.
용어 "메모리 복사 동작" 및 "메모리 복사"는, 본 명세서에서 사용되는 바와 같이, 소스 저장 장소의 메모리 컨텐트를 변경시키지 않고 정보 처리 시스템의 랜덤 액세스 메모리의 한 부분 내의 데이터가 동일 랜덤 액세스 메모리의 다른 부분으로 복사되는 정보 처리 시스템 내에서 수행되는 프로세스이다. 그렇지만, 본 발명의 예시적인 실시예에서, 용어 "메모리 복사"는 수 킬로바이트 또는 심지어 수 메가바이트의 데이터를 복사하는 것을 수반하는 메모리 복사 동작을 말한다.
일 실시예에 따르면, 본 발명은 메모리 복사 동작에 대한 보다 효율적인 메 카니즘을 제공함으로써 종래 기술에서의 문제점을 극복한다. 본 발명은 프로세서로 하여금 메모리 복사 동작 동안에 후속 명령어들을 계속 실행할 수 있게 해줌으로써 불필요한 프로세서 정지시간(processor downtime)을 회피한다.
예시적인 프로세서
본 발명의 일 실시예에 따르면, 도 1에 나타낸 바와 같이, 본 발명에 따라 명령어 및 데이터를 처리하는, 전체적으로 참조 번호(100)으로 표시된 예시적인 프로세서가 도시되어 있다. 프로세서(100)는, 이하에서 더 구체적으로 기술하는 바와 같이, 여러가지 실행 유닛, 레지스터, 버퍼, 메모리, 및 다른 기능 유닛(이들 모두 집적 회로로 형성되어 있음)을 포함하는 수퍼스칼라 프로세서(superscalar processor) 등의 단일의 집적 회로 프로세서를 포함한다.
도 1에 나타낸 바와 같이, 프로세서(100)는 컴퓨터 시스템 등의 더 큰 데이터 처리 시스템을 형성하기 위해 상호 연결 패브릭(106)에 의해 시스템 메모리(102) 및, 일 실시예에서는, 제2 프로세서(104) 등의 다른 장치들에 연결되어 있을 수 있다. 프로세서(100)는 예를 들어 통합된(unified) 레벨 2("L2") 캐쉬(108) 및 분리된(bifurcate) 레벨 1("L1") 명령어("I") 및 데이터("D") 캐쉬(각각 110, 112)를 포함하는 온-칩 다중-레벨 캐쉬 계층구조를 갖는다. 당업자라면 잘 알고 있는 바와 같이, 캐쉬(108, 110, 112)는 시스템 메모리(102)에서의 메모리 장소들에 대응하는 캐쉬 라인들에의 낮은 대기시간 액세스를 제공한다.
IFAR(instruction fetch address register, 명령어 페치 어드레스 레지스터)(114)에 존재하는 유효 어드레스("EA")에 응답하여 L1 I-캐쉬(110)로부터 프로 세싱을 위해 명령어들이 페치된다. 각각의 사이클 동안에, 새로운 명령어 페치 어드레스는 3개의 소스, 즉 조건부 분기 명령어의 예측으로부터 얻어지는 투기적 경로 어드레스(speculative path address)를 제공하는 BPU(branch prediction unit, 분기 예측 유닛)(116), 비투기적 경로 어드레스(non-speculative path address)를 제공하는 CU(completion unit, 완성 유닛)(194) 내의 GCT(group completion table, 그룹 완성 테이블)(118), 및 부정확하게 예측된 조건부 분기 명령어의 분석의 결과 얻어지는 비투기적 어드레스(non-speculative address)를 제공하는 BEU(branch execution unit, 분기 실행 유닛)(120) 중 하나로부터 IFAR(114)로 로드될 수 있다. 히트/미스 로직(hit/miss logic)(122)이, ERAT(effective-to-real address translation, 유효-실제 어드레스 변환)(124)에 의한 IFAR(114) 내에 들어 있는 EA의 변환 및 I-캐쉬 디렉토리(126) 내의 실제 어드레스(real address)("RA")의 탐색 이후에, IFAR(114) 내의 EA에 대응하는 캐쉬 라인의 명령어들이 L1 I-캐쉬(110)에 존재하지 않는 것으로 판정하는 경우, 히트/미스 로직(122)은 I-캐쉬 요청 버스(128)를 통해 요청 어드레스(request address)로서 L2 캐쉬(108)에 RA를 제공한다. 이러한 요청 어드레스는 또한 최근의 액세스 패턴에 기초하여 L2 캐쉬(108) 내의 프리페치 로직(prefetch logic)에 의해 발생될 수 있다. 요청 어드레스에 응답하여, L2 캐쉬(108)는, 아마도 선택적인 프리디코드 로직(predecode logic)(134)를 통과한 후에, 프리페치 버퍼("PB")(130) 및 L1 I-캐쉬 재로드 버스(L1 I-cache reload bus)(132)로 로드되는 한 캐쉬 라인의 명령어들을 출력한다.
IFAR(114) 내의 EA에 의해 지정되는 캐쉬 라인이 L1 캐쉬(110)에 존재하면, L1-캐쉬(110)는 그 캐쉬 라인을 BPU(branch prediction unit, 분기 예측 유닛)(116) 및 IFB(instruction fetch buffer, 명령어 페치 버퍼)(136) 둘다로 출력한다. BPU(116)는 분기 명령어가 있는지 그 캐쉬 라인의 명령어들을 스캔하고, 있는 경우, 조건부 분기 명령어의 결과를 예측한다. 분기 예측 이후에, BPU(116)는 상기한 바와 같이 투기적 명령어 페치 어드레스를 IFAR(114)에 제공하고, 그 예측을 BIQ(branch instruction queue, 분기 명령어 큐)(138)로 전달하며, 따라서 조건부 분기 명령어가 차후에 분기 실행 유닛(120)에 의해 분석될 때 예측의 정확성이 판정될 수 있게 된다.
IFB(136)는 L1 I-캐쉬(110)로부터 수신된 캐쉬 라인의 명령어들이 ITU(instruction translation unit, 명령어 변환 유닛)(140)에 의해 변환될 수 있을 때까지 그 캐쉬 라인의 명령어들을 일시적으로 버퍼링한다. 프로세서(100)의 예시된 실시예에서, ITU(140)는 UISA(user instruction set architecture, 사용자 명령어 세트 아키텍처) 명령어들로부터의 명령어들을, 프로세서(100)의 실행 유닛에 의해 직접 실행가능한 아마도 다른 수의 IISA(internal ISA, 내부 ISA) 명령어들로 변환한다. 이러한 변환은 예를 들어 ROM(read-only memory, 판독 전용 메모리) 템플릿에 저장되어 있는 마이크로코드(microcode)를 참조하여 수행될 수 있다. 적어도 어떤 실시예들에서, UISA-IISA 변환의 결과 UISA 명령어들과 다른 수의 IISA 명령어들 및/또는 대응하는 UISA 명령어들과 다른 길이의 IISA 명령어들이 얻어진다. 그 결과 얻어진 IISA 명령어들은 이어서 그룹 완성 테이블(118)에 의해 명령어 그룹으로 할당되고, 이 명령어 그룹의 멤버들은 서로에 대해 비순차적으 로(out-of-order) 디스패치 및 실행될 수 있다. 그룹 완성 테이블(118)은 적어도 하나의 관련 EA(이는 양호하게는 명령어 그룹 내에서 가장 오래된 명령어의 EA임)에 의해 실행이 아직 완료되지 않은 각각의 명령어 그룹을 추적한다.
UISA-IISA 명령어 변환 이후에, 명령어들은 명령어 유형에 기초하여 아마도 비순차적으로 래치(142, 144, 146, 148) 중 하나로 디스패치된다. 즉, 분기 명령어 및 다른 조건 레지스터("CR") 수정 명령어(condition register modifying instruction)는 래치(142)로 디스패치되고, 고정-소수점 및 로드-저장 명령어는 래치(144, 146) 중 어느 하나로 디스패치되며, 부동-소수점 명령어는 래치(148)로 디스패치된다. 실행 결과를 일시적으로 저장하기 위해 리네임 레지스터(rename register)를 필요로 하는 각각의 명령어는 이어서 적절한 CR 매퍼(150), LC(link and count, 링크 및 카운트) 레지스터 매퍼(152), XER(exception register, 예외 레지스터) 매퍼(154), GPR(general-purpose register, 범용 레지스터) 매퍼(156), 또는 FPR(floating-point register, 부동-소수점 레지스터) 매퍼(158)에 의해 하나 이상의 리네임 레지스터를 할당받는다.
디스패치된 명령어들은 이어서 적절한 CRIQ(CR issue queue, CR 발행 큐)(160), BIQ(branch issue queue, 분기 발행 큐)(138), FXIQ(fixed-point issue queue, 고정-소수점 발행 큐)(162, 164) 또는 FPIQ(floating-point issue queue, 부동-소수점 발행 큐)(166, 168)에 일시적으로 배치된다. 발행 큐(160, 138, 162, 164, 166, 168)로부터, 데이터 의존성(dependency) 및 반의존성(anti-dependency)이 준수되는 한, 명령어들이 실행을 위해 기회를 보아 프로세서(100)의 실행 유닛 으로 발행될 수 있다. 그렇지만, 명령어들은 명령어들의 실행이 완료될 때까지 발행 큐(160, 138, 162, 164,166, 168)에 유지되고, 명령어들 중 임의의 것이 재발행될 필요가 있는 경우에, 결과 데이터가 있다면, 그 결과 데이터는 라이트 백(write back)된다.
예시된 바와 같이, 프로세서(100)의 실행 유닛은 CR-수정 명령어를 실행하는 CRU(CR unit, CR 유닛)(172), 분기 명령어를 실행하는 BEU(branch execution unit, 분기 실행 유닛)(120), 고정-소수점 명령어를 실행하는 2개의 FXU(fixed-point unit, 고정-소수점 유닛)(174, 176), 로드 및 저장 명령어를 실행하는 2개의 LSU(load-store unit, 로드-저장 유닛)(178, 180), 및 부동-소수점 명령어를 실행하는 2개의 FPU(floating-point unit, 부동-소수점 유닛)(182, 184)를 포함한다. 실행 유닛(172, 120, 174, 176, 178, 180, 182, 184)은 양호하게는 다수의 파이프라인 스테이지를 갖는 실행 파이프라인으로서 구현된다.
실행 유닛(172, 120, 174, 176, 178, 180, 182, 184) 중 하나 내에서의 실행 동안에, 명령어는, 피연산자가 있는 경우, 실행 유닛에 연결되어 있는 레지스터 파일 내의 하나 이상의 아키텍트(architected) 및/또는 리네임(rename) 레지스터로부터 피연산자를 수신한다. CR-수정 또는 CR-의존적인 명령어를 실행할 때, CRU(172) 및 BEU(120)는 CR 레지스터 파일(186)에 액세스하고, 양호한 실시예에서 CR 레지스터 파일(186)은 CR 및 다수의 CR 리네임 레지스터를 포함하며, 각각의 CR 리네임 레지스터는 하나 이상의 비트로 형성된 다수의 개별적인 필드를 포함한다. 이들 필드 중에는 값(일반적으로 명령어의 결과 또는 피연산자)이 0보다 작은지, 0 보다 큰지 또는 0과 같은지를 각각 나타내는 LT, GT 및 EQ 필드가 있다. LCR(link and count register, 링크 및 카운트 레지스터) 레지스터 파일(188)은 CTR(count register, 카운트 레지스터), LR(link register, 링크 레지스터) 및 각각의 리네임 레지스터를 포함하며, 이에 의해 BEU(120)는 또한 경로 어드레스를 획득하기 위해 조건부 분기를 분석할 수 있다. 동기화되어 있는 GPR(general-purpose register file, 범용 레지스터 파일)(190, 192)은 레지스터 파일을 복제하고, FXU(174, 176) 및 LSU(178, 180)에 의해 액세스되고 생성되는 고정-소수점 및 정수값을 저장한다. GPR(190, 192)과 같이 역시 동기화된 레지스터의 복제된 세트로서 구현될 수 있는 FPR(floating-point register file, 부동-소수점 레지스터 파일, 158)은 FPU(182, 184)에 의한 부동-소수점 명령어의 실행 및 LSU(178, 180)에 의한 부동-소수점 로드 명령어의 실행의 결과 얻어지는 부동-소수점 값을 포함한다.
실행 유닛이 명령어의 실행을 완료한 후에, 실행 유닛은 그 결과를 명령어에 의해 지정되는 지정 목적지에 기록하며 그 명령어를 발행 큐로부터 제거하고, 프로그램 순서로 명령어의 완료를 스케쥴링하는 CU(186)에 통지한다. CRU(172), FXU(174, 176) 또는 FPU(182, 184) 중 하나에 의해 실행되는 명령어를 완료하기 위해, CU(194)는 결과 데이터가 있는 경우 그 결과 데이터를 할당된 리네임 레지스터(들)로부터 적절한 레지스터 파일 내의 하나 이상의 아키텍트 레지스터(architected register)로 라이트 백(write back)하는 실행 유닛에 신호를 보낸다. 그의 명령어 그룹 내의 모든 명령어들이 완료되었으면, 그 명령어는 GCT(118)로부터 제거된다. 그렇지만, 다른 유형의 명령어들은 다른 방식으로 완료된다.
BEU(120)가 조건부 분기 명령어를 분석하고 택해야 하는 실행 경로의 경로 어드레스를 결정하면, 경로 어드레스는 BPU(116)에 의해 예측된 투기적 경로 어드레스와 비교된다. 이들 경로 어드레스가 일치하면, 추가의 처리가 필요하지 않다. 그렇지만, 계산된 경로 어드레스가 예측된 경로 어드레스와 일치하지 않는 경우, BEU(120)는 정확한 경로 어드레스를 IFAR(114)에 공급한다. 어느 경우든지, 분기 명령어는 이어서 BIQ(138)로부터 제거될 수 있고, 동일한 명령어 그룹 내의 모든 다른 명령어들이 완료되면, GCT(118)로부터 제거될 수 있다.
로드 명령어의 실행 이후에, 로드 명령어를 실행함으로써 계산되는 유효 어드레스는 데이터 ERAT(설명 생략)에 의해 실제 어드레스로 변환되고 이어서 요청 어드레스로서 L1 D-캐쉬(112)에 제공된다. 이 때, 로드 명령어는 FXIQ(162, 164) 중 어느 하나로부터 제거되고 표시된 로드가 수행될 때까지 LRQ(load reorder queue, 로드 재정렬 큐)(196)에 배치된다. 요청 어드레스가 L1 D-캐쉬(112)에 없는(miss) 경우, 요청 어드레스는 LMQ(load miss queue, 로드 미스 큐)(198)에 배치되고, 그로부터의 요청된 데이터는 L2 캐쉬(108)로부터 검색되고, 그것이 없는 경우 다른 프로세서(104)로부터 또는 시스템 메모리(102)로부터 검색된다. LRQ(196)는 배타적 액세스 요청(예를 들어, 수정을 위한 판독(read-with-intent-to-modify))을 스누핑(snoop)하고, 동작 중인 로드에 대해 상호 연결 패브릭(106) 상에서 플러시 또는 정지(kill)시키고, 히트가 발생하면 로드 명령어를 취소 및 재발행한다.
저장 명령어도 이와 유사하게 STQ(store queue, 저장 큐)(103)를 이용하여 완료되며, 저장 명령어의 실행 이후에 이 STQ 내에 저장을 위한 유효 어드레스가 로드된다. STQ(103)로부터, 데이터가 L1 D-캐쉬(112) 및 L2 캐쉬(108) 중 어느 하나 또는 그 둘다 내에 저장될 수 있다. 프로세서(100)는 또한 MMU(memory management unit, 메모리 관리 유닛)(105)을 포함한다. MMU(105)는 프로세서에 의해 요청되는 메모리 액세스를 처리하는 여러가지 컴포넌트를 포함한다. 예를 들어, 메모리 관리 유닛(202)은 가상 어드레스를 실제 어드레스로 변환하기 위한 페이지 테이블(MMU(105) 내에 포함됨)의 일부를 포함하는 TLB(translation look-aside table, 변환 색인 테이블)을 포함한다. MMU(105)는 또한 메모리 보호 및 캐쉬 제어를 위한 컴포넌트를 포함하고 있다.
예시적인 메모리 복사 메카니즘
도 2는 본 발명의 일 실시예에 따른 예시적인 메모리 복사 메카니즘을 포함하는 도 1의 프로세서의 보다 단순화하여 나타낸 블록도이다. 도 2는 GPR(190, 192), L1 캐쉬(110, 112), 및 MMU/TLB(105)를 포함하는 프로세서 코어(100)를 나타내고 있다. 프로세서(100)는 또한 본 발명의 예시적인 메모리 복사 명령어 등의 연산 코드(202)를 포함한다.
메모리의 제1 부분으로부터 메모리의 제2 부분으로 데이터를 복사하기 위한 효율적이고 유연성있는 수단을 제공하기 위해 새로운 메모리 복사 명령어("mc")가 프로세서(100) 명령어 아키텍처에 추가된다. 본 발명의 메모리 복사 동작은 프로세서와 반동기하여(semi-synchronously) 동작한다. 환언하면, 프로세서는 메모리 복사 동작 동안에 후속 명령어를 실행할 수 있다. 그렇지만, 메모리 복사 명령어 는 메모리(102)에서의 소스 및 타겟 장소에 각각 대응하는 가상 소스 및 타겟 어드레스에 대한 유효성의 일시적인 지속(temporal persistence of validity)을 유지한다. 본 발명의 일 실시예에서, 메모리 복사 명령어는 이하의 신택스/시맨틱스(syntax/semantics)를 포함한다.
mc RT, RS, RN
RT 레지스터는 메모리 복사 동작에 대한 타겟 메모리 장소의 유효(가상) 어드레스를 포함한다. RS 레지스터는 메모리 복사 동작에 대한 소스 메모리 장소의 유효(가상) 어드레스를 포함한다. RN 레지스터는 메모리 복사 동작에서 전송될 바이트의 수를 포함하고 있다. 일 실시예에서, 메모리 복사 명령어는 또한 사전 정의된 수의 데이터 라인을 수신하게 될 하나 이상의 레벨의 캐쉬를 식별해주는 정보를 포함하는 CI(cache injection, 캐쉬 주입) 레지스터를 포함한다. 예를 들어, 일 실시예에서, CI 레지스터는 처음 몇개의 데이터 라인이 L1 캐쉬(112)로 복사되어야 하고, 그 다음 10개의 라인이 L2 캐쉬(108)로 복사되어야 하며, 그 다음 20개의 라인이 L3 캐쉬(204)로 복사되어야 함을 나타낸다. 복사되어야 하는 데이터 라인의 수는 개개의 정보 처리 시스템에 기초하여 다르다. 예를 들어, 일 실시예에서, 데이터 라인의 수는 캐쉬 내의 작업 세트의 최소의 오염을 갖는 최상의 캐쉬 히트 가능성을 반영하기 위해 시스템에 의해 제어된다. 이 시스템은 캐쉬의 현재 상태 및 명령어 스트림에 대한 데이터 라인의 수를 할당한다.
"ms RT, RS, RN"인 명령어 포맷에 대한 설명이 명령어 연산 코드에 대한 이름 및 약어(abbreviation)는 물론 표시된 레지스터에 대한 이름 및 약어를 비롯한 몇가지 임의적으로 지정되는 항목을 포함하고 있다는 것에 유의해야 한다. 이 연산 코드는 일의적으로 식별가능하기만 하면 되고 메모리 복사 동작과 연관되어 있기만 하면 되며, 이와 마찬가지로 가상(즉, 유효) 시작 어드레스(starting address) 및 종료 어드레스(ending address)가 명령어에 제공되어 있어야만 하지만, 그의 약어의 이름 및 구문상 위치는 전혀 중요하지 않으며, 전송될 데이터의 바이트 수에 대한 RN 참조에 대해서도 마찬가지이다. 게다가, RN 참조 라벨과 연관된 값은 또한 "데이터의 바이트"를 말하기 보다는 전송될 데이터의 다른 양을 말할 수 있으며, 예를 들어 이는 또한 데이터의 "워드"를 말할 수 있으며, 여기서 워드는 32 비트 등의 값을 구성할 수 있다.
메모리 복사 명령어는 NCU(non-cacheable unit, 비캐쉬가능 유닛)(206)을 통해 메모리 컨트로로러(MC)(208)로 인큐잉된다. 예를 들어, NCU(206)는 메모리 복사 명령어로 하여금 L1-I 캐쉬(110)에 먼저 로드됨이 없이 메모리 명령어 큐(212)로 직접 인큐잉될 수 있게 해준다. 크로스바 스위치(crossbar switch) 등의 패브릭 컨트롤러(fabric controller)(230)는 NCU(230), L2 캐쉬(108) 및 L3 캐쉬(204) 사이에서 메모리 컨트롤러와의 통신을 중재한다. 패브릭 컨트롤러(230)는 또한 L2 캐쉬(108), L3 캐쉬(204) 및 NCU(206)를 서로 연결시킨다. L2 캐쉬(108), L3 캐쉬(204) 및 NCU(206) 각각은 메모리 컨트롤러(208)로 전달될 데이터를 큐잉하기 위한 큐(232, 234, 236)를 포함한다.
메모리 명령어 큐(212)는 메모리 복사 명령어(214)를 포함한다. 일 실시예에서, 메모리 복사 명령어 큐(210)는 이용가능한 메모리 대역폭을 다 채울 정도로 많은 메모리 복사 명령어를 병렬로 수용할 수 있도록 설계되어 있다. 메모리 복사 유닛(210)은 메모리 복사 명령어에 따라 메모리 복사 동작을 수행한다. 예를 들어, 데이터는 소스 어드레스(216)로부터 메모리(102)의 목적지 어드레스(218)로 복사된다.
코어(100)는 또한 반동기식 메모리 복사 동작에 의해 이용되는 소스 레지스터(220, 222) 및 타겟 레지스터(224, 226)를 포함한다. 유효 비트(228)는 레지스터(220, 222, 224, 226) 내의 어드레스와 연관되어 있다. 일 실시예에서, 다수의 반동기식 메모리 복사 동작이 수행될 수 있으며, 각각의 반동기식 메모리 복사 동작은 그 자신의 소스 및 타겟 레지스터 쌍 및 그와 연관된 유효 비트를 갖는다. 이들 레지스터(220, 222, 224, 226)와 연관된 어드레스 범위가 보호된다. 예를 들어, 메모리 복사 동작 동안에, 유효 비트(228)는 소스 어드레스 범위(Rs, Rs+Rn) 및 타겟 어드레스 범위(Rt, Rt+Rn)에 대해 설정된다. 메모리 복사 동작이 실행되고 있는 동안에, 예를 들어 유효 비트(228)가 설정되어 있는 동안에, 저장 동작이 어드레스 범위(Rs, Rs+Rn)에 기록하려고 시도하는 경우, 저장 명령어는 메모리 복사 동작이 완료될 때까지 차단(block) 또는 정지(stall)된다. 어드레스 범위(Rs, Rs+Rn)로부터 판독하기 위한 로드 동작은 허용된다. 메모리 복사 동작이 실행되고 있는 동안에, 예를 들어 유효 비트(228)가 설정되어 있는 동안에, 저장 또는 로드 동작이 어드레스 범위(Rt, Rt+Rn)에 대해 판독/기록을 하려고 시도하는 경우, 로드 또는 저장 명령어 둘다는 메모리 복사 동작이 완료될 때까지, 예를 들어 유효 비트(228)이 어드레스 범위(Rt, Rt+Rn)에 대해 더 이상 설정되어 있지 않을 때까지 차단 또는 정지된다.
본 발명의 한가지 이점은 소스 레지스터(220, 222) 및 타겟 레지스터(224, 226)에서의 어드레스 범위와 연관된 메모리 페이지가 피닝(pinning)되지 않고 페이징(paging)되는 것이 방지된다는 것이다. 예를 들어, 소스 레지스터(220, 222) 및 타겟 레지스터(224, 226) 내의 어드레스 범위는 메모리 페이징을 위한 명령어의 목표가 되는 어드레스 범위와 비교된다. 소스 레지스터(220, 222) 및 타겟 레지스터(224, 226) 내의 어드레스 범위가 변환 색인 버퍼 엔트리 무효화(translation look-aside buffer invalidate entry, "tlbie") 명령어 등의 메모리 페이징 명령어의 목표가 되는 경우, 이 명령어는 어드레스 범위와 연관된 메모리 복사 동작이 완료될 때까지 정지된다. 예를 들어, 페이지 테이블 갱신의 경우에, 이 갱신은 모든 보류 중인 메모리 동작이 완료될 때까지(즉, 암시적인 동기화 명령어(implicit synchronization instruction)가 발행될 때까지) 프로세서(100)에 의해 정지되고, TLB(Translation Lookaside Buffer, 변환 색인 버퍼) 엔트리는 메모리 복사가 완료될 때까지(즉, 암시적인 변환 색인 버퍼 엔트리 무효화(translation look-aside buffer invalidate entry, "tlbie") 명령어가 발행될 때까지) 수정되지 않는다.
메모리 복사 동작을 인큐잉하는 예시적인 프로세스
도 3은 예시적인 반동기식 메모리 복사 동작을 메모리 컨트롤러(208)로 인큐잉하는 프로세스를 나타낸 동작 흐름도이다. 도 3의 동작 흐름도는 단계(302)에서 시작하여 바로 단계(304)로 진행한다. 프로세서(100)는 메모리 복사 동작에 대한 호출을 수신한다. 예를 들어, 사용자 코드는 메모리 복사 명령어를 호출하고 메모 리 복사 명령어에 인수(argument)를 전달한다. 단계(306)에서, 메모리 복사 명령어의 타겟 레지스터("RT") 컴포넌트는 사용자 코드로부터 메모리 복사 동작에 대한 타겟 메모리 장소의 유효(가상) 어드레스를 수신한다. 단계(308)에서, 메모리 복사 명령어의 소스 레지스터("RS") 컴포넌트는 사용자 코드로부터 메모리 복사 동작에 대한 소스 메모리 장소의 유효(가상) 어드레스를 수신한다.
단계(310)에서, 메모리 복사 명령어의 바이트 레지스터("RN") 컴포넌트는 메모리 복사 동작에서 전송될 바이트의 수를 수신한다. 단계(312)에서, 메모리 복사 명령어의 캐쉬 주입 레지스터("CI") 컴포넌트는 목적지 데이터가 캐쉬로 복사되어야 하는지 메모리로 복사되어야 하는지를 나타내는 데이터를 수신한다. 메모리 복사 명령어의 파라미터들 전부가 수신된 후에, 단계(314)에서 이 명령어는 비캐쉬가능 유닛(non-cacheable unit)(206)을 통해 메모리 컨트롤러(208)로 인큐잉된다. 이어서, 제어 흐름은 단계(316)에서 종료한다.
본 발명의 한가지 이점은 메모리 복사 명령어가 인수로서 유효(가상) 어드레스를 받기 때문에, 메모리 복사 명령어의 소스 및 타겟에 의해 참조되는 가상 메모리 페이지가 피닝되지 않고 또 페이지 폴트를 허용할 수 있다는 것이다. 이것은 선험적으로 페이지를 피닝하는 오버헤드가 회피될 수 있게 해준다. 본 발명의 다른 이점은 메모리 복사 명령어가 명령어 인수로서 그 명령어로 전달되는 어드레스의 정렬에 제약을 두지 않는다는 것이다.
도 4는 예시적인 메모리 복사 명령어의 반동기식 속성을 나타낸 동작 흐름도이다. 도 4의 동작 흐름도는 단계(402)에서 시작하여 바로 단계(404)로 진행한다. 단계(404)에서, 프로세서(100)는 메모리 복사 명령어에 의해 사용되는 어드레스 범위를 모니터링한다. 유의할 점은 이것이 프로세서-메모리 서브시스템에 어떤 새로운 요건을 부과하지 않으며 오히려 프로세서(100)의 기존의 기능 및 규약을 이용한다는 것이다. 단계(406)에서, 프로세서(100)는 메모리 복사 명령어가 실행을 위해 메모리 컨트롤러(208)로 인큐잉되어 있는지 여부를 판정한다. 예를 들어, 예시적인 메모리 복사 동작은 프로세서 코어(100)와 반동기되어 있으며, 그에 의해 프로세서 코어(100)가 메모리 복사 동작 동안에 후속 명령어를 실행할 수 있게 된다.
이 판정의 결과가 부정일 경우, 단계(408)에서, 프로세서(100)는 후속 명령어들을 계속 실행하기 위해 메모리 복사 명령어가 인큐잉될 때까지 기다린다. 이 판정의 결과가 긍정일 때, 단계(410)에서, 프로세서(100)는 메모리 복사 명령어에 대해 사용되고 있는 어드레스 범위, 즉 소스 레지스터(220, 222) 및 타겟 레지스터(224, 226) 내의 어드레스 범위와 대조하여 후속하는 로드(load) 및 저장(store)을 검사한다. 예를 들어, 메모리 복사 명령어의 소스 및 목적지 어드레스와 중복하지 않는 메모리 내의 장소로의 후속하는 로드 및 저장이 계속하여 방해를 받지 않는다.
단계(412)에서, 프로세서(100)는 후속하는 로드 동작이 메모리 복사 명령어의 목적지에 대한 것인지 여부를 판정한다. 이 판정의 결과가 긍정인 경우, 단계(414)에서, 프로세서(100)는 메모리 복사 동작이 완료될 때까지 이들 로드 동작의 실행을 일시 정지시킨다. 예를 들어, 메모리 복사 동작 동안에, 소스 어드레스 범위(Rs, Rs+Rn) 및 타겟 어드레스 범위(Rt, Rt+Rn)에 대해 유효 비트(228)가 설정 되어 있다. 메모리 복사 동작이 실행 중인 동안에, 예를 들어 유효 비트(228)가 설정되어 있는 동안에, 저장 또는 로드 동작이 어드레스 범위(Rt, Rt+Rn)에 대해 판독/기록을 하려고 시도하는 경우, 로드 또는 저장 명령어 둘다는 메모리 복사 동작이 완료될때까지, 예를 들어 유효 비트(228)가 어드레스 범위(Rt, Rt+Rn)에 대해 더 이상 설정되어 있지 않을 때까지 차단 또는 정지되어진다. 메모리 복사 동작이 완료될 때, 단계(416)에서, 프로세서(100)는 메모리 복사 동작이 완료되었다는 통지를 수신한다. 단계(424)에서, 프로세서(100)는 계속하여 후속 명령어들을 실행하는데 그 이유는 이들 명령어가 명령어 파이프라인으로부터 이용가능하게 되기 때문이다.
단계(412)에서의 판정의 결과가 부정인 경우, 단계(418)에서, 프로세서(100)는 후속하는 저장 동작이 메모리 복사 명령어의 소스 및/또는 목적지에 대한 것인지를 판정한다. 이 판정의 결과가 긍정인 경우, 단계(420)에서, 프로세서(100)는 메모리 복사 동작이 완료될 때까지 이들 저장 동작의 실행을 일시 정지시킨다. 로드/저장 동작의 어드레스 범위를 메모리 복사 동작과 연관된 어드레스 범위(Rs 내지 Rs+Rn, Rt 내지 Rt+Rn)와 비교하는 것은 메모리 복사 동작 동안에 메모리 복사 어드레스 범위를 보호한다. 환언하면, 메모리 복사 어드레스 범위의 유효성의 일시적인 지속이 유지된다. 메모리 복사 동작이 완료될 때, 단계(422)에서, 프로세서(100)는 메모리 복사 동작이 완료되었다는 통지를 수신한다.
본 발명의 반동기식 메모리 복사 동작은 예를 들어 메모리 복사 명령어를 태그와 연관시키고 또 완료를 보장하기 위해 사용자로 하여금 태그에 관한 대기 명령 어(wait instruction)를 발행하게 함으로써 사용자에게 메모리 복사 동작의 완료를 통지하는 복잡한 메카니즘을 필요로 하지 않는다. 일 실시예에서, 메모리 복사 동작이 완료될 때, "이동 완료(mover done)" 펄스가 코어(100)로 전송되고 유효 비트(228)가 오프로 된다. 이것은 메모리 복사 동작이 완료되었다는 것을 프로세서에게 신호한다. 단계(418)에서의 판정의 결과가 부정인 경우, 단계(424)에서, 프로세서(100)는 후속 명령어들을 계속하여 실행한다. 이어서, 제어 흐름은 단계(426)에서 종료한다.
메모리 복사 동작이 완료될 때까지 메모리 복사 명령어의 소스에 대한 저장 동작 또는 메모리 복사 명령어의 목적지에 대한 로드/저장 동작을 정지시킴으로써, 프로세서(100)는 프로세서(100)의 코히런시(coherency) 및 일관성(consistency) 규칙의 관점에서 메모리 복사 명령어를 저장 명령어들의 시퀀스로서 취급하게 된다. 이 측면은 다른 메모리 동작이 보존되고 또 저장 동작들의 시퀀스와 일관성을 유지하도록 보장해주면서 메모리 복사 동작과의 계산의 중복을 허용한다는 점에서 중요하다.
본 발명의 일 실시예에서, 프로세서 아키텍처는 로드/저장 동작이 미리 정해진 순서로 수행될 것을 필요로 한다(순서 일관성(sequential consistency)). 따라서,로드/저장 동작의 목표가 소스 레지스터(220, 222) 또는 타겟 레지스터(224, 226) 내의 어드레스 범위인지 여부에 상관없이, 반동기식 메모리 복사 동작 동안에 로드/저장 동작이 차단/정지된다. 다른 실시예에서, 프로세서 아키텍처는 저장 동작만이 사전 정의된 순서로 수행될 것을 필요로 한다(중간 일관성(intermediate consistency)). 따라서, 저장 동작의 타겟 어드레스가 소스 레지스터(220, 222)의 어드레스 범위와 비교된다. 타겟 어드레스가 소스 레지스터(220, 222)의 어드레스 범위 내에 있는 경우, 저장 동작은 반동기식 메모리 복사 동작이 완료될 때까지 차단/정지된다. 부가적인 실시예에서, 프로세서 아키텍처는 로드/저장 동작이 미리 정해진 순서로 수행될 것을 필요로 하지 않는다(약한 일관성(weak consistency)). 따라서, 도 4와 관련하여 상기한 바와 같이, 로드/저장 동작의 타겟 어드레스가 소스 레지스터(220, 222) 및 타겟 레지스터(224, 226)와 비교된다.
본 발명의 다른 이점은 페이지 경계 제한이 필요하지 않다는 것이다. 그렇지만, 본 발명의 메모리 복사 명령어의 효율성을 이용하려고 하는 미들웨어 및 바이트 레벨 복사("bcopy") 기능은 (소스 및 목적지 둘다에 대한) 페이지 경계를 넘지 않기 위해 복사 기능을 분해할 수 있다. 환언하면, 일 실시예에서, 메모리 복사 명령어는 다수의 페이지 경계에 걸쳐 있는 메모리 복사를 위한 루프에서 호출된다. 페이지 테이블 갱신을 위해서는 모든 보류 중인 메모리 동작이 먼저 완료되어야 한다는 제약을 고려하면, 이것은 실제로 양호한 설계 포인트이다. 메모리 복사의 크기에 제약이 없는 경우, 그 결과 대규모 메모리 복사를 갖는 한 프로세스가 시스템 자원을 독점함으로써 운영 체제의 공정성(fairness) 측면에 영향을 미치는 일이 있을 수 있다.
본 발명의 다른 이점은 프로그래머에 의해 사용되는 프로그래밍 명령어 및 프로그래밍 시맨틱스가 본 발명의 여러가지 실시예를 구현하기 위해 변경될 필요가 없다는 것이다.
효율적인 복사 동작을 보장하기 위해서는 물론 프로세스들에 의한 시스템 자원의 사용에 있어서의 공정성을 가능하게 해주기 위해, 이 메카니즘이 서로 다른 페이지 크기에 대해 조정(tune)될 수 있다는 것에 유의한다. 게다가, 유의할 점은 소스 및 목적지 어드레스가 그 각자의 페이지 내에서 서로 다른 오프셋에 있을 수 있기 때문에, 이것이 효율적인 메모리 복사를 위해 오프셋을 보다 바람직하게 정렬하도록 "어드레스 천이(address shifting)"가 수행됨을 의미한다는 것이다.
다수의 메모리 복사 명령어를 발행하는 예시적인 프로세스
도 5는 파이프라인 방식으로 다수의 메모리 복사 명령어를 발행하는 예시적인 프로세스를 나타낸 동작 흐름도이다. 도 5의 동작 흐름도는 단계(502)에서 시작하여 바로 단계(504)로 진행한다. 적어도 하나의 메모리 복사 명령어가 메모리 컨트롤러(208)로 인큐잉된 후에, 단계(504)에서, 프로세서(100)는 적어도 하나의 부가적인 메모리 복사 명령어를 발행한다. 단계(506)에서, 메모리 컨트롤러(208)는 메모리 복사 명령어 큐(212)가 꽉 차있는지를 판정한다. 이 판정의 결과가 긍정인 경우, 단계(508)에서, 사용중 신호(busy signal)가 프로세서(100)로 반환된다. 예를 들어, 메모리 복사 명령어는 자원이 사용중임을 나타내는 조건 코드로 반환할 수 있다.
다른 실시예에서, 메모리 복사 명령어는 메모리 복사 명령어 큐(212)가 새로 발행된 메모리 복사 명령어를 위한 충분한 공간을 가질 때까지 정지된다. 본 발명은 메모리 복사 명령어 큐가 꽉 채워져있음을 나타내는 여러가지 방법을 구현하도록 구성될 수 있다. 정지(stall)시키는 것의 한가지 이점은 메모리 복사 자원에 액세스하기 위한 "순서 공정성"을 보장한다는 것이다. 일 실시예에서, 사용중 신호가 반환되는 경우, 동작이 재시도되는데, 이는 로드된 시스템에서 프로세스들 중 일부가 메모리 복사 자원을 갈망하게 될 수 있다는 것을 암시한다. 게다가, 사용중 신호가 반환되는 경우, 메모리 복사 동작을 요청하는 애플리케이션은 메모리 복사 명령어 큐(212)가 비워지기(free up)를 기다리면서 다른 작업을 할 가능성이 있다.
단계(506)에서의 판정의 결과가 부정인 경우, 단계(510)에서, 부가적인 메모리 복사 명령어가 메모리 복사 명령어 큐(212)로 인큐잉된다. 이어서, 단계(512)에서, 제어 흐름이 종료한다. 일 실시예에서, 메모리 복사 명령어 큐(212)는 이용가능한 메모리 대역폭을 다 채울 정도로 많은 메모리 복사 명령어를 병렬로 수용할 수 있도록 설계되어 있다. 큐(212)가 이용가능한 메모리 대역폭보다 더 깊은 경우에도, 메모리 복사 명령어를 후속하는 명령어들과 중복되게 하는 것이 여전히 실행중인 애플리케이션에 확실한 이익을 가져다준다. 소스 및 목적지 어드레스 범위가 중복되는 경우, 일 실시예에서 메모리 복사 명령어의 중복하는 영역의 컨텐트는 정의되지 않고 일반적으로 프로그래밍 에러가 발생한다. 그렇지만, 본 발명의 대체 실시예에서, 중복하는 소스 및 목적지 어드레스 범위는 프로그래밍 에러를 야기하지 않는다. 이 실시예에서, 소스 어드레스로부터의 데이터는 목적지 어드레스로 복사될 수 있지만, 있을 수 있는 손상(corruption)에 대한 경고가 프로그래머에게 제공된다.
캐쉬 주입의 예시적인 프로세스
도 6은 메모리 복사 명령어의 캐쉬 주입 레지스터(cache injection register) 내의 정보에 기초하여 목적지 데이터의 캐쉬 주입의 예시적인 프로세스를 나타낸 동작 흐름도이다. 도 6의 동작 흐름도는 단계(602)에서 시작하여 바로 단계(604)로 진행한다. 단계(604)에서, 프로세서(100)는 캐쉬 주입 비트(cache injection bit)가 있는지 메모리 복사 명령어를 검사한다. 캐쉬 주입 비트는 예를 들어 명령어의 별도의 레지스터 내에 있거나 다른 대안으로서 명령어의 RN 레지스터에 있을 수 있다. 캐쉬 주입 비트는 데이터의 전부 또는 일부를 어디에 복사해야 하는지를 메모리 복사 유닛(210)에 알려준다. 예를 들어, 데이터의 보다 빠른 처리를 위해, 메모리 복사 명령어는 프로세서가 데이터를 로드할 때 그 데이터가 메모리 대신에 캐쉬로부터 로드되도록 캐쉬 비트를 포함한다.
단계(606)에서 캐쉬 비트가 존재하지 않는 것으로 판정되는 경우, 단계(608)에서 메모리 복사 유닛(210)은 목적지 데이터를 메모리(102)로 복사한다. 이어서, 제어 흐름은 단계(610)에서 종료한다. 단계(606)에서 캐쉬 비트가 존재하는 것으로 판정되는 경우, 단계(612)에서 메모리 복사 유닛(210)은 캐쉬 주입 비트로 나타내어진 바대로 사전 정의된 수의 라인의 목적지 데이터를 적절한 레벨의 캐쉬로 복사한다. 예를 들어, 몇 라인은 레벨 1 캐쉬(112)로 이동될 수 있고, 그 다음 10개 라인은 레벨 2 캐쉬(108)로 복사될 수 있으며, 그 다음 20개 라인은 레벨 3 캐쉬(204)로 복사된다. 이와 같이, 상위 레벨의 캐쉬가 오염되지 않는다. 캐쉬 로 복사되는 라인의 수는 예를 들어 정보 처리 시스템에 기초하여 변경된다. 단계(614)에서, 목적지 데이터의 복사본이 메모리(102)로 복사된다. 캐쉬 주입의 한 가지 이점은 데이터 완성(data perfecting)과 결합될 때 메모리 대기 시간이 회피될 수 있다는 것이다.
또한 유의할 점은 메모리 복사 동작의 결과가 종종 다른 방식으로 사용된다는 것이다. 많은 경우에, 목적지 메모리 내의 데이터는 후속하는 명령어에서 소비하기 위해 프로세서에 의해 즉각 사용된다. 이러한 사용 방식의 예는 판독 동작 이후에 데이터 파일을 사용자 버퍼로부터 이동시키는 것이다. 이러한 경우에, 프로세서(100)가 목적지 데이터를 프로세서(100)에서 소비하기 위해 캐쉬로 업로드하는 것이 유용하다. 직접 메모리 액세스("DMA")를 통해 네트워크(또는 I/O 장치)로 전송되도록 데이터를 사용자 버퍼로부터 네트워크 버퍼로 이동시키는 등의 다른 경우에, 목적지 데이터는 DMA 동작이 계속되도록 메모리에 배치된다(즉, 캐싱되지 않는다).
TLBIE 명령어를 차단시키는 예시적인 프로세스
도 7은 반동기식 메모리 복사 동작 동안에 변환 색인 버퍼 엔트리 무효화 명령어(translation lookaside buffer invalidate entry instruction)을 차단하는 예시적인 프로세스를 나타낸 동작 흐름도이다. 도 7의 동작 흐름도는 단계(702)에서 시작하여 바로 단계(704)로 진행한다. 단계(704)에서, 프로세서(100)는 tlbie 명령어가 발행되었는지 여부를 판정한다. 이 판정의 결과가 부정인 경우, 단계(704)에서, 프로세서(100)는 계속하여 tlbie 명령어가 발생되었는지를 판정한다. 이 판정의 결과가 긍정인 경우, 단계(706)에서, 프로세서(100)는 tlbie 명령어의 목표가 되는 어드레스를 검사한다.
단계(708)에서, 프로세서(100)는 tlbie 명령어의 목표가 되는 어드레스가 반동기식 메모리 복사 동작과 연관된 어드레스의 범위 내에 있는지를 판정한다. 예를 들어, 프로세서(100)는 tlbie 명령어의 목표가 되는 어드레스를 소스 및 타겟 레지스터(220, 222, 224, 226) 내에서 발견된 어드레스 범위와 비교한다. 이 판정의 결과가 부정인 경우, 단계(710)에서, 프로세서(100)는 tlbie 명령어가 실행될 수 있게 해준다. 이 판정의 결과가 긍정인 경우, 단계(714)에서, 프로세서(100)는 메모리 복사 동작이 완료될 때까지 tlbie 명령어를 정지시킨다. 제어 흐름은 이어서 단계(716)에서 종료한다.
도 7의 예시적인 프로세스는 또한 메모리 페이징에 관여되어 있는 다른 명령어들에 적용가능하다. 반동기식 메모리 복사 동작과 연관된 어드레스를 목표로 하는 tlbie 명령어를 정지시킴으로써, 그 어드레스가 페이징 아웃(page out)되는 것으로부터 보호된다. 환언하면, 소스 및 목적지 레지스터(220, 222, 224, 226)와 연관된 ㅈ소에 대한 유효성의 일시적인 지속이 유지된다. 이 어드레스는 피닝될 필요가 없으며, 이는 비경제적이다.
비제한적인 예들
본 발명의 상기 실시예들이 유익한 이유는 이들이 프로세서로 하여금 메모리 복사 동작 동안에 후속하는 명령어를 계속하여 실행할 수 있게 해주는 메모리 복사 동작을 제공함으로써 불필요한 프로세서 정지시간을 방지하기 때문이다. 본 발명의 다른 이점은 메모리 복사 명령어가 인수로서 유효(가상) 어드레스를 취하기 때문에, 메모리 복사 명령어의 소스 및 타겟에 의해 참조되는 가상 메모리 페이지가 피닝되지 않고 또 페이지 폴트를 허용할 수 있다는 것이다. 이것은 선험적으로 페이지를 피닝하는 오버헤드가 회피될 수 있게 해준다. 본 발명의 또다른 이점은 메모리 복사 명령어가 명령어 인수로서 명령어에 전달되는 어드레스들의 정렬에 제약을 두지 않는다는 것이다. 본 발명의 다른 이점은 데이터 완성과 함께 캐쉬 주입을 사용함으로써 메모리 대기시간이 회피될 수 있다는 것이다.
본 발명은 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 조합으로서 실현될 수 있다. 본 발명의 양호한 실시예에 따른 시스템은 하나의 컴퓨터 시스템에 집중 방식으로 실현되거나 서로 다른 구성요소들이 몇개의 상호 연결된 컴퓨터 시스템에 걸쳐 분산되어 있는 분산 방식으로 실현될 수 있다. 임의의 종류의 컴퓨터 시스템 - 또는 본 명세서에 기술된 방법들을 수행하도록 구성된 다른 장치 -이 적합하다. 하드웨어와 소프트웨어의 일반적인 조합은, 로드되어 실행될 때, 본 명세서에 기술된 방법들을 수행하도록 컴퓨터 시스템을 제어하는 컴퓨터 프로그램을 갖는 범용 컴퓨터 시스템일 수 있다.
일반적으로, 본 발명의 실시예들을 구현하기 위해 실행되는 루틴들은, 운영 체제의 일부분 또는 특정의 애플리케이션, 컴포넌트, 프로그램, 모듈 또는 명령어들의 시퀀스로서 구현되는지에 상관없이, 본 명세서에서 "프로그램"이라고 말할 수 있다. 컴퓨터 프로그램은 일반적으로 내이티브 컴퓨터(native computer)에 의해 기계-판독가능 포맷, 따라서 실행가능 명령어로 변환되어지는 다수의 명령어로 이루어져 있다. 또한, 프로그램은 프로그램에 로컬적으로 존재하거나 메모리 또는 저장 장치에서 발견되는 변수 및 데이터 구조로 이루어져 있다. 게다가, 본 명세 서에 기술된 여러가지 프로그램들은 본 발명의 특정 실시예에서 이들 프로그램이 구현되어 있는 애플리케이션에 기초하여 식별될 수 있다. 그렇지만, 따르고 있는 임의의 특정의 프로그램 용어가 단지 편의를 위한 것이며 따라서 본 발명이 이러한 용어에 의해 식별 및/또는 암시되는 임의의 특정의 애플리케이션에서만 사용하는 것으로 한정되어서는 안된다는 것을 잘 알 것이다.
본 발명의 특정의 실시예들이 개시되어 있지만, 당업자라면 본 발명의 정신 및 범위를 벗어나지 않고 특정 실시예들에 변경이 행해질 수 있다는 것을 잘 알 것이다. 본 발명의 범위는 따라서 특정의 실시예들로 제한되지 않으며, 첨부된 청구 범위가 본 발명의 범위 내에서의 이러한 응용, 수정, 및 실시예 전부를 포함하는 것으로 보아야 한다.

Claims (13)

  1. 수퍼스칼라 프로세서에서 메모리 페이지의 컨텐트를 보호하는 방법으로서,
    반동기식 메모리 복사 동작의 시작을 결정하는 단계,
    상기 반동기식 메모리 복사 동작이 수행되고 있는 어드레스들의 범위를 결정하는 단계,
    페이지 테이블 엔트리를 제거하는 발행된 명령어를 검출하는 단계,
    상기 발행된 명령어가 상기 어드레스들의 범위 내의 적어도 하나의 어드레스와 연관된 페이지 테이블 엔트리를 제거하기 위한 것인지 여부를 판정하는 단계, 및
    상기 발행된 명령어가 상기 페이지 테이블 엔트리를 제거하기 위한 것이라는 것에 응답하여, 상기 반동기식 메모리 복사 동작이 완료될 때까지 상기 발행된 명령어의 실행을 정지시키는 단계
    를 포함하는 수퍼스칼라 프로세서에서 메모리 페이지의 컨텐트를 보호하는 방법.
  2. 제1항에 있어서, 상기 발행된 명령어는 변환 색인 버퍼 엔트리 무효화 명령어(translation lookaside buffer invalidate entry instruction)인 것인 수퍼스칼라 프로세서에서 메모리 페이지의 컨텐트를 보호하는 방법.
  3. 제1항에 있어서, 상기 반동기식 메모리 복사 동작이 수행되고 있는 상기 어드레스들의 범위로의 기록 동작을 방지하는 단계를 더 포함하는 수퍼스칼라 프로세서에서 메모리 페이지의 컨텐트를 보호하는 방법.
  4. 제1항에 있어서, 상기 반동기식 메모리 복사 동작이 수행되고 있는 상기 어드레스들의 범위 내의 소스 영역(source area)으로부터의 판독 동작을 허용하는 단계를 더 포함하는 수퍼스칼라 프로세서에서 메모리 페이지의 컨텐트를 보호하는 방법.
  5. 제1항에 있어서, 상기 반동기식 메모리 복사 동작이 수행되고 있는 상기 어드레스들의 범위 내의 타겟 영역(target area)으로부터의 판독 동작을 방지하는 단계를 더 포함하는 수퍼스칼라 프로세서에서 메모리 페이지의 컨텐트를 보호하는 방법.
  6. 제1항에 있어서, 상기 정지시키는 단계는 상기 반동기식 메모리 복사 동작이 수행되고 있는 어드레스들의 범위에 대한 유효성의 일시적인 지속성을 유지하는 것인 수퍼스칼라 프로세서에서 메모리 페이지의 컨텐트를 보호하는 방법.
  7. 메모리 페이지의 컨텐트를 보호하는 시스템으로서,
    적어도 하나의 소스 레지스터 및 적어도 하나의 타겟 레지스터가 연결된 프 로세서,
    상기 프로세서에 통신 연결되어 있는 메모리,
    상기 프로세서에 의해 해석되며, 반동기식 메모리 복사 동작을 위한 제1 연산 코드로서, 상기 반동기식 메모리 복사 동작과 연관된 소스 어드레스 범위는 상기 적어도 하나의 소스 레지스터에 저장되어 있고 상기 반동기식 메모리 복사 동작과 연관된 타겟 어드레스 범위는 상기 적어도 하나의 타겟 레지스터에 저장되어 있는 것인 상기 제1 연산 코드,
    상기 프로세서에 의해 해석되며, 메모리 페이지 테이블 엔트리를 제거하기 위한 제2 연산 코드, 및
    상기 제2 연산 코드와 연관된 한 세트의 어드레스를 상기 반동기식 메모리 복사 동작과 연관된 상기 소스 어드레스 범위 및 상기 타겟 어드레스 범위와 비교하는 어드레스 비교기를 포함하며,
    상기 프로세서는, 상기 제2 연산 코드와 연관된 상기 한 세트의 어드레스가 상기 반동기식 메모리 복사 동작과 연관된 상기 소스 어드레스 범위 및 상기 타겟 어드레스 범위 중 적어도 하나에 대응하는 것에 응답하여, 상기 반동기식 메모리 복사 동작이 완료될 때까지 상기 제2 연산 코드의 실행을 중지시키는 것인 메모리 페이지의 컨텐트를 보호하는 시스템.
  8. 제7항에 있어서, 상기 제2 연산 코드는 변환 색인 버퍼 엔트리 무효화 명령어(translation lookaside buffer invalidate entry instruction)인 것인 메모리 페이지의 컨텐트를 보호하는 시스템.
  9. 제7항에 있어서, 상기 프로세서는 상기 반동기식 메모리 복사 동작이 수행되고 있는 동안 상기 반동기식 메모리 복사 동작과 연관된 상기 소스 어드레스 범위 및 상기 타겟 어드레스 범위로의 기록 동작을 방지하는 것인 메모리 페이지의 컨텐트를 보호하는 시스템.
  10. 청구항 10은(는) 설정등록료 납부시 포기되었습니다.
    제7항에 있어서, 상기 프로세서는 상기 반동기식 메모리 복사 동작과 연관된 상기 소스 어드레스로부터의 판독 동작을 허용하는 것인 메모리 페이지의 컨텐트를 보호하는 시스템.
  11. 청구항 11은(는) 설정등록료 납부시 포기되었습니다.
    제7항에 있어서, 상기 프로세서는 상기 반동기식 메모리 복사 동작이 수행되고 있는 동안 상기 반동기식 메모리 복사 동작과 연관된 상기 타겟 어드레스 범위로부터의 판독 동작을 방지하는 것인 메모리 페이지의 컨텐트를 보호하는 시스템.
  12. 청구항 12은(는) 설정등록료 납부시 포기되었습니다.
    제7항에 있어서, 상기 정지시키는 동작은 상기 반동기식 메모리 복사 동작이 수행되고 있는 어드레스들의 범위에 대한 유효성의 일시적인 지속성을 유지하는 것인 메모리 페이지의 컨텐트를 보호하는 시스템.
  13. 제1항 내지 제6항 중 어느 한 항에 기재된 단계들을 수행하기 위한 명령어들 을 포함하는, 메모리 페이지의 컨텐트를 보호하기 위한 컴퓨터 판독가능 매체.
KR1020060114313A 2005-12-22 2006-11-20 반동기식 메모리 복사 동작에서 사용되는 어드레스 범위의유효성 KR100810009B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/315,757 2005-12-22
US11/315,757 US7506132B2 (en) 2005-12-22 2005-12-22 Validity of address ranges used in semi-synchronous memory copy operations

Publications (2)

Publication Number Publication Date
KR20070066860A KR20070066860A (ko) 2007-06-27
KR100810009B1 true KR100810009B1 (ko) 2008-03-07

Family

ID=38184628

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060114313A KR100810009B1 (ko) 2005-12-22 2006-11-20 반동기식 메모리 복사 동작에서 사용되는 어드레스 범위의유효성

Country Status (4)

Country Link
US (2) US7506132B2 (ko)
JP (1) JP2007172610A (ko)
KR (1) KR100810009B1 (ko)
CN (1) CN100447761C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101476018B1 (ko) * 2010-03-11 2014-12-23 인터내셔널 비지네스 머신즈 코포레이션 플래시카피 캐스케이드내의 버퍼 디스크

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7484062B2 (en) 2005-12-22 2009-01-27 International Business Machines Corporation Cache injection semi-synchronous memory copy operation
US7506132B2 (en) * 2005-12-22 2009-03-17 International Business Machines Corporation Validity of address ranges used in semi-synchronous memory copy operations
US7454585B2 (en) * 2005-12-22 2008-11-18 International Business Machines Corporation Efficient and flexible memory copy operation
US7774554B2 (en) * 2007-02-20 2010-08-10 International Business Machines Corporation System and method for intelligent software-controlled cache injection
JP2009207122A (ja) * 2008-01-28 2009-09-10 Seiko Epson Corp 認証印刷のための制御装置、システム及び方法
US8245004B2 (en) * 2008-02-01 2012-08-14 International Business Machines Corporation Mechanisms for communicating with an asynchronous memory mover to perform AMM operations
US8095758B2 (en) * 2008-02-01 2012-01-10 International Business Machines Corporation Fully asynchronous memory mover
US8275963B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Asynchronous memory move across physical nodes with dual-sided communication
US8356151B2 (en) * 2008-02-01 2013-01-15 International Business Machines Corporation Reporting of partially performed memory move
US8015380B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Launching multiple concurrent memory moves via a fully asynchronoous memory mover
US8327101B2 (en) * 2008-02-01 2012-12-04 International Business Machines Corporation Cache management during asynchronous memory move operations
US20090228875A1 (en) * 2008-03-04 2009-09-10 Devries Alex Method and System for Reducing Disk Allocation by Profiling Symbol Usage
US9218183B2 (en) * 2009-01-30 2015-12-22 Arm Finance Overseas Limited System and method for improving memory transfer
US8990633B2 (en) * 2009-04-21 2015-03-24 Freescale Semiconductor, Inc. Tracing support for interconnect fabric
CN104583956B (zh) 2012-06-15 2019-01-04 英特尔公司 用于实现加载存储重新排序和优化的指令定义
EP2862061A4 (en) 2012-06-15 2016-12-21 Soft Machines Inc MEMORY PRECISION FOR VIRTUAL LOAD WITH DYNAMIC SHIPPING WINDOW WITH UNIFORM STRUCTURE
CN104823168B (zh) 2012-06-15 2018-11-09 英特尔公司 用于实现从由加载存储重新排序和优化导致的推测性转发遗漏预测/错误中恢复的方法和系统
KR101996592B1 (ko) 2012-06-15 2019-07-04 인텔 코포레이션 명확화 없는 비순차 load store 큐를 갖는 재정렬된 투기적 명령어 시퀀스들
TWI599879B (zh) 2012-06-15 2017-09-21 英特爾股份有限公司 在處理器中之免消歧義失序載入儲存佇列方法和微處理器
KR20170102576A (ko) 2012-06-15 2017-09-11 인텔 코포레이션 분산된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐
JP6155723B2 (ja) * 2013-03-18 2017-07-05 富士通株式会社 レーダ装置及びプログラム
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9910776B2 (en) * 2014-11-14 2018-03-06 Cavium, Inc. Instruction ordering for in-progress operations
US11354244B2 (en) * 2014-11-25 2022-06-07 Intel Germany Gmbh & Co. Kg Memory management device containing memory copy device with direct memory access (DMA) port
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US10162558B2 (en) 2015-10-30 2018-12-25 Micron Technology, Inc. Data transfer techniques for multiple devices on a shared bus
WO2018115920A1 (en) * 2016-12-20 2018-06-28 Intel Corporation Methods and apparatus to perform memory copy operations
US11416959B1 (en) * 2020-02-10 2022-08-16 Zoox, Inc. Vision architecture
CN111857591A (zh) * 2020-07-20 2020-10-30 北京百度网讯科技有限公司 用于执行指令的方法、装置、设备和计算机可读存储介质
US11720360B2 (en) 2020-09-11 2023-08-08 Apple Inc. DSB operation with excluded region

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06124242A (ja) * 1992-10-09 1994-05-06 Fujitsu Ltd 二重化共有メモリ等価性保証方式
US5930832A (en) 1996-06-07 1999-07-27 International Business Machines Corporation Apparatus to guarantee TLB inclusion for store operations
WO2000033306A1 (en) 1998-12-02 2000-06-08 Matsushita Electric Industrial Co., Ltd. Data copying system, data copying apparatus, data copying method, and recording medium
JP2001147861A (ja) 1999-11-19 2001-05-29 Nec Kofu Ltd メモリーコピー機能を備えた情報処理装置
KR20010085584A (ko) * 1998-08-24 2001-09-07 토토라노 제이. 빈센트 저장 어드레스 생성과 범용 종속 벡터에 관한 적재 블록을위한 메커니즘
KR20040027790A (ko) * 2004-03-05 2004-04-01 주식회사 넥스토디아이 데이터 복사장치

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5211730A (en) * 1975-07-17 1977-01-28 Hitachi Ltd Information processing unit
JPS5311550A (en) * 1976-07-20 1978-02-02 Fujitsu Ltd Multiple processor system
JPH0630075B2 (ja) * 1984-08-31 1994-04-20 株式会社日立製作所 キャッシュメモリを有するデータ処理装置
US4797812A (en) * 1985-06-19 1989-01-10 Kabushiki Kaisha Toshiba System for continuous DMA transfer of virtually addressed data blocks
JPS63231652A (ja) 1987-03-20 1988-09-27 Fujitsu Ltd 制御システムにおけるメモリコピ−方式
GB2228116B (en) 1989-02-10 1993-05-26 Intel Corp Pipelined floating-point load instruction for microprocessor
US5237668A (en) * 1989-10-20 1993-08-17 International Business Machines Corporation Process using virtual addressing in a non-privileged instruction to control the copying of a page of data in or between multiple media
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
DE4323929A1 (de) 1992-10-13 1994-04-14 Hewlett Packard Co Software-geführtes Mehrebenen-Cache-Speichersystem
GB2273181A (en) 1992-12-02 1994-06-08 Ibm Cache/non-cache access control.
US5377337A (en) 1993-06-08 1994-12-27 International Business Machines Corporation Method and means for enabling virtual addressing control by software users over a hardware page transfer control entity
US5497494A (en) 1993-07-23 1996-03-05 International Business Machines Corporation Method for saving and restoring the state of a CPU executing code in protected mode
AU2663095A (en) * 1994-06-10 1996-01-05 Sequoia Systems, Inc. Main memory system and checkpointing protocol for fault-tolerant computer system
JP3717212B2 (ja) * 1995-10-27 2005-11-16 株式会社日立製作所 情報処理装置及び情報処理ユニット
JP2916420B2 (ja) * 1996-09-04 1999-07-05 株式会社東芝 チェックポイント処理加速装置およびデータ処理方法
JP3497055B2 (ja) 1996-12-20 2004-02-16 株式会社リコー 画像形成装置
US6668314B1 (en) * 1997-06-24 2003-12-23 Hewlett-Packard Development Company, L.P. Virtual memory translation control by TLB purge monitoring
US6622263B1 (en) * 1999-06-30 2003-09-16 Jack Justin Stiffler Method and apparatus for achieving system-directed checkpointing without specialized hardware assistance
JP2001184259A (ja) * 1999-12-22 2001-07-06 Nec Kofu Ltd 演算処理装置及び該装置におけるデータ転送方法
US6859862B1 (en) * 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US6810489B1 (en) * 2000-09-06 2004-10-26 Hewlett-Packard Development Company, L.P. Checkpoint computer system utilizing a FIFO buffer to re-synchronize and recover the system on the detection of an error
US6925547B2 (en) 2000-12-14 2005-08-02 Silicon Graphics, Inc. Remote address translation in a multiprocessor system
US6502170B2 (en) 2000-12-15 2002-12-31 Intel Corporation Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes
US6738870B2 (en) 2000-12-22 2004-05-18 International Business Machines Corporation High speed remote storage controller
US6950837B2 (en) 2001-06-19 2005-09-27 Intel Corporation Method for using non-temporal streaming to improve garbage collection algorithm
US6960837B2 (en) * 2002-02-26 2005-11-01 International Business Machines Corporation Method of connecting core I/O pins to backside chip I/O pads
US6981104B2 (en) * 2002-07-12 2005-12-27 Hewlett-Packard Development Company, L.P. Method for conducting checkpointing within a writeback cache
US6920521B2 (en) * 2002-10-10 2005-07-19 International Business Machines Corporation Method and system of managing virtualized physical memory in a data processing system
CN1504090A (zh) * 2002-11-29 2004-06-16 冯太勤 水稻壮苗抗倒剂
US7225316B2 (en) * 2003-11-17 2007-05-29 Intel Corporation Memory mapping apparatus, systems, and methods
US7313668B2 (en) * 2004-01-29 2007-12-25 Hewlett-Packard Development Company, L.P. Immediate virtual memory
JP4892812B2 (ja) * 2004-04-28 2012-03-07 株式会社日立製作所 キャッシュ制御およびデータ処理システム並びにその処理プログラム
JP4715286B2 (ja) * 2004-05-11 2011-07-06 株式会社日立製作所 計算機システムおよび計算機システムの制御方法
US7257686B2 (en) * 2004-06-03 2007-08-14 International Business Machines Corporation Memory controller and method for scrubbing memory without using explicit atomic operations
US7506132B2 (en) * 2005-12-22 2009-03-17 International Business Machines Corporation Validity of address ranges used in semi-synchronous memory copy operations

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06124242A (ja) * 1992-10-09 1994-05-06 Fujitsu Ltd 二重化共有メモリ等価性保証方式
US5930832A (en) 1996-06-07 1999-07-27 International Business Machines Corporation Apparatus to guarantee TLB inclusion for store operations
KR20010085584A (ko) * 1998-08-24 2001-09-07 토토라노 제이. 빈센트 저장 어드레스 생성과 범용 종속 벡터에 관한 적재 블록을위한 메커니즘
WO2000033306A1 (en) 1998-12-02 2000-06-08 Matsushita Electric Industrial Co., Ltd. Data copying system, data copying apparatus, data copying method, and recording medium
JP2001147861A (ja) 1999-11-19 2001-05-29 Nec Kofu Ltd メモリーコピー機能を備えた情報処理装置
KR20040027790A (ko) * 2004-03-05 2004-04-01 주식회사 넥스토디아이 데이터 복사장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101476018B1 (ko) * 2010-03-11 2014-12-23 인터내셔널 비지네스 머신즈 코포레이션 플래시카피 캐스케이드내의 버퍼 디스크

Also Published As

Publication number Publication date
US7506132B2 (en) 2009-03-17
US20090182968A1 (en) 2009-07-16
US7882321B2 (en) 2011-02-01
US20070150675A1 (en) 2007-06-28
CN100447761C (zh) 2008-12-31
KR20070066860A (ko) 2007-06-27
JP2007172610A (ja) 2007-07-05
CN1987826A (zh) 2007-06-27

Similar Documents

Publication Publication Date Title
KR100810009B1 (ko) 반동기식 메모리 복사 동작에서 사용되는 어드레스 범위의유효성
KR100856774B1 (ko) 효율적이고 유연성있는 메모리 복사 동작
US7890703B2 (en) Cache injection using semi-synchronous memory copy operation
US10776113B2 (en) Executing load-store operations without address translation hardware per load-store unit port
JP3588755B2 (ja) コンピュータシステム
US7272664B2 (en) Cross partition sharing of state information
US5511175A (en) Method an apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US7849298B2 (en) Enhanced processor virtualization mechanism via saving and restoring soft processor/system states
US20150378731A1 (en) Apparatus and method for efficiently implementing a processor pipeline
US20080127182A1 (en) Managing Memory Pages During Virtual Machine Migration
US20020087849A1 (en) Full multiprocessor speculation mechanism in a symmetric multiprocessor (smp) System
US20080086623A1 (en) Strongly-ordered processor with early store retirement
US10606593B2 (en) Effective address based load store unit in out of order processors
WO2002082278A1 (en) Cache write bypass system
US20090198981A1 (en) Data processing system, processor and method of data processing having branch target address cache storing direct predictions
US20040111572A1 (en) Managing processor architected state upon an interrupt
US20040111593A1 (en) Interrupt handler prediction method and system
US6983347B2 (en) Dynamically managing saved processor soft states
US7039832B2 (en) Robust system reliability via systolic manufacturing level chip test operating real time on microprocessors/systems

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120201

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130124

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee