KR102454695B1 - 캐시 장치, 캐시, 시스템, 데이터 처리 방법, 장치 및 매체 - Google Patents

캐시 장치, 캐시, 시스템, 데이터 처리 방법, 장치 및 매체 Download PDF

Info

Publication number
KR102454695B1
KR102454695B1 KR1020200122452A KR20200122452A KR102454695B1 KR 102454695 B1 KR102454695 B1 KR 102454695B1 KR 1020200122452 A KR1020200122452 A KR 1020200122452A KR 20200122452 A KR20200122452 A KR 20200122452A KR 102454695 B1 KR102454695 B1 KR 102454695B1
Authority
KR
South Korea
Prior art keywords
queue
instruction
cache
target
identifier
Prior art date
Application number
KR1020200122452A
Other languages
English (en)
Other versions
KR20210110156A (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 KR20210110156A publication Critical patent/KR20210110156A/ko
Application granted granted Critical
Publication of KR102454695B1 publication Critical patent/KR102454695B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0853Cache with multiport tag or data arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Abstract

본 발명은 캐시 장치, 아이캐시, 명령어 처리 시스템, 데이터 처리 방법, 장치 및 매체를 제공하고, 클라우드 컴퓨팅 분야에 관한 것이다. 캐시 장치는 구체적으로, 제1 대기 행렬, 제2 대기 행렬, 기록 포트 그룹, 읽기 포트, 제1 팝업 포트, 제2 팝업 포트 및 푸시-인 포트를 포함하며; 기록 포트 그룹은 제1 대기 행렬 및/또는 제2 대기 행렬의 설정된 저장 주소에 캐시 데이터를 기록하고; 읽기 포트는 제1 대기 행렬 및/또는 제2 대기 행렬로부터 모든 캐시 데이터를 한 번에 판독하며; 푸시-인 포트는 상기 제1 대기 행렬 및/또는 제2 대기 행렬에 캐시 데이터를 푸시-인하고; 제1 팝업 포트는 상기 제1 대기 행렬로부터 캐시 데이터를 팝업시키며; 상기 제2 팝업 포트는 상기 제2 대기 행렬로부터 캐시 데이터를 팝업시킨다. 본 발명 실시예의 기술적 방안을 통해, 누락 명령어 처리 기능을 구현하는 전제하 에서, 캐시 장치의 수량을 크게 감소시키고, 복잡한 로직 제어를 감소시킨다.

Description

캐시 장치, 캐시, 시스템, 데이터 처리 방법, 장치 및 매체{CACHING DEVICE, CACHE, SYSTEM, METHOD AND APPARATUS FOR PROCESSING DATA, AND MEDIUM}
본 발명은 컴퓨터 하드웨어 분야, 특히 클라우드 컴퓨팅 기술에 관한 것이고, 구체적으로 캐시 장치, 아이캐시(icache; 또는 인스트럭션 캐시; Instruction Cache), 명령어 처리 시스템, 데이터 처리 방법, 장치 및 매체에 관한 것이다.
멀티 코어 프로세서의 코어는 아이캐시(icache)를 통해 외부의 명령어 저장 장치로부터 명령어 처리를 획득한다. icache는 버스를 통해 외부 명령어 저장 장치와 연결된다. icache에서 전송된 읽기 작업에 대한 버스의 응답에 랜덤 지연이 생기는데, 현재 읽기 작업에 대한 버스의 응답이 있어야만 icache가 새로운 읽기 작업을 시작할 수 있다. 지연 시간 내에, 코어가 icache로부터 인출 명령어를 누락시키는 상황이 발생할 수 있으며, 이 경우 아직 시작되지 않은 읽기 작업을 캐싱해야 한다.
종래 기술에서는 일반적으로 하나의 FIFO(First Input First Output, 선입선출) 메모리를 사용하여 icache에서 시작되지 않은 명령어 누락 식별자를 캐싱하고, 또 다른 FIFO를 사용하여 버스에 의해 응답되었으나 라이트 백(write back; 도로 기록) 되지 않은 명령어 누락 식별자를 캐싱한다. 현재는 이미 시작되어 버스에 의해 응답되었으나 라이트 백 되지 않은 명령어 누락 식별자를 동기식 캐싱하기 위해 레지스터 그룹을 주로 사용하고 있고, 다음 인출 명령어 누락이 발생했을 때, 레지스터 그룹에 캐시된 명령어 누락 식별자를 검색하여 대응하는 인출 명령어를 요청할 필요가 있는지 여부를 확정하고, 동시에 다른 레지스터를 사용하여 인출 명령어 누락이 발생한 코어를 기록한다. 대응하는 명령어가 버스를 통해 라이트 백 될 때, 이러한 코어에 상응하여 라이트 백 될 수 있다.
발명인이 본 발명을 구현하는 과정에서 종래 기술에 다음과 같은 결함이 있음을 발견하였다. 누락 명령어를 불러오는 기능을 구현하기 위해 비교적 많은 FIFO 및 레지스터 그룹을 사용해야 하므로, 제어하기가 번거롭고; 또한 FIFO 및 레지스터 그룹에 중복된 정보가 캐싱되어, 불필요한 자원 낭비를 초래한다.
본 발명의 실시예는 캐시 장치, 아이캐시, 명령어 처리 시스템, 데이터 처리 방법, 장치 및 매체를 제공하여, 새로운 구조의 캐시 장치 설계를 통해 누락 명령어의 인출(fetch) 기능에 필요한 하드웨어 비용을 절감한다.
제1 양태에 있어서, 본 발명의 실시예는 캐시 장치를 제공하고, 상기 캐시 장치는, 제1 대기 행렬, 제2 대기 행렬, 기록 포트 그룹, 읽기 포트, 제1 팝업(pop-up) 포트, 제2 팝업 포트 및 푸시-인(push-in) 포트를 포함하며;
상기 기록 포트 그룹은 제1 대기 행렬 및/또는 제2 대기 행렬의 설정된 저장 주소에 캐시 데이터를 기록하고;
상기 읽기 포트는 제1 대기 행렬 및/또는 제2 대기 행렬로부터 모든 캐시 데이터를 한 번에 판독하며;
상기 푸시-인 포트는 상기 제1 대기 행렬 및/또는 제2 대기 행렬에 캐시 데이터를 푸시-인하고;
상기 제1 팝업 포트는 상기 제1 대기 행렬로부터 캐시 데이터를 팝업시키며;
상기 제2 팝업 포트는 상기 제2 대기 행렬로부터 캐시 데이터를 팝업시킨다.
상술한 발명의 일 실시예는 다음과 같은 장점 또는 유익한 효과를 구비한다. 2개 대기 행렬에 대한 팝업 포트를 설정하여, 명령어 누락 발생 시, 캐시 장치는 시작(initiated)되지 않은 명령어 누락 식별자와 버스에 의해 응답되었으나 아직 라이트 백(write back) 되지 않은 명령어 누락 식별자를 동시에 저장함으로써, 대량의 캐시 장치를 절약하고, 또한 기록 포트 그룹 및 읽기 포트를 설정하여 레지스터 그룹을 사용하여 상기 정보를 저장할 필요 없이, 동일한 구성으로 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자를 캐싱할 수 있으므로, 복잡한 로직 제어를 줄일 수 있다.
선택적으로, 상기 기록 포트 그룹은 구체적으로 데이터 기록 포트 및 주소 기록 포트를 포함하고;
상기 데이터 기록 포트는 기록된 캐시 데이터를 수신하며;
상기 주소 기록 포트는 상기 주소 기록 포트에서 기록한 캐시 데이터의 상기 제1 대기 행렬 및/또는 제2 대기 행렬에 기록된 저장 주소를 수신한다.
상술한 발명의 일 실시예는 다음과 같은 장점 또는 유익한 효과를 구비한다. 데이터 기록 포트 및 주소 기록 포트 설정을 통해 제1 대기 행렬 또는 제2 대기 행렬의 설정된 저장 주소에서 필요한 캐시 데이터를 기록한 후, 멀티 코어 프로세서의 서로 다른 프로세싱 코어가 동일한 누락 명령어에 대한 명령어 인출 요청을 수신할 경우, 상기 각 프로세싱 코어의 정보를 모두 동일한 저장 주소에 기록할 수 있으므로, 제한된 저장 공간을 최대한으로 재사용하고, 처리 성능을 향상시킬 수 있다.
선택적으로, 상기 기록 포트 그룹은 마스크 기록 포트를 더 포함하고;
상기 마스크 기록 포트는 상기 주소 기록 포트에서 기록한 캐시 데이터의 마스크 정보를 수신하며;
상기 마스크 정보는 상기 저장 주소에 기록된 캐시 데이터의 데이터 비트를 나타내고, 상기 마스크 기록 포트 및 상기 데이터 기록 포트의 비트 너비는 동일하다.
상술한 발명의 일 실시예는 다음과 같은 장점 또는 유익한 효과를 구비한다. 마스크 기록 포트를 설정함으로써, 캐시 장치 내의 설정된 저장 주소 중 어느 한 특정 데이터 비트 상에 대응하는 캐시 데이터를 정확하게 기록할 수 있고, 나아가 누락 명령어에 대해 명령어 인출 요청을 전송하는 프로세싱 코어의 식별자 정보를 업데이트하여 저장하는 것을 구현할 수 있으므로, 제한된 저장 공간을 최대한으로 재사용하고, 처리 성능을 향상시킬 수 있다.
선택적으로, 상기 장치는 제1 empty-full 상태 플래그 비트 그룹 및 제2 empty-full 상태 플래그 비트 그룹을 더 포함하고;
상기 제1 empty-full 상태 플래그 비트 그룹은 상기 제1 대기 행렬의 캐시 데이터의 저장 상태를 나타내고;
상기 제2 empty-full 상태 플래그 비트 그룹은 상기 제2 대기 행렬의 캐시 데이터의 저장 상태를 나타낸다.
상술한 발명의 일 실시예는 다음과 같은 장점 또는 유익한 효과를 구비한다. 제1 empty-full 상태 플래그 비트 그룹 및 제2 empty-full 상태 플래그 비트 그룹을 설정함으로써, 캐시 장치의 성능을 한층 더 풍부하게 할 수 있고, 캐시 장치 각각의 대기 행렬의 저장 상태를 실시간으로 확인할 수 있으며, 나아가 서로 다른 저장 상태에 알맞는 처리 작업을 수행할 수 있다.
제2 양태에 있어서, 본 발명의 실시예는 아이캐시를 제공하고, 상기 아이캐시는 본 발명의 임의 실시예에서 설명한 제1 캐시 장치 및 제2 캐시 장치를 포함한다.
상술한 발명의 일 실시예는 다음과 같은 장점 또는 유익한 효과를 구비한다. 아이캐시에 상술한 새로운 구조의 제1 캐시 장치 및 제2 캐시 장치를 설치함으로써, 아이캐시의 성능을 보다 더 최적화할 수 있고, 특히 인출 명령어 상황에서 종래 기술 중 복수의 FIFO 및 복수의 레지스터 그룹을 조합하여 구현해야 했던 누락 명령어의 인출 기능을 구현하여 비교적 복잡한 제어 로직을 생략하여 아이캐시의 설계를 단순화시킨다. 또한 멀티 코어 프로세서가 외부 명령어 저장 장치로 반복적인 명령어 인출 요청을 전송하는 것을 방지하여, 멀티 코어 프로세서의 불필요한 시간 지연 대기를 크게 줄임으로써, 멀티 코어 프로세서의 성능을 향상시킨다.
제3 양태에 있어서, 본 발명의 실시예는 명령어 처리 시스템을 제공하고, 상기 시스템은 본 발명의 임의 실시예에 따른 아이캐시, 멀티 코어 프로세서 및 외부 명령어 저장 장치를 포함하고;
여기서, 상기 아이캐시는 상기 외부 명령어 저장 장치 및 상기 멀티 코어 프로세서의 복수의 프로세싱 코어와 각각 연결되고, 상기 아이캐시는 버스를 통해 상기 외부 명령어 저장 장치와 서로 연결된다.
선택적으로, 상기 멀티 코어 프로세서는 인출 명령어 누락이 발생할 경우, 아이캐시에 누락 명령어 식별자를 제공하고;
상기 외부 명령어 저장 장치는 명령어를 저장하며;
상기 아이캐시는 상기 외부 명령어 저장 장치에 누락 명령어 식별자를 전송하고, 상기 외부 명령어 저장 장치가 버스를 통해 응답하고 라이트 백 하는 명령어를 획득한다.
선택적으로, 상기 제1 캐시 장치는 제1 대기 행렬을 이용하여 인출 명령어 누락이 발생하였으나 외부 명령어 저장 장치에 의해 응답되지 않은 인출 명령어 누락 식별자를 캐싱하고, 제2 대기 행렬을 이용하여 외부 명령어 저장 장치에 의해 응답되었으나 라이트 백 되지 않은 인출 명령어 누락 식별자를 캐싱하고;
상기 제2 캐시 장치는 상기 제1 캐시 장치 내의 인출 명령어 누락 식별자의 저장 주소에 따라, 제1 대기 행렬 또는 제2 대기 행렬을 이용하여 상기 인출 명령어 누락 식별자와 매칭되는 프로세싱 코어의 커널 식별자를 대응하여 저장한다.
상술한 발명의 일 실시예는 다음과 같은 장점 또는 유익한 효과를 구비한다. 명령어 처리 시스템에서 본 발명의 임의 실시예에 따른 아이캐시를 사용함으로써, 종래 기술 중 복수의 FIFO 및 복수의 레지스터 그룹을 조합하여 구현해야 했던 누락 명령어의 인출 기능을 구현하고, 비교적 복잡한 제어 로직을 생략하여 아이캐시의 설계를 단순화시킨다. 또한 멀티 코어 프로세서가 외부 명령어 저장 장치로 반복적인 명령어 인출 요청을 전송하는 것을 방지하여, 멀티 코어 프로세서의 불필요한 시간 지연 대기를 크게 줄임으로써, 멀티 코어 프로세서의 성능을 향상시킨다.
제4 양태에 있어서, 본 발명 실시예는 데이터 처리 방법을 제공하고, 이는 본 발명의 임의 실시예에 따른 명령어 처리 시스템의 아이캐시에 의해 수행되며, 상기 방법은,
외부 명령어 저장 장치가 empty 상태에 처한 것이 감지되면, 제1 캐시 장치의 제1 대기 행렬로부터 누락 명령어 식별자를 인출하고, 제1 팝업 포트를 통해 팝업시켜 외부 명령어 저장 장치에 제공하는 단계;
제1 목표 누락 명령어 식별자에 대해 외부 명령어 저장 장치가 피드백한 라이트 백 명령어가 감지되면, 제1 캐시 장치의 제2 대기 행렬로부터 제1 목표 누락 명령어 식별자를 인출하여, 상기 제1 캐시 장치의 제2 팝업 포트를 통해 팝업시키는 단계;
제2 캐시 장치로부터 상기 제1 목표 누락 명령어 식별자와 매칭되는 제1 목표 캐시 데이터를 인출하여, 상기 제2 캐시 장치의 제2 팝업 포트를 통해 팝업시키는 단계;
상기 제1 목표 캐시 데이터에 따라, 상기 제1 목표 인출 명령어 누락 식별자에 매칭되는 제1 목표 프로세싱 코어의 제1 목표 커널 식별자를 식별하고, 상기 제1 목표 프로세싱 코어에 상기 라이트 백 명령어를 전송하는 단계를 포함한다.
상술한 발명의 일 실시예는 다음과 같은 장점 또는 유익한 효과를 구비한다. 제1 캐시 장치에 설정된 2개의 대기 행렬과 서로 다른 대기 행렬에 대한 팝업 포트를 통해, 아직 시작되지 않은 명령어 누락 식별자 및 버스에 의해 응답되었으나 라이트 백 되지 않은 명령어 누락 식별자 각각에 대해 팝업 처리를 진행할 수 있으므로, 아이캐시에 필요한 캐시 장치의 수량을 크게 감소시키고; 또한 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자를 레지스터 그룹을 사용하여 상기 정보를 저장할 필요 없이, 제2 캐시 장치의 팝업 포트를 통해 동시에 팝업시킬 수 있으므로 복잡한 로직 제어를 감소시킬 수 있다.
선택적으로, 상기 방법은,
제2 목표 프로세싱 코어에서 제2 목표 누락 명령어 식별자에 대한 인출 명령어 누락이 발생한 것을 감지한 경우, 제1 캐시 장치의 읽기 포트로부터 제1 대기 행렬 및 제2 대기 행렬에 저장된 모든 누락 명령어 식별자를 판독하는 단계;
상기 제1 캐시 장치의 제1 대기 행렬 및 제2 대기 행렬에 상기 제2 목표 누락 명령어 식별자가 저장되어 있지 않다면, 상기 제2 목표 누락 명령어 식별자를 상기 제1 대기 행렬 및 상기 제2 대기 행렬에 동시에 저장하는 단계;
상기 제2 목표 프로세싱 코어 및 기 설정된 프로세싱 코어와 캐시 데이터 중 대응되는 데이터 비트의 매핑 관계에 따라, 제2 목표 캐시 데이터를 생성하는 단계;
제2 캐시 장치의 푸시-인 포트를 통해 상기 제2 목표 캐시 데이터를 상기 제2 캐시 장치의 제1 대기 행렬 또는 제2 대기 행렬에 푸시-인하는 단계를 더 포함한다.
상술한 발명의 일 실시예는 다음과 같은 장점 또는 유익한 효과를 구비한다. 아이캐시에 제1 캐시 장치를 설정함으로써, 명령어 누락 발생 시, 시작되지 않은 명령어 누락 식별자 및 버스에 의해 응답되었으나 아직 라이트 백 되지 않은 명령어 누락 식별자를 동시에 저장할 수 있으므로, 캐시 장치의 사용 수량을 대폭 줄이고, 또한 제2 캐시 장치의 기록 포트 그룹 및 읽기 포트를 통해, 레지스터 그룹을 사용하여 상기 정보를 저장할 필요 없이, 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자를 동기식 캐싱 또는 판독할 수 있으므로 복잡한 로직 제어를 줄인다.
선택적으로, 제1 캐시 장치의 읽기 포트로부터 제1 대기 행렬 및 제2 대기 행렬에 저장된 모든 누락 명령어 식별자를 판독하는 단계 이후,
상기 제1 캐시 장치의 제1 대기 행렬 또는 제2 대기 행렬에 상기 제2 목표 누락 명령어 식별자가 저장되어 있는 경우, 상기 제1 캐시 장치에서 제2 목표 누락 명령어 식별자의 목표 저장 주소를 획득하는 단계;
상기 제2 목표 프로세싱 코어 및 기 설정된 프로세싱 코어와 캐시 데이터 중 대응되는 데이터 비트의 매핑 관계에 따라, 제3 목표 캐시 데이터 및 목표 마스크 정보를 생성하는 단계;
상기 제2 캐시 장치의 기록 포트 그룹을 통해 상기 목표 저장 주소, 상기 제3 목표 캐시 데이터 및 상기 목표 마스크 정보를 기록함으로써, 상기 제2 캐시 장치에 상기 제2 목표 인출 명령어 누락 식별자에 매칭되는 제2 목표 프로세싱 코어의 커널 식별자를 저장하는 단계를 포함한다.
상술한 발명의 일 실시예는 다음과 같은 장점 또는 유익한 효과를 구비한다. 제2 캐시 장치의 기록 포트 그룹을 통해 동일한 누락 명령어에 대한 멀티 코어 프로세서의 서로 다른 프로세싱 코어의 명령어 인출 요청을 수신한 경우, 상기 각 프로세싱 코어의 정보를 모두 동일한 저장 주소에 기록할 수 있으므로, 제한된 저장 공간을 최대한으로 사용하고, 처리 성능을 향상시킬 수 있다. 또한 멀티 코어 프로세서가 외부 명령어 저장 장치에 반복적인 명령어 인출 요청을 전송하는 것을 방지하여, 멀티 코어 프로세서의 불필요한 시간 지연 대기를 크게 줄임으로써, 멀티 코어 프로세서의 성능을 향상시킨다.
선택적으로, 상기 방법은,
제1 캐시 장치의 제1 대기 행렬에 캐시 데이터가 없는 경우, 제1 캐시 장치의 제1 empty-full 상태 플래그 비트 그룹의 empty 상태 플래그 비트를 목표 레벨 값으로 설정하는 단계;
제1 캐시 장치의 제1 대기 행렬이 가득 찬 경우, 제1 캐시 장치의 제1 empty-full 상태 플래그 비트 그룹의 full 상태 플래그 비트를 목표 레벨 값으로 설정하는 단계;
제1 캐시 장치의 제2 대기 행렬에 캐시 데이터가 없는 경우, 제1 캐시 장치의 제2 empty-full 상태 플래그 비트 그룹의 empty 상태 플래그 비트를 목표 레벨 값으로 설정하는 단계; 및
제1 캐시 장치의 제2 대기 행렬이 가득 찬 경우, 제1 캐시 장치의 제2 empty-full 상태 플래그 비트 그룹의 full 상태 플래그 비트를 목표 레벨 값으로 설정하는 단계 중 적어도 하나를 더 포함한다.
선택적으로, 상기 방법은,
상기 제1 캐시 장치의 제1 empty-full 상태 플래그 비트 그룹 또는 제2 empty-full 상태 플래그 비트 그룹의 full 상태 플래그 비트가 목표 레벨 값으로 감지된 경우, 더 이상 멀티 코어 프로세서 중 그 어떤 프로세싱 코어의 인출 명령어 요청도 수신하지 않는 단계를 더 포함한다.
제5 양태에 있어서, 본 발명 실시예는 데이터 처리 장치를 제공하고, 이는 본 발명의 임의 실시예에 따른 명령어 처리 시스템의 아이캐시에 의해 실행되며,
외부 명령어 저장 장치가 empty 상태에 처한 것이 감지되면, 제1 캐시 장치의 제1 대기 행렬로부터 누락 명령어 식별자를 인출하고, 제1 팝업 포트를 통해 팝업시켜 외부 명령어 저장 장치에 제공하는 제1 팝업 처리 모듈;
제1 목표 누락 명령어 식별자에 대한 외부 명령어 저장 장치가 피드백한 라이트 백 명령어가 감지되면, 제1 캐시 장치의 제2 대기 행렬로부터 상기 제1 목표 누락 명령어 식별자를 인출하여, 상기 제1 캐시 장치의 제2 팝업 포트를 통해 팝업시키는 제2 팝업 처리 모듈;
제2 캐시 장치로부터 상기 제1 목표 누락 명령어 식별자에 매칭되는 제1 목표 캐시 데이터를 인출하여, 상기 제2 캐시 장치의 제2 팝업 포트를 통해 팝업시키는 제3 팝업 처리 모듈;
상기 제1 목표 캐시 데이터에 따라, 상기 제1 목표 인출 명령어 누락 식별자에 매칭되는 제1 목표 프로세싱 코어의 제1 목표 커널 식별자를 식별하고, 상기 제1 목표 커널 식별자에 매칭되는 프로세싱 코어에 상기 라이트 백 명령어를 전송하는 라이트 백 명령어 전송 모듈을 포함한다.
상술한 발명의 일 실시예는 다음과 같은 장점 또는 유익한 효과를 구비한다. 제1 캐시 장치에 설정된 2개의 대기 행렬과 서로 다른 대기 행렬에 대한 팝업 포트를 통해, 아직 시작되지 않은 명령어 누락 식별자 및 버스에 의해 응답되었으나 라이트 백 되지 않은 명령어 누락 식별자 각각에 대해 팝업 처리를 할 수 있으므로, 아이캐시에 필요한 캐시 장치의 수량을 크게 감소시키고; 또한 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자를 레지스터 그룹을 사용하여 상기 정보를 저장할 필요 없이, 제2 캐시 장치의 팝업 포트를 통해 동시에 팝업시킬 수 있으므로 복잡한 로직 제어를 줄인다.
제6 양태에 있어서, 본 발명 실시예는 컴퓨터 명령어가 저장된 비-일시적 컴퓨터 판독 가능한 저장 매체를 제공하고, 상기 컴퓨터 명령어는 상기 컴퓨터가 본원의 임의 실시예에 따른 방법을 수행하도록 한다.
상술한 발명의 일 실시예는 다음과 같은 장점 또는 유익한 효과를 구비한다. 제1 캐시 장치에 설정된 2개의 대기 행렬과 서로 다른 대기 행렬에 대한 팝업 포트를 통해, 아직 시작되지 않은 명령어 누락 식별자 및 버스에 의해 응답되었으나 라이트 백 되지 않은 명령어 누락 식별자에 대해 각각 팝업 처리를 진행할 수 있으므로, 아이캐시에 필요한 캐시 장치의 수량을 크게 감소시키고; 또한 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자를 레지스터 그룹을 사용하여 상기 정보를 저장할 필요 없이, 제2 캐시 장치의 팝업 포트를 통해 동시에 팝업시킬 수 있으므로 복잡한 로직 제어를 감소시킬 수 있다.
상술한 선택적인 실시예들이 갖는 다른 효과들은 이하 구체적인 실시예를 참조하여 설명하고자 한다.
본 발명을 더 잘 이해하기 위해 도면을 참조하며, 이러한 도면은 본 발명을 제한하지 않는다.
도 1은 본 발명의 제1 실시예에서 제공한 캐시 장치의 구조도를 개략적으로 나타낸다.
도 2는 본 발명의 제2 실시예에서 제공한 아이캐시의 구조도를 개략적으로 나타낸다.
도 3은 본 발명의 제3 실시예에서 제공한 명령어 처리 시스템의 구조도를 개략적으로 나타낸다.
도 4는 본 발명의 제4 실시예에서 제공한 데이터 처리 방법을 구현시키는 흐름도를 나타낸다.
도 5는 본 발명의 제5 실시예에서 제공한 데이터 처리 방법을 구현시키는 흐름도를 나타낸다.
도 6은 본 발명의 제6 실시예에서 제공한 데이터 처리 장치의 구조도를 개략적으로 나타낸다.
아래에서는 이해를 돕기 위해, 본 발명 실시예의 다양한 세부사항을 포함한 본 발명의 시범적 실시예에 대해 첨부된 도면을 참조하여 설명하고자 하며, 이는 단지 시범적인 것으로 마땅히 간주되어야 한다. 따라서 해당 분야의 일반적인 기술자는 본 발명의 범위와 정신에 위배되지 않고, 여기에서 상술하는 실시예를 다양하게 변경 및 수정할 수 있다고 이해하여야 한다. 마찬가지로, 명확하고 간결한 설명을 위해, 아래의 설명에서 잘 알려진 기능과 구조에 대한 설명은 생략한다.
제1 실시예
도 1은 본 발명 제1 실시예에서 제공한 캐시 장치의 구조도를 개략적으로 나타낸 것으로, 본 실시예에서 제공한 캐시 장치는 아이캐시에 적용될 수 있고, 인출 명령어 누락이 발생하였으나 버스를 통해 응답되지 않은 인출 명령어 누락 식별자, 버스에 의해 이미 응답되었으나 아직 라이트 백 되지 않은 인출 명령어 누락 식별자 및 상기 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자 등 정보를 저장한다.
도 1과 같이 상기 캐시 장치는 구체적으로, 제1 대기 행렬, 제2 대기 행렬, 기록 포트 그룹, 읽기 포트, 제1 팝업 포트, 제2 팝업 포트 및 푸시-인 포트를 포함한다.
상기 기록 포트 그룹은 제1 대기 행렬 및/또는 제2 대기 행렬의 설정된 저장 주소에 캐시 데이터를 기록하고;
상기 읽기 포트는 제1 대기 행렬 및/또는 제2 대기 행렬로부터 모든 캐시 데이터를 한 번에 판독하며;
상기 푸시-인 포트는 상기 제1 대기 행렬 및/또는 제2 대기 행렬에 캐시 데이터를 푸시-인하고;
상기 제1 팝업 포트는 상기 제1 대기 행렬로부터 캐시 데이터를 팝업시키며;
상기 제2 팝업 포트는 상기 제2 대기 행렬로부터 캐시 데이터를 팝업시킨다.
구체적으로, 상기 제1 대기 행렬과 제2 대기 행렬은 종래의 FIFO 메모리와 유사한 선입선출 방식의 대기 행렬이며, 종래의 FIFO 메모리의 기본 기능을 구현할 수 있다. 그 중 2개의 대기 행렬을 설정한 목적은 하나의 캐시 장치를 사용하여, 인출 명령어 누락이 발생하였으나 버스에 의해 응답되지 않은 인출 명령어 누락 식별자, 버스에 의해 이미 응답되었으나 아직 라이트 백 되지 않은 인출 명령어 누락 식별자를 동시에 저장하여, 메모리 사용을 더 줄이는 데 있다.
구체적으로, 상기 인출 명령어 누락 식별자는 구체적으로 인출 명령어 누락이 발생한 명령어 식별자 정보(식별 정보로 지칭되기도 함) 일 수 있다. 일반적인 상황에서 icache는 pc(program counter, 프로그램 카운터)를 통해 명령어를 표시하는데, pc는 외부 명령어 저장 장치에서 명령어의 상대적 주소를 기록하므로, 상기 인출 명령어 누락 식별자는 구체적으로 인출 명령어 누락이 발생한 명령어에 대응되는 pc일 수 있다.
여기서, 하나의 푸시-인 포트를 설정하는 이유는 해당 인출 명령어 누락 발생 시, 상기 인출 명령어 누락에 대응되는 누락 명령어 식별자가 인출 명령어 누락이 발생하였으나 버스에 의해 응답되지 않은 상황 및 버스에 의해 응답되었으나 라이트 백 되지 않은 상항을 동시에 충족하기 때문이다. 따라서 하나의 푸시-인 포트를 통해 상기 누락 명령어 식별자를 제1 대기 행렬 및 제2 대기 행렬에 동시에 푸시-인시킬 수 있다. 일반적으로, 제1 대기 행렬을 이용하여 인출 명령어 누락이 발생하였으나 버스에 의해 응답되지 않은 인출 명령어 누락 식별자를 저장하고, 제2 대기 행렬을 이용하여 버스에 의해 응답되었으나 아직 라이트 백 되지 않은 인출 명령어 누락 식별자를 저장할 수 있다.
2개의 팝업 포트를 설정하는 이유는 외부 명령어 저장 장치가 empty 상태임을 감지한 경우, 제1 대기 행렬에서 인출 명령어 누락이 발생하였으나 버스에 의해 응답되지 않은 하나의 인출 명령어 누락 식별자를 획득하고, 외부 명령어 저장 장치에 전송하여 상응하는 명령어 라이트 백 작업을 진행하도록, 상기 인출 명령어 누락 식별자를 제1 팝업 포트로부터 팝업시키기 위함이고; 외부 명령어 저장 장치는 동일한 시간에 하나의 명령어 읽기 작업만 처리할 수 있기 때문에, 외부 명령어 저장 장치 피드백에 라이트 백 명령어가 감지되었다는 것은, 현재 제2 대기 행렬에 저장된 버스에 의해 응답되었으나 아직 라이트 백 되지 않은 첫번째 인출 명령어 누락 식별자가 상응하는 라이트 백 명령어를 수신하였음을 의미하므로, 상기 제2 대기 행렬의 첫번째 인출 명령어 누락 식별자는 저장 공간 확보를 위해, 제2 팝업 포트를 통해 팝업된다.
상기 하나의 캐시 장치의 2개 팝업 포트를 통해 종래의 인출 명령어 누락의 인출 기능 중 2개의 FIFO 기능을 충족시킬 수 있으므로 캐시 장치의 수량을 줄이고, 나아가 전체 아이캐시의 크기도 줄일 수 있다.
또한, 기록 포트 그룹을 사용함으로써, 하나의 새로운 캐시 장치의 제1 대기 행렬 또는 제2 대기 행렬에서 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자를 동기식으로 기록한 후, 외부 명령어 저장 장치가 피드백한 라이트 백 명령어를 수신하였을 때, 하나의 캐시 장치의 제2 대기 행렬의 첫번?? 인출 명령어 누락 식별자를 제2 팝업 포트를 통해 팝업함과 동시에, 두번째 캐시 장치의 제1 대기 행렬 또는 제2 대기 행렬에 캐시된 상기 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자를 제1 팝업 포트 또는 제2 팝업 포트를 통해 동기식으로 팝업시켜, 상기 라이트 백 명령어를 구체적으로 어느 프로세싱 코어로 제공해야 할지를 확정함으로써, 상기 라이트 백 명령어를 레지스터를 사용하여 상기 정보를 저장할 필요가 없으므로, 복잡한 로직 제어를 줄일 수 있다.
또한 읽기 포트를 사용하여 상기 제1 대기 행렬 및/또는 제2 대기 행렬에서 모든 캐시 데이터를 한번에 읽음으로써, 프로세싱 코어에서 전송된 새로운 인출 명령어 누락 식별자가 수신될 때, 새로운 레지스터 그룹을 도입하여 상기 정보를 반복적으로 저장할 필요 없이, 상기 인출 명령어 누락 식별자가 이전에 다른 프로세싱 코어에서 전송되었는지 여부를 빠르게 식별할 수 있으므로, 복잡한 로직 제어를 더 감소시킬 수 있다.
위 분석을 통해 알 수 있듯이, 상기 새로운 구조의 캐시 장치를 사용함으로써, 하드웨어 비용을 최대한 줄이는 상태에서 종래의 누락 명령어 인출 기능을 효과적으로 구현할 수 있다.
본 발명 실시예의 기술 방안은 2개의 대기 행렬에 대한 팝업 포트 설정을 통해, 상기 캐시 장치가 명령어 누락 발생 시, 시작되지 않은 명령어 누락 식별자, 버스에 의해 응답되었으나 아직 라이트 백 되지 않은 명령어 누락 식별자를 동시에 저장하여 캐시 장치의 수량을 줄이고, 또한 기록 포트 그룹과 읽기 포트 설정을 통해, 레지스터 그룹을 다시 사용하여 상기 정보를 저장할 필요 없이, 같은 구조를 사용하여 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자를 캐싱함으로써, 복잡한 로직 제어를 줄일 수 있다.
상술한 각 실시예를 기반으로 상기 기록 포트 그룹은 구체적으로 데이터 기록 포트 및 주소 기록 포트를 포함할 수 있고;
상기 데이터 기록 포트는 기록된 캐시 데이터를 수신하며;
상기 주소 기록 포트는 상기 주소 기록 포트에서 기록한 캐시 데이터의 상기 제1 대기 행렬 및/또는 제2 대기 행렬에 기록된 저장 주소를 수신한다
구체적으로, 제1 대기 행렬 또는 제2 대기 행렬에서 서로 다른 저장 공간은 서로 다른 저장 주소에 대응되므로, 상기 기록 포트 그룹을 설정하여 제1 대기 행렬 또는 제2 대기 행렬의 어느 한 저장 주소(상기 주소는 캐시 데이터에 이미 기록됨) 중 이미 기록된 캐시 데이터를 수정함으로써, 멀티 코어 프로세서의 복수의 프로세싱 코어에서 모두 동일한 명령에 대해 명령어 누락이 발생한 경우, 다른 프로세싱 코어에 대해 복수의 저장 주소를 사용하여 동일한 명령어 누락 식별자를 여러 차례 저장할 필요 없이, 이미 저장되어 있고, 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자를 업데이트하여 저장하기만 하면 된다.
구체적인 일 예에서, 멀티 코어 프로세서의 프로세싱 코어 수량과 매칭되는 일 세트의 이진 데이터를 사용하여 상기 프로세싱 커널을 나타내는데, 예를 들어, 프로세싱 커널의 수량이 12인 경우, 일 세트의 12bit 데이터를 사용할 수 있고 이는 동시에 상기 12개의 프로세싱 코어를 대표하며, 서로 다른 프로세싱 코어는 12bit 데이터의 서로 다른 데이터 비트에 대응된다.
예를 들어, 제1 데이터 비트는 프로세싱 코어 A에 대응되고, 제2 데이터 비트는 프로세싱 코어 B에 대응되며, 제3 데이터 비트는 프로세싱 코어 C에 대응되는 등 이와 같은 순서로 이어진다. 아이캐시가 프로세싱 코어 A에서 전송된 하나의 명령어 누락 식별자를 수신할 때, 일 세트의 데이터 100000000000을 구성하고, 푸시-인 포트를 통해 상기 구조의 캐시 장치 내의 하나의 저장 주소(예컨대, 저장 주소 X)를 푸시-인 할 수 있고, 아이캐시가 프로세싱 코어 C에서 전송된 동일한 명령어 누락 식별자를 다시 수신할 때, 새로운 저장 주소에 프로세싱 코어 C의 상기 명령어 누락 식별자를 반복하여 저장할 필요 없이, 저장 주소 X에 저장된 데이터를 100000000000에서 101000000000로 업데이트 하기만 하면 되므로, 즉, 프로세싱 코어 A와 프로세싱 코어 C에서 상기 명령어 누락 식별자에 대한 명령어 누락이 동시에 발생하였음을 나타낼 수 있다.
일반적으로, 기록 포트로 기록된 캐시 데이터와 대응되는 저장 주소에 현재 저장된 캐시 데이터를 사용하여 상기 필요한 처리 결과를 획득할 수 있다.
이러한 설정의 이점은 데이터 기록 포트 및 주소 기록 포트 설정을 통해, 제1 대기 행렬 또는 제2 대기 행렬의 지정 저장 주소에서 필요한 캐시 데이터를 기록한 후, 동일한 명령어 누락에 대한 멀티 코어 프로세서의 서로 다른 프로세싱 코어의 명령어 인출 요청을 수신했을 때, 상기 각각의 프로세싱 코어의 정보를 모두 동일한 저장 주소에 기록함으로써, 제한된 저장 공간을 최대한으로 재사용하고, 처리 성능을 향상시킬 수 있다는 것이다.
상술한 각 실시예를 기반으로, 상기 기록 포트 그룹은 마스크 기록 포트를 더 포함할 수 있고;
상기 마스크 기록 포트는 상기 주소 기록 포트에서 기록한 캐시 데이터의 마스크 정보를 수신하며;
상기 마스크 정보는 상기 저장 주소에 기록된 캐시 데이터의 데이터 비트를 나타내고, 상기 마스크 기록 포트 및 상기 데이터 기록 포트의 비트 너비는 동일하다.
앞에서 설명한 응용 상황에서, 저장 주소 X에 저장된 데이터를 100000000000에서 101000000000으로 업데이트해야 할 경우, 캐시 데이터의 세 번째 비트를 0에서 1로 수정하기만 하면 되므로, 캐시 장치의 내부 기록 로직이 더욱 단순화되어, 기록 포트 그룹에 마스크 기록 포트를 도입할 수 있고, 상기 마스크 기록 포트에 의해 기록된 마스크 정보를 통해 기록 포트에 기록된 캐시 데이터 중 어떤 데이터 비트가 대응되는 저장 주소에 기록되어야 하는지를 확정할 수 있다.
상기 설명한 것과 같이, 저장 주소 X의 캐시 데이터에서 세번째 데이터 비트에 1을 기록하고자 할 경우, 001000000000와 같은 형태의 마스크 정보와 001000000000와 같은 형태의 캐시 데이터를 설정하여, 마스크 정보에 입력된 세번째 비트의 하이레벨 1을 통해 캐시 데이터의 세번째 비트 1을 대응하는 저장 주소에 기록할 것을 지시할 수 있다.
이러한 설정의 이점은 마스크 기록 포트를 설정함으로써, 캐시 장치 내의 저장 주소의 구체적인 데이터 비트상에 대응하는 캐시 데이터가 기록되도록 정밀하게 설정할 수 있고, 나아가 누락 명령어에 대해 명령어 인출 요청을 전송하는 프로세싱 코어의 식별자 정보를 업데이트하여 저장하는 것을 구현할 수 있으므로, 제한된 저장 공간을 최대한으로 사용하고, 처리 성능을 향상시킬 수 있다.
상술한 각 실시예를 기반으로, 제1 empty-full 상태 플래그 비트 그룹 및 제2 empty-full 상태 플래그 비트 그룹을 더 포함할 수 있고;
상기 제1 empty-full 상태 플래그 비트 그룹은 상기 제1 대기 행렬의 캐시 데이터의 저장 상태를 나타내고;
상기 제2 empty-full 상태 플래그 비트 그룹은 상기 제2 대기 행렬의 캐시 데이터의 저장 상태를 나타낸다.
구체적으로 상기 제1 empty-full 상태 플래그 비트 그룹은 제1 empty 상태 플래그 비트 및 제1 full 상태 플래그 비트를 포함할 수 있고, 그 중 상기 제1 empty 상태 플래그 비트는 제1 대기 행렬에 어떠한 캐시 데이터도 저장되어 있지 않을 때, 목표 레벨 값(일반적으로, 하이레벨 1)으로 설정되어 제1 대기 행렬의 빈 저장 상태를 나타내고, 상기 제1 full 상태 플래그 비트는 제1 대기 행렬의 저장 공간 전체가 캐시 데이터로 가득 찼을 때, 목표 레벨 값으로 설정되어 제1 대기 행렬의 가득 찬 저장 상태를 나타낸다.
이와 유사하게, 상기 제2 empty-full 상태 플래그 비트 그룹은 구체적으로, 제2 empty 상태 플래그 비트 및 제2 full 상태 플래그 비트를 포함할 수 있고, 그 중 상기 제2 empty 상태 플래그 비트는 제2 대기 행렬에 어떠한 캐시 데이터도 저장되어 있지 않을 때, 목표 레벨 값(일반적으로, 하이레벨 1)으로 설정되어 제2 대기 행렬의 빈 저장 상태를 나타내고, 상기 제2 full 상태 플래그 비트는 제2 대기 행렬의 저장 공간 전체가 캐시 데이터로 가득 찼을 때, 목표 레벨 값으로 설정되어 제2 대기 행렬의 가득 찬 저장 상태를 나타낸다.
이러한 설정의 이점은 제1 empty-full 상태 플래그 비트 그룹 및 제2 empty-full 상태 플래그 비트 그룹 설정을 통해 캐시 장치의 기능을 더 풍부하게 하고, 캐시 장치 각각의 대기 행렬의 저장 상태를 실시간으로 알 수 있으며, 나아가 서로 다른 저장 상태에 맞는 처리 작업을 수행할 수 있다는 점이다.
제2 실시예
도 2는 본 발명의 제2 실시예에서 제공한 아이캐시의 구조도를 개략적으로 나타내며, 본 실시예에서 제공한 아이캐시는 본 발명 실시예에서 제공한 것과 같이 2개의 캐시 장치를 사용한다.
도 2와 같이, 상기 아이캐시(210)는 제1 캐시 장치(211) 및 제2 캐시 장치(212)를 포함한다.
그 중 상기 제1 캐시 장치(211)및 제2 캐시 장치(212)는 본 발명 임의 실시예에 따른 캐시 장치의 구조와 동일하다.
구체적으로, 상기 제1 캐시 장치 및 제2 캐시 장치는 모두 제1 대기 행렬, 제2 대기 행렬, 기록 포트 그룹, 읽기 포트, 제1 팝업 포트, 제2 팝업 포트 및 푸시-인 포트를 포함한다.
상기 기록 포트 그룹은 제1 대기 행렬 및/또는 제2 대기 행렬의 설정된 저장 주소에 캐시 데이터를 기록하고;
상기 읽기 포트는 제1 대기 행렬 및/또는 제2 대기 행렬로부터 모든 캐시 데이터를 한 번에 판독하며;
상기 푸시-인 포트는 상기 제1 대기 행렬 및/또는 제2 대기 행렬에 캐시 데이터를 푸시-인하고;
상기 제1 팝업 포트는 상기 제1 대기 행렬로부터 캐시 데이터를 팝업시키며;
상기 제2 팝업 포트는 상기 제2 대기 행렬로부터 캐시 데이터를 팝업시킨다
구체적으로, 상기 기록 포트 그룹은 구체적으로 데이터 기록 포트 및 주소 기록 포트를 포함하고;
상기 데이터 기록 포트는 기록된 캐시 데이터를 수신하며;
상기 주소 기록 포트는 상기 주소 기록 포트에서 기록한 캐시 데이터의 상기 제1 대기 행렬 및/또는 제2 대기 행렬 중에서 기록된 저장 주소를 수신한다.
구체적으로 상기 기록 포트 그룹은 마스크 기록 포트를 더 포함하고;
상기 마스크 기록 포트는 상기 주소 기록 포트에서 기록한 캐시 데이터의 마스크 정보를 수신하며;
상기 마스크 정보는 상기 저장 주소에 기록된 캐시 데이터의 데이터 비트를 나타내고, 상기 마스크 기록 포트 및 상기 데이터 기록 포트의 비트 너비는 동일하다.
구체적으로, 제1 empty-full 상태 플래그 비트 그룹 및 제2 empty-full 상태 플래그 비트 그룹을 더 포함하고;
상기 제1 empty-full 상태 플래그 비트 그룹은 상기 제1 대기 행렬의 캐시 데이터의 저장 상태를 나타내고;
상기 제2 empty-full 상태 플래그 비트 그룹은 상기 제2 대기 행렬의 캐시 데이터의 저장 상태를 나타낸다.
여기서, 제1 empty-full 상태 플래그 비트 그룹은 구체적으로 제1 empty 상태 플래그 비트와 제1 full 상태 플래그 비트를 포함하고, 제2 empty-full 상태 플래그 비트 그룹은 제2 empty 상태 플래그 비트와 제2 full 상태 플래그 비트를 포함한다.
아이캐시에 상기 새로운 구조의 제1 캐시 장치 및 제2 캐시 장치를 설치함으로써, 아이캐시의 성능을 더 최적화시킬 수 있고, 특히 인출 명령어 상황에서 종래 기술은 복수의 FIFO 및 복수의 레지스터 그룹을 조합하여 구현해야 했던 누락 명령어의 인출 기능을 구현할 수 있으므로, 비교적 복잡한 제어 로직을 생략하여 아이캐시의 설계를 단순화시켰다. 또한 멀티 코어 프로세서가 외부 명령어 저장 장치로 반복적인 명령어 인출 요청을 전송하는 것을 방지하여, 멀티 코어 프로세서의 불필요한 시간 지연 대기를 크게 줄임으로써, 멀티 코어 프로세서의 성능을 향상시켰다.
제3 실시예
도 3은 본 발명의 제3 실시예에서 제공한 명령어 처리 시스템의 구조도를 개략적으로 나타낸다. 본 발명의 임의 실시예에 따른 아이캐시를 사용하고, 아이캐시를 멀티 코어 프로세서와 외부 명령어 저장 장치의 교량으로 삼아, 멀티 코어 프로세서의 하나 또는 복수의 프로세싱 코어에서 명령어 누락이 발생할 경우, 상응하는 누락 명령어 식별자 및 인출 명령어 누락이 발생한 프로세싱 코어의 커널 식별자를 캐싱하여, 누락 명령어 인출 기능을 구현할 수 있다.
도 3과 같이, 명령어 처리 시스템은 구체적으로, 본 발명의 임의 실시예에 따른 아이캐시(310), 멀티 코어 프로세서(320) 및 외부 명령어 저장 장치(330)를 포함한다. 상기 아이캐시(310)는 구체적으로 본 발명의 임의 실시예에 따른 제1 캐시 장치(311) 및 제2 캐시 장치(312)를 포함할 수 있다.
상기 아이캐시(310)는 멀티 코어 프로세서(320)의 복수의 프로세싱 코어(도 3에서 프로세싱 커널 1, 프로세싱 커널 2, ……, 프로세싱 커널 N으로 나타냄) 및 외부 명령어 저장 장치(330)와 각각 연결되어 있고, 아이캐시(310)와 외부 명령어 저장 장치(330)는 버스로 서로 연결된다.
상기 멀티 코어 프로세서(320)는 인출 명령어 누락 발생 시, 누락 명령어 식별자를 아이캐시(310)로 전송하고;
상기 외부 명령어 저장 장치(330)는 명령어를 저장하며;
상기 아이캐시(310)는 상기 외부 명령어 저장 장치(330)에 누락 명령어 식별자를 전송하고, 상기 외부 명령어 저장 장치(330)가 버스를 통해 응답하고 라이트 백 하는 명령어를 획득한다.
바람직하게는, 상기 제1 캐시 장치(311)는 인출 명령어 누락이 발생하였으나 외부 명령어 저장 장치에 의해 응답되지 않은 인출 명령어 누락 식별자를 제1 대기 행렬을 이용하여 캐싱하고, 제2 대기 행렬을 이용하여 외부 명령어 저장 장치에 의해 응답되었으나 라이트 백 되지 않은 인출 명령어 누락 식별자를 캐싱하고;
상기 제2 캐시 장치(312)는 상기 제1 캐시 장치 내의 인출 명령어 누락 식별자의 저장 주소에 따라, 제1 대기 행렬 또는 제2 대기 행렬을 이용하여 상기 인출 명령어 누락 식별자와 매칭되는 프로세싱 코어의 커널 식별자를 대응하여 저장한다.
여기서, 프로세싱 커널이 인출 명령어 처리를 해야 할 경우, 아이캐시(310)를 통해 외부 명령어 저장 장치(330)으로부터 명령어를 요청하고, 외부 명령어 저장 장치(330)가 버스를 통해 명령어 획득 요청에 응답할 때, 버스를 통해 해당 명령어 획득 요청과 매칭되는 명령어를 버스를 통해서 상기 아이캐시(310)에 라이트 백 되며, 아이캐시(310)에 의해 명령어 획득 요청을 한 프로세싱 코어에 제공된다. 상기 아이캐시(310)는 한 번에 동일한 하나의 명령어 획득 요청에 대해서만 응답할 수 있고, 다른 명령어 획득 요청은 랜덤 지연이 된다. 프로세싱 코어에서 인출 명령어 누락이 발생한 것을 감지한 경우, 상기 인출 명령어 누락에 매칭되는 인출 명령어 누락 식별자를 아이캐시(310)에 제공하여 캐싱하고, 아이캐시(310)에 의해 적절한 시간안에 누락된 명령어를 획득하고 매칭되는 프로세싱 코어에 피드백을 제공할 것이다.
구체적으로, 제1 캐시 장치(311)의 사용에 맞추기 위해, 제2 캐시 장치(312)는 하나의 대기 행렬만 사용하는데, 예를 들면, 제2 캐시 장치(312) 중 제2 대기 행렬만 사용하여 상기 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자를 저장하는 것을 예를 들 수 있되 여기에 국한되지 않는다. 따라서 제2 캐시 장치(312)의 읽기 포트로부터 캐시 데이터를 읽어 와야 할 경우, 상기 제2 대기 행렬에서만 캐시 데이터를 읽을 수 있고; 제2 캐시 장치(312)의 기록 포트로부터 캐시 데이터를 기록해야 하는 경우, 상기 제2 대기 행렬에 설정된 저장 주소의 캐시 데이터의 지정된 데이터 비트에만 데이터를 기록할 수 있으며; 제2 캐시 장치(312)의 푸시-인 포트를 통해 캐시 데이터를 푸시-인 해야할 경우, 상기 푸시-인 된 캐시 데이터는 제2 대기 행렬에만 푸시-인 될 수 있고; 제2 캐시 장치(312)의 제2 대기 행렬로부터 캐시 데이터를 팝업 시켜야 할 경우, 제2 팝업 포트를 통해서만 팝업시킬 수 있다. 또한 제2 캐시 장치(312)의 제2 empty-full 상태 플래그 비트 그룹만 사용하여 제2 대기 행렬의 empty-full 저장 상태를 나타낼 수 있다.
마찬가지로 제2 캐시 장치(312) 중 제1 대기 행렬을 이용하여 상기 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자를 저장할 수 있다는 것도 당연히 이해되어야 하며, 본 실시예는 이에 대해 제한을 두지 않는다.
구체적으로 아이캐시(310)가 외부 명령어 저장 장치(330)가 empty 상태임을 감지한 경우,
제2 캐시 장치(311)의 제1 대기 행렬로부터 누락 명령어 식별자를 인출하고, 제1 팝업 포트를 통해 팝업 시켜 외부 명령어 저장 장치(330)에 제공하고;
아이캐시(310)가 외부 명령어 저장 장치(330)의 제1 목표 누락 명령어 식별자에 대한 피드백에서 기록 명령어를 감지한 경우,
제1 캐시 장치(311)의 제2 대기 행렬로부터 상기 제1 목표 누락 명령어 식별자를 인출하여 상기 제1 캐시 장치(311)의 제2 팝업 포트를 통해 팝업시키고;
제2 캐시 장치(312)로부터 상기 제1 목표 누락 명령어 식별자에 매칭되는 제1 목표 캐시 데이터를 인출하여, 상기 제2 캐시 장치(312)의 제1 팝업 포트 또는 제2 팝업 포트를 통해 팝업시키며;
상기 제1 목표 캐시 데이터에 따라, 상기 제1 목표 인출 명령어 누락 식별자에 매칭되는 제1 목표 프로세싱 코어의 제1 목표 커널 식별자를 식별하고, 상기 제1 목표 프로세싱 코어에 상기 기록 명령어를 전송한다.
아이캐시(310)가 제2 목표 프로세싱 코어에서 제2 목표 누락 명령어 식별자에 대한 인출 명령어 누락이 발생한 것을 감지한 경우,
제1 캐시 장치의 읽기 포트로부터 제1 대기 행렬 및 제2 대기 행렬에 저장된 모든 누락 명령어 식별자를 읽어오고;
상기 제1 캐시 장치의 제1 대기 행렬과 제2 대기 행렬에 상기 제2 목표 누락 명령어 식별자가 저장되어 있지 않은 경우, 상기 제2 목표 누락 명령어 식별자를 상기 제1 대기 행렬 및 상기 제2 대기 행렬에 저장하고; 상기 제2 목표 프로세싱 코어 및 기 설정된 프로세싱 코어와 캐시 메모리 중 대응되는 데이터 비트의 매핑 관계에 따라, 제2 목표 캐시 데이터를 생성하며; 제2 캐시 장치의 푸시-인 포트를 통해 상기 제2 목표 캐시 데이터를 상기 제2 캐시 장치의 제1 대기 행렬 또는 제2 대기 행렬에 푸시-인하고;
상기 제1 캐시 장치의 제1 대기 행렬 또는 제2 대기 행렬 중 상기 제2 목표 누락 명령어 식별자가 저장되어 있는 경우, 상기 제1 캐시 장치에서 상기 제2 목표 누락 명령어 식별자의 목표 저장 주소를 획득하고;
상기 제2 목표 프로세싱 코어 및 기 설정된 프로세싱 코어와 캐시 장치 내의 대응되는 데이터 비트의 매핑 관계에 따라, 제3 목표 캐시 데이터 및 목표 마스크 정보를 생성하며;
상기 제2 캐시 장치의 기록 포트 그룹을 통해 상기 목표 저장 주소, 상기 제3 목표 캐시 데이터 및 상기 목표 마스크 정보를 기록하여, 상기 제2 목표 인출 명령어 누락 식별자에 매칭되는 제2 목표 프로세싱 코어의 커널 식별자를 상기 제2 캐시 장치에 저장한다.
본 발명 실시예의 기술 방안은 아이캐시에 상술한 새로운 구조의 제1 캐시 장치 및 제2 캐시 장치를 설치하여, 명령어 캐싱 시스템에서 종래 기술은 복수의 FIFO 및 복수의 레지스터 그룹을 조합하여 구현해야 했던 누락 명령어의 인출 기능을 구현할 수 있고, 비교적 복잡한 제어 로직을 생략하여 아이캐시의 설계를 단순화시켰다. 또한 멀티 코어 프로세서가 외부 명령어 저장 장치로 반복적인 명령어 인출 요청을 전송하는 것을 방지하여, 멀티 코어 프로세서의 불필요한 시간 지연 대기를 크게 줄임으로써, 멀티 코어 프로세서의 성능을 향상시켰다
제4 실시예
도 4는 본 발명의 제4 실시예에서 제공한 데이터 처리 방법을 구현시키는 흐름도를 나타내며, 본 실시예는 누락 명령어의 처리 상황에 적용될 수 있다. 상기 방법은 소프트웨어 및/또는 하드웨어 방식으로 구현된 데이터 처리 장치에 의해 수행될 수 있고, 바람직하게는 본 발명의 임의 실시예에 따른 명령어 처리 시스템의 아이캐시에 장착되어, 상기 아이캐시에서 멀티 코어 프로세서와 외부 명령어 저장 장치와 함께 조합되어 사용될 수 있다. 도 4와 같이 상기 방법은 구체적으로 다음의 단계를 포함한다.
S410은 외부 명령어 저장 장치가 empty 상태에 처한 것이 감지되면, 제1 캐시 장치의 제1 대기 행렬로부터 누락 명령어 식별자를 인출하고, 제1 팝업 포트를 통해 팝업시켜 외부 명령어 저장 장치에 제공하는 단계이다.
앞에서 설명한 것과 같이, 제1 캐시 장치의 제1 대기 행렬에 인출 명령어 누락이 발생하였으나 버스에 의해 응답되지 않은 명령어 누락 식별자, 즉, 외부 명령어 저장 장치에 아직 전송되지 않은 인출 명령어 누락 식별자를 캐싱한다. 따라서 외부 명령어 저장 장치가 empty 상태에 처한 것이 감지되면, 이것은 현재 외부 명령어 저장 장치가 명령어 읽기 작업을 아직 진행하지 않았다는 것을 의미하므로, 제1 캐시 장치의 제1 대기 행렬에서 누락 명령어 식별자를 인출하여, 제1 팝업 포트를 통해 팝업시킨 후, 팝업 된 누락 명령어 식별자를 상기 외부 명령어 저장 장치에 제공하여, 외부 명령어 저장 장치가 상기 누락 명령어 식별자에 대응되는 명령의 라이트 백을 진행하도록 할 수 있다.
S420은 제1 목표 누락 명령어 식별자에 대해 외부 명령어 저장 장치가 피드백한 라이트 백 명령어가 감지되면, 제1 캐시 장치의 제2 대기 행렬로부터 제1 목표 누락 명령어 식별자를 인출하여, 상기 제1 캐시 장치의 제2 팝업 포트를 통해 팝업시키는 단계이다.
본 실시예에서, 제1 캐시 장치의 제2 대기 행렬에 버스에 의해 응답되었으나 아직 라이트 백 되지 않은 인출 명령어 누락 식별자를 캐싱한다. 즉, 제2 대기 행렬에 캐시된 인출 명령어 누락 식별자는 버스를 통해 외부 명령어 저장 장치에 전송되었으나 외부 명령어 저장 장치가 피드백한 라이트 백 명령어를 아직 수신하지 못한 인출 명령어 누락 식별자이다.
여기서, 외부 명령어 저장 장치는 동일한 시간에 하나의 명령어 읽기 작업만 처리할 수 있으므로, 외부 명령어 저장 장치가 피드백한 라이트 백 명령어가 있다는 것을 감지한 경우, 이것은 현재 제2 대기 행렬에 저장된 첫번째 버스에 의해 응답되었으나 아직 라이트 백 되지 않은 인출 명령어 누락 식별자가 상응하는 라이트 백 명령어를 수신하였음을 의미하므로, 상기 제2 대기 행렬의 첫번째 인출 명령어 누락 식별자를 제2 팝업 포트를 통해 팝업 시켜 캐시 공간을 확보할 수 있다.
S430은 제2 캐시 장치로부터 상기 제1 목표 누락 명령어 식별자와 매칭되는 제1 목표 캐시 데이터를 인출하여, 상기 제2 캐시 장치의 제1 팝업 포트 또는 제2 팝업 포트를 통해 팝업시키는 단계이다.
본 실시예에서, 제1 캐시 장치를 통해 인출 명령어 누락이 발생한 인출 명령어 누락 식별자를 저장할 때, 제2 캐시 장치에 상기 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자를 동기식으로 기록한 후, 외부 명령어 저장 장치가 피드백한 라이트 백 명령어를 수신할 때, 제1 캐시 장치의 제2 대기 행렬의 첫번째 인출 명령어 누락 식별자(즉, 제1 목표 누락 명령어 식별자)를 제2 팝업 포트를 통해 팝업함과 동시에, 제2 캐시 장치의 제1 대기 행렬 또는 제2 대기 행렬에 캐시된 상기 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자(즉, 제1 목표 커널 식별자)를 제1 팝업 포트 또는 제2 팝업 포트를 통해 동기식으로 팝업 시켜, 레지스터 그룹을 다시 사용하여 상기 정보를 저장할 필요 없이, 상기 라이트 백 명령어가 구체적으로 어느 프로세싱 코어에 전송되어야 하는지를 확정할 수 있으므로, 복잡한 로직 제어를 감소시킬 수 있다.
구체적으로 상기 제1 목표 커널 식별자의 커널 식별자는 제1 목표 캐시 데이터에 포함되고, 제1 목표 캐시 데이터의 데이터 비트 수는 멀티 코어 프로세서의 프로세싱 코어 수량과 일치하며, 서로 다른 프로세싱 코어는 제1 목표 캐시 데이터의 서로 다른 데이터 비트에 대응되고, 상기 제1 목표 캐시 데이터의 데이터 비트의 구체적인 데이터 값(0 또는 1)에 따라, 어느 프로세싱 코어에서 상기 제1 목표 누락 명령어 식별자에 대해 명령어 누락이 발생하였는지 확정할 수 있다.
S440은 상기 제1 목표 캐시 데이터에 따라, 상기 제1 목표 인출 명령어 누락 식별자에 매칭되는 제1 목표 프로세싱 코어의 제1 목표 커널 식별자를 식별하고, 상기 제1 목표 프로세싱 코어에 상기 라이트 백 명령어를 전송하는 단계이다.
구체적으로 데이터 값 1을 통해 인출 명령어 누락이 발생한 프로세싱 코어를 표시할 수 있고, 나아가 상기 제1 목표 캐시 데이터에서 1이 나타난 위치를 식별할 수 있으며, 더 나아가 데이터 비트와 프로세싱 코어 사이의 매핑 관계에 따라 하나 또는 복수의 제1 목표 커널 식별자를 식별하며, 외부 명령어 저장 장치 피드백의 라이트 백 명령어를 상기 제1 목표 프로세싱 코어에 제공한다.
본 발명의 실시예에서, 아이캐시에 제1 캐시 장치를 설치함으로써, 명령어 누락 발생 시 시작되지 않은 명령어 누락 식별자 및 버스에 의해 응답 되었으나 아직 라이트 백 되지 않은 명령어 누락 식별자를 동시에 저장하여, 캐시 장치의 사용 수량을 크게 줄이고, 또한 제2 캐시 장치의 기록 포트 그룹 및 읽기 포트를 통해, 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자를 동기식 캐싱 또는 판독할 수 있으므로, 레지스터 그룹을 다시 사용하여 상기 정보를 저장할 필요가 없어 복잡한 로직 제어를 감소시킬 수 있다.
제5 실시예
도 5는 본 발명의 제5 실시예에서 제공한 데이터 처리 방법을 구현시키는 흐름도를 나타내며, 본 실시예는 상기 실시예를 기초로 최적화를 하여, 인출 명령어 누락 발생 시 누락 명령어 식별자 및 인출 명령어 누락이 발생한 프로세싱 코어에 대해 진행한 저장 작업을 구체화 하는데, 이는 도 5와 같고, 상기 방법은 구체적으로 다음의 단계를 포함한다.
S510은 외부 명령어 저장 장치가 empty 상태에 처한 것이 감지되면, 제1 캐시 장치의 제1 대기 행렬로부터 누락 명령어 식별자를 인출하고, 제1 팝업 포트를 통해 팝업시켜 외부 명령어 저장 장치에 제공하는 단계이다.
S520은 제1 목표 누락 명령어 식별자에 대해 외부 명령어 저장 장치가 피드백한 라이트 백 명령어가 감지되면, 제1 캐시 장치의 제2 대기 행렬로부터 제1 목표 누락 명령어 식별자를 인출하여, 상기 제1 캐시 장치의 제2 팝업 포트를 통해 팝업시키는 단계이다.
S530은 제2 캐시 장치로부터 상기 제1 목표 누락 명령어 식별자와 매칭되는 제1 목표 캐시 데이터를 인출하여, 상기 제2 캐시 장치의 제1 팝업 포트 또는 제2 팝업 포트를 통해 팝업시키는 단계이다.
S540은 상기 제1 목표 캐시 데이터에 따라, 상기 제1 목표 인출 명령어 누락 식별자에 매칭되는 제1 목표 프로세싱 코어의 제1 목표 커널 식별자를 식별하고, 상기 제1 목표 프로세싱 코어에 상기 라이트 백 명령어를 전송하는 단계이다.
S550은 제2 목표 프로세싱 코어에서 제2 목표 누락 명령어 식별자에 대한 인출 명령어 누락이 발생하였음을 감지하였을 때, 제1 캐시 장치의 읽기 포트로부터 제1 대기 행렬 및 제2 대기 행렬에 저장된 모든 누락 명령어 식별자를 읽어 오는 단계이다.
본 실시예에서, 제1 캐시 장치에 제1 대기 행렬 및 제2 대기 행렬의 모든 캐시 데이터를 한번에 읽어올 수 있는 읽기 포트를 설정하였기 때문에, 읽기 포트로부터 읽어 온 모든 캐시 데이터를 통해 제2 목표 누락 명령어 식별자가 제2 목표 프로세싱 코어를 제외한 다른 프로세싱 코어에서 전송된 적이 있는지 여부를 판단할 수 있으므로, 동일한 누락 명령어 식별자의 중복 저장을 방지할 수 있다.
S560은 상기 제1 캐시 장치의 제1 대기 행렬 또는 제2 대기 행렬에 제2 목표 누락 명령어 식별자가 저장되어 있는지 여부를 판단하여, 만약 저장되어 있으면 S570 단계를 수행하고; 저장되어 있지 않다면 S580 단계를 수행한다.
S570은 상기 제1 캐시 장치에서 상기 제2 목표 누락 명령어 식별자의 목표 저장 주소를 획득하고, S590 단계를 수행하는 단계이다.
상기 제1 캐시 장치의 제1 대기 행렬 또는 제2 대기 행렬에 제2 목표 누락 명령어 식별자가 저장되어 있는 경우, 이는 상기 제2 목표 누락 명령어 식별자가 다른 프로세싱 코어에서 전송된 적이 있음을 의미하므로, 제2 목표 프로세싱 코어의 커널 식별자를 제2 캐시 장치 내의 상기 목표 저장 주소에 추가로 저장하기만 하면 된다.
제2 캐시 장치가 제2 대기 행렬을 사용하는 것을 예로 들어, 제2 캐시 장치의 제2 대기 행렬은 제1 캐시 장치의 제2 대기 행렬에 저장된 정보와 하나 하나 대응되고, 즉, 동일한 저장 주소에서 제1 캐시 장치의 제2 대기 행렬에 하나의 누락 명령어 식별자 A가 저장되어 있고, 제2 캐시 장치의 제2 대기 행렬에는 상기 누락 명령어 식별자 A를 전송한 모든 프로세싱 코어의 커널 식별자가 저장되어 있음을 다시 한번 설명할 필요가 있다.
S580은 상기 제2 목표 누락 명령어 식별자를 상기 제1 대기 행렬 및 상기 제2 대기 행렬에 동시에 저장하고, S5110 단계를 수행하는 단계이다.
상기 제1 캐시 장치의 제1 대기 행렬 또는 제2 대기 행렬에 제2 목표 누락 명령어 식별자가 모두 저장되어 있지 않은 경우, 이는 상기 제2 목표 누락 명령어 식별자가 다른 프로세싱 코어에 의해 전송되지 않음을 의미한다. 따라서 상기 제2 목표 누락 명령어 식별자가 인출 명령어 누락이 발생하였으나 버스에 의해 응답되지 않고, 버스에 의해 응답되었으나 아직 라이트 백 되지 않은 것을 동시에 충족시키므로, 제1 캐시 장치의 푸시-인 포트를 통해 상기 제2 목표 누락 명령어 식별자를 제1 캐시 장치의 제1 대기 행렬 및 제2 대기 행렬에 동시에 푸시-인 할 수 있다.
여기서, 본 실시예에서 제1 대기 행렬을 이용하여 인출 명령어 누락이 발생하였으나 버스에 의해 아직 응답되지 않은 인출 명령어 누락 식별자를 저장할 수 있고, 제2 대기 행렬을 이용하여 버스에 의해 응답되었으나 아직 라이트 백 되지 않은 인출 명령어 누락 식별자를 저장할 수 있다.
S590은 상기 제2 목표 프로세싱 코어 및 기 설정된 프로세싱 코어와 캐시 데이터 중 대응되는 데이터 비트의 매핑 관계에 따라, 제3 목표 캐시 데이터 및 목표 마스크 정보를 생성하고, S5100 단계를 수행하는 단계이다.
구체적인 일 예에서, 멀티 코어 프로세서에 12개의 프로세싱 코어가 포함된 경우, 상기 12개의 프로세싱 코어는 제2 캐시 장치에 저장된 캐시 메모리의 12개 데이터 비트에 대응된다. 여기서, 기 설정된 프로세싱 코어 및 캐시 메모리에 대응되는 데이터 비트의 매핑 관계에 따르면 제2 목표 프로세싱 코어는 12개 데이터 비트 중 세번째 비트이므로, 목표 저장 주소의 세번째 비트를 1로 조정하기 위해, 001000000000와 같은 형태의 제3 목표 캐시 데이터 및 목표 마스크 정보를 구성할 수 있고, 상기 목표 저장 주소에서 상기 제2 목표 프로세싱 코어의 커널 식별자를 추가로 저장한다.
S5100은 상기 제2 캐시 장치의 기록 포트 그룹을 통해 상기 목표 저장 주소, 상기 제3 목표 캐시 메모리 및 상기 목표 마스크 정보를 기록하여, 상기 제2 캐시 장치에 상기 제2 목표 인출 명령어 누락 식별자에 매칭되는 제2 목표 프로세싱 코어의 커널 식별자를 저장하는 단계이다.
S5110은 상기 제2 목표 프로세싱 코어 및 기 설정된 프로세싱 코어와 캐시 데이터의 대응되는 데이터 비트의 매핑 관계에 따라 제2 목표 캐시 데이터를 생성하는 단계이다.
상기 제2 목표 누락 명령어 식별자가 제1 캐시 장치에 의해 저장된 적이 없기 때문에, 코어와 캐시 메모리에 대응되는 데이터 비트의 매핑 관계를 직접 처리하여 상응하는 제2 목표 캐시 데이터를 생성할 수 있다.
위 예시에 이어서, 제2 목표 프로세싱 코어는 12개 데이터 비트 중 세번째 비트이므로, 0010000000000과 같은 제2 목표 캐시 데이터를 구성할 수 있다.
S5120은 제2 캐시 장치의 푸시-인 포트를 통해 상기 제2 목표 캐시 데이터를 상기 제2 캐시 장치의 제1 대기 행렬 또는 제2 대기 행렬에 푸시-인하는 단계이다.
본 발명 실시예의 기술 방안은 아이캐시에 제1 캐시 장치를 설치하여, 명령어 누락 발생 시, 시작되지 않은 명령어 누락 식별자 및 버스에 의해 응답되었으나 아직 라이트 백 되지 않은 명령어 누락 식별자를 동시에 저장함으로써, 캐시 장치의 사용 수량을 크게 줄이고, 또한 제2 캐시 장치의 기록 포트 그룹과 읽기 포트를 통해, 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자를 동기식 캐싱 또는 판독할 수 있으므로, 레지스터 그룹을 다시 사용하여 상기 정보를 저장할 필요가 없어서 복잡한 로직 제어를 줄였으며;
또한 제2 캐시 장치의 기록 포트 그룹을 통해 동일한 명령어 누락에 대한 멀티 코어 프로세서의 서로 다른 프로세싱 코어의 명령어 인출 요청을 수신했을 때, 상기 각각의 프로세싱 코어의 정보를 모두 동일한 저장 주소에 기록함으로써, 제한된 저장 공간을 최대한으로 재사용하고, 처리 성능을 향상시킬 수 있다. 또한 멀티 코어 프로세서가 외부 명령어 저장 장치로 반복적인 명령어 인출 요청을 전송하는 것을 방지하여, 멀티 코어 프로세서의 불필요한 시간 지연 대기를 크게 줄임으로써, 멀티 코어 프로세서의 성능을 향상시켰다.
상기 실시예를 기초로,
제1 캐시 장치의 제1 대기 행렬에 캐시 데이터가 없는 경우, 제1 캐시 장치의 제1 empty-full 상태 플래그 비트 그룹의 empty 상태 플래그 비트를 목표 레벨 값으로 설정하는 단계;
제1 캐시 장치의 제1 대기 행렬이 가득 찬 경우, 제1 캐시 장치의 제1 empty-full 상태 플래그 비트 그룹의 full 상태 플래그 비트를 목표 레벨 값으로 설정하는 단계;
제1 캐시 장치의 제2 대기 행렬에 캐시 데이터가 없는 경우, 제1 캐시 장치의 제2 empty-full 상태 플래그 비트 그룹의 empty 상태 플래그 비트를 목표 레벨 값으로 설정하는 단계; 및
제1 캐시 장치의 제2 대기 행렬이 가득 찬 경우, 제1 캐시 장치의 제2 empty-full 상태 플래그 비트 그룹의 full 상태 플래그 비트를 목표 레벨 값으로 설정하는 단계 중 적어도 하나를 더 포함할 수 있다.
상기 방법은, 상기 제1 캐시 장치의 제1 empty-full 상태 플래그 비트 그룹 또는 제2 empty-full 상태 플래그 비트 그룹의 full 상태 플래그 비트가 목표 레벨 값으로 감지된 경우, 더 이상 멀티 코어 프로세서 중 그 어떤 프로세싱 코어의 인출 명령어 요청도 수신하지 않는 단계를 더 포함할 수 있다.
제6 실시예
도 6은 본 발명의 제6 실시예에서 제공한 데이터 처리 장치의 구조도를 개략적으로 나타내며, 도 6과 같이 상기 데이터 처리 장치(600)는 본 발명의 임의 실시예에서 제공한 명령어 처리 시스템 중 아이캐시에 의해 실행되고, 상기 장치는,
외부 명령어 저장 장치가 empty 상태에 처한 것이 감지되면, 제1 캐시 장치의 제1 대기 행렬로부터 누락 명령어 식별자를 인출하고, 제1 팝업 포트를 통해 팝업시켜 외부 명령어 저장 장치에 제공하는 제1 팝업 처리 모듈(610);
제1 목표 누락 명령어 식별자에 대한 외부 명령어 저장 장치가 피드백한 라이트 백 명령어가 감지되면, 제1 캐시 장치의 제2 대기 행렬로부터 상기 제1 목표 누락 명령어 식별자를 인출하여, 상기 제1 캐시 장치의 제2 팝업 포트를 통해 팝업시키는 제2 팝업 처리 모듈(620);
제2 캐시 장치로부터 상기 제1 목표 누락 명령어 식별자에 매칭되는 제1 목표 캐시 데이터를 인출하여, 상기 제2 캐시 장치의 제2 팝업 포트를 통해 팝업시키는 제3 팝업 처리 모듈(630);
상기 제1 목표 캐시 데이터에 따라, 상기 제1 목표 인출 명령어 누락 식별자에 매칭되는 제1 목표 프로세싱 코어의 제1 목표 커널 식별자를 식별하고, 상기 제1 목표 커널 식별자에 매칭되는 프로세싱 코어에 상기 라이트 백 명령어를 전송하는 라이트 백 명령어 전송 모듈(640)을 포함한다.
본 실시예에서 제1 캐시 장치에 설정된 2개의 대기 행렬과 서로 다른 대기 행렬에 대한 팝업 포트를 통해, 아직 시작되지 않은 명령어 누락 식별자 및 버스에 의해 응답되었으나 라이트 백 되지 않은 명령어 누락 식별자를 각각 팝업 처리를 할 수 있으므로, 아이캐시에 필요한 캐시 장치의 수량을 크게 감소시키고; 또한 인출 명령어 누락 식별자에 매칭되는 프로세싱 코어의 커널 식별자를 레지스터 그룹을 다시 사용하여 상기 정보를 저장할 필요 없이, 제2 캐시 장치의 팝업 포트를 통해 동시에 팝업시킬 수 있으므로 복잡한 로직 제어를 감소시킬 수 있다.
상기 각 실시예를 기초로 장치는 제1 누락 명령어 식별자 기록 모듈을 더 포함할 수 있고, 이는,
제2 목표 프로세싱 코어에서 제2 목표 누락 명령어 식별자에 대한 인출 명령어 누락이 발생한 것을 감지한 경우, 제1 캐시 장치의 읽기 포트를 통해 제1 대기 행렬 및 제2 대기 행렬에 저장된 모든 누락 명령어 식별자를 읽어 오고;
상기 제1 캐시 장치의 제1 대기 행렬과 제2 대기 행렬에 상기 제2 목표 누락 명령어 식별자가 저장되어 있지 않은 경우, 상기 제2 목표 누락 명령어 식별자를 상기 제1 대기 행렬 및 상기 제2 대기 행렬에 동시에 저장하고;
상기 제2 목표 프로세싱 코어 및 기 설정된 프로세싱 코어와 캐시 데이터의 대응되는 데이터 비트의 매핑 관계에 따라 제2 목표 캐시 데이터를 생성하며;
제2 캐시 장치의 푸시-인 포트를 통해 상기 제2 목표 캐시 데이터를 상기 제2 캐시 장치의 제1 대기 행렬 또는 제2 대기 행렬에 푸시-인하도록 구성된다.
상기 각 실시예를 기초로, 장치는 제2 누락 명령어 식별자 기록 모듈을 더 포함할 수 있고, 이는,
제1 캐시 장치의 읽기 포트로부터 제1 대기 행렬 및 제2 대기 행렬에 저장된 모든 누락 명령어 식별자를 읽어 온 후, 상기 제1 캐시 장치의 제1 대기 행렬 또는 제2 대기 행렬에 상기 제2 목표 누락 명령어 식별자가 저장되어 있는 경우, 상기 제1 캐시 장치에서 상기 제2 목표 누락 명령어 식별자의 목표 저장 주소를 획득하고;
상기 제2 목표 프로세싱 코어 및 기 설정된 프로세싱 코어와 캐시 데이터의 대응되는 데이터 비트의 매핑 관계에 따라, 제3 목표 캐시 데이터 및 목표 마스크 정보를 생성하며;
상기 제2 캐시 장치의 기록 포트 그룹을 통해 상기 목표 저장 주소, 상기 제3 목표 캐시 데이터 및 상기 목표 마스크 정보를 기록함으로써, 상기 제2 캐시 장치에 상기 제2 목표 인출 명령어 누락 식별자에 매칭되는 제2 목표 프로세싱 코어의 커널 식별자를 저장하도록 구성된다.
상기 각 실시예를 기초로,
제1 캐시 장치의 제1 대기 행렬에 캐시 데이터가 없는 경우, 제1 캐시 장치의 제1 empty-full 상태 플래그 비트 그룹의 empty 상태 플래그 비트를 목표 레벨 값으로 설정하는 제1 empty 상태 플래그 비트 설정 모듈;
제1 캐시 장치의 제1 대기 행렬이 가득 찬 경우, 제1 캐시 장치의 제1 empty-full 상태 플래그 비트 그룹의 full 상태 플래그 비트를 목표 레벨 값으로 설정하는 제1 full 상태 플래그 비트 설정 모듈;
제1 캐시 장치의 제2 대기 행렬에 캐시 데이터가 없는 경우, 제1 캐시 장치의 제2 empty-full 상태 플래그 비트 그룹의 empty 상태 플래그 비트를 목표 레벨 값으로 설정하는 제2 empty 상태 플래그 비트 설정 모듈; 및
제1 캐시 장치의 제2 대기 행렬이 가득 찬 경우, 제1 캐시 장치의 제2 empty-full 상태 플래그 비트 그룹의 full 상태 플래그 비트를 목표 레벨 값으로 설정하는 제2 full 상태 플래그 비트 설정 모듈 중 적어도 하나를 더 포함한다.
상기 각 실시예를 기초로, 인출 명령어 요청 포기 처리 모듈을 더 포함할 수 있고, 이는,
상기 제1 캐시 장치의 제1 empty-full 상태 플래그 비트 그룹 또는 제2 empty-full 상태 플래그 비트 그룹의 full 상태 플래그 비트가 목표 레벨 값으로 감지된 경우, 멀티 코어 프로세서 중 어느 한 프로세싱 코어의 인출 명령어 요청을 더 이상 수신하지 않도록 구성된다.
본 발명의 실시예에 따라, 본 발명은 컴퓨터 프로그램이 저장된 판독 가능한 저장 매체를 제공하고, 상기 프로그램이 프로세서에 의해 실행될 때, 본 발명의 모든 실시예에서 제공한 데이터 처리 방법을 구현한다. 즉, 상기 프로그램이 프로세서에 의해 실행될 때,
외부 명령어 저장 장치가 empty 상태일 때, 제1 캐시 장치의 제1 대기 행렬로부터 누락 명령어 식별자를 인출하고, 외부 명령어 저장 장치에 제공하기 위해 제1 팝업 포트를 통해 팝업시키고; 외부 명령어 저장 장치의 제1 목표 누락 명령어 식별자에 대한 피드백에 라이트 백 명령어가 감지될 경우, 제1 캐시 장치의 제2 대기 행렬로부터 상기 제1 목표 누락 명령어 식별자를 인출하여, 상기 제1 캐시 장치의 제2 팝업 포트를 통해 팝업시키며; 제2 캐시 장치로부터 상기 제1 목표 누락 명령어 식별자에 매칭되는 제1 목표 캐시 데이터를 인출하고, 상기 제2 캐시 장치의 제1 팝업 포트 또는 제2 팝업 포트를 통해 팝업시키고; 상기 제1 목표 캐시 데이터에 따라, 상기 제1 목표 인출 명령어 누락 식별자에 매칭되는 제1 목표 프로세싱 코어의 제1 목표 커널 식별자를 식별하고, 상기 제1 목표 프로세싱 코어에 상기 라이트 백 명령어를 전송하는 것을 구현한다.
본 발명 실시예의 컴퓨터 판독 가능한 저장 매체는 하나 또는 복수의 컴퓨터 판독 가능한 매체의 임의 조합일 수 있다. 컴퓨터 판독 가능한 매체는 컴퓨터 판독 가능 신호 매체 또는 컴퓨터 판독 가능한 저장 매체일 수 있다. 컴퓨터 판독 가능한 저장 매체는 전기, 자기, 빛, 전자, 적외선 또는 반도체의 시스템, 장치 또는 부품 또는 이들의 임의 조합일 수 있되 여기에 국한되지 않는다. 컴퓨터 판독 가능한 저장 매체의 더 구체적인 예(완전하지 않은 리스트)는 하나 또는 복수의 도선을 갖춘 전기 연결, 휴대용 컴퓨터 디스크, 하드 디스크, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(Read Only Memory, ROM), 비휘발성 반도체 기억장치(Erasable Programmable Read Only Memory, EPROM), 플래시 메모리, 파이버, 읽기용 콤팩트 디스크 기억장치(CD-ROM), 광 메모리, 자기 메모리 또는 이들의 적절한 조합을 포함할 수 있되 여기에 국한되지 않는다. 본 명세서에서, 컴퓨터 판독 가능한 저장 매체는 어떤 프로그램을 포함하거나 저장한 유형의 매체일 수 있고, 상기 프로그램은 명령어 실행 시스템, 장치 또는 부재에 의해 사용되거나 이들과 결합되어 사용될 수 있다.
컴퓨터 판독 가능 신호 매체는 기저대역에서 또는 반송파의 일 부분으로써 전송되는 컴퓨터 판독 가능한 프로그램 코드를 탑재한 데이터 신호를 포함할 수 있다. 이렇게 전송되는 데이터 신호는 전자기 신호, 광신호 또는 상술한 것의 임의의 적절한 조합을 포함하는 다양한 형식을 사용할 수 있되 이에 제한되지 않는다. 컴퓨터 판독 가능 신호 매체는 컴퓨터 판독 가능한 저장 매체 외 임의의 컴퓨터 판독 가능한 매체일 수도 있으며, 상기 컴퓨터 판독 가능한 매체는 명령어 실행 시스템, 장치 또는 부품에 의해 사용되거나 이들과 결합하여 사용되는 프로그램을 발송, 전파 또는 전송할 수 있다.
컴퓨터 판독 가능한 매체에 포함된 프로그램 코드는 무선, 전선, 광케이블, 주파수(Radio Frequency, RF) 등 또는 이들의 임의의 적절한 조합을 포함하되 이에 제한되지 않는 임의의 적절한 매체로 전송될 수 있다.
하나 또는 복수 종류의 프로그래밍 언어 또는 이들의 조합으로 본 발명 실시예의 작업을 수행하는 컴퓨터 프로그램 코드를 프로그래밍할 수 있고, 상기 프로그래밍 언어는 Java, Smalltalk, C++와 같은 객체를 위한 프로그래밍 언어를 포함하고, C 언어 또는 이와 유사한 절차식 프로그래밍 언어도 포함한다. 프로그램 코드는 전체적으로 사용자 컴퓨터에서 실행되거나, 사용자 컴퓨터에서 부분적으로 실행되거나, 하나의 독립된 소프트웨어 패키지로 실행되거나, 일부는 사용자의 컴퓨터에서 그리고 일부는 원격 컴퓨터에서 실행되거나 또는 전체가 원격 컴퓨터 또는 서버에서 실행될 수 있다. 원격 컴퓨터와 연관된 환경에서, 원격 컴퓨터는 LAN 또는 WAN을 포함하되 이에 제한되지 않는 임의의 네트워크를 통해 사용자 컴퓨터에 연결되거나, 외부 컴퓨터(예컨대, 인터넷 제공업체를 통해 인터넷에 연결)에 연결될 수 있다.
상기 설명된 다양한 형식의 순서에 따라, 단계의 재배치, 추가 또는 삭제가 가능함을 마땅히 이해하여야 한다. 예를 들어 본 발명의 기술 방안에서 기대되는 결과를 구현할 수만 있다면, 본 명세서에 기재된 각각의 단계는 병행으로 수행될 수도 있고, 순차적으로 수행될 수도 있으며, 기타 다른 순서로 수행될 수도 있는 것으로, 이에 대해 본 명세서에서 제한하지 않는다.
상기 구체적인 실시예는 본 발명의 보호 범위를 제한하지 않는다. 해당 분야의 기술자는 설계 요구와 다른 요소에 따라, 다양한 수정, 조합, 하위 조합 및 대체를 할 수 있다고 이해하여야 한다. 본 발명의 정신과 원칙 범위 내에서의 모든 수정, 균등한 대체 및 개선 등은 모두 본 발명의 보호 범위 안에 포함되어야 한다.

Claims (15)

  1. 제1 대기 행렬, 제2 대기 행렬, 기록 포트 그룹, 읽기 포트, 제1 팝업 포트, 제2 팝업 포트 및 푸시-인 포트를 포함하는 캐시 장치로서,
    상기 기록 포트 그룹은 제1 대기 행렬 및/또는 제2 대기 행렬의 설정된 저장 주소에 캐시 데이터를 기록하고;
    상기 읽기 포트는 제1 대기 행렬 및/또는 제2 대기 행렬로부터 모든 캐시 데이터를 한 번에 판독하며;
    상기 푸시-인 포트는, 인출 명령어 누락 발생시, 상기 제1 대기 행렬 및/또는 제2 대기 행렬에 상기 인출 명령어 누락에 대응하는 누락 명령어 식별자의 캐시 데이터를 푸시-인하고;
    상기 제1 팝업 포트는 상기 제1 대기 행렬로부터 상기 누락 명령어 식별자의 캐시 데이터를 팝업시키며;
    상기 제2 팝업 포트는 상기 제2 대기 행렬로부터 상기 누락 명령어 식별자의 캐시 데이터를 팝업시키는 것을 특징으로 하는 캐시 장치.
  2. 제1 항에 있어서,
    상기 기록 포트 그룹은 구체적으로 데이터 기록 포트 및 주소 기록 포트를 포함하고;
    상기 데이터 기록 포트는 기록된 캐시 데이터를 수신하며;
    상기 주소 기록 포트는 상기 데이터 기록 포트에서 기록한 캐시 데이터의 상기 제1 대기 행렬 및/또는 제2 대기 행렬에 기록된 저장 주소를 수신하는 것을 특징으로 하는 캐시 장치.
  3. 제2 항에 있어서,
    상기 기록 포트 그룹은 마스크 기록 포트를 더 포함하고;
    상기 마스크 기록 포트는 상기 데이터 기록 포트에서 기록한 캐시 데이터의 마스크 정보를 수신하며;
    상기 마스크 정보는 상기 저장 주소에 기록된 캐시 데이터의 데이터 비트를 나타내고, 상기 마스크 기록 포트 및 상기 데이터 기록 포트의 비트 너비가 동일한 것을 특징으로 하는 캐시 장치.
  4. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 캐시 장치는 제1 empty-full 상태 플래그 비트 그룹 및 제2 empty-full 상태 플래그 비트 그룹을 더 포함하고;
    상기 제1 empty-full 상태 플래그 비트 그룹은 상기 제1 대기 행렬의 캐시 데이터의 저장 상태를 나타내고;
    상기 제2 empty-full 상태 플래그 비트 그룹은 상기 제2 대기 행렬의 캐시 데이터의 저장 상태를 나타내는 것을 특징으로 하는 캐시 장치.
  5. 제1 항에 따른 제1 캐시 장치 및 제2 캐시 장치를 포함하는 것을 특징으로 하는 아이캐시.
  6. 제5 항에 따른 아이캐시, 멀티 코어 프로세서 및 외부 명령어 저장 장치를 포함하는 명령어 처리 시스템으로서,
    상기 아이캐시는 상기 외부 명령어 저장 장치 및 상기 멀티 코어 프로세서의 복수의 프로세싱 코어와 각각 연결되고, 상기 아이캐시는 버스를 통해 상기 외부 명령어 저장 장치와 서로 연결되는 것을 특징으로 하는 명령어 처리 시스템.
  7. 제6 항에 있어서,
    상기 멀티 코어 프로세서는 인출 명령어 누락이 발생할 경우, 아이캐시에 누락 명령어 식별자를 제공하고;
    상기 외부 명령어 저장 장치는 명령어를 저장하며;
    상기 아이캐시는 상기 외부 명령어 저장 장치에 누락 명령어 식별자를 전송하고, 상기 외부 명령어 저장 장치가 버스를 통해 응답하고 라이트 백 하는 명령어를 획득하는 것을 특징으로 하는 명령어 처리 시스템.
  8. 제7 항에 있어서,
    상기 제1 캐시 장치는 제1 대기 행렬을 이용하여 인출 명령어 누락이 발생하였으나 외부 명령어 저장 장치에 의해 응답되지 않은 인출 명령어 누락 식별자를 캐싱하고, 제2 대기 행렬을 이용하여 외부 명령어 저장 장치에 의해 응답되었으나 라이트 백 되지 않은 인출 명령어 누락 식별자를 캐싱하며;
    상기 제2 캐시 장치는 상기 제1 캐시 장치 내의 인출 명령어 누락 식별자의 저장 주소에 따라, 제1 대기 행렬 또는 제2 대기 행렬을 이용하여 상기 인출 명령어 누락 식별자와 매칭되는 프로세싱 코어의 커널 식별자를 대응하여 저장하는 것을 특징으로 하는 명령어 처리 시스템.
  9. 제6 항에 따른 명령어 처리 시스템 중 아이캐시에 의해 수행되는 데이터 처리 방법으로서,
    외부 명령어 저장 장치가 empty 상태에 처한 것이 감지되면, 제1 캐시 장치의 제1 대기 행렬로부터 누락 명령어 식별자를 인출하고, 제1 팝업 포트를 통해 팝업시켜 외부 명령어 저장 장치에 제공하는 단계;
    제1 목표 누락 명령어 식별자에 대해 외부 명령어 저장 장치가 피드백한 라이트 백 명령어가 감지되면, 제1 캐시 장치의 제2 대기 행렬로부터 제1 목표 누락 명령어 식별자를 인출하여, 상기 제1 캐시 장치의 제2 팝업 포트를 통해 팝업시키는 단계;
    제2 캐시 장치로부터 상기 제1 목표 누락 명령어 식별자와 매칭되는 제1 목표 캐시 데이터를 인출하여, 상기 제2 캐시 장치의 제1 팝업 포트 또는 제2 팝업 포트를 통해 팝업시키는 단계; 및
    상기 제1 목표 캐시 데이터에 따라, 상기 제1 목표 누락 명령어 식별자에 매칭되는 제1 목표 프로세싱 코어의 제1 목표 커널 식별자를 식별하고, 상기 제1 목표 프로세싱 코어에 상기 라이트 백 명령어를 전송하는 단계;를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  10. 제9 항에 있어서,
    제2 목표 프로세싱 코어에서 제2 목표 누락 명령어 식별자에 대한 인출 명령어 누락이 발생한 것을 감지한 경우, 제1 캐시 장치의 읽기 포트로부터 제1 대기 행렬 및 제2 대기 행렬에 저장된 모든 누락 명령어 식별자를 판독하는 단계;
    상기 제1 캐시 장치의 제1 대기 행렬 및 제2 대기 행렬에 상기 제2 목표 누락 명령어 식별자가 저장되어 있지 않다면, 상기 제2 목표 누락 명령어 식별자를 상기 제1 대기 행렬 및 상기 제2 대기 행렬에 동시에 저장하는 단계;
    상기 제2 목표 프로세싱 코어 및 기 설정된 프로세싱 코어와 캐시 데이터 중 대응되는 데이터 비트의 매핑 관계에 따라, 제2 목표 캐시 데이터를 생성하는 단계; 및
    제2 캐시 장치의 푸시-인 포트를 통해 상기 제2 목표 캐시 데이터를 상기 제2 캐시 장치의 제1 대기 행렬 또는 제2 대기 행렬에 푸시-인하는 단계;를 더 포함하는 것을 특징으로 하는 데이터 처리 방법.
  11. 제10 항에 있어서,
    제1 캐시 장치의 읽기 포트로부터 제1 대기 행렬 및 제2 대기 행렬에 저장된 모든 누락 명령어 식별자를 판독하는 단계 이후,
    상기 제1 캐시 장치의 제1 대기 행렬 또는 제2 대기 행렬에 상기 제2 목표 누락 명령어 식별자가 저장되어 있는 경우, 상기 제1 캐시 장치에서 제2 목표 누락 명령어 식별자의 목표 저장 주소를 획득하는 단계;
    상기 제2 목표 프로세싱 코어 및 기 설정된 프로세싱 코어와 캐시 데이터 중 대응되는 데이터 비트의 매핑 관계에 따라, 제3 목표 캐시 데이터 및 목표 마스크 정보를 생성하는 단계; 및
    상기 제2 캐시 장치의 기록 포트 그룹을 통해 상기 목표 저장 주소, 상기 제3 목표 캐시 데이터 및 상기 목표 마스크 정보를 기록함으로써, 상기 제2 캐시 장치에 상기 제2 목표 누락 명령어 식별자에 매칭되는 제2 목표 프로세싱 코어의 커널 식별자를 저장하는 단계;를 더 포함하는 것을 특징으로 하는 데이터 처리 방법.
  12. 제9 항 내지 제11 항 중 어느 한 항에 있어서,
    제1 캐시 장치의 제1 대기 행렬에 캐시 데이터가 없는 경우, 제1 캐시 장치의 제1 empty-full 상태 플래그 비트 그룹의 empty 상태 플래그 비트를 목표 레벨 값으로 설정하는 단계;
    제1 캐시 장치의 제1 대기 행렬이 가득 찬 경우, 제1 캐시 장치의 제1 empty-full 상태 플래그 비트 그룹의 full 상태 플래그 비트를 목표 레벨 값으로 설정하는 단계;
    제1 캐시 장치의 제2 대기 행렬에 캐시 데이터가 없는 경우, 제1 캐시 장치의 제2 empty-full 상태 플래그 비트 그룹의 empty 상태 플래그 비트를 목표 레벨 값으로 설정하는 단계; 및
    제1 캐시 장치의 제2 대기 행렬이 가득 찬 경우, 제1 캐시 장치의 제2 empty-full 상태 플래그 비트 그룹의 full 상태 플래그 비트를 목표 레벨 값으로 설정하는 단계 중 적어도 하나를 더 포함하는 것을 특징으로 하는 데이터 처리 방법.
  13. 제12 항에 있어서,
    상기 제1 캐시 장치의 제1 empty-full 상태 플래그 비트 그룹 또는 제2 empty-full 상태 플래그 비트 그룹의 full 상태 플래그 비트가 목표 레벨 값으로 감지된 경우, 더 이상 멀티 코어 프로세서 중 그 어떤 프로세싱 코어의 인출 명령어 요청도 수신하지 않는 단계를 더 포함하는 것을 특징으로 하는 데이터 처리 방법.
  14. 제6 항에 따른 명령어 처리 시스템 내의 아이캐시에 의해 실행되는 데이터 처리 장치에 있어서,
    외부 명령어 저장 장치가 empty 상태에 처한 것이 감지되면, 제1 캐시 장치의 제1 대기 행렬로부터 누락 명령어 식별자를 인출하고, 제1 팝업 포트를 통해 팝업시켜 외부 명령어 저장 장치에 제공하는 제1 팝업 처리 모듈;
    제1 목표 누락 명령어 식별자에 대한 외부 명령어 저장 장치가 피드백한 라이트 백 명령어가 감지되면, 제1 캐시 장치의 제2 대기 행렬로부터 상기 제1 목표 누락 명령어 식별자를 인출하여, 상기 제1 캐시 장치의 제2 팝업 포트를 통해 팝업시키는 제2 팝업 처리 모듈;
    제2 캐시 장치로부터 상기 제1 목표 누락 명령어 식별자에 매칭되는 제1 목표 캐시 데이터를 인출하여, 상기 제2 캐시 장치의 제2 팝업 포트를 통해 팝업시키는 제3 팝업 처리 모듈; 및
    상기 제1 목표 캐시 데이터에 따라, 상기 제1 목표 누락 명령어 식별자에 매칭되는 제1 목표 프로세싱 코어의 제1 목표 커널 식별자를 식별하고, 상기 제1 목표 커널 식별자에 매칭되는 프로세싱 코어에 상기 라이트 백 명령어를 전송하는 라이트 백 명령어 전송 모듈;을 포함하는 것을 특징으로 하는 데이터 처리 장치.
  15. 컴퓨터 명령어가 저장된 비-일시적 컴퓨터 판독 가능한 저장 매체에 있어서,
    상기 컴퓨터 명령어는 상기 컴퓨터가 제9 항 내지 제11 항 중 어느 한 항에 따른 방법을 수행하도록 하는 것을 특징으로 하는 저장 매체.
KR1020200122452A 2020-02-28 2020-09-22 캐시 장치, 캐시, 시스템, 데이터 처리 방법, 장치 및 매체 KR102454695B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010130183.4 2020-02-28
CN202010130183.4A CN113326020A (zh) 2020-02-28 2020-02-28 缓存器件、缓存器、系统、数据处理方法、装置及介质

Publications (2)

Publication Number Publication Date
KR20210110156A KR20210110156A (ko) 2021-09-07
KR102454695B1 true KR102454695B1 (ko) 2022-10-14

Family

ID=72517147

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200122452A KR102454695B1 (ko) 2020-02-28 2020-09-22 캐시 장치, 캐시, 시스템, 데이터 처리 방법, 장치 및 매체

Country Status (5)

Country Link
US (1) US11243767B2 (ko)
EP (1) EP3872642B1 (ko)
JP (1) JP6944576B2 (ko)
KR (1) KR102454695B1 (ko)
CN (1) CN113326020A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115994102A (zh) * 2021-10-18 2023-04-21 长鑫存储技术有限公司 写入缓存电路、数据写入方法和存储器
US11714645B2 (en) 2021-10-18 2023-08-01 Changxin Memory Technologies, Inc. Write cache circuit, data write method, and memory

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6532531B1 (en) * 1996-01-24 2003-03-11 Sun Microsystems, Inc. Method frame storage using multiple memory circuits
US7383403B1 (en) * 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers in a fine grain multithreaded processor

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0981458A (ja) 1995-03-17 1997-03-28 Motorola Inc データ処理システムにおけるキャッシュのアクセス方法
US20050102474A1 (en) 2003-11-06 2005-05-12 Sridhar Lakshmanamurthy Dynamically caching engine instructions
US10331582B2 (en) * 2017-02-13 2019-06-25 Intel Corporation Write congestion aware bypass for non-volatile memory, last level cache (LLC) dropping from write queue responsive to write queue being full and read queue threshold wherein the threshold is derived from latency of write to LLC and main memory retrieval time

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6532531B1 (en) * 1996-01-24 2003-03-11 Sun Microsystems, Inc. Method frame storage using multiple memory circuits
US7383403B1 (en) * 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers in a fine grain multithreaded processor

Also Published As

Publication number Publication date
EP3872642B1 (en) 2022-08-24
EP3872642A1 (en) 2021-09-01
KR20210110156A (ko) 2021-09-07
US20210271475A1 (en) 2021-09-02
JP2021140732A (ja) 2021-09-16
JP6944576B2 (ja) 2021-10-06
CN113326020A (zh) 2021-08-31
US11243767B2 (en) 2022-02-08

Similar Documents

Publication Publication Date Title
CN110275841B (zh) 访问请求处理方法、装置、计算机设备和存储介质
US10019181B2 (en) Method of managing input/output(I/O) queues by non-volatile memory express(NVME) controller
US9563367B2 (en) Latency command processing for solid state drive interface protocol
US8607003B2 (en) Memory access to a dual in-line memory module form factor flash memory
US7234004B2 (en) Method, apparatus and program product for low latency I/O adapter queuing in a computer system
KR102454695B1 (ko) 캐시 장치, 캐시, 시스템, 데이터 처리 방법, 장치 및 매체
CN107391400B (zh) 一种支持复杂访存指令的内存扩展方法和系统
CN109241128B (zh) 一种过期事件自动触发方法及系统
US8667223B2 (en) Shadow registers for least recently used data in cache
CN110851276A (zh) 一种业务请求处理方法、装置、服务器和存储介质
CN112395097A (zh) 一种消息处理方法、装置、设备和存储介质
WO2022032990A1 (zh) 一种命令信息传输方法、系统、装置及可读存储介质
US20050256998A1 (en) Bus bridge device
CN114584618A (zh) 信息交互方法、装置、设备、存储介质和系统
CN110515749B (zh) 信息发送的队列调度的方法、装置、服务器和存储介质
US8572569B2 (en) Modified implementation of a debugger wire protocol and command packet
CN114036085B (zh) 基于ddr4的多任务读写调度方法、计算机设备及存储介质
US8239447B2 (en) Retrieving data using an asynchronous buffer
CN110445874B (zh) 一种会话处理方法、装置、设备和存储介质
CN116601616A (zh) 一种数据处理装置、方法及相关设备
US10083124B1 (en) Translating virtual memory addresses to physical addresses
CN112732176B (zh) 基于fpga的ssd访问方法及装置、存储系统及存储介质
US7818627B2 (en) Systems and methods for gathering debug information
US20180088839A1 (en) Processing input/output operations in a channel using a control block
CN114257575B (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