KR102382751B1 - 명령을 프리페치하는 방법, 장치, 기기 및 매체 - Google Patents

명령을 프리페치하는 방법, 장치, 기기 및 매체 Download PDF

Info

Publication number
KR102382751B1
KR102382751B1 KR1020200099856A KR20200099856A KR102382751B1 KR 102382751 B1 KR102382751 B1 KR 102382751B1 KR 1020200099856 A KR1020200099856 A KR 1020200099856A KR 20200099856 A KR20200099856 A KR 20200099856A KR 102382751 B1 KR102382751 B1 KR 102382751B1
Authority
KR
South Korea
Prior art keywords
instruction
buffer
prefetching
branch
target
Prior art date
Application number
KR1020200099856A
Other languages
English (en)
Other versions
KR20210070172A (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 KR20210070172A publication Critical patent/KR20210070172A/ko
Application granted granted Critical
Publication of KR102382751B1 publication Critical patent/KR102382751B1/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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/30047Prefetch instructions; cache control instructions
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (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

명령을 프리페치하는 방법, 장치, 기기 및 매체{METHOD AND APPARATUS FOR INSTRUCTION PREFETCHING, DEVICE AND MEDIUM}
본 출원의 실시예는 컴퓨터 기술에 관한 것이고, 구체적으로 데이터 저장 기술에 관한 것이며, 특히 명령을 프리페치하는 방법, 장치, 기기 및 매체에 관한 것이다.
명령의 프리페치 조작은 프로세서 성능을 향상시키는 목적을 달성하고자 각 프로세서에 광범위하게 응용되고 있다. 현재, 멀티코어 프로세서에서 명령 프리페치 조작은 주로 하기의 두 가지 방식으로 구현된다.
방안1: 각 프로세서 코어에 하나의 레벨의 레지스터 캐시를 추가하는 것을 적용하되, 당해 캐시의 크기는 일반적으로 명령 고속 캐싱 영역(icache)의 판독 경로 대역폭이다. 한 회마다 icache로부터 복수의 명령을 판독하여 추가된 레지스터 캐시에 저장하고, 당해 레지스터 캐시의 명령이 사용 완료된 후, 다시 icache로부터 계속하여 복수의 명령을 판독한다. 각 프로세서 코어에 명령 분기 점프 등의 조작이 발생하는 경우, 점프 어드레스(pc값)가 레지스터 캐시에 존재하지 않는다면, 당해 코어가 icache로부터 다시 명령을 레지스터 캐시에로 판독할 때까지 대기하여야 하는바, 시간 지연이 보다 길어지고 프로세서 성능에 영향을 준다. 또한, 레지스터 캐시 크기가 icache 판독 대역폭과 일치되는 경우, 현재 판독한 명령이 이전에 캐싱된 명령을 오버레이하는 것을 회피하기 위해, 반드시 이전에 캐싱된 명령이 사용 완료될 때까지 대기하고나서 다음 회의 명령 페치 조작을 시작할 수 있는바, 이는 명령 페치의 시간 지연을 나아가 더 증가시킨다.
방안2: 각 프로세서 코어에 하나의 레벨의 icache를 추가하여 멀티 코어 경쟁으로 인한 명령 페치 지연을 감소시키고, 각 코어가 자체 코어 내의 icache로부터 명령을 판독하여 판독되는 명령이 코어 내의 icache에 존재하지 않는 경우, 다시 한단계 위 레벨의 icache로 판독 요청을 제기한다. 그러나, 각 프로세서 코어에하나의 레벨의 icache를 추가하는 것은, 분명히 프로세서의 전체 면적을 증가시키는바, 프로세서의 가공 제조 비용을 향상시킨다.
본 출원의 실시예는 명령을 프리페치하는 방법, 장치, 기기 및 매체를 개시하는바, 프로세서의 가공 제조 비용을 증가시키지 않으면서 각 프로세서 코어의 명령 페치 효율을 향상시키고 명령 페치의 시간 지연을 감소시키고 캐싱된 명령의 오버레이(overlay)가 프로세서 작동에 주는 영향을 감소시킨다.
제1 측면으로, 본 출원의 실시예는 명령을 프리페치하는 방법을 개시하는바, 당해 방법은,
프로세서 코어가 이에 대응되는 타겟 버퍼로부터 필요한 명령을 획득하기 전에, 상기 타겟 버퍼 내의 명령을 프리컴파일링하는 단계; 및
프리컴파일링 결과에 따라 상기 타겟 버퍼에 점프 명령이 존재하고 상기 점프 명령의 분기 명령이 상기 타겟 버퍼에 캐싱되지 않는다고 결정되는 경우, 캐싱되지 않은 분기 명령을 명령 고속 캐싱 영역으로부터 상기 프로세서 코어에 대응되는 후보 버퍼로 프리페치하여 상기 프로세서 코어가 상기 후보 버퍼로부터 상기 분기 명령을 획득하기를 대기하는 단계; 를 포함하고,
상기 타겟 버퍼와 상기 후보 버퍼는 명령을 프리페치하는 과정에서 교대로 재사용된다.
상술한 출원의 일 실시예는 하기의 이점 또는 유익한 효과를 가진다. 명령 프리컴파일링 및 2개 버퍼의 동적 이용을 통해, 프로세서의 가공 제조 비용을 증가시키지 않으면서 각 프로세서 코어의 명령 페치 효율을 향상시키고 명령 페치의 시간 지연을 감소시키고 캐싱된 명령의 오버레이가 프로세서 작동에 주는 영향을 감소시킨다.
선택적으로, 상기 캐싱되지 않은 분기 명령을 명령 고속 캐싱 영역으로부터 상기 프로세서 코어에 대응되는 후보 버퍼로 프리페치하는 단계는,
상기 캐싱되지 않은 분기 명령에서 가장 작은 명령 어드레스를 첫 번째 어드레스로 하고 상기 명령 고속 캐싱 영역으로부터 미리 설정된 수량의 명령을 프리페치하여 상기 프로세서 코어에 대응되는 후보 버퍼에 캐싱하는 단계를 포함하고, 상기 캐싱되지 않은 분기 명령은 상기 미리 설정된 수량의 명령에 포함된다.
상술한 출원의 일 실시예는 하기의 이점 또는 유익한 효과를 가진다. 캐싱되지 않은 분기 명령에서 가장 작은 명령 어드레스를 첫 번째 어드레스로 함으로써 전에 이미 실행된 분기 명령이 프리페치되도록 보장하면서 가급적으로으로 더 많은 수요 명령을 프리페치할 수 있다.
선택적으로, 상기 캐싱되지 않은 분기 명령을 명령 고속 캐싱 영역으로부터 상기 프로세서 코어에 대응되는 후보 버퍼로 프리페치하는 단계는,
상기 캐싱되지 않은 분기 명령이 상기 프로세서 코어에 대응되는 후보 버퍼에 캐싱되었는지 여부를 결정하는 단계; 및
상기 캐싱되지 않은 분기 명령이 상기 프로세서 코어에 대응되는 후보 버퍼에 캐싱되지 않았을 경우, 상기 캐싱되지 않은 분기 명령을 상기 명령 고속 캐싱 영역으로부터 상기 후보 버퍼로 프리페치하는 단계; 를 포함한다.
선택적으로, 상기 프로세서 코어가 상기 후보 버퍼로부터 상기 분기 명령을 획득할 때, 현재의 명령 페치 대상 버퍼는 상기 타겟 버퍼에서 상기 후보 버퍼로 바뀌고;
상응하게, 상기 방법은,
상기 프로세서 코어가 상기 후보 버퍼로부터 상기 분기 명령을 획득하기 전에, 상기 후보 버퍼 내의 명령을 프리컴파일링하여 상기 후보 버퍼에 캐싱되지 않은 분기 명령을 결정하는 단계를 더 포함한다.
선택적으로, 상기 타겟 버퍼 내의 명령을 프리컴파일링하는 단계는
분기 점프 예측 알고리즘을 이용하여 상기 타겟 버퍼 내의 명령을 프리컴파일링하는 단계;를 포함한다.
선택적으로, 상기 타겟 버퍼 내의 명령을 프리컴파일링한 후, 상기 방법은,
예측 실패 메세지가 수신되는 경우, 상기 프로세서 코어가 타겟 점프 명령을 실행하는 과정에 순차로 상기 타겟 버퍼의 레지스터와 상기 후보 버퍼의 레지스터에서 명령 어드레스 매칭을 실행하여 상기 타겟 점프 명령의 분기 명령이 위치하는 버퍼를 결정하는 단계를 더 포함한다.
상술한 출원의 일 실시예는 하기의 이점 또는 유익한 효과를 가진다. 동시에 2개 버퍼를 사용하여 명령 프리페치를 실행하므로, 2개 버퍼가 교대로 사용됨에 따라, 명령을 프리페치하는 과정에 가급적으로 많은 명령을 사전 캐싱하는 것을 구현할 수 있고, 분기 명령 예측이 실패하는 경우에도 분기 명령 프리페치를 대부분 오버레이할 수 있고 분기 명령을 재페치하는 대기 시간이 단축된다.
선택적으로, 상기 방법은,
상기 명령 어드레스 매칭에 따라 상기 타겟 점프 명령의 분기 명령이 상기 타겟 버퍼와 상기 후보 버퍼에 모두 존재하지 않는다고 결정되는 경우, 상기 타겟 점프 명령의 분기 명령의 어드레스를 첫 번째 어드레스로 하고 상기 명령 고속 캐싱 영역으로부터 미리 설정된 수량의 명령을 프리페치하여 상기 후보 버퍼에 캐싱하는 단계를 더 포함한다.
제2 측면으로, 본 출원의 실시예는 명령을 프리페치하는 장치를 개시하는바, 당해 장치는,
프로세서 코어가 이에 대응되는 타겟 버퍼로부터 필요한 명령을 획득하기 전에, 상기 타겟 버퍼 내의 명령을 프리컴파일링하는 명령 프리컴파일링 모듈; 및
프리컴파일링 결과에 따라 상기 타겟 버퍼에 점프 명령이 존재하고 상기 점프 명령의 분기 명령이 상기 타겟 버퍼에 캐싱되지 않는다고 결정되는 경우, 캐싱되지 않은 분기 명령을 명령 고속 캐싱 영역으로부터 상기 프로세서 코어에 대응되는 후보 버퍼로 프리페치하여 상기 프로세서 코어가 상기 후보 버퍼로부터 상기 분기 명령을 획득하기를 대기하는 명령 프리페치 모듈; 을 포함하고,
상기 타겟 버퍼와 상기 후보 버퍼는 명령을 프리페치하는 과정에서 교대로 재사용된다.
제3 측면으로, 본 출원의 실시예는 전자 기기를 더 개시하는바, 이는
적어도 하나의 프로세서; 및
상기 적어도 하나의 프로세서에 통신하도록 연결되는 메모리; 를 포함하고,
상기 메모리에는 상기 적어도 하나의 프로세서에 의해 실행 가능한 명령이 저장되고, 상기 명령이 상기 적어도 하나의 프로세서에 의해 실행될 경우, 상기 적어도 하나의 프로세서가 본 출원의 실시예 중 어느 하나에 따른 명령을 프리페치하는 방법을 실행한다.
제4 측면으로, 본 출원의 실시예는 컴퓨터 명령이 저장되어 있는 비일시적 컴퓨터 판독 가능 저장 매체를 더 개시하는바, 상기 컴퓨터 명령이 실행될 경우, 본 출원의 실시예 중 어느 하나에 따른 명령을 프리페치하는 방법이 실행된다.
제5 측면으로, 본 출원의 실시예는 컴퓨터 판독 가능 매체에 저장되어 있는 컴퓨터 프로그램을 더 제공한다. 상기 컴퓨터 프로그램 중의 명령이 실행될 경우, 상기 명령을 프리페치하는 방법이 실행된다.
본 출원의 실시예의 기술안에 따르면, 프로세서 코어가 이에 대응되는 타겟 버퍼로부터 필요한 명령을 획득하기 전에, 타겟 버퍼 내의 명령을 프리컴파일링하여 점프 명령 및 대응되는 분기 명령을 결정하고, 타겟 버퍼에 캐싱되지 않은 분기 명령을 후보 버퍼에 사전 캐싱하여 프로세서 코어에 의해 획득되기를 대기시킴으로써, 종래의 명령 프리페치 방안에 존재하는 분기 명령의 획득이 지연되는 문제를 해결하고 프로세서의 가공 제조 비용을 증가시키지 않으면서 각 프로세서 코어의 명령 페치 효율을 향상시키고 명령 페치의 시간 지연을 감소시키고 캐싱된 명령의 오버레이가 프로세서 작동에 주는 영향을 감소시키며 나아가 프로세서의 성능을 향상시킨다. 상술한 선택적인 방식이 가지는 기타의 효과는 아래 구체적인 실시예를 결부하여 설명하고자 한다.
첨부 도면은 본 방안을 더 잘 이해하기 위한 것으로, 본 출원을 한정하지 않는다.
도1은 본 출원의 실시예에 따라 개시되는 명령을 프리페치하는 방법의 흐름도이다.
도2는 본 출원의 실시예에 따라 개시되는 다른 명령을 프리페치하는 방법의 흐름도이다.
도3은 본 출원의 실시예에 따라 개시되는 명령을 프리페치하는 장치의 개략적인 구조도이다.
도4는 본 출원의 실시예에 따라 개시되는 전자 기기의 블록도이다.
여기서 설명하는 실시예에 대한 다양한 변경과 수정은 실행 가능한 것으로, 이는 본 출원의 범위와 사상을 벗어나지 않는 것임을 알 수 가 있다. 마찬가지로, 명백하고 간단명료하게 하고자 아래의 설명에서는 공지된 기능과 구조에 대한 설명을 생략하기로 한다.
도1은 본 출원의 실시예에 따라 개시되는 명령을 프리페치하는 방법의 흐름도이고, 본 실시예는 명령 점프가 존재하는 경우에 프로세서의 각 코어의 명령 판독 지연을 감소시키는 데 적용될 수 있다. 본 실시예의 방법은 명령을 프리페치하는 장치에 의해 실행될 수 있고 당해 장치는 소프트웨어 및/또는 하드웨어 방식을 사용하여 구현할 수 있고 컴퓨팅 능력을 가지는 임의의 전자 기기에 집적될 수 있고 당해 전자 기기의 프로세서는 적어도 하나의 코어를 포함한다.
본 출원의 실시예에서, 적어도 하나의 코어를 포함하는 프로세서에 대하여, 사전에 각 코어에 2개 버퍼(buffer)를 설치하고 각각 타겟 버퍼와 후보 버퍼로 레이블링할 수 있는바, 즉 서로 다른 프로세서 코어마다 하나의 타겟 버퍼와 하나의 후보 버퍼가 대응된다. 버퍼는 기기의 내장 메모리 내의 저장 영역으로, 사용하기에 충분한 버퍼를 확보하고자 기기의 내장 메모리를 증가시키는 것은 프로세서 자체의 면적 및 제조 비용을 증가시키지 않는다. 여기서, 타겟 버퍼는 프로세서 코어 작동 과정에서 프로세서 코어가 현재에 명령을 페치하는 대상 버퍼이고, 후보 버퍼는 타겟 버퍼에 캐싱되지 않은 특정 명령을 사전 캐싱한다. 예를 들면, 프로세서 코어가 필요한 명령을 획득하기 전에, 레지스터에서 명령 어드레스 매칭을 실행함으로써 현재 필요한 명령이 위치하는 버퍼를 결정하고 당해 버퍼를 현재 타겟 버퍼로 한다. 명령 판독 및 명령 처리가 부단히 진행됨에 따라, 2개 버퍼의 역할은 교대로 변환될 수 있다.
프로세서 코어에 명령 페치 수요가 있는 경우, 우선 2개 버퍼를 액세스하여 필요한 명령을 획득하고, 2개 버퍼에 모두 수요 명령이 존재하지 않는다고 결정되면, 한단계 위 레벨의 명령 고속 캐싱 영역(icache)을 액세스하여 필요한 명령을 획득하여 버퍼에 캐싱함으로써 프로세서 코어에 의해 획득되기를 대기시킨다. 타겟 버퍼와 후보 버퍼 각자의 크기는 명령 고속 캐싱 영역의 판독 대역폭(cacheline)에 관계되고 실제 수요에 다라 설정할 수 있는바, 예를 들면 명령 고속 캐싱 영역의 하나의 판독 대역폭에 따라 각 버퍼의 크기를 설정한다. 본 출원의 실시예를 해석하고 설명하는 편의를 위해, 아래, 구체적으로 하나의 프로세서 코어를 예로 들어 본 출원을 예시적으로 설명하고자 한다.
도1에 도시한 바와 같이, 본 실시예에서 개시하는 명령을 프리페치하는 방법은 하기 단계를 포함할 수 있다.
S101, 프로세서 코어가 이에 대응되는 타겟 버퍼로부터 필요한 명령을 획득하기 전에, 타겟 버퍼 내의 명령을 프리컴파일링한다.
여기서, 프리컴파일링 또는 프리디코딩은 버퍼 내의 명령을 미리 컴파일링하여 버퍼 내의 어느 명령이 점프 명령에 속하는지 및 점프 명령에 대응되는 분기 명령을 결정하는 것을 가리킨다. 점프 명령은 프로세서 코어가 당해 명령을 실행한 후, 계속하여 점프하여 관련되는 그 다음 명령을 실행하는 특정 명령을 가리킨다. 명령 프리컴파일링을 통해 결정된 점프 명령은 필연적 점프 명령과 예측 점프 명령을 포함하는바, 필연적 점프 명령은 당해 명령이 실행된 후 반드시 명령 점프가 진행되는 명령을 가리키고, 예측 점프 명령은 당해 명령이 실행된 후 일정한 확률로 명령 점프가 진행되거나 명령 점프가 진행되지 않을 수도 있는 것을 가리킨다. 명령 프리컴파일링 또는 프리디코딩의 구현에 있어서, 종래 기술에서의 사용 가능한 임의의 명령 프리컴파일링 기술을 이용할 수 있는바, 예를 들면, 프로세서 내의 명령 프리디코더를 이용하여 명령을 프리컴파일링할 수 있고, 종래 기술에서의 사용 가능한 임의의 명령 분기 예측 알고리즘을 이용하여 명령 점프의 분기 명령을 예측할 수 있다.
본 실시예에서, 타겟 버퍼 내의 명령을 프리컴파일링하는 것은, 타겟 버퍼 내의 각 명령을 프리컴파일링하거나, 또는 어드레스가 프로세서 코어가 현재 필요로 하는 명령 어드레스와 같거나 또는 어드레스가 프로세서 코어가 필요로 하는 명령 어드레스보다 큰 명령을 컴파일링하는 것을 포함하는바, 따라서 어드레스가 프로세서 코어가 현재 필요로 하는 명령 어드레스와 같거나 큰 명령에서 점프 명령이 존재하는지 여부를 결정한다. 각 명령을 프리컴파일링하는 과정은 병렬 컴파일링 방식을 적용할 수 있다. 각 프로세서 코어에 2개의 버퍼를 설치하는 동시에, 2개의 버퍼 각각에 레지스터를 할당하여 각 버퍼에 캐싱되는 명령의 어드레스를 기록한다. 명령 프리컴파일링을 통해 타겟 버퍼 내의 점프 명령의 분기 명령을 결정한 후, 타겟 버퍼의 레지스터에서 명령 어드레스 매칭을 실행하여 당해 분기 명령이 타겟 버퍼에 캐싱되어 있는지 여부를 결정할 수 있다.
프로세서 코어가 이에 대응되는 타겟 버퍼로부터 필요한 명령을 획득하기 전에 타겟 버퍼 내의 명령을 프리컴파일링함으로써 필요한 명령을 실행하기 전에, 적어도 당해 필요한 명령을 포함하는 복수의 명령이 프리컴파일링되어 타겟 버퍼에 캐싱되지 않은 분기 명령이 사전에 후보 버퍼에 캐싱되도록 할 수 있는바, 분기 명령을 획득하는 대기 시간을 단축시키고 명령 페치의 시간 지연을 감소시킨다. 또한, 명령을 프리페치하여 타겟 버퍼 외의 다른 버퍼에 캐싱함으로써 타겟 버퍼 내의 실행되지 않은 명령이 오버레이되는 것을 회피할 수 있고 나아가 캐싱되는 명령의 오버레이가 프로세서 작동에 주는 영향을 감소시킬 수 있다.
S102, 프리컴파일링 결과에 따라 타겟 버퍼에 점프 명령이 존재하고 점프 명령의 분기 명령이 타겟 버퍼에 캐싱되지 않는다고 결정되는 경우, 캐싱되지 않은 분기 명령을 명령 고속 캐싱 영역으로부터 프로세서 코어에 대응되는 후보 버퍼로 프리페치하여 프로세서 코어가 후보 버퍼로부터 분기 명령을 획득하기를 대기한다.
구체적으로, 획득되지 않았거나 실행되지 않은 점프 명령에 대응되는 분기 명령에서 타겟 버퍼에 캐싱되지 않은 명령을 한단계 위 레벨의 명령 고속 캐싱 영역으로부터 사전에 획득하여 후보 버퍼에 캐싱한다. 예시적으로, 타겟 버퍼와 후보 버퍼는 각각 buffer0와 buffer1로 표시되고, 타겟 버퍼(buffer0)에는 명령 어드레스가 1-16인 도합 16개의 명령이 캐싱되고, 프로세서 코어가 타겟 버퍼(buffer0)로부터 어드레스가 9인 필요한 명령을 획득하기 전에, 명령 프리컴파일링을 통해, 어드레스가 11, 13, 15인 명령이 점프 명령임을 결정하고, 어드레스가 11인 점프 명령에 대응되는 분기 명령의 어드레스는 14이고, 어드레스가 13인 점프 명령에 대응되는 분기 명령의 어드레스는 20이고, 어드레스가 15인 점프 명령에 대응되는 분기 명령의 어드레스는 16이다. 어드레스 매칭을 통해, 어드레스가 20인 분기 명령이 타겟 버퍼(buffer0)에 캐싱되지 않았음을 결정할 경우, 명령 프리페치 방식을 사용하여, 어드레스가 20인 분기 명령을 후보 버퍼(buffer1)에 사전 캐싱함으로써 프로세서 코어가 어드레스가 13인 점프 명령을 실행한 후, 명령 페치 대상 버퍼를 타겟 버퍼(buffer0)에서 후보 버퍼(buffer1)로 바꾸고 후보 버퍼(buffer1)로부터 어드레스가 20인 분기 명령을 획득하도록 하고, 버퍼가 바뀐 후, 후보 버퍼(buffer1)가 새로운 타겟 버퍼에 해당되고 타겟 버퍼(buffer0)는 새로운 후보 버퍼에 해당되는바, 즉, 본 실시예에서, 타겟 버퍼와 후보 버퍼는 명령을 프리페치하는 과정에서 교대로 재사용된다.
선택적으로, 프로세서 코어가 후보 버퍼로부터 분기 명령을 획득할 때, 현재의 명령 페치 대상 버퍼는 타겟 버퍼에서 후보 버퍼로 바뀌고; 상응하게, 본 실시예의 방법은, 프로세서 코어가 후보 버퍼로부터 분기 명령을 획득하기 전에, 후보 버퍼 내의 명령을 프리컴파일링하여 후보 버퍼에 캐싱되지 않은 분기 명령을 결정하는 단계를 더 포함한다. 즉 버퍼가 바뀐 후, 바뀌기 전의 후보 버퍼가 새로운 타겟 버퍼로 변하고 후보 버퍼에서 상술한 조작S101-S102이 반복되어 실행됨으로써 분기 명령의 프리페치가 다시 구현된다. 프로세서 코어의 명령 페치 조작이 부단히 진행됨에 따라, 명령 점프가 존재하는 경우, 타겟 버퍼와 후보 버퍼의 역할은 동적으로 바뀌고, 2개 버퍼 사이에서 명령의 프리컴파일링과 분기 명령의 프리페치 조작이 순환적으로 진행된다.
선택적으로, 캐싱되지 않은 분기 명령을 명령 고속 캐싱 영역으로부터 프로세서 코어에 대응되는 후보 버퍼로 프리페치하는 단계는,
캐싱되지 않은 분기 명령에서 가장 작은 명령 어드레스를 첫 번째 어드레스로 하고 명령 고속 캐싱 영역으로부터 미리 설정된 수량의 명령을 프리페치하여 프로세서 코어에 대응되는 후보 버퍼에 캐싱하는 단계를 포함하고, 캐싱되지 않은 분기 명령은 미리 설정된 수량의 명령에 포함된다.
계속하여 상술한 예시를 예로 들면, 어드레스가 각각 14, 20, 16인 3개 분기 명령에서 어드레스 20을 첫 번째 어드레스로 하고 명령 고속 캐싱 영역으로부터 어드레스가 20-35인 도합 16개의 명령을 프리페치하여 후보 버퍼에 캐싱한다. 캐싱되지 않은 분기 명령에서 가장 작은 명령 어드레스를 첫 번째 어드레스로 함으로써 전에 이미 실행된 분기 명령이 프리페치되도록 보장하면서 가급적으로 더 많은 수요 명령을 프리페치할 수 있다. 매 회 프리페치되는 명령 수량은 당해 명령 고속 캐싱 영역의 판독 대역폭과 관계되는바, 예를 들면, 매 회 프리페치되는 명령 수량은 당해 명령 고속 캐싱 영역의 하나의 판독 대역폭에 따라 결정될 수 있다. 명령 고속 캐싱 영역 내의 명령은 명령 어드레스의 크기 순으로 저장되고 여기서 명령을 프리페치하는 경우, 명령을 페치하는 첫 번째 어드레스 순서에 따라 프리페치한다.
부연하면, 본 실시예에서, 후보 버퍼에 분기 명령이 저장되기 전에, 후보 버퍼에 실행되지 않은 명령이 존재하는 경우, 통상적으로 당해 실행되지 않은 명령을 쓸모없는 명령으로 하고 당해 실행되지 않은 명령에 오버레이할 수 있는바, 이는 프로세서의 정상적인 작동에 영향주지 않는다.
상술한 기술안에 기초하여, 선택적으로, 캐싱되지 않은 분기 명령을 명령 고속 캐싱 영역으로부터 프로세서 코어에 대응되는 후보 버퍼로 프리페치하는 단계는,
캐싱되지 않은 분기 명령이 프로세서 코어에 대응되는 후보 버퍼에 캐싱되었는지 여부를 결정하는 단계; 및
캐싱되지 않은 분기 명령이 상기 프로세서 코어에 대응되는 후보 버퍼에 캐싱되지 않았을 경우, 캐싱되지 않은 분기 명령을 명령 고속 캐싱 영역으로부터 후보 버퍼로 프리페치하는 단계; 를 포함한다.
타겟 버퍼와 후보 버퍼가 교대로 사용되므로, 타겟 버퍼로부터 명령을 획득하기 전에, 후보 버퍼에는 이미 일부 명령이 캐싱되어 있을 수도 있고, 따라서, 타겟 버퍼 내의 명령을 프리컴파일링하여 점프 명령 및 대응되는 분기 명령을 결정하고 타겟 버퍼에 캐싱되지 않은 분기 명령을 결정한 후, 나아가 후보 버퍼의 레지스터에서 어드레스 매칭을 실행하여 전술한 캐싱되지 않은 분기 명령이 후보 버퍼에 캐싱되어 있는지 여부를 결정하고, 후보 버퍼에 캐싱되어 있다고 결정되는 경우, 현재에 명령 프리페치 조작을 실행할 필요 없이 계속하여 타겟 버퍼로부터 명령을 획득하고; 후보 버퍼에 캐싱되어 있지 않다고 결정되는 경우, 명령 프리페치 조작을 실행하여 당해 캐싱되지 않은 분기 명령을 명령 고속 캐싱 영역으로부터 후보 버퍼로 프리페치한다.
또한, 타겟 버퍼 내의 명령을 프리컴파일링하여 타겟 버퍼에 점프 명령이 존재하지 않는다고 결정되는 경우, 타겟 버퍼에서 명령 어드레스가 제일 큰 명령을 기준으로 명령 고속 캐싱 영역으로부터 미리 설정된 수량의 명령을 순차로 프리페치하여 후보 버퍼에 캐싱한다. 계속하여 상술한 예시를 예로 들면, 타겟 버퍼(buffer0)에는 명령 어드레스가 1-16인 도합 16개의 명령이 캐싱되고, 명령 프리컴파일링을 통해 타겟 버퍼(buffer0)에 점프 명령이 존재하지 않는다고 결정되면, 명령 고속 캐싱 영역으로부터 명령 어드레스가 17-32인 도합 16개의 명령을 순차로 페치하여 후보 버퍼에 캐싱한다.
본 실시예의 기술안에 따르면, 프로세서 코어가 이에 대응되는 타겟 버퍼로부터 필요한 명령을 획득하기 전에, 타겟 버퍼 내의 명령을 프리컴파일링하여 점프 명령 및 대응되는 분기 명령을 결정하고, 타겟 버퍼에 캐싱되지 않은 분기 명령을 후보 버퍼에 사전 캐싱하여 프로세서 코어에 의해 획득되기를 대기시킴으로써, 종래의 명령 프리페치 방안에 존재하는 분기 명령의 획득이 지연되는 문제를 해결하고 2개 버퍼를 동적으로 이용함으로써 프로세서의 가공 제조 비용을 증가시키지 않으면서 각 프로세서 코어의 명령 페치 효율을 향상시키고 명령 페치의 시간 지연을 감소시키고 캐싱된 명령의 오버레이가 프로세서 작동에 주는 영향을 감소시키고 나아가 프로세서의 성능을 향상시킨다.
도2는 본 출원의 실시예에 따라 개시되는 다른 명령을 프리페치하는 방법의 흐름도이고, 상술한 기술안에 기초하여 나아가 더 최적화되고 확장된 것으로, 상술한 각 선택적인 실시 방식과 결합될 수 있다. 도2에 도시한 바와 같이, 본 실시예의 방법은 하기 단계를 포함할 수 있다.
S201, 프로세서 코어가 이에 대응되는 타겟 버퍼로부터 필요한 명령을 획득하기 전에, 분기 점프 예측 알고리즘을 이용하여 타겟 버퍼 내의 명령을 프리컴파일링한다.
S202, 예측 실패 메세지가 수신되는 경우, 프로세서 코어가 타겟 점프 명령을 실행하는 과정에 타겟 버퍼의 레지스터와 후보 버퍼의 레지스터에서 명령 어드레스 매칭을 순차로 실행하여 타겟 점프 명령의 분기 명령이 위치하는 버퍼를 결정한다.
본 실시예에서, 명령 프리컴파일링을 통해 결정되는 점프 명령은 필연적 점프 명령과 예측 점프 명령을 포함하는바, 필연적 점프 명령은 당해 명령이 실행된 후 반드시 명령 점프가 진행되는 명령을 가리키고, 예측 점프 명령은 당해 명령이 실행된 후 일정한 확률로 명령 점프가 진행되거나 명령 점프가 진행되지 않을 수도 있는 것을 가리킨다.
타겟 명령은 분기 점프 예측 알고리즘을 이용한 분기 명령 예측이 실패한 것을 가리키며, 실제로는 점프 명령 유형의 명령에 속한다. 현재의 프로세서 코어의 명령 페치 대상 버퍼는 타겟 버퍼인바, 따라서, 타겟 점프 명령을 실행하는 과정에, 우선 선택적으로, 타겟 버퍼에 당해 타겟 점프 명령의 분기 명령이 캐싱되었는지 여부를 결정하고, Yes인 경우, 타겟 버퍼로부터 필요한 분기 명령을 직접 획득할 수 있고, No인 경우, 계속하여 후보 버퍼에서 결정을 진행하고; 타겟 점프 명령의 분기 명령이 후보 버퍼에 캐싱되어 있다고 결정되는 경우, 명령 페치 대상 버퍼를 타겟 버퍼에서 후보 버퍼로 바꾸는바, 즉 후보 버퍼가 새로운 타겟 버퍼로 변하고, 이와 동시에, 후보 버퍼로부터 필요한 명령을 획득하기 전에, 후보 버퍼 내의 명령을 프리컴파일링하고 분기 명령 프리페치 조작을 한다.
본 실시예에서는 동시에 2개 버퍼를 사용하여 명령 프리페치를 실행하므로, 2개 버퍼가 교대로 사용됨에 따라, 명령을 프리페치하는 과정에 가급적으로 많은 명령을 사전 캐싱하는 것을 구현할 수 있고, 분기 명령 예측이 실패하는 경우에도 분기 명령 프리페치를 대부분 오버레이할 수 있으며, 분기 명령을 재페치하는 대기 시간이 단축된다.
더 나아가, 본 실시예의 방법은, 명령 어드레스 매칭에 따라, 타겟 점프 명령의 분기 명령이 타겟 버퍼와 후보 버퍼에 모두 존재하지 않는다고 결정되는 경우, 즉, 타겟 버퍼와 후보 버퍼에 모두 당해 분기 명령이 캐싱되어 있지 않은 경우, 타겟 점프 명령의 분기 명령의 어드레스를 첫 번째 어드레스로 하고 명령 고속 캐싱 영역으로부터 미리 설정된 수량의 명령을 프리페치하여 후보 버퍼에 캐싱하는 단계를 더 포함하는바, 즉 후보 버퍼에 이미 캐싱되어 있는 명령을 교체한다. 미리 설정된 수량으로 명령을 페치하는 것은 적응적으로 설정할 수 있다.
또한, 2개 버퍼의 레지스터에서 어드레스 매칭을 실행하여 프로세서 코어가 현재 필요로 하는 명령이 타겟 버퍼에 저장되지도 않고 후보 버퍼에 캐싱되지도 않았음이 결정되는 경우, 명령을 프리페치하는 장치는 프로세서 코어가 필요로 하는 명령에 따라 명령 고속 캐싱 영역에 하나의 명령 페치 요청을 송신하여 명령 고속 캐싱 영역으로부터 필요한 명령을 읽어 후보 버퍼에 캐싱하도록 할 수 있다. 이전 명령 페치 요청에 따라 명령을 페치하는 과정 - 명령 페치 요청을 송신하여서부터 필요한 명령을 가져오는 과정을 포함함 -에, 명령을 프리페치하는 장치가 다른 명령 페치 요청을 생성하였다면, 이후 생성된 명령 페치 요청이 지니는 명령 어드레스가 이전 명령 페치 요청이 지니는 명령 어드레스와 일치하는지 여부를 판단하고, 일치한다면, 이후 명령 페치 요청을 중복되게 송신하지 않아도 되므로 명령 페치 요청이 중복되게 송신되는 것이 회피되고 명령 페치 효율이 향상된다.
본 실시예의 기술안에 따르면, 동시에 2개 버퍼를 사용하여 명령 프리페치를 실행하므로, 2개 버퍼가 교대로 사용됨에 따라, 명령을 프리페치하는 과정에 가급적으로 많은 명령을 사전 캐싱하는 것을 구현할 수 있고, 분기 명령 예측이 실패하는 경우에도 분기 명령 프리페치를 대부분 오버레이할 수 있으며, 타겟 버퍼의 레지스터와 후보 버퍼의 레지스터에서 명령 어드레스 매칭을 순차로 실행하여 타겟 점프 명령의 분기 명령이 위치하는 버퍼를 결정하도록 할 수 있고 당해 분기 명령을 재페치하는 대기 시간이 단축되며 명령 페치 효율이 향상된다.
도3은 본 출원의 실시예에 따라 개시되는 명령을 프리페치하는 장치의 개략적인 구조도이고, 본 실시예는 명령 점프가 존재하는 경우에 프로세서의 각 코어의 명령 판독 지연을 감소시키는 데 적용될 수 있다. 본 실시예의 장치는 소프트웨어 및/또는 하드웨어 방식을 사용하여 구현할 수 있고 컴퓨팅 능력을 가지는 임의의 전자 기기에 집적될 수 있으며, 당해 전자 기기의 프로세서는 적어도 하나의 코어를 포함한다.
도3에 도시한 바와 같이, 본 실시예에서 개시하는 명령을 프리페치하는 장치(300)는 명령 프리컴파일링 모듈(301)과 명령 프리페치 모듈(302)을 포함한다.
명령 프리컴파일링 모듈(301)은, 프로세서 코어가 이에 대응되는 타겟 버퍼로부터 필요한 명령을 획득하기 전에, 타겟 버퍼 내의 명령을 프리컴파일링한다.
명령 프리페치 모듈(302)은, 프리컴파일링 결과에 따라 타겟 버퍼에 점프 명령이 존재하고 점프 명령의 분기 명령이 타겟 버퍼에 캐싱되지 않는다고 결정되는 경우, 캐싱되지 않은 분기 명령을 명령 고속 캐싱 영역으로부터 프로세서 코어에 대응되는 후보 버퍼로 프리페치하여 프로세서 코어가 후보 버퍼로부터 분기 명령을 획득하기를 대기하는바,
타겟 버퍼와 후보 버퍼는 명령을 프리페치하는 과정에서 교대로 재사용된다.
선택적으로, 명령 프리페치 모듈(302)은 구체적으로,
프리컴파일링 결과에 따라 타겟 버퍼에 점프 명령이 존재하고 점프 명령의 분기 명령이 타겟 버퍼에 캐싱되지 않는다고 결정되는 경우, 캐싱되지 않은 분기 명령에서 가장 작은 명령 어드레스를 첫 번째 어드레스로 하고 명령 고속 캐싱 영역으로부터 미리 설정된 수량의 명령을 프리페치하여 프로세서 코어에 대응되는 후보 버퍼에 캐싱하고, 캐싱되지 않은 분기 명령은 미리 설정된 수량의 명령에 포함된다.
선택적으로, 명령 프리페치 모듈(302)은 구체적으로
프리컴파일링 결과에 따라 타겟 버퍼에 점프 명령이 존재하고 점프 명령의 분기 명령이 타겟 버퍼에 캐싱되지 않는다고 결정되는 경우, 캐싱되지 않은 분기 명령이 프로세서 코어에 대응되는 후보 버퍼에 캐싱되었는지 여부를 결정한다.
캐싱되지 않은 분기 명령이 상기 프로세서 코어에 대응되는 후보 버퍼에 캐싱되지 않았을 경우, 캐싱되지 않은 분기 명령을 명령 고속 캐싱 영역으로부터 후보 버퍼로 프리페치한다.
선택적으로, 프로세서 코어가 후보 버퍼로부터 분기 명령을 획득할 때, 현재의 명령 페치 대상 버퍼는 타겟 버퍼에서 후보 버퍼로 바뀌고;
상응하게, 명령 프리컴파일링 모듈(301)은 또한,
프로세서 코어가 후보 버퍼로부터 분기 명령을 획득하기 전에, 후보 버퍼 내의 명령을 프리컴파일링하여 후보 버퍼에 캐싱되지 않은 분기 명령을 결정한다.
선택적으로, 명령 프리컴파일링 모듈(301)은 구체적으로,
분기 점프 예측 알고리즘을 이용하여 타겟 버퍼 내의 명령을 프리컴파일링한다.
선택적으로, 본 실시예의 장치는,
명령 프리컴파일링 모듈(301)이 타겟 버퍼 내의 명령에 대한 프리컴파일링 조작을 실행한 후, 예측 실패 메세지가 수신되는 경우, 프로세서 코어가 타겟 점프 명령을 실행하는 과정에 타겟 버퍼의 레지스터와 후보 버퍼의 레지스터에서 명령 어드레스 매칭을 순차로 실행하여 타겟 점프 명령의 분기 명령이 위치하는 버퍼를 결정하는 버퍼 결정 모듈을 더 포함한다.
선택적으로, 명령 프리페치 모듈(302)은 또한,
명령 어드레스 매칭에 따라 타겟 점프 명령의 분기 명령이 타겟 버퍼와 후보 버퍼에 모두 존재하지 않는다고 결정되는 경우, 타겟 점프 명령의 분기 명령의 어드레스를 첫 번째 어드레스로 하고 명령 고속 캐싱 영역으로부터 미리 설정된 수량의 명령을 프리페치하여 후보 버퍼에 캐싱한다.
본 출원의 실시예에서 개시하는 명령을 프리페치하는 장치(300)는 본 출원의 실시예에서 개시하는 명령을 프리페치하는 방법을 실행할 수 있고, 방법을 실행하는 데 대응되는 기능 모듈과 유익한 효과를 가진다. 본 실시예에서 상세히 설명되지 않은 내용은 본 출원의 임의의 방법 실시예의 설명을 참조할 수 있다.
본 출원의 실시예에 따르면, 본 출원은 전자 기기와 판독 가능 저장 매체를 더 제공한다.
도4에 도시한 바와 같이, 도4는 본 출원의 실시예의 명령을 프리페치하는 방법을 구현하는 전자 기기의 블록도이다. 전자 기기는 다양한 형식의 디지털 컴퓨터, 예를 들어 랩톱 컴퓨터, 데스크톱 컴퓨터, 워크벤치, 개인용 디지털 보조기, 서버, 블레이드 서버, 대형 컴퓨터 및 기타의 적합한 컴퓨터를 가리키고자 하는 것이다. 전자 기기는 다양한 형식의 이동 장치, 예를 들어 개인용 디지털 보조기, 셀룰러 폰, 스마트폰, 웨어러블 기기 및 기타의 이와 유사한 컴퓨팅 기기를 가리킬 수도 있다. 본 명세서에서 제시하는 부품, 이들의 연결과 관계 및 이들의 기능은 단지 예시일 뿐, 본 명세서에서 설명한 및/또는 요구하는 본 출원의 구현을 한정하고자 하는 것이 아니다.
도4에 도시한 바와 같이, 당해 전자 기기는 하나 또는 복수의 프로세서(401), 메모리(402) 및 각 부품을 연결하는 인터페이스를 포함하는바, 고속 인터페이스와 저속 인터페이스가 포함된다. 각 부품은 부동한 버스를 이용하여 서로 연결되고 공용 메인기판에 장착되거나 또는 필요에 따라 기타의 방식으로 장착될 수 있다. 프로세서는 전자 기기 내에서 실행되는 명령을 처리할 수 있는바, 메모리 내에 또는 메모리 위에 저장되어 외부 입력/출력 장치(예를 들어 인터페이스에 커플링되는 디스플레이 기기)에 그래픽 유저 인터페이스(Graphical User Interface, GUI)의 그래픽 정보를 표시하는 명령이 포함된다. 기타의 실시 방식에서, 필요하다면 복수의 프로세서 및/또는 복수의 버스를 복수의 메모리와 함께 사용할 수 있다. 마찬가지로, 복수의 전자 기기를 연결할 수 있는바, 각 기기는 일부 필요한 동작을 제공한다. 예를 들어 서버 어레이, 하나의 그룹의 블레이드 서버 또는 멀티프로세서 시스템일 수 있는바, 도4는 하나의 프로세서(401)를 예로 든다.
메모리(402)가 바로 본 출원의 실시예에 의해 제공되는 비일시적 컴퓨터 판독 가능 저장 매체이다. 상기 메모리에는 적어도 하나의 프로세서에 의해 실행 가능한 명령이 저장되어 있는바, 이는 상기 적어도 하나의 프로세서에 의해 본 출원의 실시예에 의해 제공되는 명령을 프리페치하는 방법이 실행되도록 한다. 본 출원의 실시예의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨터 명령을 저장하고, 당해 컴퓨터 명령이 컴퓨터에 의해 실행될 경우, 본 출원의 실시예에 의해 제공되는 명령을 프리페치하는 방법이 실행된다.
메모리(402)는 비일시적 컴퓨터 판독 가능 저장 매체로서, 비일시적 소프트웨어 프로그램, 비일시적 컴퓨터 실행 가능 프로그램 및 모듈, 예를 들면 본 출원의 실시예의 명령을 프리페치하는 방법에 대응되는 프로그램 명령/모듈을 저장할 수 있는바, 예를 들면 도3에 도시한명령 프리컴파일링 모듈(301)과 명령 프리페치 모듈(302)이다. 프로세서(401)는 메모리(402)에 저장되는 비일시적 소프트웨어 프로그램, 명령 및 모듈을 실행함으로써 서버의 다양한 기능 응용 및 데이터 처리를 실행하는바, 즉 상술한 방법 실시예의 명령을 프리페치하는 방법을 구현한다.
메모리(402)는 프로그램 저장 영역과 데이터 저장 영역을 포함할 수 있는바, 여기서, 프로그램 저장 영역은 운영 체제, 적어도 하나의 기능에 있어서 필요한 응용 프로그램을 저장할 수 있고, 데이터 저장 영역은 명령을 프리페치하는 방법에 따른 전자 기기의 사용에 따라 구축되는 데이터 등을 저장할 수 있다. 이 외에도 메모리(402)는 고속 랜덤 액세스 메모리를 포함할 수도 있고, 비일시적 메모리, 예를 들어 적어도 하나의 자기 디스크 저장 장치, 플래시 메모리 장치 또는 기타의 비일시적 고체 상태 저장 장치를 더 포함할 수도 있다. 일부 실시예에서, 메모리(402)는 선택적으로 프로세서(401) 대비 원격 설치되는 메모리를 포함할 수 있고, 이러한 원격 메모리는 네트워크를 통해 본 실시예의 명령을 프리페치하는 방법을 구현하는 전자 기기에 연결될 수 있다. 상술한 네트워크의 실시예는 인터넷, 기업 내부 네트워크, 근거리 통신망, 이동 통신 네트워크 및 이들의 조합을 포함하나 이에 한정되지 않는다.
본 실시예의 명령을 프리페치하는 방법을 구현하는 전자 기기는 입력 장치(403)와 출력 장치(404)를 더 포함할 수 있다. 프로세서(401), 메모리(402), 입력 장치(403) 및 출력 장치(404)는 버스 또는 기타의 방식으로 연결될 수 있는바, 도4에서는 버스에 의한 연결을 예로 든다.
입력 장치(403)는 입력되는 숫자 또는 캐릭터 정보를 수신하고, 본 실시예의 명령을 프리페치하는 방법을 구현하는 전자 기기의 사용자 설정 및 기능 제어에 관련되는 키 신호 입력을 발생시킬 수 있는바, 예를 들면 터치 스크린, 숫자 키패드, 마우스, 트랙패드, 터치패드, 포인팅 스틱, 하나 또는 복수의 마우스 버튼, 트랙볼, 조종 스틱 등 입력 장치가 있다. 출력 장치(404)는 디스플레이 기기, 보조 조명장치, 예를 들어 발광 다이오드(Light Emitting Diode, LED; 및 촉각 피드백 장치, 예를 들어 진동 모터; 등을 포함할 수 있다. 당해 디스플레이 기기는 액정 디스플레이(Liquid Crystal Display, LCD), LED 디스플레이 및 플라즈마 디스플레이를 포함할 수 있으나, 이에 한정되지 않는다. 일부 실시 방식에서 디스플레이 기기는 터치 스크린일 수 있다.
본 출원의 실시예에 따르면, 컴퓨터 판독 가능 매체에 저장되어 있는 컴퓨터 프로그램을 더 제공한다. 당해 컴퓨터 프로그램 중의 명령이 실행될 경우, 상기 명령을 프리페치하는 방법이 실행된다.
여기서 설명하는 시스템과 기술의 다양한 실시 방식은 디지털 전자 회로 시스템, 집적 회로 시스템, 주문형 집적회로(Application Specific Integrated Circuit, ASIC), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합에서 구현될 수 있다. 이러한 다양한 실시 방식은 하나 또는 복수의 컴퓨터 프로그램에서 실시되는 것을 포함할 수 있고, 당해 하나 또는 복수의 컴퓨터 프로그램은 적어도 하나의 프로그램 가능 프로세서를 포함하는 프로그램 가능 시스템에서 실행되거나 및/또는 해석될 수 있고, 당해 프로그램 가능 프로세서는 전용 또는 범용 프로그램 가능 프로세서일 수 있고, 저장 시스템, 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치로부터 데이터와 명령을 수신하고, 데이터와 명령을 당해 저장 시스템, 당해 적어도 하나의 입력 장치 및 당해 적어도 하나의 출력 장치로 전송할 수 있다.
이러한 컴퓨팅 프로그램 - 프로그램, 소프트웨어, 소프트웨어 애플리케이션 또는 코드로 지칭되기도 함 - 은 프로그램 가능 프로세서의 기계 명령을 포함하며, 고급 절차 및/또는 객체지향 프로그래밍 언어, 및/또는 어셈블리어/기계어를 이용하여, 이러한 컴퓨팅 프로그램을 실시할 수 있다. 본 명세서에서 사용한 바와 같이, 용어 '기계 판독 가능 매체'와 '컴퓨터 판독 가능 매체'는 기계 명령 및/또는 데이터를 프로그램 가능 프로세서에 제공하기 위한 임의의 컴퓨터 프로그램 제품, 기기, 및/또는 장치 - 예를 들어, 자기 디스크, 광 디스크, 메모리, 프로그램 가능 논리 장치(Programmable Logic Device, PLD) - 를 가리키는바, 이는 기계 판독 가능 신호로서의 기계 명령을 수신하는 기계 판독 가능 매체를 포함한다. 용어 '기계 판독 가능 신호'는 기계 명령 및/또는 데이터를 프로그램 가능 프로세서에 제공하기 위한 임의의 신호를 가리킨다.
사용자와의 인터랙션을 제공하기 위해, 여기서 설명하는 시스템과 기술을 컴퓨터에서 실시할 수 있는바, 당해 컴퓨터는 사용자한테 정보를 표시하기 위한 표시 장치, 예를 들어, 음극선관(Cathode Ray Tube, CRT) 또는 LCD 모니터; 및 키보드와 포인팅 장치, 예를 들어, 마우스 또는 트랙볼;을 포함하고, 사용자는 당해 키보드와 당해 포인팅 장치를 통해 입력을 컴퓨터에 제공할 수 있다. 기타 종류의 장치도 사용자와의 인터랙션을 제공하는 데 사용될 수 있는바, 예를 들어, 사용자한테 제공되는 피드백은 임의 형식의 감각 피드백 - 예를 들어 시각 피드백, 청각 피드백 또는 촉각 피드백 - 일 수 있고, 임의 형식 - 소리 입력, 음성 입력 또는 촉각 입력을 포함함 - 으로 사용자로부터의 입력이 수신될 수 있다.
여기서 설명하는 시스템과 기술을 백그라운드 부품을 포함하는 컴퓨팅 시스템 - 예를 들면 데이터 서버로서 - , 미들웨어를 포함하는 컴퓨팅 시스템 - 예를 들면 애플리케이션 서버 - , 프런트 엔드 부품을 포함하는 컴퓨팅 시스템 - 예를 들면 그래픽 사용자 인터페이스 또는 네트워크 브라우저를 구비하는 사용자 컴퓨터일 수 있는바, 사용자는 당해 그래픽 사용자 인터페이스 또는 당해 네트워크 브라우저를 통하여, 여기서 설명하는 시스템 및 기술의 실시 방식과 인터랙션할 수 있음 - 또는 이러한 백그라운드 부품, 미들웨어 또는 프런트 엔드 부품의 임의 조합을 포함하는 컴퓨팅 시스템에서 구현할 수 있다. 임의 형식 또는 매체의 디지털 데이터 통신 - 예를 들면 통신 네트워크 - 으로 시스템의 부품을 서로 연결시킬 수 있다. 통신 네트워크의 예시는 근거리 통신망(Local Area Network, LAN), 광대역 통신망(Wide Area Network, WAN) 및 인터넷을 포함한다.
컴퓨터 시스템은 클라이언트와 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로는 서로 멀리 떨어져 있고, 통상적으로 통신 네트워크를 통해 인터랙션한다. 상응한 컴퓨터에서 실행되고 서로 클라이언트 - 서버 관계를 이루는 컴퓨터 프로그램을 통해 클라이언트와 서버의 관계가 발생된다.
본 실시예의 기술안에 따르면, 프로세서 코어가 이에 대응되는 타겟 버퍼로부터 필요한 명령을 획득하기 전에, 타겟 버퍼 내의 명령을 프리컴파일링하여 점프 명령 및 대응되는 분기 명령을 결정하고 타겟 버퍼에 캐싱되지 않은 분기 명령을 후보 버퍼에 사전 캐싱하여 프로세서 코어에 의해 획득되기를 대기시킴으로써, 종래의 명령 프리페치 방안에 존재하는 분기 명령의 획득이 지연되는 문제를 해결하고, 2개 버퍼를 동적으로 이용함으로써 프로세서의 가공 제조 비용을 증가시키지 않으면서 각 프로세서 코어의 명령 페치 효율을 향상시키고 명령 페치의 시간 지연을 감소시키며 캐싱된 명령의 오버레이가 프로세서 작동에 주는 영향을 감소시킨다.
위에서 제시한 다양한 형식의 흐름을 적용하여 단계를 재정렬, 증가 또는 삭제할 수 있음을 이해하여야 한다. 예를 들어, 본 출원에 기재된 각 단계는 병행으로 실행될 수도 있고, 순차로 실행될 수도 있고, 부동한 순서로 실행될 수도 있는바, 본 출원에서 개시하는 기술안에 대한 기대 효과를 구현할 수만 있으면 되며, 본 명세서는 이에 대해 한정하지 않는다.
상술한 구체적인 실시 방식은 본 출원의 보호 범위를 한정하지 않는다. 설계 요구와 기타 요소에 따른 다양한 수정, 조합, 서브 조합 및 치환이 가능하다는 점은 당업자에 있어서 자명할 것이다. 본 출원의 사상과 원칙 이내에 있는 임의의 수정, 등가적 치환 및 개량 등은 모두 본 출원의 보호 범위에 포함되어야 한다.

Claims (11)

  1. 명령을 프리페치하는 방법에 있어서,
    프로세서 코어가 이에 대응되는 타겟 버퍼로부터 필요한 명령을 획득하기 전에, 명령 프리컴파일링 모듈에서 상기 타겟 버퍼 내의 명령을 프리컴파일링하는 단계; 및
    명령 프리페치 모듈에서 프리컴파일링 결과에 따라 상기 타겟 버퍼에 점프 명령이 존재하고 상기 점프 명령의 분기 명령이 상기 타겟 버퍼에 캐싱되지 않는다고 결정되는 경우, 캐싱되지 않은 분기 명령을 명령 고속 캐싱 영역으로부터 상기 프로세서 코어에 대응되는 후보 버퍼로 프리페치하여 상기 프로세서 코어가 상기 후보 버퍼로부터 상기 분기 명령을 획득하기를 대기하는 단계; 를 포함하고,
    상기 타겟 버퍼와 상기 후보 버퍼는 명령을 프리페치하는 과정에서 교대로 재사용되고,
    명령 프리컴파일링 모듈에서 상기 타겟 버퍼 내의 명령을 프리컴파일링하는 단계는,
    명령 프리컴파일링 모듈에서 분기 점프 예측 알고리즘을 이용하여 상기 타겟 버퍼 내의 명령을 프리컴파일링하는 단계를 포함하고,
    명령 프리컴파일링 모듈에서 상기 타겟 버퍼 내의 명령을 프리컴파일링한 후, 상기 방법은,
    버퍼 결정 모듈에 예측 실패 메세지가 수신되는 경우, 상기 프로세서 코어가 타겟 점프 명령을 실행하는 과정에 순차로 상기 타겟 버퍼의 레지스터와 상기 후보 버퍼의 레지스터에서 명령 어드레스 매칭을 실행하여 상기 타겟 점프 명령의 분기 명령이 위치하는 버퍼를 결정하는 단계를 더 포함하는,
    것을 특징으로 하는 명령을 프리페치하는 방법.
  2. 제1항에 있어서,
    명령 프리페치 모듈에서 상기 캐싱되지 않은 분기 명령을 명령 고속 캐싱 영역으로부터 상기 프로세서 코어에 대응되는 후보 버퍼로 프리페치하는 단계는,
    명령 프리페치 모듈에서 상기 캐싱되지 않은 분기 명령에서 가장 작은 명령 어드레스를 첫 번째 어드레스로 하고 상기 명령 고속 캐싱 영역으로부터 미리 설정된 수량의 명령을 프리페치하여 상기 프로세서 코어에 대응되는 후보 버퍼에 캐싱하는 단계를 포함하고,
    상기 캐싱되지 않은 분기 명령은 상기 미리 설정된 수량의 명령에 포함되는,
    것을 특징으로 하는 명령을 프리페치하는 방법.
  3. 제1항에 있어서,
    명령 프리페치 모듈에서 상기 캐싱되지 않은 분기 명령을 명령 고속 캐싱 영역으로부터 상기 프로세서 코어에 대응되는 후보 버퍼로 프리페치하는 단계는,
    명령 프리페치 모듈에서 상기 캐싱되지 않은 분기 명령이 상기 프로세서 코어에 대응되는 후보 버퍼에 캐싱되었는지 여부를 결정하는 단계; 및
    상기 캐싱되지 않은 분기 명령이 상기 프로세서 코어에 대응되는 후보 버퍼에 캐싱되지 않았을 경우, 상기 캐싱되지 않은 분기 명령을 상기 명령 고속 캐싱 영역으로부터 상기 후보 버퍼로 프리페치하는 단계; 를 포함하는,
    것을 특징으로 하는 명령을 프리페치하는 방법.
  4. 제1항에 있어서,
    명령 프리페치 모듈에서 상기 프로세서 코어가 상기 후보 버퍼로부터 상기 분기 명령을 획득할 때, 현재의 명령 페치 대상 버퍼는 상기 타겟 버퍼에서 상기 후보 버퍼로 바뀌고;
    상응하게, 상기 방법은,
    상기 프로세서 코어가 상기 후보 버퍼로부터 상기 분기 명령을 획득하기 전에, 명령 프리컴파일링 모듈에서 상기 후보 버퍼 내의 명령을 프리컴파일링하여 상기 후보 버퍼에 캐싱되지 않은 분기 명령을 결정하는 단계를 더 포함하는,
    것을 특징으로 하는 명령을 프리페치하는 방법.
  5. 제1항에 있어서,
    상기 방법은,
    명령 프리페치 모듈에서 상기 명령 어드레스 매칭에 따라 상기 타겟 점프 명령의 분기 명령이 상기 타겟 버퍼와 상기 후보 버퍼에 모두 존재하지 않는다고 결정되는 경우, 상기 타겟 점프 명령의 분기 명령의 어드레스를 첫 번째 어드레스로 하고, 상기 명령 고속 캐싱 영역으로부터 미리 설정된 수량의 명령을 프리페치하여 상기 후보 버퍼에 캐싱하는 단계를 더 포함하는,
    것을 특징으로 하는 명령을 프리페치하는 방법.
  6. 명령을 프리페치하는 장치에 있어서,
    프로세서 코어가 이에 대응되는 타겟 버퍼로부터 필요한 명령을 획득하기 전에, 상기 타겟 버퍼 내의 명령을 프리컴파일링하는 명령 프리컴파일링 모듈; 및
    프리컴파일링 결과에 따라 상기 타겟 버퍼에 점프 명령이 존재하고 상기 점프 명령의 분기 명령이 상기 타겟 버퍼에 캐싱되지 않는다고 결정되는 경우, 캐싱되지 않은 분기 명령을 명령 고속 캐싱 영역으로부터 상기 프로세서 코어에 대응되는 후보 버퍼로 프리페치하여 상기 프로세서 코어가 상기 후보 버퍼로부터 상기 분기 명령을 획득하기를 대기하는 명령 프리페치 모듈; 을 포함하고,
    상기 타겟 버퍼와 상기 후보 버퍼는 명령을 프리페치하는 과정에서 교대로 재사용되고,
    명령 프리컴파일링 모듈은 분기 점프 예측 알고리즘을 이용하여 상기 타겟 버퍼 내의 명령을 프리컴파일링하는데 사용되고;
    상기 장치는,
    명령 프리컴파일링 모듈에서 타겟 버퍼 내의 명령을 프리컴파일링 동작을 수행한 후, 예측 실패 메세지가 수신되는 경우, 상기 프로세서 코어가 타겟 점프 명령을 실행하는 과정에 순차로 상기 타겟 버퍼의 레지스터와 상기 후보 버퍼의 레지스터에서 명령 어드레스 매칭을 실행하여 상기 타겟 점프 명령의 분기 명령이 위치하는 버퍼를 결정하는데 사용되는 버퍼 결정 모듈; 을 더 포함하는,
    것을 특징으로 하는 명령을 프리페치하는 장치.
  7. 전자 기기에 있어서,
    적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서에 통신하도록 연결되는 메모리; 를 포함하고,
    상기 메모리에는 상기 적어도 하나의 프로세서에 의해 실행 가능한 명령이 저장되고, 상기 명령이 상기 적어도 하나의 프로세서에 의해 실행될 경우, 상기 적어도 하나의 프로세서가 제1항 내지 제5항 중 어느 한 항의 명령을 프리페치하는 방법을 실행하는,
    것을 특징으로 하는 전자 기기.
  8. 컴퓨터 명령이 저장되어 있는 비일시적 컴퓨터 판독 가능 저장 매체에 있어서,
    상기 컴퓨터 명령이 실행될 경우, 제1항 내지 제5항 중 어느 한 항의 명령을 프리페치하는 방법이 실행되는,
    것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  9. 컴퓨터 판독 가능 매체에 저장되어 있는 컴퓨터 프로그램에 있어서,
    상기 컴퓨터 프로그램 중의 명령이 실행될 경우, 제1항 내지 제5항 중 어느 한 항의 방법이 실행되는,
    것을 특징으로 하는 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램.
  10. 삭제
  11. 삭제
KR1020200099856A 2019-12-04 2020-08-10 명령을 프리페치하는 방법, 장치, 기기 및 매체 KR102382751B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201911225633.1A CN112905237A (zh) 2019-12-04 2019-12-04 指令预取方法、装置、设备和介质
CN201911225633.1 2019-12-04

Publications (2)

Publication Number Publication Date
KR20210070172A KR20210070172A (ko) 2021-06-14
KR102382751B1 true KR102382751B1 (ko) 2022-04-04

Family

ID=73698568

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200099856A KR102382751B1 (ko) 2019-12-04 2020-08-10 명령을 프리페치하는 방법, 장치, 기기 및 매체

Country Status (5)

Country Link
US (1) US11327762B2 (ko)
EP (1) EP3832458A1 (ko)
JP (1) JP7177812B2 (ko)
KR (1) KR102382751B1 (ko)
CN (1) CN112905237A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115827252B (zh) * 2023-01-10 2023-05-05 南京砺算科技有限公司 顶点数据处理方法、图形处理器、电子设备及存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4532589A (en) * 1981-12-02 1985-07-30 Hitachi, Ltd. Digital data processor with two operation units
JPH0769812B2 (ja) * 1987-12-29 1995-07-31 富士通株式会社 データ処理装置
JPH05313894A (ja) 1992-05-11 1993-11-26 Fuji Xerox Co Ltd 情報処理装置
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
US5623615A (en) * 1994-08-04 1997-04-22 International Business Machines Corporation Circuit and method for reducing prefetch cycles on microprocessors
US5664135A (en) * 1994-09-28 1997-09-02 Hewlett-Packard Company Apparatus and method for reducing delays due to branches
US6157988A (en) 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US7134004B1 (en) * 1999-09-29 2006-11-07 Fujitsu Limited Processing device for buffering sequential and target sequences and target address information for multiple branch instructions
US6604191B1 (en) * 2000-02-04 2003-08-05 International Business Machines Corporation Method and apparatus for accelerating instruction fetching for a processor
ITMI20061473A1 (it) 2006-07-26 2008-01-27 Indena Spa Derivati della camptotecina ad attivita antitumorale
CN100449481C (zh) * 2007-06-29 2009-01-07 东南大学 具有多通道指令预取功能的存储控制电路
GB201701841D0 (en) 2017-02-03 2017-03-22 Univ Edinburgh Branch target buffer for a data processing apparatus
CN107943518B (zh) * 2017-11-24 2021-07-16 中国航空工业集团公司西安航空计算技术研究所 一种局部跳转指令取指电路

Also Published As

Publication number Publication date
JP2021089736A (ja) 2021-06-10
JP7177812B2 (ja) 2022-11-24
US11327762B2 (en) 2022-05-10
EP3832458A1 (en) 2021-06-09
CN112905237A (zh) 2021-06-04
US20210173653A1 (en) 2021-06-10
KR20210070172A (ko) 2021-06-14

Similar Documents

Publication Publication Date Title
CN110275841B (zh) 访问请求处理方法、装置、计算机设备和存储介质
EP3896567B1 (en) Page pre-rendering method and apparatus, electronic device, and storage medium
JP7159223B2 (ja) キャッシュの競合を管理するための方法およびシステム
US8035648B1 (en) Runahead execution for graphics processing units
CN105378683B (zh) 用于在计算系统处的软件程序中便于动态和高效地管理转换缓冲器预取的机制
EP3920032A1 (en) Backward compatibility testing of software in a mode that disrupts timing
US10157130B1 (en) Differential storage and eviction for information resources from a browser cache
US9262328B2 (en) Using cache hit information to manage prefetches
US20140365861A1 (en) Prefetching binary data for use by a browser plugin
CN112579175B (zh) 分支预测方法、分支预测装置和处理器核
JP7130803B2 (ja) 検索方法、検索装置、電子機器及び記憶媒体
KR102382751B1 (ko) 명령을 프리페치하는 방법, 장치, 기기 및 매체
US20210200439A1 (en) Matrix storage method, matrix access method, apparatus and electronic device
JP7229305B2 (ja) 命令実行結果をライトバックするための装置及び方法、処理装置
CN114925001A (zh) 处理器、页表预取方法、电子设备
KR20210110156A (ko) 캐시 장치, 캐시, 시스템, 데이터 처리 방법, 장치 및 매체
US8850443B2 (en) Asynchronous input/output (I/O) using alternate stack switching in kernel space
US11194724B2 (en) Process data caching through iterative feedback
US20200401524A1 (en) High-frequency and low-power l1 cache and associated access technique
US10083124B1 (en) Translating virtual memory addresses to physical addresses
US11157285B2 (en) Dynamic modification of instructions that do not modify the architectural state of a processor
JP6828528B2 (ja) 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
US20190018795A1 (en) Method and apparatus for an efficient tlb lookup
CN104657298A (zh) 读控制装置和方法
CN114281715A (zh) 缓存合成预取方法、装置、处理器以及电子设备

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant