KR20040111361A - 포인터 식별 및 자동 데이터 프리페치 - Google Patents

포인터 식별 및 자동 데이터 프리페치 Download PDF

Info

Publication number
KR20040111361A
KR20040111361A KR10-2004-7013089A KR20047013089A KR20040111361A KR 20040111361 A KR20040111361 A KR 20040111361A KR 20047013089 A KR20047013089 A KR 20047013089A KR 20040111361 A KR20040111361 A KR 20040111361A
Authority
KR
South Korea
Prior art keywords
memory
register
processor
address
prefetch
Prior art date
Application number
KR10-2004-7013089A
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 KR20040111361A publication Critical patent/KR20040111361A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은, 기술이 발달되어, 그에 의해 가능한 포인터 값이 런타임에 식별되고, 대응하는 저장공간의 위치의 내용이 효과적인 메모리 액세스 지연을 감소시키기 위해 캐시 계층구조로 프리페치될 수 있으며, 일련의 실시예에서, 하나 이상의 쓰기가능한 저장공간이 메모리 주소 공간의 일부 또는 일부들을 한정하기 위해 프로세서 아키텍쳐에 한정되는 것을 특징으로 한다.

Description

포인터 식별 및 자동 데이터 프리페치{POINTER IDENTIFICATION AND AUTOMATIC DATA PREFETCH}
컴퓨터 시스템은 일반적으로 무엇보다도, 메모리 시스템과 하나 이상의 프로세서 및/또는 실행 유닛을 포함한다. 상기 메모리 시스템은 정보의 리포지토리로서 사용되고, 프로세서는 상기 메모리 시스템에서 정보를 읽고, 그 위에서 동작하고, 그것을 다시 저장한다. 프로세서의 속도와 메모리 시스템의 크기가 증가하면서, 상기 프로세서가 임의의 저장된 정보를 주소화하는 능력과 상기 메모리 시스템이 그것을 빨리 제공하는 능력 사이의 불일치(mismatch)가 증가하여 왔다. 이 불일치를 다루기 위해, 메모리 시스템은 일반적으로 종래 기술에서 잘 알려진 캐싱 기술을 사용한 계층구조로 구성된다.
일반적으로, 캐시는 주 메모리에 접근(예를 들면, 읽거나 쓸 때)할 때, 평균 지연 문제를 감소시킬 수 있다. 캐시는 보통 주메모리에 대응되는 정보의 작은 일부를 나타내는 작고, 특별히 구성되고, 높은 스피드의 메모리이다. 상기 캐시(작고, 상대적으로 빠르고, 비싼 메모리)를 주메모리(크고, 상대적으로 느린 메모리)와 프로세서 사이에 위치시킴으로써, 전체로서의 상기 메모리 시스템은 상기 캐시의 속도로 상기 프로세서로부터 연속적인 번호의 요청을 이행하여, 그에 의해 상기 시스템의 전체 지연을 감소시킬 수 있다. 어느 시스템은 여러 레벨의 캐시를 정의할 수 있다.
상기 프로세서에 의해 요청된 데이터가 캐시 안에 있을 때("적중(hit)"), 상기 요청은 상기 캐시의 속도로 이행된다. 그러나, 상기 프로세서에 의해 요청된 데이터가 캐시 안에 없을 때("부적중(miss)"), 상기 프로세서는 상기 데이터가 보다 느린 주메모리로부터 제공될 때까지 대기해야하며, 보다 많은 지연을 초래한다. 일반적으로, 유용한 작업이 데이터가 주메모리로부터 제공되는 동안 이행되지 못하고 정체된다. 종래 기술에서, 캐시 부적중의 빈도는 다른 것에 비해 일련의 애플리케이션이나 실행에서 매우 높다. 특히, 일련의 데이터베이스 시스템에 대한 액세스는 일련의 과학적 또는 공학적 애플리케이션보다 높은 빈도를 가진 캐시에서 부적중하는 경향이 있다. 일반적으로, 캐시 부적중 빈도에서의 그러한 다양성은 상기 메모리 액세스 시퀀스의 공간적 시간적 집약성(locality) 특성으로 파악될 수 있다.
일련의 애플리케이션에서, 특히 배열(array) 액세스에 의해 특징지어진 애플리케이션에서, 하드웨어 기술이 후속 액세스를 예측하기 위해 사용될 수 있다. 진행(stride) 예측 기술과 연결된 하드웨어 프리페치 전략은 그러한 예의 하나이다. 그러나, 많은 애플리케이션에서, 하드웨어가 메모리 액세스 시퀀스를 식별하고 예측하는 것은 어려운 일이며, 소프트웨어 기술이 대신해서 또는 부가하여 사용된다.예를 들면, 캐시 적중의 가능성을 증대시키고 그에 의해 메모리 액세스 지연을 뚜렷하게 개선하기 위해, 일련의 컴퓨터 시스템들은 메모리에서 캐시로 데이터를 프리페치하는 명령을 정의한다. 상기 전제는 소프트웨어(예를 들면, 프로그래머나 컴파일러)가 프리페치 기회를 식별하기에 적당한 위치에 있는 것이다.
불행히도 애플리케이션의 어느 클래스에 대해서는 종래의 하드웨어와 소프트웨어 프리페치 기술이 그다지 효과가 없다. 예를 들면, 어느 애플리케이션에서는, 성능은 프로세서가 횡단의 데이터 구조로 나타나 있는 데이터에 포인터를 사용하여 얼마나 잘 액세스하는가에 의해 나타난다. 컴포넌트 개체가 동적으로 할당되고 실행과 액세스하는 동안 내내 사용되지 않는 복합 데이터 구조에서는 특히, 높은 정도의 공간적 시간적 집약성이 나타나지 않고, 액세스 패턴은 종래 기술이 식별하기에는 어려울 수 있다. 일반적으로 관계형 데이터베이스 시스템에서 사용되는 데이터구조는 자주 그러한 프리페치 요구를 나타낸다.
본 발명은 프리페치(prefetch) 기술에 관한 것으로, 특히, 프로세서에 의한 가능한 포인터 값의 검지에 기초한 자동 프리페치에 관한 것이다.
본 발명은 참고자료로 첨부된 도면에 의해 그 많은 목적, 특성, 및 이점이당업자에게 보다 명확하게 이해될 것이다.
도 1은 캐시 메모리의 여러 레벨을 포함하고 본 발명의 기술이 본 발명의 일련의 실시예에 따라 자동 프리페치를 제공하도록 사용될 수 있는 예시적인 프로세서 아키텍쳐를 도시한 블록도,
도 2는 본 발명의 일련의 실시예에 따라 메모리 참조값 검지 메커니즘의 동작을 도시한 도,
도 3은 예로 든 프로세서의 명령을 실행할 때의 파이프라인 스테이지를 도시하고, 레지스터에 정의된 가능한 포인터 값의 식별이 실행될 수 있는 파이프라인 실행에서의 적합한 여러 스테이지를 식별하는 것을 나타내는 도, 및
도 4는 본 발명의 일련의 실시예에 따라 메모리 참조값 검지 메커니즘의 동작을 도시한 플로우 차트로서, 상기 플로우 차트는 하나 이상의 마아커 레지스터(marker register)가 힙을 한정하기 위해 사용되는 예시적인 사용을 도시한 도이다.
다른 도면에서 동일한 참조 기호의 사용은 유사한 또는 동일한 항목을 지시한다.
따라서 기술이 발달하면서 그에 의해 가능한 포인터 값이 런타임 중에 식별되고, 대응되는 저장 위치의 내용이 캐시 계층구조로 프리페치되어 효과적으로 메모리 액세스 지연을 감소시킬 수 있는 기술이 개발되어 왔다. 특히, 일련의 구현에서, 메모리 주소 공간의 부분 또는 부분들을 한정하기 위해서, 하나 이상의 쓰기 가능한 저장공간이 프로세서 아키텍쳐에서 정의된다.
하기의 설명은 프로세서에서 메모리 참조값의 검지에 기초한 자동 프리페치를 용이하게 하는 일련의 시스템, 장치, 방법 및 기술을 나타낸다. 예시적인 실시예는 프로세서 레지스터에 예정된 가능한 포인터 값의 검지를 목표로 하며, 쓰기가능한 한 쌍의 저장공간을 사용한 자동 프리페치를 위한 메모리 주소값의 관련 범위를 한정하는 능력을 포함한다. 설명의 간략화를 위해, 상기 설명은 메모리 주소의 단일한 연속된 범위에 대응하는 값을 강조하지만, 보다 일반적으로는, 주소지정 가능한 저장공간의 임의의 서브셋(subset)(연속적이지 않은 범위를 포함)도 일부 실시예에서는 식별될 수 있다. 하나의 예로든 서브셋은 메모리가 동적으로 할당될 수 있는 힙에 대응한다. 그러나, 보다 일반적으로는, 바람직한 서브셋은 특정 설명(exploitation-specific)이다. 유사하게, 본 문서의 기술의 많은 부분이 단일 프로세서, 프로세스 또는 스레드 콘텍스트를 가정하지만, 본 발명에 따른 일련의 실시예는 멀티프로세서의 각 프로세서, 각각의 실행하는 프로세스 및/또는 스레드에 대해 개별화할 수 있는 자동화된 프리페치부를 제공한다. 따라서, 한정이 아닌 상기의 관점에서, 일련의 실시예가 기술될 것이다.
도 1은 본 발명의 일련의 실시예에 따라 자동화된 프리페치 기술을 사용하여 감추어지거나 적어도 부분적으로 감추어질 수 있는 일련의 메모리 시스템 지연이 있는 메모리 계층구조를 포함하는 예시적인 프로세서(100)의 기능적 유닛을 도시한다. 프로세서(100)의 메모리 계층구조는 다음 레벨의 캐시(102, 102A), 주메모리(104) 및 임의의 레벨(특정지어 도시되지 않음)의 추가적인 캐시 또는 버퍼링 뿐만 아니라 로드/스토어 유닛(110)에 결합된 데이터 캐시(101)를 포함한다. 프로세서(100)의 설계는 프로세서 기반의 일련의 SPARC 아키텍쳐의 설계를 연상시키고, 실행유닛의 예시적인 세트, 즉, 로드-스토어 유닛(110), 정수 실행 유닛(130) 및 부동소수점 유닛(150)을 포함한다.
SPARC 아키텍쳐에 관한 설명 및/또는 전문용어는 순수하게 예시의 목적으로,본문의 설명에 기초하여 본문에서 사용되며, 당업자는 본 발명의 설명이 넓고 다양한 프로세서 구현과 아키텍쳐에 상당함을 이해할 것이다. 프로세서 기반의 SPARC 아키텍쳐는 캘리포니아 Palo, Alto의 Sun Microsystems, Inc으로부터 사용가능하다. SPARC의 상표는 라이선스로 사용되며, 미국과 기타 국가에서 SPARC International, Inc.의 상표 또는 등록된 상표이다. SPARC 상표가 있는 상품은 Sun Microsystems에 의해 개발된 아키텍쳐를 기반으로 한다.
도 1에서, 레지스터(120)(일련의 실시에서, 리네임 기능(renaming facility), 리오더 버퍼(reorder buffer) 또는 비순차적 및/또는 순차적인 기능을 포함할 수 있음)에 대한 저장공간은 정수 실행 유닛(130)과 결합된다. 다른 구현은 구조적 상태에 대해 다른 형태 또는 저장의 실시를 사용한다. 적당한 형태 및 저장의 실시는 특정한 아키텍쳐 및 프로세서의 구현이다. 그러나, 어느 경우건, 본 발명에 따라, 메모리 참조(또는 주소지정)에 적당한 저장공간을 대상으로 하는 명령(또는 동작)을 식별하고 또한 그러한 메모리의 정의될 수 있는 서브셋(또는 부분)을 가진 그러한 저장공간에 정의된 값에 대한 대응을 검지하는 기능이 제공된다. 그러한 대상 식별 및 대응의 검지에 기초하여, 프리페치가 초기화될 수 있다. 예를 들면, 도 1에 관하여, 프리페치 동작은 로드 대기열(111)의 사용가능한 위치에 삽입될 수 있다.
프리페치는 그러한 모든 경우에 개시될 필요가 없음을 주의하라. 예를 들면, 캐시에 이미 내재한 라인(예를 들면, 데이터 캐시(101)에 이미 내재한)을 목표로 하는 프리페치는 일반적으로 무시된다. 유사하게, 상기 대기한 로드 또는 스토어 동작이 원하는 프리페치와 동일한 캐시라인을 대상으로 한다면, 이미 대기한 로드 또는 스토어 동작은 프리페치가 필요없게 한다. 일련의 실시예에서, 로드 대기열의 깊이 또는 메모리 액세스 대역이 충분하지 않을 때, 프리페치를 무시하는 것이 바람직하다. 일반적으로, 다양한 종래의 로드/스토어 기술중 어느 하나가 특정한 구현에서 사용되며 그러한 기술은 상기 기술에서 잘 이해될 것이다. 어느 경우건간에, 초기화될 때, 그러한 자동적으로 생성되는 프리페치는 명령어 스트림에서 어떠한 프리페치 명령에도 대응할 필요가 없으며(그리고, 일반적으로 대응하지 않는다.), 상기 프리페치는 종래 진행 예측 기술이 부적당함을 입증한 명령어 스트림에 대해 자동으로 생성될 수 있다. 즉, 어떠한 것이건 간에 프리페치를 돕는 소프트웨어(예를 들면, 프리페치 명령에 삽입된 컴파일러) 및/또는 종래 프리페치를 돕는 하드웨어를 갖는 본 발명에 따른 기술 또는 기능을 조합하는 것을 본 문서에서 배제하지 않는다.
일반적인 로드/스토어 프로세서 아키텍쳐에서 데이터에 액세스하기 위해, 프로그램 명령(예를 들면, 로드 타입 명령 및 스토어 타입 명령)이 일반적으로 하나의 레지스터에 저장된 완전히 특정한 가능한 포인터 값에 따라 동작한다. 레지스터 R22로 레지스터 R21에 저장된 주소에 의해 식별되는 메모리의 내용을 로드하는 로드명령LD [RH], R22는 전형적인 것이다. 일반적으로, R21에 내재한 포인터 값은 선행한 로드의 결과일 수도 있고(예를 들면, 연결목록의 횡단(linked-list traversal)의 경우), 주소 계산의 결과일 수도 있고, 또는 특정한 프로세서 아키텍쳐에 의해 정의된 다른 동작의 부차적인 효과일 수도 있다. 특정한 실시에 의해조정되는 각각의 경우에서, 우리는 하나의 레지스터(예를 들면, 레지스터 R21)에 대해 정의된 값이 그것이 포인터 값임을 나타내는 패턴과 일치하는 지를 검지하기 위해 본 발명에 따른 기술을 사용한다.
본 발명에 따른 기술이 메모리 주소의 연속적인 범위에 반드시 한정되지는 않고, 단일한 연속된 범위로 놓지만, 많은 측면이 메모리 주소의 단일한 연속된 범위에 대응하는 패턴의 검지에 따라 이해될 것이다. 그러한 패턴에 대한 적합한 부호화와 비교기술은 직접적인 것이다. 그럼에도 불구하고, 당업자는 본문서의 기술에 기초하여, 주소지정 가능한 저장공간의 다른 서브셋을 한정하기 위해 사용되는 다른 패턴으로의 적합한 확장이 있음을 이해할 것이다.
상기의 관점에서 한정되지 않고, 포인터에 의해 식별된 또는 참조된 데이터는 흔히 단순한 범위에 의해 나타낼 수 있는 메모리의 범위에 내재한다. 사실, 힙에서 흥미있는 데이터에 대한 대부분의 포인터는 0xFFFF0000에서 0xFFFFFFFF까지의 가능한 값의 범위에 대응하는 위치들에 나타난다는 것을 판정 또는 발견한다. 물론, 상기 범위를 정의한 값은 순수하게 임의적이다. 일반적으로, 그러한 범위는 상기 힙 자체의 현재 경계(bound) 또는 그의 특정한 부분에 대응할 수 있다. 상기 특정 범위가 어떤 것이든 간에, 단일 프로세서의 레지스터에 정의된 값은 가능한 포인터 값을 식별하는 범위와 비교될 수 있다.
도 2는 예시적인 메모리 참조값 검지 메커니즘의 동작을 도시한다. 프로세서(200)의 여러 실행 스테이지(예를 들면, 201A, 201B, 201C...201D)중 어느 하나에서, 실행 명령 또는 동작은 레지스터에 대해 정의된 값을 생성할 수 있다. 일반적으로, 프로세서 특정 세트의 명령, 동작 또는 그의 변형이 식별될 수 있고, 그것은 그러한 프로세서(200)의 레지스터(특정하여, 도시되지 않음)들을 대상으로 한다. 물론, 많은 프로세서 실시에서, 구조적인 기술이 레지스터를 리네임 및/또는 순차적인 또는 비순차적 실행을 제공하도록 사용될 수 있다. 따라서, 프로세서의 레지스터를 목표로 하는 명령 또는 동작은 그러한 상태가 얼마나 순간적으로 또는 순차적으로 나타나는가를 고려할 필요 없이, 상기 프로세서의 구조적인 상태를 목표로 하는 그들의 명령 또는 동작을 포함함을 이해할 것이다. 본 문서의 설명에 기초하여, 당업자는 본 발명의 어느 특정 프로세서 설명에 대해 명령 또는 동작의 관련된 세트와 구조적인 상태의 관련된 리포지토리를 이해할 것이다.
도 2는 프로세서(200)에 의해 주소지정 가능한 메모리(204)의 대응하는 서브셋(205A)을 식별하는 한 쌍의 저장공간(230)에 의해 정의된 주소의 범위(205)와 구조적 상태의 표시(220)에 대해 정의된 값의 비교를 도시한다. 상기와 같이, 주소지정 가능한 메모리(204)의 서브셋(205A)은 힙 또는 주소지정 가능한 메모리의 다른 관련된 서브셋에 대응한다. 일련의 실시예에서, 서브셋(205A)은 임의의 성능 임계 데이터 구조에서 사용된 주소의 범위(또는 범위들)에 대응한다. 일련의 실시예에서, 상기 패턴 설명(스토어(230)에 의한 것과 같은)의 프로세서 표시는 자동 프리페치 메커니즘의 포커스를 프로그래머가 제어하도록 하기 위해 애플리케이션 코드에 의해 쓰기가능하다. 다른 실시예에서, 패턴 설명의 정의는 실행 또는 동작 환경의 제어 아래에 있다. 예를 들면, 상기 패턴 설명은 힙의 현재 범위에 대응하도록 메모리 할당자(allocator)에 의해 유지된다.
일반적으로, 잠재적인 포인터 값은 다양한 실행 스테이지(예를 들면, 201A, 201B, 201C... 201D) 중 어느 하나에서 생성되고, 적합한 스테이지는 일반적으로 특정한 프로세서 및 명령 또는 동작이다. 도 3은 프로세서에 기반한 예로 든 SPARC 아키텍쳐의 명령의 실행에서 파이프라인 스테이지를 나타내고, 레지스터에 대해 정의된 가능한 포인터 값의 식별이 수행되는 파이프라인의 실행의 다양한 적합한 스테이지를 식별한다. 특히, 도 3은 9 개의 스테이지를 가진 파이프라인을 도시하는데, 페치(301), 디코드(302), 집단화(grouping)(303), 실행(304), 캐시 액세스(305), 로드 부적중(306), 정수 파이프 대기(307), 트랩 해결(308), 및 후기입(writeback)(309)이 그것이다. 정수 명령은 실행 스테이지(304)에서 실행되고 가상 주소가 계산된다. 스테이지(305)에서, 데이터 캐시(예를 들면, 데이터 캐시(101) 및 지지 데이터 TLB(101A), 도 1을 보라)는 액세스되고, 적중 및 부적중이 판정된다. 나중의 스테이지 동안, 로드 부적중은 로드 버퍼(예를 들면, 로드 대기열(111), 도 1을 보라)로 들어가고, 조건들을 대기하고, 트랩들(있다면)이 해결되고, 마지막으로 스테이지(309)에서 결과가 레지스터에 기록되고(예를 들면, 레지스터 파일(120)에, 도 1을 보라), 명령이 이행된다.
도 3의 실례에 있어서, 주소지정 가능한 메모리의 서브셋에 대응하는 패턴(또는 패턴들)과의 비교는 실행 스테이지(304)의 시작에서 수행된다. 일반적으로, 프리페치의 개시는 그 이후 가능한 빨리(실행 스테이지(304) 그 자체 동안에) 발생하거나, 레지스터에 정의된 값이 스테이지(309)에서 레지스터 저장공간에 실제로 기록될 때까지 연기될 수 있다. 어느 실시예들에서, 상기 패턴 또는 범위에 대한비교에 적합한 값이 사용가능한 실행의 특정 스테이지는 명령에 따라(또는 동작에따라), 또는 실시예에 따라 다양하다. 예를 들면, 로드 동작의 실시예에 의해 메모리에서 레지스터 저장공간으로 로드된 값은 데이터 캐시의 액세스(스테이지(305)) 이후 또는 나중에, 그러한 캐시 라인을 채운 후에 사용가능하다. 한편, 연산계산의 결과(예를 들면, 주소계산의 일부와 같은)는 스테이지(304)에서 사용가능하다. 일반적으로, 결과 값이 정의된 레지스터가 주소지정 가능한 메모리의 서브셋을 기술한 패턴과 비교될 수 있는 특정 실행 스테이지 및 온-칩 계산 구조는 명령, 프로세서 및 구현에 종속적이다. 따라서, 가능한 포인터 값의 검사의 특정 타이밍과 그러한 검사를 수행하는 계산구조의 배치는 실시예에 따라 다양하다.
대신할 수 있는 넓은 범위의 다양한 설계가 본 발명에 따른 프로세서 실시의 구현에 사용된다. 예를 들면, 일련의 실시예에서, 가능한 포인터 값의 검사는 모든 레지스터 경계값 상에서 필수적으로 무차별하게 수행된다. 예를 들면, 임의의 프로세서 아키텍쳐에서, 결과 버스 트래픽이 관찰될 수 있다. 다른 실시예에서, 가능한 포인터 값 검사는 임의의 계산 구조 또는 파이프라인 스테이지에서 구현된다. 대안으로, 또는 부가하여, 임의의 명령 또는 동작의 결과는 가능한 포인터 값 검사를 목표로 한다. 그러한 경우, 가능한 포인터 값 검사는 명령 디스패치(dispatch) 및 결과 실행(commitment) 로직과 함께 동작한다. 상기 특정 설계가 무엇인 건 간에, 본 발명의 일부 실시예에 따른 프로세서는 레지스터에 정의된 가능한 포인터 값 또는 구조적 상태의 다른 표시의 검지에 기반하여, 메모리로부터 일련의 데이터의 프리페치를 상기 프로세서에 의해 초기화한다.
도 4는 본 발명의 어느 실시예에 따른 메모리 참조값 검지 메커니즘의 동작을 나타내는 플로우차트이다. 상기와 같이, 값들은 본 발명의 적절한 계산구조 또는 본 발명의 프로세서 설명의 파이프라인 스테이지에서 모니터된다. 도 4의 특정 도면에서, 명령의 서브셋의 결과들은 가능한 포인터 값의 검지를 목적으로 한다. 그러므로, 두개의 검사가 강조된다. 우선, 모든 명령 또는 동작의 레지스터 대상의 서브셋의 일부인 명령 또는 동작들이 식별된다(401). 레지스터 대상의 명령은 대부분의 명령 세트 아키텍쳐에서 쉽게 인식된다. 예를 들면, 일련의 프로세서 구현에서, 복호화하는 동안(또는 그 결과로서) 레지스터를 대상으로 하는 명령 또는 동작이 명확해진다. 물론, 어느 실시에서는(도 4에서 특별히 도시되지는 않음), 레지스터 대상 명령의 서브셋은 가능한 포인터 값의 검지를 목표로 한다. 예를 들면, 어느 연산 동작은 컴파일러에 의해 생성된 주소 계산 명령 시퀀스에서 마지막(또는 나중의 스테이지) 단계로 명확하게 사용된다. 따라서, 어느 구현들은 그러한 동작의 결과 값에 따라 가능한 포인터 값의 검지에 포커스를 맞춘다. 대안으로 또는 부가하여, 레지스터의 서브셋은 포인터 값의 저장에 매우 많이 사용되고, 가능한 포인터 값의 검지는 그러한 레지스터 대상 명령에 적절하게 포커스를 맞춘다.
관련되는 명령 유형(예를 들면, 레지스터 대상의 명령)의 식별(있다면) 후에, 특정한 결과 값은 주소지정 가능한 메모리의 흥미를 끄는 서브셋들을 기술한 패턴과 비교된다. 상기 흥미를 끄는 서브셋들은 전부 특정한 구현이 될 수 있다. 예를 들면, 도 4의 플로우 차트는 하나 이상의 마아커 레지스터가 힙을 한정하는 패턴을 부호화하기 위해 사용되는 예시적인 설명을 도시한다. 주소지정 가능한 메모리의 다른 부분은 다른 설명에서 바람직하다. 일반적으로, 베이스 및 경계 또는 베이스 및 오프셋 부호화에 대한 가능한 포인터 값의 비교는 매우 단순하고, 임의의 잘 동작하는 베이스, 경계 및 오프셋에 대해, 비교가 특히 효과적으로 계산된다. 주소지정 가능한 메모리 위치의 단일한 연속된 범위는 많은 실시예에 적합한 반면, 다른 실시예는 원한다면, 복수의 범위들(마아커 레지스터(403)의 세트의 형태와 같이, 결합된 저장공간)을 제공한다. 예를 들면, 일련의 실시예는 여러 개의 스레드 또는 프로세서에 대해 잠재적으로 별개의 범위를 제공하거나, 또는 주소지정 가능한 메모리의 비연속적인 서브셋을 제공한다.
일반적으로, 주소지정 가능한 메모리의 특정 서브셋(또는 범위)은 런타임에서 정의될 수 있는 것이 바람직하다. 도 4는 힙의 현재범위에 대응하는 가능한 포인터 값의 검지를 돕기 위해 패턴(하나 이상의 마아커 레지스터(403)에서 부호화 되는)을 유지하는 그러한 런타임 기능의 특정 설명을 도시한다. 일반적으로, 그러한 마아커 레지스터 또는 다른 적합한 부호화의 내용은 주소지정 가능한 메모리의 흥미있는 서브셋에 대응하도록 초기화되고, 일련의 실시예에서는, 그러한 부호화가 흥미있는 서브셋 변화로서 갱신된다(예를 들면, 힙이 확장 또는 단축되는 것처럼). 따라서, 일련의 실시예의 마아커 레지스터(403)는 프로그램 제어 하에 있는 쓰기가능한 저장공간으로서, 예를 들면 특정 기계의 레지스터이다. 그럼에도 불구하고, 주소지정 가능한 저장공간의 흥미있는 서브셋이 프로그램의 특정 애플리케이션과 독립적으로 정의된 일련의 설명에서, 고정된 서브셋 또는 범위의 부호화가 적합하다. 본 문서의 설명의 일부가 여러 파이프라인 스테이지에서 중단되고 비교되는값에 관한 것과 달리, 본 발명의 일련의 실시예에 따른 다른 실시예들은 가능한 포인터 값에 대해 레지스터 또는 다른 구조적인 상태의 저장공간을 정밀하게 조사한다.
본 발명이 다양한 실시예를 참조하여 기술되었지만, 이 실시예들은 예시일 뿐 본 발명의 범위가 그에 한정되지 않음을 이해할 것이다. 많은 변경과 변조, 부가, 및 개선이 가능하다. 예를 들면, 본 문서의 설명 중 많은 것이 프리페치 및 주소지정 가능한 메모리에 포커스를 맞추었음에도 불구하고, 본 발명의 기술은 컴퓨팅 환경에서 사용될 수 있는 임의의 다양한 주소지정 가능한 자원중 어느 것에 대해서도 미리 실행할 수 있는 행동에 적용 가능하다. 상기와 같이, 본 발명의 기술은 다른 프리페치 기능과 함께 사용될 수 있고, 그것은 하드웨어 또는 소프트웨어 기반일 수 있다. 여러 적합한 패턴 중 어느 하나가 주소지정 가능한 저장공간의 서브셋을 식별하기 위해 부호화될 수 있고, 여러 적합한 물리적 구조 중의 어느 하나가 동일한 것을 부호화하는 데에 사용될 수 있다.
"명령"과 "동작"이라는 단어가 다른 것들과, 예를 들면, 명령 세트와 동작(마이크로코드 또는 기타)들에 따른 명령들과 식별하도록 사용됨에도 불구하고, 그러한 구별은 본 발명에 관해서는 의미가 없다. 따라서, 상기 명령이라는 단어가 일반적으로 청구범위에서 사용하는 동안, 당업자들은 그러한 단어의 범위가, 다른 것이 사용하는 차이를 고려하지 않고, 일반적인 의미로, 명령, 동작 또는 오프코드(opcode), 바이트코드 등과 같은 임의의 유사한 기능적인 부호화의 범위를 포함한다는 것을 이해할 것이다. 유사하게, 포인터 값(및 가능한 포인터 값의 검지)이일반적으로 가상 주소공간에서 정의됨에도 불구하고, 다른 정의(예를 들면, 물리적 주소, 선형 주소, 인덱스 등)들과 부호화가 임의의 설명에 적합하다.
보다 일반적으로, 본 발명에 따른 실시예는 특정한 실시예에 관하여 기술되었다. 이 실시예들은 예시적인 것을 의미하며, 한정되지는 않는다. 따라서, 복수의 예들이 단일한 예로서 본 문서에서 기술된 컴포넌트로 제공된다. 다양한 컴포넌트들, 동작들, 및 데이터 스토어들 사이의 경계들은 어느 정도 임의적이며, 특정한 동작들이 특정한 예시적 구성에 관하여 도시되었다. 하기의 청구범위내에서 기능의 다른 배치들이 고안되고 그 범위에 들어갈 것이다. 마지막으로, 상기 예시적인 구성에서 별개의 컴포넌트들로 제시된 구조 및 기능들은 결합된 구조 및 컴포넌트로서 실현될 수 있다. 이것과 다른 변형, 변조, 추가, 및 개선들이 하기의 청구범위에 정의된 본 발명의 범위 내에서 제시될 수 있다.

Claims (33)

  1. 프로세서에 있어서,
    레지스터,
    그 안에 부호화되는 하나 이상의 값에 기초하여 메모리 주소 서브셋 범위를 한정하는 적어도 하나의 쓰기가능한 저장공간, 및
    상기 한정된 메모리 주소 서브셋으로 상기 레지스터에 대해 정해진 값의 대응에 기초하여 프리페치를 초기화하는 프리페치부를 포함하는 것을 특징으로 하는 프로세서.
  2. 제 1 항에 있어서,
    주소계산에 응답하는 로직으로서, 상기 계산된 주소와 상기 한정된 메모리 주소 서브셋 사이의 매치에 기초하여 프리페치를 초기화하는 로직을 추가로 포함하는 것을 특징으로 하는 프로세서.
  3. 제 1 항 또는 2 항에 있어서,
    상기 레지스터로의 값의 저장에 응답하는 로직으로서, 상기 저장된 값과 상기 한정된 메모리 주소 서브셋 사이의 매치에 기초하여 프리페치를 초기화하는 로직을 추가로 포함하는 것을 특징으로 하는 프로세서.
  4. 제 1 항 또는 2 항에 있어서,
    상기 레지스터에 대해 정해진 값과 상기 한정된 메모리 주소 서브셋 사이의 매치에 기초하여 프리페치를 초기화하는 주소 매치 로직으로서, 상기 매치는 주소계산과 레지스터로의 저장 상의 파이프라인 단계에서 수행되는 것을 특징으로 하는 로직을 추가로 포함하는 것을 특징으로 하는 프로세서.
  5. 제 1 내지 4 항 중 어느 한 항에 있어서,
    상기 레지스터에 대해 정해진 값은 구조적 레지스터(architectural register) 또는 그에 대응하는 임의의 리오더(reorder) 버퍼 상태로 정해지는 것을 특징으로 하는 프로세서.
  6. 제 1 내지 5 항 중 어느 한 항에 있어서,
    상기 레지스터는 동작 레지스터 세트의 레지스터인 것을 특징으로 하는 프로세서.
  7. 제 6 항에 있어서,
    상기 동작 레지스터 세트는 특정한 스레드 또는 프로세스에 대응하고,
    상기 한정된 메모리 주소 서브셋은 상기 특정 스레드 또는 프로세스에 의해 또는 그에 대해 동적으로 할당된 위치에 대응하는 것을 특징으로 하는 프로세서.
  8. 제 1 내지 7 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 쓰기가능한 저장공간은 메모리 주소의 연속된 범위를 한정하는 내용을 가지는 레지스터의 쌍을 포함하는 것을 특징으로 하는 프로세서.
  9. 제 1 내지 8 항 중 어느 한 항에 있어서,
    런타임에서, 상기 한정된 서브셋은 힙(heap)에 대응하는 메모리 주소의 범위를 커버하는 것을 특징으로 하는 프로세서.
  10. 제 1 내지 9 항 중 어느 한 항에 있어서,
    상기 프리페치는 명령 시퀀스에서 대응하는 프리페치 명령 없이 상기 프로세서에 의해 수행되는 것을 특징으로 하는 프로세서.
  11. 상기 프로세서의 레지스터에 대해 정해진 가능한 포인터 값의 프로세서에 의한 검지에 기초하여, 메모리로부터 자동으로 데이터를 프리페치하는 프로세서.
  12. 제 11 항에 있어서,
    상기 가능한 포인터 값의 검지는 상기 메모리의 미리 정의된 범위와 계산된 주소의 대응에 기초하는 것을 특징으로 하는 프로세서.
  13. 제 12 항에 있어서,
    상기 메모리의 미리 한정된 범위는 적어도 하나의 쓰기가능한 저장공간의 내용에 의해 한정되는 것을 특징으로 하는 프로세서.
  14. 제 12 항에 있어서,
    상기 메모리의 미리 한정된 범위는 메모리 주소의 범위를 한정하는 적어도 하나의 메모리 쌍의 내용에 의해 한정되는 것을 특징으로 하는 프로세서.
  15. 제 11 내지 14 항에 있어서,
    상기 가능한 포인터 값의 검지는 상기 메모리의 미리 정의된 범위와 계산된 주소의 대응에 기초하는 것을 특징으로 하는 프로세서.
  16. 컴퓨터 시스템에서 적어도 일련의 데이터를 자동으로 프리페치하는 방법에 있어서,
    레지스터를 목표로 하는 제 1 명령을 포함하는 명령 시퀀스를 실행하고,
    대응하는 프리페치 명령이 상기 명령 시퀀스에 없이, 상기 제 1 명령의 실행결과로서 상기 레지스터에 대해 정해진 가능한 포인터 값에 대응하는 데이터의 프리페치를 초기화하는 것을 특징으로 하는 데이터의 프리페치 방법.
  17. 제 16 항에 있어서,
    주소값으로 상기 레지스터의 내용을 사용하는 메모리 액세스 명령을 실행하고, 상기 프리페치의 이전의 성능은 상기 메모리 액세스 명령이 캐시로부터 제공되도록 하는 것을 추가로 포함하는 것을 특징으로 하는 데이터의 프리페치 방법.
  18. 제 16 항 또는 17 항에 있어서,
    상기 가능한 포인터 값을 주소지정 가능한 메모리의 서브셋을 한정하는 적어도 하나의 쓰기가능한 저장공간의 내용과 비교해보는 것을 추가로 포함하는 것을 특징으로 하는 데이터의 프리페치 방법.
  19. 제 18 항에 있어서,
    상기 적어도 하나의 쓰기가능한 저장공간은 주소지정 가능한 메모리의 한정된 서브셋의 적어도 하나의 연속된 부분의 경계를 부호화하는 레지스터의 쌍을 포함하는 것을 특징으로 하는 데이터의 프리페치 방법.
  20. 제 18 항 또는 19 항에 있어서,
    상기 한정된 서브셋은 메모리가 상기 명령 시퀀스에 의해 또는 그 도중에 동적으로 할당되는 힙에 대응하는 것을 특징으로 하는 데이터의 프리페치 방법.
  21. 제 20 항에 있어서,
    상기 힙의 경계에 대응하는 적어도 하나의 쓰기가능한 저장공간을 초기화하는 것을 추가로 포함하는 것을 특징으로 하는 데이터의 프리페치 방법.
  22. 제 18 내지 21 항 중 어느 한 항에 있어서,
    잠금 상태(lock state)의 저장에 사용되는 메모리 주소의 범위에 대응하는 적어도 하나의 쓰기가능한 저장공간을 초기화하는 것을 추가로 포함하는 것을 특징으로 하는 데이터의 프리페치 방법.
  23. 제 16 내지 22 항 중 어느 한 항에 있어서,
    상기 명령 시퀀스에서의 프리페치 명령에 기초하여 적어도 하나의 다른 데이터를 프리페치하는 것을 추가로 포함하는 것을 특징으로 하는 데이터의 프리페치 방법.
  24. 제 16 내지 22 항 중 어느 한 항에 있어서,
    메모리 액세스 진행의 예측에 기초하여 적어도 하나의 다른 데이터를 프리페치하는 것을 추가로 포함하는 것을 특징으로 하는 데이터의 프리페치 방법.
  25. 프로세서를 동작시키는 방법에 있어서,
    상기 프로세서의 레지스터에 대해 정해진 가능한 포인터 값을 검지하는 단계, 및
    상기 가능한 포인터 값에 대응하는 데이터를 메모리로부터 프리페치하는 단게를 포함하는 것을 특징으로 하는 프로세서 동작 방법.
  26. 제 25 항에 있어서,
    상기 가능한 포인터 값의 검지 단계는 미리 정의된 주소 패턴에 대한 비교를 포함하는 것을 특징으로 하는 프로세서 동작 방법.
  27. 제 25 항 또는 26 항에 있어서,
    상기 가능한 포인터 값의 검지 단계는 미리 정의된 주소 패턴과 레지스터 파일로 저장된 데이터 값을 비교하는 것을 포함하는 것을 특징으로 하는 프로세서 동작 방법.
  28. 제 25 내지 27 항에 있어서,
    상기 가능한 포인터 값의 검지 단계는 레지스터 파일 또는 리오더 버퍼에 저장된 값을 스캔하고 상기 스캔된 값을 미리 정의된 주소 패턴과 비교하는 과정을 구비하는 것을 특징으로 하는 프로세서 동작 방법.
  29. 제 25 내지 28 항에 있어서,
    상기 프로세서는 순차적인 실행을 제공하고,
    상기 가능한 포인터 값의 검지는 미리 정의된 주소 패턴과 비순차적이 된 레지스터 상태를 비교하는 것을 포함하는 것을 특징으로 하는 프로세서 동작 방법.
  30. 제 25 내지 29 항 중 어느 한 항에 있어서,
    상기 가능한 포인터 값 검지는 미리 정의된 주소 패턴과 명령 세트의 임의의 명령의 실행 상에 계산된 주소값을 비교하는 것을 포함하는 것을 특징으로 하는 프로세서 동작 방법.
  31. 제 26 내지 30 항 중 어느 한 항에 있어서,
    상기 미리 정의된 주소 패턴은 상기 프로세서의 적어도 하나의 쓰기가능한 저장공간의 내용에 의해 정의되는 것을 특징으로 하는 프로세서 동작 방법.
  32. 제 26 내지 30 항 중 어느 한 항에 있어서,
    상기 미리 정의된 주소 패턴은 메모리 주소의 하나 이상의 연속된 범위를 한정하는 것을 특징으로 하는 프로세서 동작 방법.
  33. 제 26 내지 30 항 중 어느 한 항에 있어서,
    상기 미리 정의된 주소 패턴은 저장공간이 동적으로 할당되는 메모리의 서브셋을 한정하는 것을 특징으로 하는 프로세서 동작 방법.
KR10-2004-7013089A 2002-02-22 2003-02-21 포인터 식별 및 자동 데이터 프리페치 KR20040111361A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/080,859 2002-02-22
US10/080,859 US6934809B2 (en) 2002-02-22 2002-02-22 Automatic prefetch of pointers
PCT/US2003/005194 WO2003073268A1 (en) 2002-02-22 2003-02-21 Pointer identification and automatic data prefetch

Publications (1)

Publication Number Publication Date
KR20040111361A true KR20040111361A (ko) 2004-12-31

Family

ID=27752874

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7013089A KR20040111361A (ko) 2002-02-22 2003-02-21 포인터 식별 및 자동 데이터 프리페치

Country Status (7)

Country Link
US (1) US6934809B2 (ko)
EP (1) EP1476807B1 (ko)
JP (1) JP4399268B2 (ko)
KR (1) KR20040111361A (ko)
AU (1) AU2003216350A1 (ko)
DE (1) DE60317878D1 (ko)
WO (1) WO2003073268A1 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2728559B1 (fr) * 1994-12-23 1997-01-31 Saint Gobain Vitrage Substrats en verre revetus d'un empilement de couches minces a proprietes de reflexion dans l'infrarouge et/ou dans le domaine du rayonnement solaire
US7127600B2 (en) * 2003-09-30 2006-10-24 Intel Corporation Aggressive content pre-fetching during pre-boot runtime to support speedy OS booting
US7185190B2 (en) * 2003-12-29 2007-02-27 Intel Corporation Pushing capabilities into firmware by an operating system
US7543132B1 (en) 2004-06-30 2009-06-02 Sun Microsystems, Inc. Optimizing hardware TLB reload performance in a highly-threaded processor with multiple page sizes
US7519796B1 (en) 2004-06-30 2009-04-14 Sun Microsystems, Inc. Efficient utilization of a store buffer using counters
US20060009265A1 (en) * 2004-06-30 2006-01-12 Clapper Edward O Communication blackout feature
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US7366829B1 (en) 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US8756605B2 (en) * 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US20060143401A1 (en) * 2004-12-27 2006-06-29 Jacob Doweck Method and apparatus for prefetching based on cache fill buffer hits
US7430643B2 (en) * 2004-12-30 2008-09-30 Sun Microsystems, Inc. Multiple contexts for efficient use of translation lookaside buffer
US7735061B2 (en) * 2006-05-03 2010-06-08 Epic Games, Inc. Efficient encoding and access of mathematically precise variable precision numeric types
US7383402B2 (en) * 2006-06-05 2008-06-03 Sun Microsystems, Inc. Method and system for generating prefetch information for multi-block indirect memory access chains
US7383401B2 (en) * 2006-06-05 2008-06-03 Sun Microsystems, Inc. Method and system for identifying multi-block indirect memory access chains
US20150100560A1 (en) 2013-10-04 2015-04-09 Nicira, Inc. Network Controller for Managing Software and Hardware Forwarding Elements
US9513904B2 (en) * 2013-10-15 2016-12-06 Mill Computing, Inc. Computer processor employing cache memory with per-byte valid bits
US9942058B2 (en) 2015-04-17 2018-04-10 Nicira, Inc. Managing tunnel endpoints for facilitating creation of logical networks
US10554484B2 (en) 2015-06-26 2020-02-04 Nicira, Inc. Control plane integration with hardware switches
US9967182B2 (en) 2015-07-31 2018-05-08 Nicira, Inc. Enabling hardware switches to perform logical routing functionalities
US10313186B2 (en) 2015-08-31 2019-06-04 Nicira, Inc. Scalable controller for hardware VTEPS
US9948577B2 (en) * 2015-09-30 2018-04-17 Nicira, Inc. IP aliases in logical networks with hardware switches
US9998324B2 (en) 2015-09-30 2018-06-12 Nicira, Inc. Logical L3 processing for L2 hardware switches
US10230576B2 (en) 2015-09-30 2019-03-12 Nicira, Inc. Managing administrative statuses of hardware VTEPs
US10263828B2 (en) 2015-09-30 2019-04-16 Nicira, Inc. Preventing concurrent distribution of network data to a hardware switch by multiple controllers
US10250553B2 (en) 2015-11-03 2019-04-02 Nicira, Inc. ARP offloading for managed hardware forwarding elements
US9917799B2 (en) 2015-12-15 2018-03-13 Nicira, Inc. Transactional controls for supplying control plane data to managed hardware forwarding elements
US9992112B2 (en) 2015-12-15 2018-06-05 Nicira, Inc. Transactional controls for supplying control plane data to managed hardware forwarding elements
US9998375B2 (en) 2015-12-15 2018-06-12 Nicira, Inc. Transactional controls for supplying control plane data to managed hardware forwarding elements
US10182035B2 (en) 2016-06-29 2019-01-15 Nicira, Inc. Implementing logical network security on a hardware switch
US10540287B2 (en) 2017-05-12 2020-01-21 Samsung Electronics Co., Ltd Spatial memory streaming confidence mechanism
US11157285B2 (en) * 2020-02-06 2021-10-26 International Business Machines Corporation Dynamic modification of instructions that do not modify the architectural state of a processor

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5680565A (en) * 1993-12-30 1997-10-21 Intel Corporation Method and apparatus for performing page table walks in a microprocessor capable of processing speculative instructions
US5652858A (en) * 1994-06-06 1997-07-29 Hitachi, Ltd. Method for prefetching pointer-type data structure and information processing apparatus therefor
US5848254A (en) * 1996-07-01 1998-12-08 Sun Microsystems, Inc. Multiprocessing system using an access to a second memory space to initiate software controlled data prefetch into a first address space
US6076151A (en) * 1997-10-10 2000-06-13 Advanced Micro Devices, Inc. Dynamic memory allocation suitable for stride-based prefetching
US6151662A (en) * 1997-12-02 2000-11-21 Advanced Micro Devices, Inc. Data transaction typing for improved caching and prefetching characteristics
US6247107B1 (en) * 1998-04-06 2001-06-12 Advanced Micro Devices, Inc. Chipset configured to perform data-directed prefetching

Also Published As

Publication number Publication date
WO2003073268A1 (en) 2003-09-04
EP1476807B1 (en) 2007-12-05
DE60317878D1 (de) 2008-01-17
JP4399268B2 (ja) 2010-01-13
AU2003216350A1 (en) 2003-09-09
EP1476807A1 (en) 2004-11-17
JP2005518601A (ja) 2005-06-23
US6934809B2 (en) 2005-08-23
US20030163645A1 (en) 2003-08-28

Similar Documents

Publication Publication Date Title
KR20040111361A (ko) 포인터 식별 및 자동 데이터 프리페치
US10394563B2 (en) Hardware accelerated conversion system using pattern matching
US10042643B2 (en) Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor
US9921842B2 (en) Guest instruction block with near branching and far branching sequence construction to native instruction block
US6157993A (en) Prefetching data using profile of cache misses from earlier code executions
US10185567B2 (en) Multilevel conversion table cache for translating guest instructions to native instructions
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
US10241795B2 (en) Guest to native block address mappings and management of native code storage
US5822778A (en) Microprocessor and method of using a segment override prefix instruction field to expand the register file
US6295594B1 (en) Dynamic memory allocation suitable for stride-based prefetching
US5829028A (en) Data cache configured to store data in a use-once manner
US6542990B1 (en) Array access boundary check by executing BNDCHK instruction with comparison specifiers
US9753856B2 (en) Variable caching structure for managing physical storage
US5768574A (en) Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor
US8707282B2 (en) Meta-data based data prefetching
EP1459169B1 (en) Aggressive prefetch of dependency chains
US9690707B2 (en) Correlation-based instruction prefetching
JP5579694B2 (ja) 復帰スタックを管理する方法および装置
US7340567B1 (en) Value prediction for missing read operations instances
US5680578A (en) Microprocessor using an instruction field to specify expanded functionality and a computer system employing same
US5819080A (en) Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor
KR20200139759A (ko) 데이터 항목들을 프리페치하는 장치 및 방법

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