KR102534646B1 - 임시적 로드 명령을 위한 시스템, 장치, 및 방법 - Google Patents

임시적 로드 명령을 위한 시스템, 장치, 및 방법 Download PDF

Info

Publication number
KR102534646B1
KR102534646B1 KR1020177034992A KR20177034992A KR102534646B1 KR 102534646 B1 KR102534646 B1 KR 102534646B1 KR 1020177034992 A KR1020177034992 A KR 1020177034992A KR 20177034992 A KR20177034992 A KR 20177034992A KR 102534646 B1 KR102534646 B1 KR 102534646B1
Authority
KR
South Korea
Prior art keywords
instruction
command
memory
processor
load
Prior art date
Application number
KR1020177034992A
Other languages
English (en)
Other versions
KR20180016378A (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 KR20180016378A publication Critical patent/KR20180016378A/ko
Application granted granted Critical
Publication of KR102534646B1 publication Critical patent/KR102534646B1/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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • 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/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

프로세서에 대한 일시적 로드 명령은 복수의 입력 오퍼랜드들과 병렬로 실행되는 일시적 또는 임시적 로드 명령을 포함할 수 있다. 임시적 로드 명령은 명령 패킷 내에서 사용하기 위해 메모리 값을 임시적 위치에 로딩한다. 일부 예들에 따르면, VLIW 기반 마이크로프로세서 아키텍처는 단일 VLIW 패킷 사이클 동안 임시적 메모리 값을 기록/판독하는 데 사용하기 위한 임시적 캐시를 포함할 수 있다. 임시적 캐시는, 동일한 VLIW 패킷 사이클 동안 값을 기록하고 그런 다음 방금 기록된 그 값을 판독하는 것을 허용하지 않는 정규 레지스터 뱅크와 상이하다.

Description

임시적 로드 명령을 위한 시스템, 장치, 및 방법
[0001] 본 개시내용은 일반적으로, 메모리 로드 오퍼레이션(memory load operation)들에 관한 것으로, 더 구체적으로는 VLIW(very long instruction word) 기반 시스템들에 대한 임시적 로드 벡터 오퍼레이션(temporary load vector operation)에 관한 것이다.
[0002] 컴퓨팅에서, 최적화 컴파일러는 실행가능 컴퓨터 프로그램의 일부 속성들을 최소화 또는 최대화하려고 시도하는 컴파일러이다. 가장 일반적인 요건은 프로그램을 실행하는 데 걸리는 시간을 최소화하는 것이며; 덜 일반적인 요건은 점유되는 메모리의 양을 최소화하는 것이다. 휴대가능 컴퓨터들의 성장은 프로그램에 의해 소비되는 전력을 최소화하는 것에 대한 시장을 창출했다. 컴파일러 최적화는 일반적으로, 일련의 최적화 변환 알고리즘들을 사용하여 구현되며, 그 알고리즘들은 프로그램을 취하여, 그 프로그램을, 더 적은 자원들을 사용하는, 의미상 등가의 출력 프로그램을 생성하도록 변환하는 것이다. 과거에, 컴퓨터 메모리 제한들은 또한, 어떤 최적화들이 수행될 수 있는지를 제한하는 주요한 팩터였다. 모든 이러한 팩터들 때문에, 최적화는 "최적의" 출력을 거의 생성하지 않지만, 오히려 통상의 프로그램들에서의 자원 사용을 개선하기 위한 경험적 방법(heuristic method)들을 이용한다.
[0003] 컴파일러 최적화에서, 레지스터 배정은 적은 수의 CPU 레지스터들 상에 많은 수의 타겟 프로그램 변수들을 할당하는 프로세스이다. 레지스터 배정은 기본 블록을 통해(로컬 레지스터 배정), 전체 기능/프로시저를 통해(글로벌 레지스터 배정), 또는 콜-그래프(call-graph)를 통해 가로지르는 함수 경계들에 걸쳐(인터-프로시저 레지스터 배정(inter-procedural register allocation)) 발생할 수 있다. 함수/프로시저마다 수행되는 경우, 콜링 규약(calling convention)은 각각의 콜-사이트 주변에서의 저장(save)/복원(restore)의 삽입을 요구할 수 있다. 많은 프로그래밍 언어들에서, 프로그래머는 임의적으로 많은 변수들을 배정한다는 환상을 갖는다. 그러나, 컴파일레이션 동안, 컴파일러는 이들 변수들을 작고 유한한 세트의 레지스터들에 배정하는 방법을 결정해야 한다. 모든 변수들이 동시에 사용되는(또는 "라이브"인) 것은 아니므로, 일부 레지스터들은 1개 초과의 변수에 할당될 수 있다. 그러나, 동시에 사용되는 2개의 변수들은, 그것의 값을 손상시키지 않으면서 동일한 레지스터에 할당될 수 없다. 일부 레지스터에 할당될 수 없는 변수들은 RAM에 유지되고 그리고 모든 각각의 판독/기록, 즉, 스필링(spilling)으로 지칭되는 프로세스에 대해 로드 인/로드 아웃되어야 한다. RAM에 액세스하는 것은 레지스터들에 액세스하는 것보다 상당히 더 느리며, 컴파일된 프로그램의 실행 스피드를 늦추므로, 최적화 컴파일러는 가능한 한 많은 변수들을 레지스터들에 할당하는 것을 목표로 한다. 레지스터 압박(register pressure)은, 이용가능한 하드웨어 레지스터들이, 최적인 것보다 더 적게 존재할 때 사용되는 용어이며; 더 높은 압박은 일반적으로, 더 많은 스필(spill)들 및 리로드(reload)들이 필요하다는 것을 의미한다.
[0004] 데이터가 메모리로부터 로딩될 때, 하나의 오퍼레이션을 위해 필요한 데이터만이 로딩되고 그런 다음 폐기되는데, 이는 레지스터 압박(특히, 내부 루프들을 언롤링하는 경우) 그리고 로드를 스케줄링하는 하는 것 그리고 가능하게는 "사용할 로드(load to use)" 레이턴시를 숨기는 것에 있어서의 어려움을 초래할 수 있다. 따라서, 종래의 시스템들은 레지스터 압박을 겪고, 데이터의 충격을 최소화하는데, 이는 사실상 매우 일시적(transient)이다(1 사이클/1 패킷에 대해서만 존재할 필요가 있음). 데이터를 로딩하고 그런 다음 사용하는 것은, 사용이 뒤따르는 레지스터에 대한 기록의 레이턴시뿐만 아니라 무엇이 효과적으로 임시적인 값인지에 대한 레지스터의 사용의 문제를 야기한다.
[0005] 따라서, 본원에 의해 제공되는 개선된 방법들 및 장치를 비롯하여, 종래의 방법들을 개선하는 방법들에 대한 오랫동안 지각되어온 산업상 필요성들이 존재한다.
[0006] 본 교시들의 특징인 본 발명의 특징들은, 추가의 특징들 및 장점들과 함께, 상세한 설명 및 첨부 도면들로부터 더 잘 이해된다. 도면들 각각은 예시 및 설명의 목적으로만 제공되며, 본 교시들을 제한하지 않는다.
[0007] 다음은 본원에서 개시된 장치 및 방법들과 연관되는 하나 또는 그 초과의 양상들 및/또는 예들에 관한 간략화된 요약을 제시한다. 그러므로, 요약은 모든 고려되는 양상들 및/또는 예들에 관한 광범위한 개요인 것으로 고려되지 않아야 하며, 또한 다음의 요약은 모든 고려되는 양상들 및/또는 예들에 관한 핵심적인 또는 중요한 엘리먼트들을 식별하거나 또는 임의의 특정한 양상 및/또는 예와 연관된 범위를 기술하기 위한 것으로 간주되지 않아야 한다. 따라서, 다음의 요약은 아래에서 제시되는 상세한 설명에 앞서 간략화된 형태로, 본원에서 개시되는 장치 및 방법들에 관한 하나 또는 그 초과의 양상들 및/또는 예들에 관한 특정 개념들을 제시하는 데 그 유일한 목적을 갖는다.
[0008] 본 개시내용의 일부 예들은, 전용 "로드-오피(load-op)"와 같이 현재 패킷 내에서 즉시 사용될 수 있는 "자유(free)" 임시적 레지스터를 획득함으로써(그러나, 메모리 상에서 동작하는 추가의 명령들을 필요로 하지 않음), 레지스터 압박을 감소시키기 위한 시스템들, 장치, 및 방법들에 관한 것이다.
[0009] 일 양상에서, 장치는, 일시적 로드 명령(transient load instruction), 제2 명령, 및 로드 데이터를 저장하는 메모리; 일시적 로드 명령 및 제2 명령을 저장하도록 구성된 명령 레지스터; 메모리 및 명령 레지스터에 커플링된 프로세서를 포함하고; 프로세서는: 일시적 로드 명령을 메모리로부터 리트리브하고; 일시적 로드 명령을 명령 레지스터에 저장하고; 일시적 로드 명령에 대한 응답으로 로드 데이터를 메모리로부터 리트리브하고; 일시적 로드 명령에 대한 응답으로 로드 데이터를 명령 레지스터에 저장하고; 그리고 로드 데이터를 사용하여 제2 명령을 실행하도록 구성된다.
[0010] 다른 양상에서, 프로세서에 의해 메모리 로드 오퍼레이션을 실행하기 위한 방법은, 일시적 로드 명령을 메모리로부터 리트리브하는 단계; 일시적 로드 명령을 명령 레지스터에 저장하는 단계; 일시적 로드 명령에 대한 응답으로 로드 데이터를 메모리로부터 리트리브하는 단계; 일시적 로드 명령에 대한 응답으로 로드 데이터를 명령 레지스터에 저장하는 단계; 및 로드 데이터를 사용하여 제2 명령을 실행하는 단계를 포함한다.
[0011] 또 다른 양상에서, 컴퓨터 프로그램 제품은 프로세서-실행가능 컴퓨터 저장 매체 상에 상주하며, 컴퓨터 프로그램 제품은 프로세서-실행가능 명령들을 포함하고, 프로세서-실행가능 명령들은 프로세서로 하여금: 일시적 로드 명령을 메모리로부터 리트리브하게 하고; 일시적 로드 명령을 명령 레지스터에 저장하게 하고; 일시적 로드 명령에 대한 응답으로 로드 데이터를 메모리로부터 리트리브하게 하고; 일시적 로드 명령에 대한 응답으로 로드 데이터를 명령 레지스터에 저장하게 하고; 그리고 로드 데이터를 사용하여 제2 명령을 실행하게 하도록 구성된다.
[0012] 또 다른 양상에서, 장치는, 일시적 로드 명령, 제2 명령, 및 로드 데이터를 저장하기 위한 제1 수단; 일시적 로드 명령 및 제2 명령을 저장하기 위한 제2 수단; 저장하기 위한 제1 수단 및 저장하기 위한 제2 수단에 커플링된, 데이터를 프로세싱하기 위한 수단을 포함하고, 데이터를 프로세싱하기 위한 수단은: 저장하기 위한 제1 수단으로부터 일시적 로드 명령을 리트리브하고; 저장하기 위한 제2 수단에 일시적 로드 명령을 저장하고; 일시적 로드 명령에 대한 응답으로, 저장하기 위한 제1 수단으로부터 로드 데이터를 리트리브하고; 일시적 로드 명령에 대한 응답으로, 저장하기 위한 제2 수단에 로드 데이터를 저장하고; 그리고 로드 데이터를 사용하여 제2 명령을 실행하도록 구성된다.
[0013] 본원에 개시되는 장치 및 방법들과 연관되는 다른 특징들 및 장점들은 첨부 도면들 및 상세한 설명에 기초하여 당업자에게 명백할 것이다.
[0014] 첨부 도면들은 본 교시들의 예들을 설명하기 위해 제시되며, 제한적이지 않다. 첨부 도면들은 본 개시내용의 예들의 설명을 돕기 위해 제시되며, 예들의 제한이 아니라 단지 예들의 예시를 위해 제공된다.
[0015] 본 개시내용의 양상들 및 그에 수반되는 많은 장점들의 보다 완전한 이해는, 이들이 본 개시내용의 제한이 아닌 단지 예시를 위해 제시되는 첨부 도면들과 함께 고려될 때 다음의 상세한 설명을 참조하여 더 잘 이해됨에 따라 용이하게 획득될 것이며, 도면들에서:
[0016] 도 1은 본 개시내용의 일부 예들에 따른 예시적 로드 명령 패킷을 예시한다.
[0017] 도 2는 본 개시내용의 일부 예들에 따른, 메모리 로드 오퍼레이션을 수행하도록 동작가능한 컴포넌트들을 포함하는 예시적 VLIW 프로세서 아키텍처를 예시한다.
[0018] 도 3은 본 개시내용의 일부 예들에 따른, 메모리 로드 오퍼레이션을 위한 방법의 예시적 흐름도를 예시한다.
[0019] 도 4는 본 개시내용의 일부 예들에 따른, 메모리 로드 오퍼레이션을 수행하도록 동작가능한 컴포넌트들을 포함하는 무선 디바이스의 예시적 블록 다이어그램이다.
[0020] 일반적인 관행에 따라, 도면들에 의해 도시되는 피처(feature)들은 실척대로 도시되지 않을 수 있다. 따라서, 도시된 피처들의 치수들은 명확성을 위해 임의적으로 확대되거나 또는 축소될 수 있다. 일반적인 관행에 따라, 도면들 중 일부는 명확성을 위해 간략화되어 있다. 따라서, 도면들은 특정 장치 또는 방법의 모든 컴포넌트들을 도시하지는 않을 수 있다. 또한, 동일한 참조 부호들은 명세서 및 도면들 전체에 걸쳐 동일한 피처들을 나타낸다.
[0021] 본 개시내용과 관련되는 특정 예들을 도시하기 위해 다양한 양상들이 다음의 설명 및 관련된 도면들에서 개시된다. 본 개시내용을 읽을 때, 대안적인 예들이 당업자에게 명백할 것이며, 본 개시내용의 범위 또는 사상을 벗어나지 않으면서 구성되고 실시될 수 있다. 부가적으로, 본원에 개시된 양상들 및 예들의 관련 세부사항들을 모호하게 하지 않기 위해, 잘 알려진 엘리먼트들은 상세하게 설명되지 않거나 또는 생략될 수 있다.
[0022] 본 개시내용의 일부 예들에 따른 고성능 프로세서들은, 프로그램들에서 명령 레벨 병렬성(instruction level parallelism)을 활용하기 위해, 즉, 한 번에 1개 초과의 명령/입력 오퍼랜드(instruction/input operand)들을 실행하기 위해, 슈퍼스칼라(superscalar) 및/또는 일시적 로드 명령(transient load instruction)(이를테면, VLIW(very long instruction word)) 기법들에 의존한다. 이러한 프로세서들, 이를테면, ASIC(208)는 다수의 기능 유닛들을 포함하고, 명령/입력 오퍼랜드들의 순차적 스트림을 실행하며, 메모리로부터 클록 사이클 당 2개 또는 그 초과의 명령들/입력 오퍼랜드들을 페치(fetch)할 수 있고, 그리고 자원들의 종속성들 및 가용성에 따라 클록 사이클 당 2개 또는 그 초과의 명령들/입력 오퍼랜드들을 디스패치(dispatch)할 수 있다. 이러한 능력들은, 슈퍼스칼라 및/또는 일시적 로드 명령 피처들, 이를테면, VLIW 피처들에 최적화된 코드를 생성하는 컴파일러들에 의해 활용된다.
[0023] 순차적 프로그램들에서, 메모리 로드 오퍼레이션은 메모리로부터 데이텀을 판독하고, 그 데이텀을 프로세서 레지스터에 로딩하고, 로딩되는 데이텀에 종속되는 일련의 오퍼레이션들을 자주 시작한다. 이용가능한 자원들이 존재하는 슈퍼스칼라 또는 VLIW 프로세서에서, 가능한 한 일찍 메모리 로드 오퍼레이션들을 개시하는 것이 유리한데, 왜냐하면, 이는 그렇지 않으면 유휴 상태인 자원들의 사용을 초래할 수 있고, (잠재적 캐시 미스들을 비롯하여) 메모리에 액세스하는 것에서의 지연들을 숨길 수 있고, 그에 따라 프로그램들의 실행 시간을 감소시킬 수 있기 때문이다. 로드뿐만 아니라 로드에 종속되는 오퍼레이션들은, 엄격하게 순차적인 프로그램에서 실행되었을 것보다 더 일찍 실행되며, 그에 따라 더 짧은 실행 시간을 달성한다. 이는, 비-차단 로드(non-blocking load)들을 수행하는 능력(즉, 캐시 미스를 생성하는 로드를 초과하여 명령들을 계속 발행함), 선행 저장들에 앞서 로드들을 발행하는 능력(즉, 비순서적 로드(out-of-order load)들), 선행 분기들에 앞서 로드들을 이동시키는 능력(즉, 추론(speculation)), 및 다른 오퍼레이션들에 앞서 로드에 종속적인 오퍼레이션들을 이동시키는 능력을 요구한다.
[0024] 예시적 프로세서는 64개의 32-비트 범용 레지스터들, 8개의 단일-비트 조건 코드 레지스터들, 4개의 메모리 어드레스 레지스터들, 프로그램 상태 워드 레지스터, 및 일부 특수 레지스터들로 이루어진 레지스터 상태를 포함할 수 있다. 각각의 VLIW(very long instruction word)은 759 비트들이며, 이는:
8개의 ALU 오퍼레이션들
4개의 로드들 또는 저장들(ALU 오퍼레이션들 및 로드들의 합이 8을 초과하지 않아야 함)
7개의 조건적 분기들(8-방향 분기(eight-way branch)를 생성하는, 트리의 7개의 테스트 노드들); 및
트리-명령의 바이너리 인코딩을 포함한다.
[0025] 레지스터 대 레지스터 오퍼레이션(register to register operation)들(산술, 논리, 시프팅)은 RISC와 유사한 반면, 로드/저장 오퍼레이션들은 MAR(memory address register)들을 베이스 레지스터들로서 사용한다. 각각의 트리-경로에 대해, 긴 명령(long instruction)에서 아래의 정보가 제공된다:
경로가 취해지기 위해서는 어느 조건 코드들이 참(true)이 되어야 하는지, 어느 조건 코드들이 거짓(false)이 되어야 하는지, 그리고 어느 조건 코드들이 상관이 없는지를 표시하는 마스크;
경로에 대한 타겟 명령의 어드레스; 및
경로(즉, 경로 상의 오퍼레이션들의 세트)가 취해지는 경우, 어느 ALU/메모리 오퍼레이션들의 서브세트가 커미팅되어야(committed) 하는지를 표시하는 마스크.
[0026] 통상의 VLIW는 최대 4개의 명령들을 패킷에 포함할 수 있으며, 아래와 같이 보이지만, 패킷 당 거의 4개를 포함할 수 있다는 것이 이해되어야 한다:
Figure 112017120757116-pct00001
[0027] 통상의 로드-오피(Load-Op)는 고유한 명령 인코딩을 갖는 전용 로드-오피 명령을 요구하며, 메모리로부터 어느 오퍼랜드가 비롯될 수 있는지에 대한 제약을 또한 가질 수 있다:
Figure 112017120757116-pct00002
[0028] VLIW의 로드-오피(Load-Op)는 하나의 패킷에서 다수의 메모리 액세스들에 대한 지원을 요구할 것이다:
Figure 112017120757116-pct00003
[0029] 본 개시내용의 일부 예들에서, 임시적 로드 명령은 레이턴시를 숨길 수 있다. 임시적 로드 명령은 로드-오피 파이프라인 및 VFIFO를 통해 로드의 레이턴시를 숨길 수 있으므로, 이는 패킷을 이용한 로드 값의 즉각적인 사용을 허용한다:
Figure 112017120757116-pct00004
[0030] 위의 패킷들에서, R0의 메모리 콘텐츠가 임시적 버퍼에 로딩된다. 임시적 로드 명령은 그 패킷 내의 명령들에서 대체할 레지스터를 표시한다. 이는, 임의의 명령의 오퍼랜드가 메모리로부터 비롯될 수 있기 때문에, 전용 로드-오피 명령들을 제공할 필요성을 완화시킨다. 전용 인코딩을 필요로 하지 않으면서, 사실상 임의의 명령이 로드-오피가 될 수 있다. 임시적 레지스터가 패킷 내의 다수의 명령들에 포워딩될 수 있으므로, 다수의 명령들이 패킷 내에서 로드-오피처럼 작용할 수 있다. 임시적 값이 레지스터 파일에 절대 기록되지 않으므로, 레지스터 파일 기록 포트는 소비되지 않는다.
[0031] 도 1은 본 개시내용의 일부 예들에 따른 예시적 로드 명령 패킷을 예시한다. 도 1에 도시된 바와 같이, 새로운 명령(Vd.tmp)은 컴파일러에 의해 특정 메모리 어드레스(Vd.tmp = VMEM(#address))와 동일하도록 세팅된다. Vd.tmp 목적지는 현재의 패킷의 모든 명령들의 모든 벡터 소스들을 대체한다.
[0032] 도시된 바와 같이, 도 1은 제1 벡터 명령 패킷(110), 제2 VLIW 명령 패킷(120), 및 제3 명령 패킷(130)을 예시한다. 제1 명령 패킷(110)은 제1 벡터 명령(111)(일시적 로드 벡터 명령), 제2 벡터 명령(112), 및 제3 벡터 명령(113)을 포함할 수 있다. 제1 벡터 명령(111)은 R0 메모리 위치의 현재 값과 동일하도록 V1.tmp(일시적 로드)를 세팅하거나 정의하는 임시적 또는 일시적 로드 벡터 명령이다. 그런 다음, 이 임시적 또는 일시적 값은, 기록 포트를 소비하지 않으면서 동일한 패킷의 후속 벡터 명령들에 의해 사용될 수 있다. 확인될 수 있는 바와 같이, 제2 벡터 명령(112)은 VADD 값들을 기록하기 위해 이용가능한 4개의 기록 포트들 중 2개를 사용하는 한편, 제3 벡터 명령(113)은 VDMPY 값들을 기록하기 위해 다른 2개의 기록 포트들을 사용한다. 일시적 로드 벡터 명령을 제공함으로써, 시스템은 메모리 로드 오퍼레이션을 위해 기록 포트를 사용하는 것을 회피한다. 따라서, 일시적 로드 명령이, 프로세서가 로드 데이터에 대한 메모리 위치에 액세스하고 그런 다음 로드 데이터를 레지스터에 기록하는 것을 요구하지 않는다는 점에서, 일시적 로드 명령은 종래의 로드 명령과 상이하다. 이는 VLIW 명령 패킷의 실행 동안 로드 오퍼레이션을 수행하기 위해 레지스터의 기록 포트를 소비할 필요성을 제거한다.
[0033] 제2 명령 패킷(120)은 제1 명령(121), 제2 명령(122), 제3 명령(123), 및 제4 명령(124)을 포함할 수 있다. 제1 명령(121)은, V2.tmp를 R0 메모리 위치의 현재 값과 동일하게 세팅하는 임시적 로드 명령이다. 그런 다음, 이 임시적 값은, 기록 포트를 소비하지 않으면서 동일한 패킷의 후속 명령들에 의해 사용될 수 있다(이것이, 본 발명자들이 V1.tmp을 리사이클링하지 않을 수 있는 이유임). 확인될 수 있는 바와 같이, 제2 명령(122)은 VADD 값들을 기록하기 위해 이용가능한 4개의 기록 포트들 중 하나를 사용한다. 제3 명령(123)은 VALIGN 값들을 기록하기 위해 다른 기록 포트를 사용한다. 제4 명령(124)은 VDMPY 값들을 기록하기 위해 2개의 나머지 기록 포트들을 사용한다.
[0034] 제3 명령 패킷(130)은 제1 명령(131) 및 제2 명령(132)을 포함할 수 있다. 제1 명령(131)은, V3.tmp를 R0 메모리 위치의 현재 값과 동일하게 세팅하는 임시적 로드 명령이다. 그런 다음, 이 임시적 값은, 기록 포트를 소비하지 않으면서 동일한 패킷의 후속 명령들에 의해 사용될 수 있다(이것이, V1.tmp 또는 V2.tmp 모두가 동일한 메모리 위치/데이터를 사용할지라도, 본 발명자들이 V1.tmp 또는 V2.tmp을 리사이클링하지 않을 수 있는 이유임). 확인될 수 있는 바와 같이, 제2 명령(132)은 VMEM 값을 기록하기 위해 이용가능한 4개의 기록 포트들 중 하나를 사용한다.
[0035] 예컨대, 아래와 같다:
Figure 112017120757116-pct00005
[0036] 본 개시내용의 일부 예들은, 전용 "로드-오피(load-op)"와 같이 현재 패킷 내에서 즉시 사용될 수 있는 "자유(free)" 임시적 레지스터를 획득함으로써(그러나, 메모리 상에서 동작하는 추가의 명령들을 필요로 하지 않음), 레지스터 압박을 감소시키는 것을 돕는다. 임시적 로드는 임의의 벡터 명령이 메모리-오피(memory-op)가 되는 것을 가능하게 하고, 임의의 벡터 소스 오퍼랜드는 메모리 소스가 될 수 있다(전용 로드-오피(load-op) 명령들에 대한 어떤 필요성도 없음). 임시적 로드 명령이 레지스터 파일에 기록하지 않기 때문에, 레지스터 압박이 감소되며, 어떤 레지스터 파일 포트도 로드 오퍼레이션에 의해 소비되지 않는다. 임시적 로드 명령을 패킷의 시작부에 위치시킴으로써, 메모리/레지스터 데이터에 액세스하기 위한 레이턴시가 또한 숨겨진다.
[0037] 도 2는 본 개시내용의 일부 예들에 따른, 메모리 로드 오퍼레이션을 수행하기 위한 예시적 VLIW 프로세서 아키텍처를 예시한다. 도 2에 도시된 바와 같이, VLIW 기반 프로세서 또는 마이크로프로세서 시스템(200)은, VLIW 기반 명령 패킷들을 저장하기 위한 명령 캐시(210), 컴파일러(도시되지 않음)가 요구에 따라 로드 명령들을 임시적 로드 명령들로 대체하는 동안 VLIW 명령 패킷들을 임시적으로 저장하기 위한 명령 또는 임시적 레지스터(220), VLIW 명령들에 기반하여 로직 오퍼레이션들을 수행하기 위한 제1 실행 유닛(230), VLIW 명령들에 기반하여 로직 오퍼레이션들을 수행하기 위한 제2 실행 유닛(240), VLIW 명령들에 기반하여 로직 오퍼레이션들을 수행하기 위한 제3 실행 유닛(250), VLIW 명령들에 기반하여 로직 오퍼레이션들을 수행하기 위한 제4 실행 유닛(260), 데이터를 저장하기 위한 데이터 캐시(270), 및 실행 유닛들(230 내지 260)에 의해 사용될 데이터를 저장하기 위한 영구적 레지스터(280)를 포함할 수 있다. 4개의 실행 유닛들(230 내지 260)은 프로세서를 포함할 수 있다. 4개의 실행 유닛들 및 하나의 레지스터 파일이 도시되지만, 아키텍처 요건들에 기반하여 더 많은 또는 더 적은 것들이 사용될 수 있다는 것이 이해되어야 한다. 4개의 실행 유닛들의 경우, 각각의 실행 유닛은 각각의 다중 명령 패킷(VLIW)의 4개의 가능한 명령들 중 하나를 완전히 프로세싱할 수 있다. 전체에 걸쳐 VLIW 및 벡터 기반 프로세서들이 논의되지만, 본원에서 개시되는 본 발명의 개념들은 벡터 프로세서의 의해 구현되는 비-벡터 명령들뿐만 아니라 비-벡터 프로세서들에도 적용될 수 있다는 것이 이해되어야 한다.
[0038] 종래의 로드 오퍼레이션에서, 복수의 명령 패킷들(예컨대, 패킷들(110 내지 130))이 명령 캐시(210)로부터 리트리브되고, 명령 레지스터(220)를 통해 순차적으로 사이클링된다. 일단 종래의 명령 패킷이 명령 레지스터(220)의 최상위에 도달하면, 시스템(200)은 실행을 위해 그 명령 패킷을 실행 유닛들(230 내지 260) 중 하나에 전송한다. 명령 패킷이 종래의 로드 명령인 경우, 명령 패킷을 프로세싱하는 실행 유닛은 요청된 로드 데이터를 데이터 캐시(270)로부터 리트리브하고, 그런 다음, 실행 유닛들(230 내지 260)에 의한 후속 사용을 위해 로드 데이터를 레지스터 파일에 기록하기 위하여, 레지스터 파일(280)의 2개의 기록 또는 판독 포트들 중 하나를 사용할 것이다. 이는, 다른 실행 유닛들이 또한 2개의 판독/기록 포트들을 통해 레지스터 파일(280)에 액세스하려고 시도하는 경우, 레지스터 압박을 야기할 수 있다. 그러나, 명령 패킷이 본원의 일부 예들에 따른 일시적 로드 명령인 경우(예컨대, 제1 명령 패킷(111)), 일시적 로드 명령을 프로세싱하는 실행 유닛은 로드 데이터를 데이터 캐시(270)로부터 리트리브하고, 그런 다음, 로드 데이터를 요구하는 후속 명령 패킷들에 의한 사용을 위해 로드 데이터를 명령 레지스터(220)에 기록할 것이다. 따라서, 일시적 로드 명령은, 레지스터 파일(280)을 업데이트(판독 또는 기록)하지 않으면서 그리고 레지스터 파일(280)의 2개의 판독/기록 포트들 중 하나를 묶지(tying up) 않으면서 프로세싱될 수 있다.
[0039] 도 3은 위에서 설명된 기법들에 따른, 메모리 로드 오퍼레이션을 위한 예시적 방법을 예시하는 흐름도이다. 방법(300)은 예컨대, 마이크로프로세서 시스템(200)(도 2 및 도 4 참조)에 의해 수행될 수 있다. 블록(302)에 도시된 바와 같이, 시스템(200)은 메모리 위치(이를테면, 명령 캐시(210)) 및 적어도 하나의 레지스터(이를테면, 레지스터(280))에 커플링된 프로세서(이를테면, 실행 유닛들(230 내지 260) 중 임의의 하나 또는 전부)에서 일시적 로드 명령을 수신할 수 있다. 그 다음, 블록(304)에 도시된 바와 같이, 시스템(200)은 적어도 하나의 레지스터를 업데이트하지 않으면서(이를테면, 이전의 문단에서 설명된 레지스터(280)에 로드 데이터를 저장하지 않으면서) 일시적 로드 명령에 대한 응답으로 메모리 위치(이를테면, 명령 캐시(210))로부터 로드 데이터를 리트리브할 수 있다. 예컨대, 실행 유닛(230)은 명령 캐시(210)로부터 일시적 로드 명령을 수신하고, 일시적 로드 명령에 대한 응답으로, 명령 캐시(210)로부터 로드 데이터를 리트리브할 수 있다. 종래의 시스템과 달리, 실행 유닛(230)은 로드 데이터를 레지스터(280)에 저장하는 것이 아니라, 로드 데이터를 임시적 위치, 이를테면, 명령 캐시(210), 명령 레지스터(220), 또는 실행 유닛들(230 내지 260) 중 임의의 실행 유닛에 저장할 수 있다. 그 다음, 블록(306)에 도시된 바와 같이, 시스템(200)은 실행 유닛(230)에서 다른 명령으로 로드 데이터를 수신할 수 있다(대안적으로, 다른 실행 유닛, 이를테면, 실행 유닛(240)이 로드 데이터를 갖는 명령을 수신할 수 있음). 그 다음, 블록(308)에 도시된 바와 같이, 실행 유닛(230)은 명령에서 수신된 로드 데이터를 활용하여 명령을 실행할 수 있다. 이는, 명령 패킷에서 사용하기 위해 데이터를 저장하고 그런 다음 후속적으로 로딩하기 위한 레지스터(280)의 제한된 판독/기록 포트들의 사용을 방지한다. 명령을 실행하는 것은 VLIW(very long instruction word) 타입 프로세서 및 일시적 로드 명령에 의해 수행될 수 있으며, 명령은 VLIW(very long instruction word) 패킷일 수 있다. 명령은 복수의 명령들일 수 있고, 복수의 명령들 중 적어도 하나는 로드 데이터를 수신한다. 예컨대, 로드 데이터를 수신하는, 복수의 명령들 중 적어도 하나의 명령은, 하나의 패킷 사이클 내에서 제2 메모리 위치를 판독 및 기록하는 것을 가능하게 하는 메모리 기록 명령일 수 있다. 부가적으로, 블록들(302 내지 308)은 하나의 사이클에서 또는 다수의 사이클들에서 발생할 수 있다. 예컨대, 일시적 로드 명령을 수신하는 것은 다중 명령 패킷에서 먼저 발생하고, 로드 데이터를 포함하는 명령은 다중 패킷 명령에서 나중에 발생할 수 있다.
[0040] 무선 통신 시스템들은, 음성, 데이터, 멀티미디어 등과 같은 다양한 타입들의 통신 콘텐츠를 제공하도록 널리 배치되어 있다. 통상의 무선 통신 시스템들은, 이용가능한 시스템 리소스들(예컨대, 대역폭, 송신 전력 등)을 공유함으로써 다수의 사용자들과의 통신을 지원하는 것이 가능한 다중-액세스 시스템들이다. 이러한 다중-액세스 시스템들의 예들은, CDMA(Code Division Multiple Access) 시스템들, TDMA(Time Division Multiple Access) 시스템들, FDMA(Frequency Division Multiple Access) 시스템들, OFDMA(Orthogonal Frequency Division Multiple Access) 시스템들 등을 포함한다. 이러한 시스템들은 종종, 3GPP(Third Generation Partnership Project)에 의해 제공되는 LTE(Long Term Evolution), 3GPP2(Third Generation Partnership Project 2)에 의해 제공되는 UMB(Ultra Mobile Broadband) 및 EV-DO(Evolution Data Optimized), IEEE(Institute of Electrical and Electronics Engineers)에 의해 제공되는 802.11 등과 같은 규격들에 따라 배치된다.
[0041] 셀룰러 네트워크들에서, "매크로 셀" 액세스 포인트들은 특정 지리학적 영역에 걸쳐 많은 수의 사용자들에게 연결성 및 커버리지를 제공한다. 매크로 네트워크 배치는 지리학적 지역에 걸쳐 양호한 커버리지를 제공하기 위해 신중하게 계획되고, 설계되고, 구현된다. 주거용 주택들 및 사무실 건물들과 같은 실내 또는 다른 특정 지리학적 커버리지를 개선하기 위해, 추가의 "소형 셀", 통상적으로는 저전력 액세스 포인트들이 최근에 배치되기 시작하여 종래의 매크로 네트워크들을 보완한다. 소형 셀 액세스 포인트들은 또한, 증분적 용량 증가, 더 풍부한 사용자 경험 등을 제공할 수 있다.
[0042] 최근에, 예컨대, 소형 셀 LTE 오퍼레이션들은, WLAN(Wireless Local Area Network) 기술들에 의해 사용되는 U-NII(Unlicensed National Information Infrastructure) 대역과 같은 비허가 주파수 스펙트럼으로 확장되었다. 소형 셀 LTE 오퍼레이션의 이러한 확장은, 스펙트럼 효율성을 증가시키고 그에 따라 LTE 시스템의 용량을 증가시키도록 설계되었다. 그러나, 이는 또한, 동일한 비허가 대역들, 무엇보다도 특히, 일반적으로 "Wi-Fi"로 지칭되는 IEEE 802.11x WLAN 기술들을 통상적으로 활용하는 다른 RAT(Radio Access Technology)들의 오퍼레이션들을 침범할 수 있다. 이러한 무선 기술들이 무선 디바이스(400)와 같은 무선 디바이스에서 구현될 수 있으며, 아래에서 설명되는 바와 같이, 무선 디바이스(400)는 본원에서 설명되는 메모리 로드 오퍼레이션 및 연관된 장치의 양상들을 포함할 수 있다.
[0043] 이제 도 4를 참조하면, 메모리 로드 오퍼레이션을 수행하도록 동작가능한 컴포넌트들을 포함하는 무선 디바이스의 블록 다이어그램이 도시되며, 일반적으로 400으로 지정된다. 무선 디바이스(400)는, 위에서 논의된 바와 같은 제1 실행 유닛(230), 제2 실행 유닛(240), 제3 실행 유닛(250), 및 제4 실행 유닛(260)을 포함하는, 도 2의 프로세서(200)를 포함한다. 프로세서(200)는 메모리(410)에 통신가능할 수 있다. 명령 캐시가 이러한 도면에서 명시적으로 도시되지 않지만, 프로세서(200)의 부분일 수 있거나 또는 당해 기술분야에 알려진 바와 같이, 프로세서(200)와 메모리(410) 간에 커플링된 별개의 블록일 수 있다. 무선 디바이스(400)는 도 3의 방법을 수행하도록 구성될 수 있고, 추가로, 일부 양상들에서는 도 3의 방법을 수행하기 위해 메모리(410)로부터 리트리브된 명령들을 실행하도록 구성될 수 있다.
[0044] 도 4는 또한, 프로세서(200)와 디스플레이(428)에 커플링되는 디스플레이 제어기(426)를 도시한다. CODEC(coder/decoder)(434)(예컨대, 오디오 및/또는 음성 CODEC)은 프로세서(200)에 커플링될 수 있다. 다른 컴포넌트들, 이를테면, 무선 제어기(440)(무선 제어기(440)는 모뎀을 포함할 수 있음)가 또한 예시된다. 스피커(436) 및 마이크로폰(438)은 CODEC(434)에 커플링될 수 있다. 도 4는 또한, 무선 제어기(440)가 무선 안테나(442)에 커플링될 수 있다는 것을 표시한다. 특정 양상에서, 프로세서(200), 디스플레이 제어기(426), 메모리(410), CODEC(434), 및 무선 제어기(440)는 시스템-인-패키지 또는 시스템-온-칩 디바이스(422)에 포함된다.
[0045] 특정 양상에서, 입력 디바이스(430) 및 전력 공급부(444)는 시스템-온-칩 디바이스(422)에 커플링된다. 더욱이, 특정 양상에서, 도 4에서 예시된 바와 같이, 디스플레이(428), 입력 디바이스(430), 스피커(436), 마이크로폰(438), 무선 안테나(442), 및 전력 공급부(444)는 시스템-온-칩 디바이스(422) 외부에 있다. 그러나, 디스플레이(428), 입력 디바이스(430), 스피커(436), 마이크로폰(438), 무선 안테나(442), 및 전력 공급부(444) 각각은, 인터페이스 또는 제어기와 같은, 시스템-온-칩 디바이스(422)의 컴포넌트에 커플링될 수 있다.
[0046] 도 4가 무선 통신 디바이스를 도시하지만, 프로세서(200) 및 메모리(410)는 또한, 뮤직 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 내비게이션 디바이스, 통신 디바이스, 모바일 디바이스, 모바일 폰, 스마트폰, 개인 휴대 정보 단말, 고정 위치 단말, 태블릿 컴퓨터, 컴퓨터, 웨어러블 디바이스, 랩톱 컴퓨터, 서버, 및 자동차의 디바이스로 이루어지는 그룹으로부터 선택된 디바이스, 또는 다른 유사한 디바이스들에 통합될 수 있다는 것이 주목되어야 한다.
[0047] 게다가, 상세한 설명 또는 청구항들에 개시된 방법들은 이 방법의 각각의 단계들 또는 액션들을 수행하기 위한 수단을 포함하는 디바이스에 의해 구현될 수 있다는 것이 주목되어야 한다. 예컨대, 장치는, 일시적 로드 명령, 제2 명령, 및 로드 데이터를 저장하기 위한 제1 수단(예컨대, 명령 캐시(210)); 일시적 로드 명령 및 제2 명령을 저장하기 위한 제2 수단(예컨대, 명령 레지스터(220)); 저장하기 위한 제1 수단 및 저장하기 위한 제2 수단에 커플링된, 데이터를 프로세싱하기 위한 수단을 포함할 수 있고, 데이터를 프로세싱하기 위한 수단은: 저장하기 위한 제1 수단으로부터 일시적 로드 명령을 리트리브하고, 저장하기 위한 제2 수단에 일시적 로드 명령을 저장하고, 일시적 로드 명령에 대한 응답으로, 저장하기 위한 제1 수단으로부터 로드 데이터를 리트리브하고, 일시적 로드 명령에 대한 응답으로, 저장하기 위한 제2 수단에 로드 데이터를 저장하고, 그리고 로드 데이터를 사용하여 제2 명령을 실행하도록 구성된다.
[0048] "예시적인"이라는 용어는 "예, 경우 또는 예시로서 기능하는" 것을 의미하도록 본원에서 사용된다. 본원에서 "예시적인" 것으로 설명되는 임의의 세부사항들은 반드시 다른 예들에 비해 선호되거나 유리한 것으로 해석될 필요는 없다. 마찬가지로, "예들"이라는 용어는, 모든 예들이 논의되는 특징, 장점 또는 오퍼레이션 모드를 포함할 것을 요구하지 않는다. 본 명세서에서 "일 예에서", "예", "일 특징에서", 및/또는 "특징"이라는 용어들의 사용은 반드시 동일한 특징 및/또는 예를 지칭하지는 않는다. 게다가, 특정 특징 및/또는 구조는 하나 또는 그 초과의 다른 특징들 및/또는 구조들과 조합될 수 있다. 더욱이, 본원에 의해 설명되는 장치의 적어도 일부는, 본원에 의해 설명되는 방법의 적어도 일부를 수행하도록 구성될 수 있다.
[0049] 본원에서 사용되는 용어는 특정 예들만을 설명하기 위한 것이며 본 개시내용의 예들을 제한하기 위한 것으로 의도되지 않는다. 본원에서 사용되는 바와 같이, 문맥상 명백하게 달리 표시되지 않는 한, 단수 표현들은 복수 형태들을 또한 포함하도록 의도된다. "구비하다", "구비하는", "포함하다" 및/또는 "포함하는"이라는 용어들이 본원에서 사용되는 경우, 언급된 특징들, 정수들, 단계들, 오퍼레이션들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 특정하지만, 하나 또는 그 초과의 다른 특징들, 정수들, 단계들, 오퍼레이션들, 엘리먼트들, 컴포넌트들, 및/또는 이들의 그룹들의 존재 또는 부가를 배제하지 않는다는 것이 추가로 이해될 것이다.
[0050] "연결된", "커플링된"이라는 용어들 또는 이들의 임의의 변형은, 엘리먼트들 간의, 직접적이거나 또는 간접적인 임의의 연결 또는 커플링을 의미하고, 중간 엘리먼트를 통해 함께 "연결된" 또는 "커플링된" 2개의 엘리먼트들 간에 중간 엘리먼트의 존재를 포함할 수 있다는 것이 주목되어야 한다. 엘리먼트들 간의 커플링 및/또는 연결은 물리적이거나, 논리적이거나 또는 이들의 조합일 수 있다. 본원에서 이용되는 바와 같이, 엘리먼트들은, 예컨대, 하나 또는 그 초과의 와이어들, 케이블들, 및/또는 인쇄형 전기 연결들을 사용함으로써 함께 "연결되거나" 또는 "커플링될" 수 있다. 이들은 몇몇 비-제한적인 그리고 비-한정적인 예들이다.
[0051] "제1", "제2" 등과 같은 지정을 사용한 엘리먼트에 대한 본원에서의 어떤 언급도 그러한 엘리먼트들의 수량 및/또는 순서를 제한하지 않는다. 오히려, 이러한 지정들은 2개 또는 그 초과의 엘리먼트들 및/또는 엘리먼트의 인스턴스들 간을 구별하는 편리한 방법으로서 사용된다. 따라서, 제1 및 제2 엘리먼트들에 대한 언급은 오직 2개의 엘리먼트들만이 이용될 수 있다는 것 또는 제1 엘리먼트가 반드시 제2 엘리먼트에 선행해야 한다는 것을 의미하지 않는다. 또한, 달리 언급되지 않는 한, 엘리먼트들의 세트는 하나 또는 그 초과의 엘리먼트들을 포함할 수 있다. 또한, 상세한 설명 또는 청구항들에서 사용되는 "A, B 또는 C 중 적어도 하나"라는 형태의 용어는 "A 또는 B 또는 C 또는 이러한 엘리먼트들의 임의의 조합"으로서 해석될 수 있다.
[0052] 또한, 많은 예들은, 예컨대 컴퓨팅 디바이스의 엘리먼트들에 의해 수행될 액션들의 시퀀스들의 관점들에서 설명된다. 본원에서 설명된 다양한 액션들은 특정 회로들(예컨대, ASIC(application specific integrated circuit)들)에 의해, 하나 또는 그 초과의 프로세서들에 의해 실행되는 프로그램 명령들에 의해, 또는 이 둘 모두의 조합에 의해 수행될 수 있다는 것을 인식할 것이다. 부가적으로, 본원에서 설명된 이러한 시퀀스의 액션들은, 실행 시에, 연관된 프로세서로 하여금 본원에서 설명된 기능을 수행하게 할 컴퓨터 명령들의 대응하는 세트가 저장된 임의의 형태의 컴퓨터 판독가능 저장 매체 내에서 완전히 구현되는 것으로 고려될 수 있다. 따라서, 본 개시내용의 다양한 양상들은 다수의 상이한 형태들로 구현될 수 있고, 이들 모두는 청구되는 청구대상의 범위 내에 있는 것으로 간주된다. 부가하여, 본원에서 설명된 예들 각각에 대해, 임의의 그러한 예들의 대응하는 형태는, 예컨대 설명된 액션을 수행"하도록 구성된 로직"으로서 본원에서 설명될 수 있다.
[0053] 본 출원에서 나타낸, 언급되거나 예시된 어떤 것도, 컴포넌트, 단계, 특징, 이득, 장점, 또는 등가물이 청구항들에서 언급되는지의 여부와 관계없이, 대중에게 임의의 컴포넌트, 단계, 특징, 이득, 장점, 또는 등가물이 전용되도록 의도되지 않는다.

Claims (35)

  1. 장치로서,
    제1 명령(111), 제2 명령(112), 및 로드 데이터를 저장하는 메모리(210) ― 상기 제1 명령은 다중 명령 패킷의 제1 명령(111)이고 그리고 상기 제2 명령은 상기 다중 명령 패킷의 제2 명령(112)임 ―;
    상기 제1 명령 및 상기 제2 명령을 저장하도록 구성된 명령 레지스터(220);
    상기 메모리 및 상기 명령 레지스터에 커플링된 프로세서(230, 240, 250, 260)를 포함하고,
    상기 프로세서는:
    상기 메모리(210)로부터 상기 제1 명령을 수신하고 ― 상기 제1 명령은 상기 제2 명령에서 상기 제1 명령의 벡터 소스를 로드 데이터로 대체하도록 구성됨 ―;
    상기 명령 레지스터(220)에 상기 제1 명령을 저장하고;
    상기 제1 명령에 대한 응답으로 상기 메모리(210)로부터 상기 로드 데이터를 리트리브하고;
    상기 제1 명령에 대한 응답으로 상기 명령 레지스터(220)에 상기 로드 데이터를 저장하고; 그리고
    상기 로드 데이터를 사용하여 상기 제2 명령을 실행하도록
    구성되는, 장치.
  2. 제1 항에 있어서,
    상기 프로세서는, 상기 명령 레지스터를 참조함으로써 상기 로드 데이터를 리트리브하고 그리고 상기 로드 데이터를 리트리브하기 위해 상기 명령 레지스터를 참조함으로써 상기 제2 명령을 실행하도록 추가로 구성되는, 장치.
  3. 제1 항에 있어서,
    상기 프로세서는, 상기 제1 명령 및 상기 제2 명령을 포함하는 VLIW(very long instruction word) 패킷을 프로세싱하도록 구성된 VLIW(very long instruction word) 프로세서인, 장치.
  4. 제1 항에 있어서,
    제3 명령(113)을 더 포함하고, 그리고 상기 프로세서는 상기 로드 데이터를 사용하여 상기 제3 명령을 실행하도록 구성되는, 장치.
  5. 제4 항에 있어서,
    상기 제3 명령은 하나의 클록 사이클에서의 제2 메모리에 대한 판독 및 기록을 가능하게 하는 메모리 기록 명령인, 장치.
  6. 제1 항에 있어서,
    상기 프로세서는, 상기 제1 명령을 리트리브하고, 상기 로드 데이터를 리트리브하고, 그리고 하나의 클록 사이클에서 상기 제2 명령을 실행하거나; 또는 다수의 클록 사이클들에서 상기 제2 명령을 실행하도록 추가로 구성되는, 장치.
  7. 프로세서에 의해 메모리 로드 오퍼레이션을 실행하기 위한 방법(300)으로서,
    명령 캐시(210)로부터 제1 명령(111)을 수신하는 단계(302) ― 상기 제1 명령은 다중 명령 패킷의 제1 명령(111)이고, 상기 다중 명령 패킷은 또한 제2 명령(112)을 포함함 ―;
    명령 레지스터에 상기 제1 명령을 저장하는 단계 ― 상기 제1 명령은 상기 제2 명령에서 상기 제1 명령의 벡터 소스를 로드 데이터로 대체하도록 구성됨 ―;
    상기 제1 명령에 대한 응답으로 상기 명령 캐시(210)로부터 로드 데이터를 리트리브하는 단계(304);
    상기 제1 명령에 대한 응답으로 상기 명령 레지스터에 상기 로드 데이터를 저장하는 단계; 및
    상기 로드 데이터를 사용하여 상기 제2 명령을 실행하는 단계(308)를 포함하는,
    프로세서에 의해 메모리 로드 오퍼레이션을 실행하기 위한 방법(300).
  8. 제7 항에 있어서,
    상기 명령 레지스터를 참조함으로써 상기 로드 데이터를 리트리브하고 그리고 상기 로드 데이터를 리트리브하기 위해 상기 명령 레지스터를 참조함으로써 상기 제2 명령을 실행하는 단계를 더 포함하는,
    프로세서에 의해 메모리 로드 오퍼레이션을 실행하기 위한 방법(300).
  9. 제7 항에 있어서,
    상기 명령 레지스터에 상기 로드 데이터를 저장하는 것 및 상기 제2 명령을 실행하는 것은 VLIW(very long instruction word) 타입 프로세서에 의해 수행되고, 그리고 일시적 로드 명령(transient load instruction) 및 상기 제2 명령은 VLIW(very long instruction word) 패킷인,
    프로세서에 의해 메모리 로드 오퍼레이션을 실행하기 위한 방법(300).
  10. 제7 항에 있어서,
    상기 로드 데이터를 사용하여 제3 명령을 실행하는 단계를 더 포함하는,
    프로세서에 의해 메모리 로드 오퍼레이션을 실행하기 위한 방법(300).
  11. 제10 항에 있어서,
    상기 제3 명령은 하나의 클록 사이클에서의 제2 메모리에 대한 판독 및 기록을 가능하게 하는 메모리 기록 명령인,
    프로세서에 의해 메모리 로드 오퍼레이션을 실행하기 위한 방법(300).
  12. 제7 항에 있어서,
    상기 제1 명령을 수신하는 것, 상기 로드 데이터를 리트리브하는 것, 및 상기 제2 명령을 실행하는 것은 하나의 클록 사이클에서 발생하거나; 또는
    상기 제1 명령을 수신하는 것, 상기 로드 데이터를 리트리브하는 것, 및 상기 제2 명령을 실행하는 것은 다수의 클록 사이클들에서 발생하는,
    프로세서에 의해 메모리 로드 오퍼레이션을 실행하기 위한 방법(300).
  13. 프로세서-실행가능 컴퓨터 저장 매체에 저장된 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은 제1항에 따른 장치로 하여금 제7항에 따른 방법을 수행하게 하도록 구성된 프로세서-실행가능 명령들을 포함하는, 컴퓨터 프로그램.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
KR1020177034992A 2015-06-08 2016-05-17 임시적 로드 명령을 위한 시스템, 장치, 및 방법 KR102534646B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/732,784 2015-06-08
US14/732,784 US11561792B2 (en) 2015-06-08 2015-06-08 System, apparatus, and method for a transient load instruction within a VLIW operation
PCT/US2016/032863 WO2016200569A1 (en) 2015-06-08 2016-05-17 System, apparatus, and method for temporary load instruction

Publications (2)

Publication Number Publication Date
KR20180016378A KR20180016378A (ko) 2018-02-14
KR102534646B1 true KR102534646B1 (ko) 2023-05-18

Family

ID=56081616

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177034992A KR102534646B1 (ko) 2015-06-08 2016-05-17 임시적 로드 명령을 위한 시스템, 장치, 및 방법

Country Status (7)

Country Link
US (1) US11561792B2 (ko)
EP (1) EP3304283B1 (ko)
JP (1) JP6759249B2 (ko)
KR (1) KR102534646B1 (ko)
CN (1) CN107636611B (ko)
BR (1) BR112017026374B1 (ko)
WO (1) WO2016200569A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110908716B (zh) * 2019-11-14 2022-02-08 中国人民解放军国防科技大学 一种向量聚合装载指令的实现方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994008287A1 (en) 1992-09-29 1994-04-14 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5555432A (en) * 1994-08-19 1996-09-10 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution
US5813037A (en) * 1995-03-30 1998-09-22 Intel Corporation Multi-port register file for a reservation station including a pair of interleaved storage cells with shared write data lines and a capacitance isolation mechanism
JP3449186B2 (ja) 1997-08-19 2003-09-22 富士通株式会社 パイプラインバイパス機能を有するデータ処理装置
US6026479A (en) * 1998-04-22 2000-02-15 Hewlett-Packard Company Apparatus and method for efficient switching of CPU mode between regions of high instruction level parallism and low instruction level parallism in computer programs
EP1050800A1 (en) 1999-05-03 2000-11-08 STMicroelectronics SA A pipelined execution unit
US6862677B1 (en) * 2000-02-16 2005-03-01 Koninklijke Philips Electronics N.V. System and method for eliminating write back to register using dead field indicator
EP1199629A1 (en) 2000-10-17 2002-04-24 STMicroelectronics S.r.l. Processor architecture with variable-stage pipeline
US6925639B2 (en) 2001-02-23 2005-08-02 Microsoft Corporation Method and system for register allocation
JP2002333978A (ja) * 2001-05-08 2002-11-22 Nec Corp Vliw型プロセッサ
US20040044881A1 (en) * 2002-08-28 2004-03-04 Sun Microsystems, Inc. Method and system for early speculative store-load bypass
US7484075B2 (en) 2002-12-16 2009-01-27 International Business Machines Corporation Method and apparatus for providing fast remote register access in a clustered VLIW processor using partitioned register files
US7493609B2 (en) 2004-08-30 2009-02-17 International Business Machines Corporation Method and apparatus for automatic second-order predictive commoning
US20060224864A1 (en) 2005-03-31 2006-10-05 Dement Jonathan J System and method for handling multi-cycle non-pipelined instruction sequencing
JP4771079B2 (ja) 2006-07-03 2011-09-14 日本電気株式会社 Vliw型プロセッサ
US8141062B2 (en) 2007-01-31 2012-03-20 Hewlett-Packard Development Company, L.P. Replacing a variable in a use of the variable with a variant of the variable
US8266411B2 (en) 2009-02-05 2012-09-11 International Business Machines Corporation Instruction set architecture with instruction characteristic bit indicating a result is not of architectural importance
US8880854B2 (en) 2009-02-11 2014-11-04 Via Technologies, Inc. Out-of-order execution microprocessor that speculatively executes dependent memory access instructions by predicting no value change by older instructions that load a segment register
US9501286B2 (en) * 2009-08-07 2016-11-22 Via Technologies, Inc. Microprocessor with ALU integrated into load unit
US8516465B2 (en) 2009-12-04 2013-08-20 Oracle America, Inc. Register prespill phase in a compiler
CN102141905B (zh) 2010-01-29 2015-02-25 上海芯豪微电子有限公司 一种处理器体系结构
US9182992B2 (en) 2012-06-08 2015-11-10 Esencia Technologies Inc Method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers
US9612840B2 (en) * 2014-03-28 2017-04-04 Intel Corporation Method and apparatus for implementing a dynamic out-of-order processor pipeline
US9841974B2 (en) * 2014-04-25 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Renaming with generation numbers

Also Published As

Publication number Publication date
KR20180016378A (ko) 2018-02-14
EP3304283A1 (en) 2018-04-11
BR112017026374A2 (ko) 2018-08-21
US11561792B2 (en) 2023-01-24
CN107636611B (zh) 2021-07-20
US20160357558A1 (en) 2016-12-08
CN107636611A (zh) 2018-01-26
EP3304283B1 (en) 2022-10-26
JP2018517212A (ja) 2018-06-28
WO2016200569A1 (en) 2016-12-15
JP6759249B2 (ja) 2020-09-23
BR112017026374B1 (pt) 2024-02-27

Similar Documents

Publication Publication Date Title
US9703565B2 (en) Combined branch target and predicate prediction
US8893104B2 (en) Method and apparatus for register spill minimization
EP2962198B1 (en) Executing an operating system on processors having different instruction set architectures
US8713549B2 (en) Vectorization of program code
US8869162B2 (en) Stream processing on heterogeneous hardware devices
US20120096445A1 (en) Method and apparatus for providing portability of partially accelerated signal processing applications
US10007605B2 (en) Hardware-based array compression
US9619298B2 (en) Scheduling computing tasks for multi-processor systems based on resource requirements
US10489204B2 (en) Flexible in-order and out-of-order resource allocation
JP2018519597A (ja) ブロックサイズに基づくマッピング命令ブロック
CN111158756B (zh) 用于处理信息的方法和装置
US11630798B1 (en) Virtualized multicore systems with extended instruction heterogeneity
US8909892B2 (en) Method, apparatus, and computer program product for fast context switching of application specific processors
US8707013B2 (en) On-demand predicate registers
KR102534646B1 (ko) 임시적 로드 명령을 위한 시스템, 장치, 및 방법
Haaß et al. Automatic custom instruction identification in memory streaming algorithms
CN114924792A (zh) 指令译码单元、指令执行单元及相关装置和方法
CN111279308B (zh) 代码转换期间的屏障减少
US20210132952A1 (en) Code and data sharing among multiple independent processors
CN113110879B (zh) 指令处理方法及装置
EP4293505A1 (en) Instruction retirement unit, instruction execution unit, processing unit, cumputing device, and instruction processing method
CN117632243A (zh) 一种代码处理方法和计算设备
CN118035131A (zh) 数据预取方法及装置、处理器和计算机可读存储介质
AU2011211360A1 (en) Skip list generation

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