KR20040111361A - 포인터 식별 및 자동 데이터 프리페치 - Google Patents
포인터 식별 및 자동 데이터 프리페치 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims description 56
- 238000001514 detection method Methods 0.000 claims description 17
- 230000008685 targeting Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 6
- 239000003550 marker Substances 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching 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
컴퓨터 시스템은 일반적으로 무엇보다도, 메모리 시스템과 하나 이상의 프로세서 및/또는 실행 유닛을 포함한다. 상기 메모리 시스템은 정보의 리포지토리로서 사용되고, 프로세서는 상기 메모리 시스템에서 정보를 읽고, 그 위에서 동작하고, 그것을 다시 저장한다. 프로세서의 속도와 메모리 시스템의 크기가 증가하면서, 상기 프로세서가 임의의 저장된 정보를 주소화하는 능력과 상기 메모리 시스템이 그것을 빨리 제공하는 능력 사이의 불일치(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 항에 있어서,주소계산에 응답하는 로직으로서, 상기 계산된 주소와 상기 한정된 메모리 주소 서브셋 사이의 매치에 기초하여 프리페치를 초기화하는 로직을 추가로 포함하는 것을 특징으로 하는 프로세서.
- 제 1 항 또는 2 항에 있어서,상기 레지스터로의 값의 저장에 응답하는 로직으로서, 상기 저장된 값과 상기 한정된 메모리 주소 서브셋 사이의 매치에 기초하여 프리페치를 초기화하는 로직을 추가로 포함하는 것을 특징으로 하는 프로세서.
- 제 1 항 또는 2 항에 있어서,상기 레지스터에 대해 정해진 값과 상기 한정된 메모리 주소 서브셋 사이의 매치에 기초하여 프리페치를 초기화하는 주소 매치 로직으로서, 상기 매치는 주소계산과 레지스터로의 저장 상의 파이프라인 단계에서 수행되는 것을 특징으로 하는 로직을 추가로 포함하는 것을 특징으로 하는 프로세서.
- 제 1 내지 4 항 중 어느 한 항에 있어서,상기 레지스터에 대해 정해진 값은 구조적 레지스터(architectural register) 또는 그에 대응하는 임의의 리오더(reorder) 버퍼 상태로 정해지는 것을 특징으로 하는 프로세서.
- 제 1 내지 5 항 중 어느 한 항에 있어서,상기 레지스터는 동작 레지스터 세트의 레지스터인 것을 특징으로 하는 프로세서.
- 제 6 항에 있어서,상기 동작 레지스터 세트는 특정한 스레드 또는 프로세스에 대응하고,상기 한정된 메모리 주소 서브셋은 상기 특정 스레드 또는 프로세스에 의해 또는 그에 대해 동적으로 할당된 위치에 대응하는 것을 특징으로 하는 프로세서.
- 제 1 내지 7 항 중 어느 한 항에 있어서,상기 적어도 하나의 쓰기가능한 저장공간은 메모리 주소의 연속된 범위를 한정하는 내용을 가지는 레지스터의 쌍을 포함하는 것을 특징으로 하는 프로세서.
- 제 1 내지 8 항 중 어느 한 항에 있어서,런타임에서, 상기 한정된 서브셋은 힙(heap)에 대응하는 메모리 주소의 범위를 커버하는 것을 특징으로 하는 프로세서.
- 제 1 내지 9 항 중 어느 한 항에 있어서,상기 프리페치는 명령 시퀀스에서 대응하는 프리페치 명령 없이 상기 프로세서에 의해 수행되는 것을 특징으로 하는 프로세서.
- 상기 프로세서의 레지스터에 대해 정해진 가능한 포인터 값의 프로세서에 의한 검지에 기초하여, 메모리로부터 자동으로 데이터를 프리페치하는 프로세서.
- 제 11 항에 있어서,상기 가능한 포인터 값의 검지는 상기 메모리의 미리 정의된 범위와 계산된 주소의 대응에 기초하는 것을 특징으로 하는 프로세서.
- 제 12 항에 있어서,상기 메모리의 미리 한정된 범위는 적어도 하나의 쓰기가능한 저장공간의 내용에 의해 한정되는 것을 특징으로 하는 프로세서.
- 제 12 항에 있어서,상기 메모리의 미리 한정된 범위는 메모리 주소의 범위를 한정하는 적어도 하나의 메모리 쌍의 내용에 의해 한정되는 것을 특징으로 하는 프로세서.
- 제 11 내지 14 항에 있어서,상기 가능한 포인터 값의 검지는 상기 메모리의 미리 정의된 범위와 계산된 주소의 대응에 기초하는 것을 특징으로 하는 프로세서.
- 컴퓨터 시스템에서 적어도 일련의 데이터를 자동으로 프리페치하는 방법에 있어서,레지스터를 목표로 하는 제 1 명령을 포함하는 명령 시퀀스를 실행하고,대응하는 프리페치 명령이 상기 명령 시퀀스에 없이, 상기 제 1 명령의 실행결과로서 상기 레지스터에 대해 정해진 가능한 포인터 값에 대응하는 데이터의 프리페치를 초기화하는 것을 특징으로 하는 데이터의 프리페치 방법.
- 제 16 항에 있어서,주소값으로 상기 레지스터의 내용을 사용하는 메모리 액세스 명령을 실행하고, 상기 프리페치의 이전의 성능은 상기 메모리 액세스 명령이 캐시로부터 제공되도록 하는 것을 추가로 포함하는 것을 특징으로 하는 데이터의 프리페치 방법.
- 제 16 항 또는 17 항에 있어서,상기 가능한 포인터 값을 주소지정 가능한 메모리의 서브셋을 한정하는 적어도 하나의 쓰기가능한 저장공간의 내용과 비교해보는 것을 추가로 포함하는 것을 특징으로 하는 데이터의 프리페치 방법.
- 제 18 항에 있어서,상기 적어도 하나의 쓰기가능한 저장공간은 주소지정 가능한 메모리의 한정된 서브셋의 적어도 하나의 연속된 부분의 경계를 부호화하는 레지스터의 쌍을 포함하는 것을 특징으로 하는 데이터의 프리페치 방법.
- 제 18 항 또는 19 항에 있어서,상기 한정된 서브셋은 메모리가 상기 명령 시퀀스에 의해 또는 그 도중에 동적으로 할당되는 힙에 대응하는 것을 특징으로 하는 데이터의 프리페치 방법.
- 제 20 항에 있어서,상기 힙의 경계에 대응하는 적어도 하나의 쓰기가능한 저장공간을 초기화하는 것을 추가로 포함하는 것을 특징으로 하는 데이터의 프리페치 방법.
- 제 18 내지 21 항 중 어느 한 항에 있어서,잠금 상태(lock state)의 저장에 사용되는 메모리 주소의 범위에 대응하는 적어도 하나의 쓰기가능한 저장공간을 초기화하는 것을 추가로 포함하는 것을 특징으로 하는 데이터의 프리페치 방법.
- 제 16 내지 22 항 중 어느 한 항에 있어서,상기 명령 시퀀스에서의 프리페치 명령에 기초하여 적어도 하나의 다른 데이터를 프리페치하는 것을 추가로 포함하는 것을 특징으로 하는 데이터의 프리페치 방법.
- 제 16 내지 22 항 중 어느 한 항에 있어서,메모리 액세스 진행의 예측에 기초하여 적어도 하나의 다른 데이터를 프리페치하는 것을 추가로 포함하는 것을 특징으로 하는 데이터의 프리페치 방법.
- 프로세서를 동작시키는 방법에 있어서,상기 프로세서의 레지스터에 대해 정해진 가능한 포인터 값을 검지하는 단계, 및상기 가능한 포인터 값에 대응하는 데이터를 메모리로부터 프리페치하는 단게를 포함하는 것을 특징으로 하는 프로세서 동작 방법.
- 제 25 항에 있어서,상기 가능한 포인터 값의 검지 단계는 미리 정의된 주소 패턴에 대한 비교를 포함하는 것을 특징으로 하는 프로세서 동작 방법.
- 제 25 항 또는 26 항에 있어서,상기 가능한 포인터 값의 검지 단계는 미리 정의된 주소 패턴과 레지스터 파일로 저장된 데이터 값을 비교하는 것을 포함하는 것을 특징으로 하는 프로세서 동작 방법.
- 제 25 내지 27 항에 있어서,상기 가능한 포인터 값의 검지 단계는 레지스터 파일 또는 리오더 버퍼에 저장된 값을 스캔하고 상기 스캔된 값을 미리 정의된 주소 패턴과 비교하는 과정을 구비하는 것을 특징으로 하는 프로세서 동작 방법.
- 제 25 내지 28 항에 있어서,상기 프로세서는 순차적인 실행을 제공하고,상기 가능한 포인터 값의 검지는 미리 정의된 주소 패턴과 비순차적이 된 레지스터 상태를 비교하는 것을 포함하는 것을 특징으로 하는 프로세서 동작 방법.
- 제 25 내지 29 항 중 어느 한 항에 있어서,상기 가능한 포인터 값 검지는 미리 정의된 주소 패턴과 명령 세트의 임의의 명령의 실행 상에 계산된 주소값을 비교하는 것을 포함하는 것을 특징으로 하는 프로세서 동작 방법.
- 제 26 내지 30 항 중 어느 한 항에 있어서,상기 미리 정의된 주소 패턴은 상기 프로세서의 적어도 하나의 쓰기가능한 저장공간의 내용에 의해 정의되는 것을 특징으로 하는 프로세서 동작 방법.
- 제 26 내지 30 항 중 어느 한 항에 있어서,상기 미리 정의된 주소 패턴은 메모리 주소의 하나 이상의 연속된 범위를 한정하는 것을 특징으로 하는 프로세서 동작 방법.
- 제 26 내지 30 항 중 어느 한 항에 있어서,상기 미리 정의된 주소 패턴은 저장공간이 동적으로 할당되는 메모리의 서브셋을 한정하는 것을 특징으로 하는 프로세서 동작 방법.
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)
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)
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 |
-
2002
- 2002-02-22 US US10/080,859 patent/US6934809B2/en not_active Expired - Lifetime
-
2003
- 2003-02-21 KR KR10-2004-7013089A patent/KR20040111361A/ko not_active Application Discontinuation
- 2003-02-21 AU AU2003216350A patent/AU2003216350A1/en not_active Abandoned
- 2003-02-21 JP JP2003571894A patent/JP4399268B2/ja not_active Expired - Lifetime
- 2003-02-21 EP EP03743180A patent/EP1476807B1/en not_active Expired - Lifetime
- 2003-02-21 DE DE60317878T patent/DE60317878D1/de not_active Expired - Lifetime
- 2003-02-21 WO PCT/US2003/005194 patent/WO2003073268A1/en active IP Right Grant
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 |