[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR100618248B1 - 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치 및 방법 - Google Patents

실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치 및 방법 Download PDF

Info

Publication number
KR100618248B1
KR100618248B1 KR1020000013234A KR20000013234A KR100618248B1 KR 100618248 B1 KR100618248 B1 KR 100618248B1 KR 1020000013234 A KR1020000013234 A KR 1020000013234A KR 20000013234 A KR20000013234 A KR 20000013234A KR 100618248 B1 KR100618248 B1 KR 100618248B1
Authority
KR
South Korea
Prior art keywords
data
load
data source
requests
storage
Prior art date
Application number
KR1020000013234A
Other languages
English (en)
Other versions
KR20010014592A (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 KR20010014592A publication Critical patent/KR20010014592A/ko
Application granted granted Critical
Publication of KR100618248B1 publication Critical patent/KR100618248B1/ko

Links

Images

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

Landscapes

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

Abstract

본 발명의 한 실시예는 컴퓨터 시스템에서 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치를 제공한다. 이 장치는 실행 엔진, 제 1 데이터 소스, 그리고 제 2 데이터 소스에 연결되는 로드 기억 유닛을 포함한다. 이 로드 기억 유닛은 로드 어드레스 버퍼를 포함하고, 상기 로드 어드레스 버퍼는 다중 로드 요구에 대한 어드레스를 포함한다. 로드 기억 유닛은 제어기를 또한 포함하고, 상기 제어기는 로드 어드레스 버퍼, 레지스터 파일, 제 1 데이터 소스, 그리고 제 2 데이터 소스 사이의 데이터 흐름을 조절하여, 다중 로드 요구가 제 1 데이터 소스 및 제 2 데이터 소스에 대해 동시에 두드러진다. 무순서로 복귀할 수 있는 데이터 캐쉬에 전송되는 로드 요구를 제외하고, 컴퓨터 시스템의 다중 데이터 소스 각각에 대해 로드 요구는 순서대로 복귀한다. 로드 요구는 다른 데이터 소스로부터의 로드 요구에 대해 무순서로 복귀할 수 있다. 본 발명의 한 태양에 따라, 로드 기억 유닛은 기억 어드레스 버퍼와 기억 데이터 버퍼를 포함한다. 상기 기억 어드레스 버퍼는 다중 기억 요구에 대한 어드레스를 포함하고, 상기 기억 데이터 버퍼는 다중 기억 요구에 대한 데이터를 포함한다. 제 1 데이터 소스, 제 2 데이터 소스, 기억 어드레스 버퍼, 그리고 기억 데이터 버퍼 사이의 데이터 흐름을 조절하도록 제어기가 추가로 배치되어, 다중 기억 요구가 제 1 데이터 소스와 제 2 데이터 소스에 대해 동시에 두드러질 수 있다.

Description

실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치 및 방법{SUPPORTING MULTIPLE OUTSTANDING REQUESTS TO MULTIPLE TARGETS IN A PIPELINED MEMORY SYSTEM}
도 1은 본 발명의 한 실시예에 따라는 컴퓨터 시스템의 도면.
도 2는 본 발명의 한 실시예에 따르는 로드 기억 유닛의 내부 구조도.
도 3은 본 발명의 한 실시예에 따르는 로드 버퍼의 주어진 엔트리에 대해 유지되는 정보의 일부를 도시하는 도면.
도 4는 본 발명의 한 실시예에 따르는 로드 버퍼의 주어진 엔트리에 대한 상태 다이어그램.
도 5는 본 발명의 한 실시예에 따르는 기억 어드레스 버퍼의 주어진 엔트리에 대한 상태 다이어그램.
본 발명은 컴퓨터 시스템의 설계에 관한 것이다. 특히, 본 발명은 다중 타겟에 대한 동시 요구를 지원하는 컴퓨터 시스템을 위한 로드 기억 유닛의 설계에 관한 것이다.
최근의 프로세서 설계는 다중 파이프라인 기능 유닛을 병렬로 작동함으로서 고성능을 이룬다. 이는 주어진 클럭 사이클에서 한 개 이상의 연산 작용을 완료시킨다. 이러한 프로세서 설계에 보조를 맞추기 위해, 메모리 시스템은 메모리 접근의 파이프라이닝이 가능하도록 수정되었다. 이는 이전의 메모리 접근 복귀 이전에 메모리 접근 요구를 완료시키고, 이는 메모리 시스템 성능을 크게 향상시킬 수 있다.
그러나, 컴퓨터 프로그램이 프로그램 실행 중 데이터 소스(타겟)를 변화시키면, 이러한 파이프라인 메모리 시스템은 완전히 정지되어, 시스템 성능을 크게 저하시킨다. 예를 들어, 메인 메모리에 파이프라인 접근하는 중 그래픽 코프로세서에 프로그램이 접근을 시도할 경우, 이는 데이터의 다른 수많은 소스(타겟)에 인터리브 접근을 지원하는 프로세서 설계에 대해 중대한 문제점일 수 있다. 예를 들어, 주어진 프로세서가 데이터 캐쉬, 메인 메모리, 그래픽 코프로세서, 그리고 여러 버스 인터페이스로부터 데이터에 접근할 수 있다.
더욱이, 이러한 파이프라인 메모리 시스템은 주어진 클럭 사이클에서 기껏해야 한 개의 접근 요구를 처리한다. 이는, 다중 요구가 다중 파이프라인 기능 유닛에 의해 동시에 발생할 때, 또는 리소스 충돌로 인해 다중 요구가 버퍼에 축적될 때, 성능을 제한할 수 있다.
기존 메모리 시스템의 이러한 성능 제한을 극복하는 것이 본 메모리 시스템에서 요구되는 바이다.
본 발명의 한 실시예는 컴퓨터 시스템에서 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 또는 기억 요구를 지원하는 장치를 제공한다. 이 장치는 실행 엔진에 연결되는 로드 기억 유닛, 제 1 데이터 소스, 그리고 제 2 데이터 소스를 포함한다. 이 로드 기억 유닛은 로드 어드레스 버퍼를 포함하고, 이 버퍼는 다중 로드 요구에 대한 어드레스를 포함한다. 로드 기억 유닛은 로드 어드레스 버퍼, 레지스터 파일, 그리고 제 1 데이터 소스 및 제 2 데이터 소스 사이의 데이터 흐름을 조절하는 제어기를 또한 포함하여, 다중 로드 요구가 제 1 데이터 소스와 제 2 데이터 소스에 대해 동시에 두드러질 수 있다. 본 발명의 한 태양에 따라, 로드 기억 유닛은 기억 어드레스 버퍼 및 기억 데이터 버퍼를 추가로 포함하고, 상기 기억 어드레스 버퍼는 다중 기억 요구에 대한 어드레스를 포함하며, 상기 기억 데이터 버퍼는 다중 기억 요구에 대한 데이터를 포함한다. 제 1 데이터 소스, 제 2 데이터 소스, 기억 어드레스 버퍼, 그리고 기억 데이터 버퍼 사이의 데이터 흐름을 조절하도록 제어기가 배치되어, 다중 기억 요구가 제 1 데이터 소스 및 제 2 데이터 소스에 대해 동시에 두드러질 수 있다.
본 발명의 한 태양에 따라, 로드 기억 유닛은 제 3 데이터 소스에 추가적으로 연결되고, 제어기는 데이터 흐름을 조화시키도록 배치되어, 다중 로드 요구가 제 3 데이터 소스에 대해 동시에 두드러질 수 있다.
본 발명의 한 태양에 따라, 로드 기억 유닛은 제 1 통신 경로를 통해 제 1 데이터 소스(즉, 데이터 캐쉬)에 연결되고, 제 1 통신 경로로부터 분리된 제 2 통신 경로를 통해 제 2 데이터 소스에 연결된다.
본 발명의 한 태양에 따라, 제 2 데이터 소스로부터 순서대로 로드 요구가 돌아오지만, 제 1 데이터 소스로부터 역순으로 돌아올 수도 있도록, 제어기가 배치된다.
본 발명의 한 태양에 따라, 다중 로드 요구가 동일 클럭 사이클에서 여러 다른 데이터 소스에 전송될 수 있도록, 제어기가 배치된다. 본 발명의 한 태양에 따라, 제어기는 로드 어드레스 버퍼 각각의 엔트리에 대한 분리된 상태 장치를 포함한다.
발명의 한 태양에 따라, 제 2 데이터 소스는 컴퓨터 시스템 버스 인터페이스, 임의 접근 반도체 메모리, 제 2 기억 장치, 그리고 컴퓨터 그래픽스 가속기 중 하나를 포함한다.
다음의 내용은 당 분야의 통상의 지식을 가진 자가 용이하게 발명을 실행할 수 있도록 제시되며, 특정 장치 및 그 필요조건을 들어 기술된다. 당 분야의 통상의 지식을 가진 자에게 있어, 공개된 실시예에 여러 수정이 쉽게 가능할 것이고, 여기서 정의되는 일반 원칙은 본 발명의 정신과 범위를 벗어나지 않는 한 다른 실시예와 장치에도 적용될 수 있다. 그러므로, 본 발명은 기술되는 실시예에 한정되는 것을 의도하는 바가 아니라, 여기서 공개되는 특징 및 원리에 따르는 가장 넓은 범위로 허용되어야 할 것이다.
컴퓨터 스크린
도 1은 본 발명의 실시예에 따르는 컴퓨터 시스템을 도시한다. 컴퓨터 시스템의 회로 다수가 반도체 칩(152) 내에 위치한다.
컴퓨터 시스템이 두 개의 실행 엔진(106, 108)을 포함한다는 것을 주목하라. 각각의 실행 엔진(106, 108)은 명령어 열을 수신하고, 특정 데이터 아이템의 특정 작동을 실행한다. 실행 엔진(106, 108)은 산술 연산 및 데이터 이동 작용을 포함하여 중앙 처리 장치(CPU) 기능을 실행한다. 실행 엔진(106, 108)이 레지스터 파일(110, 112)을 각각 포함하는 점을 주목하라. 레지스터 파일(110, 112)은 실행 엔진(106, 108)에 의해 작동되는 데이터 아이템을 각각 기억하기 위해 사용된다. 발명의 다른 하나의 실시예에서, 실행 엔진(106, 108)은 실행 엔진(106, 108) 사이에 공유되는 중첩 레지스터에 접근함을 주목하라.
실행 엔진(106, 108)은 명령 페치 유닛(128, 126)으로부터 명령어 열을 각각 수신한다. 특히 명령 페치 유닛(128)은 임의 접근 메모리(RAM)(150)로부터 명령어 열을 수신한다. 명령어 열은 명령 페치 유닛(128)에 의해 수신되기 전에 메모리 인터페이스(132), 내부 버스 인터페이스 유닛(118), 그리고 명령 캐쉬(127)를 가로지른다. 명령 페치 유닛(128)은 파이프라인 제어 유닛(124)을 통해 실행 엔진(106)으로, 수신된 명령어 열을 공급한다. 유사한 방식으로, 명령 페치 유닛(126)은 임의 접근 메모리(RAM)(150)로부터 명령어 열을 수신한다. 이 명령어 열은 명령 페치 유닛(126)에 의해 수신되기 전에 메모리 인터페이스(132), 내부 버스 인터페이스 유닛(118), 그리고 명령 캐쉬(125)를 가로지른다. 명령 페치 유닛(126)은 파이프라인 제어 유닛(124)을 통해 실행 엔진(108)으로, 수신된 명령어 열을 공급한다.
RAM(150)은 컴퓨터 시스템의 메인 메모리로 구성되고, 코드 또는 데이터 기억을 위한 여러 종류의 임의 접근 가능한 컴퓨터 메모리일 수 있다. 명령 캐쉬(127, 125)는 각각 실행 엔진(106, 108)에 의한 실행을 위해 어떤 종류의 캐쉬 메모리도 포함할 수 있다. 명령 페치 유닛(128, 126)은 명령에의 접근을 조절하고, 파이프라인 제어 유닛(124, 122)은 파이프라인 실행을 위한 명령 스케쥴링을 각각 조절한다.
실행 엔진(106, 108)은 로드 기억 유닛(102, 104)으로부터 각각 데이터를 수신한다. 로드 기억 유닛(102, 104)은 데이터 캐쉬(114), 버스 인터페이스(120, 136), 주변 버스 인터페이스(134), 메모리 인터페이스(132), 그리고 기하학적 디컴프레서(130)를 포함하는, 다수의 소스까지/로부터의 데이터 전송을 조절한다.
도시되는 실시예에서, 주변 버스 인터페이스(134)는 버스(138)에 연결되어, 디스크(148)에 연결된다. 디스크(148)는 제 2 기억 장치로서, 디스크나 테이프 드라이브와 같은 어떤 종류의 컴퓨터 데이터용 비휘발성 기억 장치도 포함할 수 있다. 디스크(148)는 주변 버스(138)에 부착되는 어떤 종류의 주변 장치도 포함할 수 있다. 도시되는 실시예의 변형에서, 버스(138)는 PCI 버스를 포함한다.
버스 인터페이스(136)는 버스(140)에 연결되어, 호스트 시스템(146)에 연결된다. 이는 사용자 작동 호스트 시스템(146)이 실행 엔진(106, 108)의 연산 작업을 다운로딩시키게 한다. 버스 인터페이스(120)는 버스(142)에 연결되어, 그래픽스 가속기(144)에 연결된다. 그래픽스 가속기(144)는 그래픽스 연산을 실행하는 어떤 종류의 회로일 수도 있다. 기하학적 디컴프레서(130)는 그래픽스 가속기이다. 그러나, 기하학적 디컴프레서(130) 내의 회로가 압축 형태로 수신되는 그래픽스 데이터를 압축해제하는 특정 작업에 맞을 수 있다.
로드 기억 유닛(102)은 분리된 데이터 경로를 통해 버스 인터페이스(120)와 데이터 캐쉬(114)에 연결된다. 이는 데이터 캐쉬(114)와 버스 인터페이스(120)에 동시 접근을 가능하게 한다. 유사한 방식으로, 로드 기억 유닛(104)은 분리된 데이터 경로를 통해 버스 인터페이스(120)와 데이터 캐쉬(114)에 연결된다. 시스템은 단일 이중 포트 데이터 캐쉬(114)를 포함하고, 이는 로드 기억 유닛(102, 104)에 연결된다. 데이터 캐쉬(114)는 실행 엔진(106, 108)에 의해 작동되는 데이터를 기억하기 위한 어떤 종류의 캐쉬 메모리도 포함할 수 있다.
내부 버스 인터페이스 유닛(118)은 반도체 칩(152) 내의 데이터 경로와 스위칭 회로를 포함하여, 로드 기억 유닛(102, 104)을 다수의 데이터 소스(타겟)와 연결시킨다. 특히, 내부 버스 인터페이스 유닛(118)은 로드 기억 유닛(102, 104)을 메모리 인터페이스(132), 주변 버스 인터페이스(134), 버스 인터페이스(120), 버스 인터페이스(136), 그리고 기하학적 디컴프레서(130)와 연결시킨다.
작동 중, 도 1에 도시되는 시스템은 다음과 같이 작동한다. 앞서 언급한 바와 같이, 명령어 열은 RAM(150)으로부터 메모리 인터페이스(132)와 내부 버스 인터페이스 유닛(118)을 통해 명령 페치 유닛(128, 126)으로 각각 당겨진다. 이 명령어 열은 파이프라인 제어 유닛(124, 126)을 통해 실행 엔진(106, 108)으로 각각 공급된다. 명령어 열을 실행할 대, 실행 엔진(106, 108)은 로드 기억 유닛(102, 104)과 레지스터 파일(110, 112) 사이의 데이터를 실행 엔진(106, 108)으로 각각 이동시킨다. 로드 기억 유닛(102, 104)은 데이터 캐쉬(114), 버스 인터페이스(120), 메모리 인터페이스(132), 주변 버스 인터페이스(132), 버스 인터페이스(136), 그리고 기하 학적 디컴프레서(130)를 포함하는 다수의 소스로부터 데이터를 검색한다.
로드 기억 유닛
도 2는 본 발명의 실시예에 따르는 로드 기억 유닛(102)의 내부 구조도이다. 로드 기억 유닛(102)은 로드 버퍼(210), 기억 데이터 버퍼(230), 그리고 기억 어드레스 버퍼(220)를 포함하는 다수의 기능 유닛을 포함한다. 이 기능 유닛은 LSU 제어기(250)의 제어하에 작동한다.
로드 버퍼(210)는 얼라이너(207), 데이터 캐쉬 레지스터(204), 먹스(206), 레지스터(208), 그리고 어레이(216)를 포함하는 다수의 부품으로 구성된다. 먹스(206)는 레지스터(208) 입력용 버스 인터페이스(120)와 내부 버스 인터페이스 유닛(118)의 출력 사이에서 선택한다. 얼라이너(207)는 소스와 데이터 캐쉬(114)로부터 수신되는 데이터 워드 상의 바이트 정렬 기능을 실행한다. 데이터 캐쉬(114)로부터 수신되는 데이터는 데이터 캐쉬(114) 내의 회로에 의해 정렬된다. 어레이(216)는 로드 어드레스 엔트리(211, 212, 213, 214, 215)를 포함하는 다섯 개의 로드 어드레스용 엔트리를 포함한다. 이 다섯 개의 로드 어드레스는 다섯 개의 진행 중인 로드 요구를 위한 어드레스를 기억할 수 있다. 이 로드 요구들은 데이터 캐쉬(114), 버스 인터페이스(120), 메모리 인터페이스(132), 주변 버스 인터페이스(134), 버스 인터페이스(136), 그리고 기하학적 디컴프레서(130)를 포함하는 로드 기억 유닛(102)에 연결되는 어떤 데이터 소스(타겟)로도 인도될 수 있다. 예를 들어, 세 개의 어드레스는 데이터 캐쉬(114)에 대한 현 요구와 연관될 수 있고, 두 개의 어드레스는 RAM(150)에 대한 현 요구와 연관될 수 있다.
로드 버퍼(210) 내의 회로는 LSU 제어기(250)의 제어 하에 작동하고, 상기 LSU 제어기(250)는 어레이(216) 내의 각각의 엔트리에 대한 분리된 상태 머신을 포함한다. 로드 버퍼(210) 내의 회로는 다음과 같이 작동한다. 로드 요구를 수신할 때, 시스템은 어레이(216) 엔트리의 추가적인 상태 정보와 함께 로드 요구로부터 어드레스를 기억한다. 다음으로, 시스템은 특정 데이터 소스에 로드 요구를 보낸다. 요구된 데이터가 데이터 캐쉬(114)로부터 복귀할 때, 데이터 캐쉬 레지스터(204)에 기록된다. 데이터 캐쉬 레지스터(204)로부터, 데이터는 실행 엔진(106)의 레지스터 파일(110) 내의 특정 레지스터로 들어간다(도 1 참조). 요구된 데이터가 다른 어떤 소스로부터 복귀하면, 먹스(206)와 얼라이너(207)를 통해 레지스터(208)로 들어간다. 레지스터(208)로부터, 데이터는 실행 엔진(106)의 레지스터 파일(208) 내의 특정 레지스터로 들어간다. 데이터가 복귀하면, 상응하는 어드레스(216)의 어레이 엔트리가 무효화되어, 새 로드 요구를 위해 재사용될 수 있다.
데이터 캐쉬(114)에 대한 요구는 무순서적으로 복귀할 수 있다. 일부 요구가 캐쉬 고장을 발생시키기 때문에, 시스템은 이러한 방식으로 설계되었다. 이는 처리 시간을 크게 증대시킨다. 무순서적으로 요구를 복귀시킴에 따라, 캐쉬 히트를 발생시키는 요구는 캐쉬미스를 발생시키는 요구를 기다릴 필요가 없다. 데이터 캐쉬(114) 및 다른 장치에의 요구는 순서대로 복귀하여야 한다. 이는, 주어진 장치에 대해, 장치 복귀에 의해 처리되는 모든 요구를 의미한다. 그러나, 요구는 장치 사이에서와 같이 무순서로 복귀할 수 있다.
기억 작용은 기억 데이터 버퍼(230)와 기억 어드레스 버퍼(220)를 사용한다. 기억 데이터 버퍼(230)는 어레이(240)와 얼라이너(239)를 포함한다. 어레이(240)는 기억 데이터(231, 232, 233, 234, 235, 236, 237, 238)를 포함하는 8개의 현 기억 요구를 위한 데이터 기억용 8개의 엔트리를 포함한다. 기억 어드레스 버퍼(220)는 상응하는 어드레스 및 기억 요구와 관련된 그외 다른 상태 정보를 포함한다. 이는 기억 어드레스 버퍼(221, 222, 223, 224, 225, 226, 227, 228)를 포함한다.
기억 데이터 버퍼(230) 및 기억 어드레스 버퍼(220)는 LSU 제어기(250)의 제어 하에 작동하고, 상기 LSU 제어기(250)는 기억 어드레스 버퍼(220) 내의 각각의 엔트리에 대한 분리된 상태 머신을 포함한다. 기억 데이터 버퍼(230)와 기억 어드레스 버퍼(220) 내의 회로는 다음과 같이 작동한다. 기억 요구를 받았을 때, 시스템은 기억 어드레스 버퍼(220) 내 엔트리의 추가적인 상태 정보와 함께 기억 요구에 대한 어드레스를 기억한다. 기억 요구와 관련된 데이터는 기억 데이터 버퍼(230) 내의 어레이(240)의 상응하는 엔트리로 로딩된다. 다음으로, 시스템은 기억 요구를 특정 타겟에 보낸다. 데이터가 타겟에 최종적으로 쓰여질 때, 기억 데이터 버퍼(230)와 기억 어드레스 버퍼(220)의 상응하는 엔트리는 무효화되어, 새 기억 요구를 위해 재사용될 수 있다.
로드 어드레스 버퍼 엔트리
도 3은 본 발명의 실시예에 따르는 로드 버퍼(210) 어레이(216)에서 주어진 엔트리에 유지되는 정보의 일부를 도시한다. 본 실시예에서, 엔트리는 특정 엔트리의 상태를 표시하는 3-4 비트의 상태 정보(302)를 포함한다. 상응하는 로드 요구가 진행됨에 따라 이 상태 정보는 갱신된다. 주어진 엔트리에 대한 상태 다이어그램은 아래에서 도 4를 참조하여 보다 상세히 기술될 것이다. 엔트리는 로드 요청에 대한 타겟(데이터 소스)(304)을 구체화하는 4 비트를 또한 포함한다. 예를 들어, 타겟은 도 1로부터 기하학적 디컴프레서(130)이거나 데이터 캐쉬(114)일 수 있다. 엔트리는 캐쉬 비트(306)를 또한 포함하고, 이 캐쉬 비트(306)는 데이터 캐쉬(114)에 기억될 데이터에 특정 엔트리가 상응하는 지를 표시한다. 엔트리는 특정 엔트리가 현재 사용 중인지를 표시하는 "사용 중" 비트(308)를 추가로 포함한다. 엔트리는 레지스터 상세 장치(309)를 추가로 포함하고, 이는 로드 요구에 대한 실행 엔진(106) 내의 종착 레지스터를 구체화한다. 최종적으로, 어드레스(310)는 로드 요구에 대한 어드레스를 포함한다.
로드 어드레스 버퍼 엔트리에 대한 상태 머신
도 4는 본 발명의 한 실시예에 따르는 로드 버퍼(210)의 주어진 엔트리에 대한 상태 다이어그램을 도시한다. 시스템은 일반적으로 아이들 상태 402에서 시작한다. 새 로드 명령이 실행 엔진(106)으로부터 도달할 때, 시스템은 둘 중 하나를 행한다. 로드 요청이 대기 행렬에 존재하면, 로드 요구가 도달되지만 내부 버스 인터페이스 유닛(118)이나 데이터 캐쉬(114)로 아직 전송되지 않은, 상태 404로 시스템은 이동한다. 대기 행렬에 로드가 존재하기 않고, 접근이 캐슁 가능한 접근일 때, 시스템은 상태 406으로 직접 이동하고, 여기서 데이터 캐쉬 접근이 시작된다. 대기 행렬에 로드가 없고 접근이 캐슁 가능하지 않을 경우, 시스템은 상태 412로 이동한다.
상태 404에서, 접근이 캐슁 가능하면, 데이터 캐쉬 접근이 시작되는 상태 406으로 시스템은 이동한다. 그렇지 않을 경우, 시스템은 상태 412로 이동하여, 내부 버스 인터페이스 유닛(118)에 접근을 기다린다.
상태 406에서, 시스템은 데이터 캐쉬 접근을 시작한다. 캐쉬 비트가 존재할 경우, 데이터 아이템은 데이터 캐쉬에 의해 즉시 생성되고, 로드 요구가 종료된다. 시스템은 이때 아이들 상태 402로 복귀하여, 새 로드 요구를 수신한다. 캐쉬 미스가 있을 경우, 시스템은 데이터 캐쉬 접근이 불가한 상태 408로 진행된다. 다음으로, 시스템은 메인 메모리에 접근을 시작하고 상태 412로 진행된다. 상태 412에서, 메인 메모리 접근은 내부 버스 인터페이스 유닛(118)에 접근을 대기함으로서 시작된다. 도일 캐쉬 라인의 최근 캐쉬 미스로 인해, 메인 메모리로부터 현재 복구되고 있는 캐쉬 라인에 접근이 행해질 경우, 시스템은 현 캐쉬 접근의 완료를 대기하는 상태 410으로 이동한다. 현 접근이 완료될 경우, 시스템은 캐쉬 접근을 계속하기 위해 상태 406으로 복귀한다.
상태 412에서, 시스템은 내부 버스 인터페이스 유닛(118)에의 접근을 기다리고 있다. 이는 메인 메모리에의 접근(캐쉬 접근의 경우)이거나, 내부 버스 인터페이스 유닛(118)에 연결되는 또다른 타겟에의 접근(비-캐쉬 접근의 경우)일 수 있다. 상태 412에서, 시스템은 내부 버스 인터페이스 유닛(118)에의 접근을 대기한다. 접근이 허락되면, 시스템이 내부 버스 인터페이스 유닛(118) 사이에서 접근 요구를 하는 상태 414로 시스템이 진행되어, 요구 데이터 복귀를 대기한다. 다음으로 시스템은 상태 416으로 이동하여, 요구 데이터를 수신한다. 요구 데이터가 다중 워드에 미칠 수 있기 때문에, 데이터 수신은 다중 데이터 이동을 요구할 수 있다.
최종적으로, 시스템은 로드 작동을 완료하고, 아이들 상태 402로 복귀한다. 그러나, 새 로드 요구가 진행 중이면, 시스템은 아이들 상태 402를 뛰어넘어, 새 로드 작용을 시작하기 위해 상태 404로 바로 이동한다.
로드 기억 유닛(102)은 데이터 캐쉬(114), 내부 버스 인터페이스 유닛(118), 그리고 버스 인터페이스(120)에 연결되는 세 개의 분리된 포트를 포함한다. 시스템 상태 머신에 의해 병렬 디스패치가 지원되면, 이는 로드 기억 유닛(102)을 세 개의 요구에 대해 병렬로 디스패치할 것이다. 로드 기억 유닛(104)은 데이터 캐쉬(114), 내부 버스 인터페이스 유닛(118), 그리고 버스 인터페이스(120)에 연결되는 세 개의 분리된 포트를 유사하게 포함한다.
기억 어드레스 버퍼 엔트리용 상태 머신
도 5는 본 발명의 한 실시예에 따르는 기억 어드레스 버퍼의 주어진 엔트리에 대한 상태 다이어그램을 도시한다. 시스템은 일반적으로 아이들 상태 502에서 시작한다. 새 기억 명령이 도달하면, 시스템은 상태 504로 진행하여, 기억 데이터 버퍼(230)와 기억 어드레스 버퍼(220)의 기억 요구를 시스템이 로딩한다.
상태 504에서, 접근이 캐슁 가능하면, 시스템은 상태 506으로 진행하여, 데이터 캐쉬 접근이 시작된다. 그렇지 않을 경우, 시스템은 상태 514로 진행하여, 내부 버스 인터페이스 유닛(118)에의 접근을 기다린다.
상태 506에서, 시스템은 데이터 캐쉬 접근을 시작한다. 캐쉬 히트가 있다면, 시스템은 상태 510으로 이동하여, 아이들 상태 502로 복귀하기 전에 데이터를 캐쉬 에 기록한다. 캐쉬 미스가 있는 경우에, 시스템은 상태 508로 진행하여, 데이터 캐쉬 접근이 불허된다. 다음에 시스템은 메인 메모리에의 접근을 시작하고, 상태 514로 진행한다. 상태 514에서, 메인 메모리 접근은 내부 버스 인터페이스 유닛(118)에의 접근을 기다림으로서 시작된다. 동일 캐쉬 라인에 대한 최근 캐쉬 미스로 인해, 메인 메모리로부터 현재 검색되고 있는 캐쉬 라인에 대한 접근일 경우, 시스템은 상태 512로 진행하여, 현 캐쉬 접근이 종료되기를 기다린다. 현재의 접근이 완료되면, 시스템은 캐쉬 접근을 계속하기 위해 상태 506으로 복귀한다.
상태 514에서, 시스템은 내부 버스 인터페이스 유닛(118)에의 접근을 기다린다. 이는 메인 메모리에의 접근(캐쉬 접근의 경우)일 수도 있고, 내부 버스 인터페이스 유닛(118)에 연결되는 또다른 타겟에의 접근(비-캐쉬 접근의 경우)일 수도 있다. 상태 514에서, 시스템은 내부 버스 인터페이스 유닛(118) 사이에서 접근 요구를 행하고, 내부 버스 인터페이스 유닛(118)에 접근이 허용되기를 기다린다. 접근이 허용되면, 시스템은 상태 516으로 진행하여, 시스템은 요구 데이터가 복귀하기를 기다린다. 시스템은 다음에 상태 518로 이동하여, 요구 데이터를 수신한다. 데이터 캐쉬(114) 내의 제어기는 RAM(150)으로부터 수신되는 캐쉬 라인과, 로드 기억 유닛(102)에 의해 기억될 데이터를 실제로 조합한다.
최종적으로, 시스템은 기억 작용을 완료하고, 아이들 상태 502로 복귀한다. 그러나, 새 기억 요구가 생기면, 시스템은 아이들 상태 502를 뛰어넘어, 새 기억 작용을 시작하기 위해 상태 504로 바로 진행한다.
로드 기억 유닛(102, 104)이 (데이터 캐쉬(114), 내부 버스 인터페이스(118), 그리고 버스 인터페이스(120)에의) 세 개의 분리된 포트를 포함함에도 불구하고, 레지스터 파일(110, 112)에 복귀하는 것은 실제로 직렬화된다. 데이터 캐쉬(114)에 먼저, 내부 버스 인터페이스 유닛(118)에 두 번째로, 그리고 버스 인터페이스 유닛(120)에 마지막으로 접근 우선 순위가 주어진다.
발명의 실시예에 대한 앞서의 기술 내용은 설명과 기술 용도로만 제시되었다. 앞서의 기술 내용이 공개되는 형태로 발명을 제한하는 의도로 제시된 것은 아니다. 따라서, 많은 수정과 변형이 당 분야의 통상의 지식을 가진 자에게 있어 용이할 것이다. 따라서, 앞서의 공개 내용은 발명을 제한하는 것을 지향하지 않는다. 발명의 범위는 첨부된 청구 범위에서 정의될 것이다.
본 발명은 컴퓨터 시스템의 설계에 관한 것이다. 특히, 본 발명은 다중 타겟에 대한 동시 요구를 지원하는 컴퓨터 시스템을 위한 로드 기억 유닛의 설계에 관한 것이다.
최근의 프로세서 설계는 다중 파이프라인 기능 유닛을 병렬로 작동함으로서 고성능을 이룬다. 이는 주어진 클럭 사이클에서 한 개 이상의 연산 작용을 완료시킨다. 이러한 프로세서 설계에 보조를 맞추기 위해, 메모리 시스템은 메모리 접근의 파이프라이닝이 가능하도록 수정되었다. 이는 이전의 메모리 접근 복귀 이전에 메모리 접근 요구를 완료시키고, 이는 메모리 시스템 성능을 크게 향상시킬 수 있다.
그러나, 컴퓨터 프로그램이 프로그램 실행 중 데이터 소스(타겟)를 변화시키면, 이러한 파이프라인 메모리 시스템은 완전히 정지되어, 시스템 성능을 크게 저하시킨다. 예를 들어, 메인 메모리에 파이프라인 접근하는 중 그래픽 코프로세서에 프로그램이 접근을 시도할 경우, 이는 데이터의 다른 수많은 소스(타겟)에 인터리브 접근을 지원하는 프로세서 설계에 대해 중대한 문제점일 수 있다. 예를 들어, 주어진 프로세서가 데이터 캐쉬, 메인 메모리, 그래픽 코프로세서, 그리고 여러 버스 인터페이스로부터 데이터에 접근할 수 있다.
더욱이, 이러한 파이프라인 메모리 시스템은 주어진 클럭 사이클에서 기껏해야 한 개의 접근 요구를 처리한다. 이는, 다중 요구가 다중 파이프라인 기능 유닛에 의해 동시에 발생할 때, 또는 리소스 충돌로 인해 다중 요구가 버퍼에 축적될 때, 성능을 제한할 수 있다.
기존 메모리 시스템의 이러한 성능 제한을 극복하는 것이 본 메모리 시스템에서 요구되는 바이다.

Claims (28)

  1. 데이터 캐쉬를 포함하는 컴퓨터 시스템에서 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치로서,
    상기 장치는 로드 기억 유닛, 로드 어드레스 버퍼, 레지스터 파일, 그리고 제어기로 구성되고,
    상기 로드 기억 유닛은 실행 엔진, 제 1 데이터 소스, 그리고 제 2 데이터 소스에 연결되고, 제 1 데이터 소스는 데이터 캐쉬이며,
    상기 로드 어드레스 버퍼는 로드 기억 유닛 내에 위치하여, 다중 로드 요구에 대한 어드레스를 포함하며,
    상기 레지스터 파일은 로드 요구 중 로드 기억 유닛에 의해 수신되는 데이터를 기억하고, 그리고
    상기 제어기는 로드 어드레스 버퍼, 레지스터 파일, 제 1 데이터 소스, 그리고 제 2 데이터 소스 사이의 데이터 흐름을 조절하도록 배치되어, 다중 로드 요구가 제 1 데이터 소스 및 제 2 데이터 소스에 대해 동시에 두드러지며, 이때, 동일 클럭 사이클에서 다중 로드 요구가 여러 다른 데이터 소스로 전송될 수 있도록 상기 제어기가 배치되는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  2. 제 1 항에 있어서, 상기 장치는 기억 어드레스 버퍼와 기억 데이터 버퍼를 추가로 포함하고,
    상기 기억 어드레스 버퍼는 다중 기억 요구에 대한 어드레스를 포함하고,
    상기 기억 데이터 버퍼는 다중 기억 요구에 대한 데이터를 포함하며,
    제어기는 제 1 데이터 소스, 제 2 데이터 소스, 기억 어드레스 버퍼, 그리고 기억 데이터 버퍼 사이의 데이터 흐름을 조절하도록 배치되어, 다중 기억 요구가 제 1 데이터 소스와 제 2 데이터 소스에 대해 동시에 두드러지는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  3. 제 1 항에 있어서, 로드 기억 유닛은 제 3 데이터 소스에 추가로 연결되고, 제어기는 데이터 흐름을 조절하도록 배치되어, 다중 로드 요구가 제 1 데이터 소스, 제 2 데이터 소스, 그리고 제 3 데이터 소스에 대해 동시에 두드러지는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  4. 제 1 항에 있어서, 로드 기억 유닛은 제 1 통신 경로를 통해 데이터 캐쉬에 연결되고, 제 1 통신 경로로부터 분리된 제 2 통신 경로를 통해 제 2 데이터 소스에 연결되는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  5. 제 1 항에 있어서, 무순서로 복귀할 수 있는 데이터 캐쉬에 보내지는 로드 요구를 제외하고, 컴퓨터 시스템의 다중 데이터 소스 각각에 대해 로드 요구가 순서대로 복귀하도록, 제어기가 배치되는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  6. 제 5 항에 있어서, 다른 데이터 소스로부터의 로드 요구에 대해 로드 요구가 무순서로 복귀할 수 있도록, 제어기가 배치되는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  7. 삭제
  8. 제 1 항에 있어서, 로드 어드레스 버퍼의 각각의 엔트리에 대해 별도의 상태 머신을 제어기가 포함하는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  9. 제 1 항에 있어서, 제 2 데이터 소스는 컴퓨터 시스템 버스에의 인터페이스를 포함하는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  10. 제 1 항에 있어서, 제 2 데이터 소스는 임의 접근 반도체 메모리(RAM)를 포함하는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  11. 제 1 항에 있어서, 제 2 데이터 소스는 제 2 기억 장치를 포함하는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  12. 제 1 항에 있어서, 제 2 데이터 소스는 컴퓨터 그래픽스 가속기, 프로세서, 그리고 브리지 칩 중 하나를 포함하는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  13. 제 1 항에 있어서, 로드 어드레스 버퍼의 각각의 엔트리는 로드 요구에 대한 타겟을 표시하는 상태 정보와 연관되어 있고, 상기 타겟은 제 1 데이터 소스와 제 2 데이터 소스 중 하나를 포함할 수 있는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  14. 제 1 항에 있어서, 로드 어드레스 버퍼의 각각의 엔트리는 관련 로드 요구 중 수신된 데이터가 캐슁 가능한 지를 표시하는 상태 정보와 연관되어 있는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  15. 제 1 항에 있어서, 로드 어드레스 버퍼의 각각의 엔트리가 관련 로드 요구의 상태를 표시하는 상태 정보와 연관되어 있는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  16. 제 1 항에 있어서, 로드 어드레스 버퍼의 각각의 엔트리는 관련 로드 요구의 종착 레지스터를 표시하는 상태 정보와 연관되어 있는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  17. 제 1 항에 있어서, 레지스터 파일에 기억되기 전에 로드 요구 중 수신되는 데이터를 정렬하기 위한 정렬 회로를 추가로 포함하는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 장치.
  18. 데이터 캐쉬를 포함하는 컴퓨터 시스템에서 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치로서,
    상기 장치는 로드 기억 유닛, 로드 기억 유닛 내의 로드 어드레스 버퍼, 레지스터 파일, 기억 어드레스 버퍼, 기억 데이터 버퍼, 그리고 제어기를 포함하고,
    상기 로드 기억 유닛은 실행 엔진, 제 1 데이터 소스, 그리고 제 2 데이터 소스에 연결되고, 제 1 데이터 소스는 데이터 캐쉬이며,
    상기 로드 어드레스 버퍼는 다중 로드 요구에 대한 어드레스를 포함하고,
    상기 레지스터 파일은 로드 요구 중 로드 기억 유닛에 의해 수신되는 데이터를 기억하며,
    상기 기억 어드레스 버퍼는 다중 기억 요구에 대한 어드레스를 포함하고,
    상기 기억 데이터 버퍼는 다중 기억 요구에 대한 데이터를 포함하며,
    상기 제어기는 로드 어드레스 버퍼, 레지스터 파일, 제 1 데이터 소스, 그리고 제 2 데이터 소스 사이의 데이터 흐름을 조절하도록 배치되어, 다중 로드 요구가 제 1 데이터 소스 및 제 2 데이터 소스에 대해 동시에 두드러지며,
    상기 제어기는 제 1 데이터 소스, 제 2 데이터 소스, 기억 어드레스 버퍼, 그리고 기억 데이터 버퍼 사이의 데이터 흐름을 조절하도록 추가로 배치되어, 다중 기억 요구가 제 1 데이터 소스 및 제 2 데이터 소스에 대해 동시에 두드러지고, 이때, 동일 클럭 사이클에서 다중 로드 요구가 여러 다른 데이터 소스로 전송될 수 있도록 상기 제어기가 배치되는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치.
  19. 제 18 항에 있어서, 로드 기억 유닛은 제 3 데이터 소스에 추가적으로 연결되고, 제어기는 데이터 흐름을 조절하도록 배치되어, 다중 로드 요구가 제 1 데이터 소스, 제 2 데이터 소스, 그리고 제 3 데이터 소스에 대해 동시에 두드러지는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치.
  20. 제 18 항에 있어서, 로드 기억 유닛은 제 1 통신 경로를 통해 데이터 캐쉬에 연결되고, 제 1 통신 경로와 분리된 제 2 통신 경로를 통해 제 2 데이터 소스에 연결되는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치.
  21. 제 18 항에 있어서, 무순서로 복귀할 수 있는 데이터 캐쉬에 전송되는 로드 요구를 제외하고, 컴퓨터 시스템의 다중 데이터 소스 각각에 대해 순서대로 로드 요구가 복귀하도록, 제어기가 배치되는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치.
  22. 제 18 항에 있어서, 다른 데이터 소스로부터의 로드 요구에 대해 로드 요구가 무순서로 복귀할 수 있도록 제어기가 배치되는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치.
  23. 데이터 캐쉬를 포함하는 컴퓨터 시스템에서 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 방법으로서, 상기 방법은:
    실행 엔진으로부터 로드 요구를 수신하고; 이때 상기 로드 요구는 제 1 데이터 소스와 제 2 데이터 소스 중 하나를 구체화하며,
    로드 요구로부터의 어드레스를 로드 어드레스 버퍼에 기억하며; 이때 상기 로드 어드레스 버퍼는 다중 로드 요구를 위한 어드레스를 포함하여, 다중 로드 요구가 제 1 데이터 소스 및 제 2 데이터 소스에 대해 동시에 두드러지며,
    제 1 데이터 소스 및 제 2 데이터 소스 중 하나에 로드 요구를 전송하고; 이때 제 1 데이터 소스는 데이터 캐쉬이며; 그리고
    로드 요구에 따라, 레지스터 파일의 제 1 데이터 소스와 제 2 데이터 소스 중 하나로부터 데이터를 수신하는;
    이상의 단계로 구성되며, 이때, 동일 클럭 사이클에서 다중 로드 요구가 여러 다른 데이터 소스로 전송될 수 있도록 제어가 이루어지는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 방법.
  24. 제 23 항에 있어서, 상기 방법은:
    실행 엔진으로부터 기억 요구를 수신하고;
    기억 어드레스 버퍼에 기억 요구로부터의 어드레스를 기억하며; 이때 기억 어드레스 버퍼는 다중 기억 요구에 대한 어드레스를 포함하여, 다중 기억 요구가 제 1 데이터 소스 및 제 2 데이터 소스에 대해 동시에 두드러지며, 그리고
    기억 데이터 버퍼에 기억 요구로부터의 데이터를 기억시키고; 상기 기억 데이터 버퍼는 다중 기억 요구로부터의 데이터를 포함하는 이상의 단계로 구성되는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 방법.
  25. 제 23 항에 있어서, 로드 요구는 제 3 데이터 소스에 추가로 전송될 수 있고, 다중 로드 요구가 제 1 데이터 소스, 제 2 데이터 소스, 그리고 제 3 데이터 소스에 대해 동시에 두드러지는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 방법.
  26. 제 23 항에 있어서, 제 1 데이터 소스 및 제 2 데이터 소스 중 하나에 로드 요구를 전송하는 것은 제 1 통신 경로를 통해 제 1 데이터 소스까지, 그리고 제 2 통신 경로를 통해 제 2 데이터 소스까지 로드 요구를 전송하는 단계로 구성되고,
    이때 제 2 통신 경로는 제 1 통신 경로와 분리되는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 방법.
  27. 제 23 항에 있어서, 제 1 데이터 소스와 제 2 데이터 소스 중 하나로부터 데이터를 수신하는 작용은 제 2 데이터소스로부터 순서대로 데이터를 수신하는 단계와 제 1 데이터 소스로부터 무순서로 데이터를 수신하는 단계로 구성되는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 방법.
  28. 제 27 항에 있어서, 제 1 데이터 소스와 제 2 데이터 소스 중 하나로부터 데이터를 수신하는 작용은 제 3 데이터 소스로부터 데이터를 수신하는 단계를 포함하고, 상기 데이터는 제 2 데이터 소스와 제 3 데이터 소스 사이와 같이 무순서로 수신될 수 있는 것을 특징으로 하는 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 요구를 지원하는 방법.
KR1020000013234A 1999-03-22 2000-03-16 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치 및 방법 KR100618248B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/273,850 1999-03-22
US09/273,850 US6237066B1 (en) 1999-03-22 1999-03-22 Supporting multiple outstanding requests to multiple targets in a pipelined memory system

Publications (2)

Publication Number Publication Date
KR20010014592A KR20010014592A (ko) 2001-02-26
KR100618248B1 true KR100618248B1 (ko) 2006-09-04

Family

ID=23045676

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000013234A KR100618248B1 (ko) 1999-03-22 2000-03-16 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치 및 방법

Country Status (5)

Country Link
US (1) US6237066B1 (ko)
EP (1) EP1039377B1 (ko)
JP (1) JP4585647B2 (ko)
KR (1) KR100618248B1 (ko)
DE (1) DE60030794D1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6473837B1 (en) 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Snoop resynchronization mechanism to preserve read ordering
US6266744B1 (en) 1999-05-18 2001-07-24 Advanced Micro Devices, Inc. Store to load forwarding using a dependency link file
US6473832B1 (en) * 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Load/store unit having pre-cache and post-cache queues for low latency load memory operations
US6728843B1 (en) * 1999-11-30 2004-04-27 Hewlett-Packard Development Company L.P. System and method for tracking and processing parallel coherent memory accesses
US6499077B1 (en) 1999-12-30 2002-12-24 Intel Corporation Bus interface unit for reflecting state information for a transfer request to a requesting device
US7197629B2 (en) * 2002-11-22 2007-03-27 Sun Microsystems, Inc. Computing overhead for out-of-order processors by the difference in relative retirement times of instructions
US7003628B1 (en) * 2002-12-27 2006-02-21 Unisys Corporation Buffered transfer of data blocks between memory and processors independent of the order of allocation of locations in the buffer
GB2411019B (en) * 2004-02-16 2007-03-07 Advanced Risc Mach Ltd Data accesses in data processing
DE102005048581B4 (de) 2005-10-06 2022-06-09 Robert Bosch Gmbh Teilnehmerschnittstelle zwischen einem FlexRay-Kommunikationsbaustein und einem FlexRay-Teilnehmer und Verfahren zur Übertragung von Botschaften über eine solche Schnittstelle
WO2007147435A1 (en) * 2006-06-20 2007-12-27 Freescale Semiconductor, Inc. Method for transmitting a datum from a time-dependent data storage means
EP2038744B1 (en) * 2006-06-22 2018-08-08 NXP USA, Inc. Method and system of grouping interrupts from a time-dependent data storage means
US20080065685A1 (en) * 2006-08-04 2008-03-13 Metacarta, Inc. Systems and methods for presenting results of geographic text searches
US20110055521A1 (en) * 2006-09-22 2011-03-03 Ecole Polytechnique Federale De Lausanne (Epfl) Microprocessor having at least one application specific functional unit and method to design same
US7870314B2 (en) * 2008-02-15 2011-01-11 International Business Machines Corporation Method and system for implementing store buffer allocation
US9021228B2 (en) 2013-02-01 2015-04-28 International Business Machines Corporation Managing out-of-order memory command execution from multiple queues while maintaining data coherency
US10282109B1 (en) * 2016-09-15 2019-05-07 Altera Corporation Memory interface circuitry with distributed data reordering capabilities
US10331446B2 (en) 2017-05-23 2019-06-25 International Business Machines Corporation Generating and verifying hardware instruction traces including memory data contents

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5509130A (en) * 1992-04-29 1996-04-16 Sun Microsystems, Inc. Method and apparatus for grouping multiple instructions, issuing grouped instructions simultaneously, and executing grouped instructions in a pipelined processor
US5737547A (en) * 1995-06-07 1998-04-07 Microunity Systems Engineering, Inc. System for placing entries of an outstanding processor request into a free pool after the request is accepted by a corresponding peripheral device
KR19980034436A (ko) * 1996-11-06 1998-08-05 김영환 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치
WO1999014666A2 (en) * 1997-09-12 1999-03-25 Siemens Microelectronics, Inc. Data processor with parallel decoding and execution of data and address instructions

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5148536A (en) 1988-07-25 1992-09-15 Digital Equipment Corporation Pipeline having an integral cache which processes cache misses and loads data in parallel
US5689670A (en) * 1989-03-17 1997-11-18 Luk; Fong Data transferring system with multiple port bus connecting the low speed data storage unit and the high speed data storage unit and the method for transferring data
EP0663083B1 (en) * 1992-09-29 2000-12-20 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
JPH0756815A (ja) * 1993-07-28 1995-03-03 Internatl Business Mach Corp <Ibm> キャッシュ動作方法及びキャッシュ
US5465336A (en) * 1994-06-30 1995-11-07 International Business Machines Corporation Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system
US5745729A (en) * 1995-02-16 1998-04-28 Sun Microsystems, Inc. Methods and apparatuses for servicing load instructions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5509130A (en) * 1992-04-29 1996-04-16 Sun Microsystems, Inc. Method and apparatus for grouping multiple instructions, issuing grouped instructions simultaneously, and executing grouped instructions in a pipelined processor
US5737547A (en) * 1995-06-07 1998-04-07 Microunity Systems Engineering, Inc. System for placing entries of an outstanding processor request into a free pool after the request is accepted by a corresponding peripheral device
KR19980034436A (ko) * 1996-11-06 1998-08-05 김영환 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치
WO1999014666A2 (en) * 1997-09-12 1999-03-25 Siemens Microelectronics, Inc. Data processor with parallel decoding and execution of data and address instructions

Also Published As

Publication number Publication date
US6237066B1 (en) 2001-05-22
KR20010014592A (ko) 2001-02-26
JP2000293436A (ja) 2000-10-20
EP1039377B1 (en) 2006-09-20
DE60030794D1 (de) 2006-11-02
EP1039377A1 (en) 2000-09-27
JP4585647B2 (ja) 2010-11-24

Similar Documents

Publication Publication Date Title
KR100618248B1 (ko) 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치 및 방법
EP0097790B1 (en) Apparatus for controlling storage access in a multilevel storage system
JP3218317B2 (ja) 集積キャッシュユニットおよびその構成方法
US6185660B1 (en) Pending access queue for providing data to a target register during an intermediate pipeline phase after a computer cache miss
US6401192B1 (en) Apparatus for software initiated prefetch and method therefor
US6665774B2 (en) Vector and scalar data cache for a vector multiprocessor
US6349382B1 (en) System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order
US6442707B1 (en) Alternate fault handler
US5845323A (en) Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US7707393B2 (en) Microprocessor with high speed memory integrated in load/store unit to efficiently perform scatter and gather operations
KR920005852B1 (ko) 데이타 처리 시스템에 있어서 합성 디스크립터를 제공하는 장치 및 방법
JP4045062B2 (ja) ロード命令を実行する方法、プロセッサ、およびシステム
JP4006436B2 (ja) 種々のキャッシュ・レベルにおける連想セットの重畳一致グループを有するマルチレベル・キャッシュ
US5524220A (en) Memory subsystems having look-ahead instruction prefetch buffers and intelligent posted write buffers for increasing the throughput of digital computer systems
US6321326B1 (en) Prefetch instruction specifying destination functional unit and read/write access mode
EP1202180A1 (en) Scalar data cache for a vector processor
US20030079089A1 (en) Programmable data prefetch pacing
US8046568B2 (en) Microprocessor with integrated high speed memory
EP0374419A2 (en) Method and apparatus for efficient loop constructs in hardware and microcode
WO1995032472A1 (en) Integrated level two cache and memory controller with multiple data ports
JP2737820B2 (ja) メモリアクセス方法およびシステム
US10489293B2 (en) Information handling system with immediate scheduling of load operations
US7290119B2 (en) Memory accelerator with two instruction set fetch path to prefetch second set while executing first set of number of instructions in access delay to instruction cycle ratio
US6012135A (en) Computer having multiple address ports, each having logical address translation with base and limit memory management
JP3218316B2 (ja) 集積キャッシュユニットおよびその内部でキャッシュ機能を実現するための方法

Legal Events

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

Payment date: 20120802

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130801

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150717

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160720

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170719

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180730

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20190729

Year of fee payment: 14