KR20040101231A - Method of prefetching data/instructions related to externally triggered events - Google Patents

Method of prefetching data/instructions related to externally triggered events Download PDF

Info

Publication number
KR20040101231A
KR20040101231A KR10-2004-7012736A KR20047012736A KR20040101231A KR 20040101231 A KR20040101231 A KR 20040101231A KR 20047012736 A KR20047012736 A KR 20047012736A KR 20040101231 A KR20040101231 A KR 20040101231A
Authority
KR
South Korea
Prior art keywords
data
processor
cache
memory
scheduler
Prior art date
Application number
KR10-2004-7012736A
Other languages
Korean (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 KR20040101231A publication Critical patent/KR20040101231A/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • 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
    • 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

Landscapes

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

Abstract

본 방법은 하부 구조(18)에 의해 취급될 데이터/명령을 수신하기 위한 입력 인터페이스(20)와 취급된 후의 데이터를 전송하기 위한 출력 인터페이스(22)를 갖는 상기 하부 구조, 상기 입력 인터페이스에 의해 데이터/명령이 수신된 때에 데이터/명령을 저장하기 위한 메모리(14), 적어도 데이터/명령의 일부를 처리하기 위한 프로세서(10)로서 처리 전에 상기 데이터/명령이 저장되는 캐쉬를 갖는 프로세서, 및 상기 프로세서로 순차 작업을 할당하기 위한 외부 소스(26)를 포함하는 시스템 내에서 외부적으로 트리거링되는 이벤트와 연관된 데이터/명령을 예비 인출하는 방법이다. 본 방법은, 상기 프로세서가 이전의 작업을 수행하는 동안 수행되는, 상기 프로세서에 의해 처리될 데이터/명령의 상기 메모리 내의 위치를 결정하는 단계, 상기 메모리 위치의 어드레스를 상기 캐쉬로 지정하는 단계, 상기 메모리 위치의 컨텐츠를 인출하여 이를 상기 캐쉬에 기록하는 단계, 및 상기 데이터/명령을 처리하는 작업을 상기 프로세서로 할당하는 단계를 포함한다.The method is characterized by the infrastructure having an input interface 20 for receiving data / commands to be handled by infrastructure 18 and an output interface 22 for transmitting data after being handled, data by the input interface. A memory 14 for storing data / command when a command is received, a processor having at least a cache in which the data / command is stored before processing, as a processor 10 for processing a portion of the data / command, and the processor A method of prefetching data / commands associated with an externally triggered event in a system that includes an external source 26 for assigning a sequential task to a network. The method includes determining a location in the memory of data / instructions to be processed by the processor, performed while the processor is performing a previous task, designating an address of the memory location as the cache, Retrieving content from a memory location and writing it to the cache; and allocating a task to process the data / command to the processor.

Description

외부적으로 트리거링되는 이벤트와 연관된 데이터/명령을 예비 인출하는 방법 {METHOD OF PREFETCHING DATA/INSTRUCTIONS RELATED TO EXTERNALLY TRIGGERED EVENTS}How to prefetch data / commands associated with externally triggered events {METHOD OF PREFETCHING DATA / INSTRUCTIONS RELATED TO EXTERNALLY TRIGGERED EVENTS}

현재의 마이크로프로세서와 마이크로프로세서 코어의 효율성은 캐쉬의 효용에 크게 의존하는데, 이는 명령 시간 주기가 메모리 접근 시간보다 훨씬 작기 때문이다. 캐쉬는 메모리 접근의 국지성(locality)을 이용하는데, 이는 메모리 접근이 가까운 이전의 접근이 될 가능성이 보다 크다는 것이다.The efficiency of current microprocessors and microprocessor cores is highly dependent on the utility of the cache because the instruction time period is much smaller than the memory access time. The cache takes advantage of the locality of memory accesses, which means that memory accesses are more likely to be near previous accesses.

캐쉬는 새로운 컨텐츠를 갖는 선택된 영역(캐쉬 라인)을 로딩하기 위한 메커니즘, 캐쉬 제어기를 포함하고, 이를 위하여 오래된 엔트리를 버림으로써 이러한 동작을 위한 공간을 만든다. 캐쉬 제어기는 캐쉬 예비 인출 명령(예를 들면, 모든 파워PC용 장치를 위한 데이터 캐쉬 블록 터치)을 갖는 소프트웨어에 의해 실시간으로 작동될 수 있다. 더욱이, 캐쉬 제어기가 선형 전진 또는 연결된 데이터 구조와같은 일반적인 접근 패턴을 인식하는 방법이 있다. 불행하게도, 현재의 방법은 이러한 상황에서 필요한 메모리 컨텐츠가 이전의 처리와 연관되지 않는 외부적으로 트리거링되는 이벤트를 커버하지 않는다. 이런 경우에, 필요한 메모리 컨텐츠에 관한 지식은 단지 인터럽트 소스와 같은 이벤트의 소스, 스케줄러 또는 작업을 할당하는 다른 프로세서이다.The cache includes a mechanism for loading a selected area (cache line) with new content, a cache controller, to make room for this operation by discarding old entries. The cache controller can be operated in real time by software with cache prefetch instructions (eg, data cache block touch for all PowerPC devices). Moreover, there is a way for the cache controller to recognize common access patterns, such as linear forward or connected data structures. Unfortunately, current methods do not cover externally triggered events in which the required memory content is not associated with previous processing. In this case, the knowledge of the required memory content is simply the source of the event, such as the interrupt source, the scheduler or another processor that allocates the task.

네트워크 프로세서 내의 스케줄러와 같은 외부 소스가 이전의 처리된 데이터와 무관한 데이터를 처리하기 위한 프로세서를 인터럽트할 수 있는 시스템에서, 프로세서는 캐쉬 오류를 생성한다. 이것은 프로세서가 그것이 필요로 하는 데이터가 메모리로부터 캐쉬로 로딩될 때까지 처리를 중단함을 의미한다. 그러므로, 현재의 메모리 기술 및 400 MHz의 프로세서 클록 속도로는, 모든 캐쉬 오류가 36 프로세서 클록 주기와 연관되는데, 이는 약 40개의 명령을 의미한다. 현재의 기술 경향이 메모리 대기 시간(memory latency)보다는 프로세서 명령 속도에 있어서 더 활발한 증가세를 보여주기 때문에, 캐쉬 오류당 유실 명령의 숫자는 증가하게 된다.In systems where an external source, such as a scheduler within a network processor, can interrupt the processor for processing data that is not related to previously processed data, the processor generates a cache error. This means that the processor stops processing until the data it needs is loaded from memory into the cache. Therefore, with current memory technology and a processor clock speed of 400 MHz, all cache errors are associated with 36 processor clock cycles, which means about 40 instructions. As current technology trends show a more active increase in processor instruction speed than memory latency, the number of lost instructions per cache error increases.

본 발명은, 네트워크 프로세서 내의 스케줄러와 같은 외부 소스가 데이터/명령(data/instruction)이 이전의 작업과 연관되지 않는 작업을 처리하기 위한 프로세서를 인터럽트할 수 있는 시스템, 및 외부적으로 트리거링되는 이벤트에 연관된 데이터/명령을 예비 인출(prefetching)하는 방법에 관한 것이다.The present invention relates to a system in which an external source, such as a scheduler in a network processor, can interrupt a processor for processing a task in which data / instruction is not associated with a previous task, and an externally triggered event. A method of prefetching associated data / commands.

도 1은 본 발명에 따른 방법이 실행되는 네트워크 처리 시스템의 블록도.1 is a block diagram of a network processing system in which a method according to the invention is executed.

도 2는 본 발명에 따른 방법의 단계들을 도시하는 흐름도.2 is a flow chart showing the steps of the method according to the invention.

따라서, 본 발명의 주목적은 그 어드레스가 쉽게 결정될 수 있는 데이터에 대한 캐쉬 오류를 회피하기 위하여 외부적으로 트리거링되는 이벤트와 연관된 데이터/명령의 예비 인출 방법을 달성하는 것이다.Accordingly, it is a primary object of the present invention to achieve a method of prefetching data / commands associated with externally triggered events in order to avoid cache errors for data whose addresses can be easily determined.

따라서, 본 발명은, 하부 구조(infrastructure)에 의해 취급될 데이터/명령을 수신하기 위한 입력 인터페이스와 취급된 후의 데이터를 전송하기 위한 출력 인터페이스를 갖는 하부 구조, 입력 인터페이스에 의해 데이터/명령이 수신된 때에데이터/명령을 저장하기 위한 메모리, 적어도 데이터/명령의 일부를 처리하기 위한 프로세서로서 처리 전에 데이터/명령이 저장되는 캐쉬를 갖는 프로세서, 및 프로세서로 순차 작업을 할당하기 위한 외부 소스를 포함하는 시스템 내에서 외부적으로 트리거링되는 이벤트와 연관된 데이터/명령을 예비 인출하는 방법에 관한 것이다. 본 방법은 프로세서가 이전의 작업을 수행하는 동안 수행되는 하기의 단계들을 포함한다: 프로세서에 의해 처리될 데이터/명령의 메모리 내의 위치를 결정하는 단계, 이러한 메모리 위치의 어드레스를 캐쉬로 지정하는 단계, 메모리 위치의 컨텐츠를 인출하여 이를 캐쉬에 기록하는 단계, 및 데이터/명령을 처리하는 작업을 프로세서로 할당하는 단계.Accordingly, the present invention provides an infrastructure, having an input interface for receiving data / command to be handled by an infrastructure and an output interface for transmitting data after being handled, in which data / command is received by an input interface. A system comprising a memory for storing data / instructions at least, a processor for processing at least a portion of the data / instructions, the processor having a cache in which the data / instructions are stored prior to processing, and an external source for assigning sequential tasks to the processor; A method of prefetching data / commands associated with externally triggered events within. The method includes the following steps performed while the processor is performing a previous task: determining a location in memory of the data / instruction to be processed by the processor, addressing this memory location as a cache, Retrieving the contents of the memory location and writing it to the cache, and allocating a task to process the data / command to the processor.

본 발명의 상기 목적 및 다른 목적들, 특징들 및 장점들은 첨부된 도면과 함께 하기의 본 발명의 보다 상세한 설명을 읽음으로써 더 잘 이해될 것이다.The above and other objects, features and advantages of the present invention will be better understood by reading the following more detailed description of the invention in conjunction with the accompanying drawings.

본 시스템은 데이터/명령 캐쉬가 장착된 파워PC 프로세서 코어와 같은 프로세서 코어(10)를 포함한다. 시스템은, 예를 들면 모든 필요한 타이밍 신호, 리프레쉬 신호 등을 생성함으로써 버스 구조가 메모리로부터 독립할 수 있도록 하는 메모리 제어기(16)의 매개에 의해 명령은 물론 데이터를 포함하는 외부 메모리(14)(예를 들면, SDRAM)에 접속을 제공하는 프로세서 로컬 버스(Processor Local Bus;PLB)와 같은 고성능 버스(12)에 의해 구성된다.The system includes a processor core 10, such as a PowerPC processor core with a data / instruction cache. The system may include, for example, an external memory 14 (e.g., data containing instructions as well as data by means of a memory controller 16 that allows the bus structure to be independent of memory by generating all necessary timing signals, refresh signals, etc.). For example, it is configured by a high performance bus 12, such as a processor local bus (PLB) that provides access to the SDRAM.

버스(12) 및 메모리(14)는 또한 입력 인터페이스(20) 상의 네트워크로부터 수신되는 데이터 패킷을 처리하는 하부 구조(18)에 의해 사용된다. 하부 구조(18)는 패킷 큐에의 삽입 및 패킷 큐로부터의 삭제는 물론 패킷의 구성, 메모리 할당 및 해제를 포함하는 수신 및 전송을 담당한다.Bus 12 and memory 14 are also used by infrastructure 18 to process data packets received from the network on input interface 20. Infrastructure 18 is responsible for receiving and transmitting, including the configuration, memory allocation and freeing of packets, as well as insertions into and deletions from packet queues.

패킷 중 일부는 처리될 필요가 없고 출력 인터페이스에 의해 네트워크를 거쳐 직접적으로 전송된다. 다른 패킷은 프로세서(10)에 의해 처리되어야 한다. 패킷이 처리될 필요가 있는지 여부와 어떤 종류의 처리가 수행되어야 하는가의 결정은 룩업 및 분류 유닛(24)에 의해 행해진다. 데이터 패킷을 처리하기 위하여, 프로세서(10)는 몇가지 정보를 요한다. 이를 위하여, 패킷의 헤더 및 하부 구조(18) 내에서 생성된 부가 정보에 접근하여야 한다. 예를 들면, 하부 구조는 패킷이 도착할 수 있는 여러 포트를 가질 것이고, 프로세서는 어느 곳으로부터 패킷이 오는가에 관한 정보를 필요로 한다.Some of the packets do not need to be processed and are sent directly over the network by the output interface. The other packet must be processed by the processor 10. The determination of whether a packet needs to be processed and what kind of processing should be performed is made by the lookup and classification unit 24. In order to process the data packet, the processor 10 needs some information. For this purpose, it is necessary to access additional information generated within the header and infrastructure 18 of the packet. For example, the infrastructure will have several ports on which packets can arrive, and the processor needs information about where the packets come from.

스케줄러(26)는 하나 또는 여러 큐 내에서 프로세서에 의한 처리를 필요로 하는 모든 데이터 패킷을 취급한다. 이러한 큐는 스케줄러 내에 물리적으로 존재하고 있을 필요는 없다. 각 큐의 적어도 맨 앞의 엔트리는 칩 상에 저장되어야 한다. 이러한 스케줄러는 프로세서 동작을 추적한다. 프로세서가 패킷 처리를 마쳤을 때, 그것은 프로세서에게 새로운 작업을 요청한다. 그러나, 서로 다른 우선 순위를 갖는 여러 큐가 처리된다면, 스케줄러(26)는 또한 더 높은 우선 순위의 작업을 위하여 낮은 우선 순위의 작업의 프로세서에 의한 처리를 인터럽트할 수 있다.The scheduler 26 handles all data packets that require processing by the processor in one or several queues. These queues do not need to be physically present in the scheduler. At least the first entry of each queue must be stored on the chip. This scheduler keeps track of processor activity. When the processor has finished processing the packet, it asks the processor for a new task. However, if several queues with different priorities are processed, the scheduler 26 may also interrupt the processing by the processor of the lower priority task for higher priority tasks.

어떤 경우에든, 스케줄러(26)는 프로세서(10)가 처리할 예정인 다음 작업에 대한 지식을 갖는다. 선택된 작업은 어느 데이터에 접근될 수 있는지를 결정한다. 여기서 기술된 네트워크 프로세서의 경우에, 작업(큐의 엔트리) 및 최초로 접근된 어드레스(즉, 패킷 헤더 및 부가 정보) 사이의 관계는 매우 간단하다. 큐 엔트리로부터 어드레스의 일 집합으로의 변환은 어드레스 계산 유닛에 의해 행해진다.In any case, the scheduler 26 has knowledge of the next task that the processor 10 is going to process. The selected task determines which data can be accessed. In the case of the network processor described here, the relationship between the task (entry of the queue) and the first accessed address (i.e. packet header and side information) is very simple. The conversion from the queue entry to a set of addresses is performed by the address calculation unit.

프로세서(10)가 새로운 패킷을 처리하고 패킷 헤더와 같은 데이터에 접근할 때, 본 발명이 사용되지 않는다면, 그것은 대개 캐쉬 오류(cache miss)를 생성한다. 이것은 필요한 데이터가 외부 메모리(14)로부터 캐쉬로 로딩될 때까지 프로세서가 처리를 중지한다는 것을 의미하는데, 이는 이미 언급된 바와 같은 상당한 시간의 낭비를 초래한다. 본 발명에 따른 캐쉬 예비 인출은 일어날 것이 확실하고 그 어드레스가 쉽게 결정될 수 있는 데이터 접근 시의 캐쉬 오류를 회피하게 한다.When the processor 10 processes a new packet and accesses data such as a packet header, it usually generates a cache miss if the invention is not used. This means that the processor stops processing until the required data is loaded from the external memory 14 into the cache, which leads to a significant waste of time as already mentioned. Cache prefetching in accordance with the present invention makes it possible to avoid cache errors in accessing data which are certain to occur and whose address can be easily determined.

작업을 위해, 캐쉬는 접근이 일어나기 전에 필요한 데이터를 로딩하도록 지시 받게 된다. 이러한 동작의 초기화는 캐쉬로의 직접적 접속(28)을 사용하는 스케줄러로부터 유발된다. 패킷 헤더 및 부가 정보가 저장되어 있는 메모리 내의 위치를 결정한 후에, 스케줄러는 인출할 어드레스를 캐쉬로 할당하고, 캐쉬 제어기가 메모리로부터 캐쉬로 데이터를 인출한다. 이러한 기록의 종료 후에, 스케줄러는 프로세서를 인터럽트하고 새로운 작업이 이전 작업보다 더 높은 우선 순위를 가질 때의 처리를 위한 새로운 패킷을 할당하거나, 새로운 패킷의 전달 이전에 이전의 작업의 종료를 기다린다.For work, the cache will be instructed to load the necessary data before access occurs. Initialization of this operation is derived from the scheduler using direct connection 28 to the cache. After determining the location in memory where the packet header and additional information are stored, the scheduler allocates an address to fetch to cache, and the cache controller fetches data from memory into the cache. After the end of this write, the scheduler interrupts the processor and allocates a new packet for processing when the new task has a higher priority than the previous one, or waits for the end of the previous task before delivery of the new packet.

본 발명에 따른 방법은 도 2에 도시된 흐름도에 의해 나타난다. 먼저, 하부구조는 기술된 예의 데이터 패킷인 새로운 데이터의 수신을 기다린다(단계 30). 패킷의 헤더는 분류를 위해 사용되고, 룩업 및 분류 유닛에 의한 처리로부터 기인하는 헤더 및 부가 정보가 외부 메모리에 저장된다(단계 32). 룩업 및 분류 유닛은 패킷이 소프트웨어에 의해 처리될 필요가 있는지와 그 우선 순위를 결정한다(단계 34). 만약 패킷이 처리될 필요가 없다면, 처리는 새로운 데이터의 수신을 대기하도록 귀환 루핑(looping)된다.The method according to the invention is represented by the flowchart shown in FIG. First, the infrastructure waits for the receipt of new data, which is the data packet of the described example (step 30). The header of the packet is used for classification, and the header and additional information resulting from the processing by the lookup and classification unit are stored in the external memory (step 32). The lookup and classification unit determines if the packet needs to be processed by software and its priority (step 34). If the packet does not need to be processed, the process loops back to wait for the receipt of new data.

데이터 패킷이 처리될 필요가 있을 때, 스케줄러는 프로세서가 접근할 데이터에 해당하는 메모리 내에서의 어드레스를 연산한다. 예에서는, 그것은 패킷 헤더의 어드레스와, 분류기 결과 및 입력 포트와 같은 부가 정보의 어드레스이다(단계 36). 이러한 어드레스는 프로세서의 데이터 캐쉬 제어기로 전송된다(단계 38). 데이터 캐쉬 제어기는 해당 데이터를 데이터 캐쉬에 기록한다(단계 40). 이것은 현재의 패킷 처리에 의해 생성된 메모리 접근을 인터리빙(interleaving)함으로써 행해진다.When a data packet needs to be processed, the scheduler computes an address in memory that corresponds to the data that the processor will access. In the example, it is the address of the packet header and the side information, such as the classifier result and the input port (step 36). This address is sent to the data cache controller of the processor (step 38). The data cache controller writes the data to the data cache (step 40). This is done by interleaving memory accesses created by current packet processing.

이 단계에서, 처리는 방금 도착한 패킷이 이전 패킷보다 높은 우선 순위의 것인지 여부에 의존한다(단계 42). 만약 그렇다면, 스케줄러는 프로세서에 의해 현재 수행되는 이전의 작업을 인터럽트하고(단계 44), 처리를 위한 새로운 패킷을 할당하면, 프로세서는 처리를 시작하여 캐쉬 내에서 연관된 데이터를 찾는다(단계 46). 만약 새로운 패킷이 이전의 것보다 높지 않은 우선 순위를 갖는다면, 프로세서는 새로운 처리를 수행하기(단계 46) 전에 이전의 처리를 종료하여야 한다(단계 48).In this step, the processing depends on whether the packet just arrived is of higher priority than the previous packet (step 42). If so, the scheduler interrupts the previous task currently being performed by the processor (step 44), and allocates a new packet for processing, the processor starts processing and finds the associated data in the cache (step 46). If the new packet has a priority that is not higher than the previous one, the processor must terminate the previous process (step 48) before performing the new process (step 46).

더 높은 우선 순위를 갖는 패킷의 경우에, 스케줄러는 프로세서를 인터럽트하기 전에 데이터 캐쉬 인출의 종료를 기다려야 한다는 점을 인식하여야 한다. 이를 위해, 스케줄러는 버스에서의 동작을 관찰하여 모든 할당된 접근이 종료될 때까지 대기한다. 대안적으로는, 스케줄러는 고정된 정도의 시간을 대기하거나, 캐쉬 제어기로부터 스케줄러로의 직접적인 피드백이 사용될 수 있다.In the case of packets with higher priority, the scheduler must recognize that it must wait for the end of data cache fetch before interrupting the processor. To do this, the scheduler observes operation on the bus and waits until all assigned accesses are terminated. Alternatively, the scheduler may wait a fixed amount of time, or direct feedback from the cache controller to the scheduler may be used.

위에서와 같이 두번째의 더 높은 우선 순위의 패킷을 처리하기 위하여 첫번째 패킷의 처리가 인터럽트되는 것은 두 패킷에 대하여 캐쉬의 불연속 부분의 양쪽 경우 모두에서 일어나게 된다는 점이 또한 인식되어야 한다. 그렇지 않다면, 예비 인출된 데이터가 그것이 접근되기 전에 캐쉬로부터 삭제될 수 있다. 캐쉬는 일반적으로 가상의 어드레스를 사용하여 인덱싱되기 때문에, 이는 프로세서 내에서 가상의 어드레스로부터 실제의 어드레스로의 맵핑을 이용함으로써 달성될 수 있다.It should also be recognized that interrupting the processing of the first packet to process the second higher priority packet as above would occur in both cases of the discontinuous portion of the cache for both packets. Otherwise, the prefetched data can be deleted from the cache before it is accessed. Because caches are generally indexed using virtual addresses, this can be accomplished by using a mapping from virtual addresses to actual addresses within the processor.

본 발명의 방법이 네트워크 프로세서 환경에서 기술되었지만, 프로세서에 의한 소정 데이터에의 접근이 일어나고 그 어드레스가 쉽게 결정될 수 있는 어떠한 시스템에서도 본 발명의 방법이 사용될 수 있음이 당업자에게는 명백할 것이다. 모든 경우에 있어서, 외부 이벤트는 처리될 소정 데이터와 연결된다. 그러므로, 새로운 그림이 항행을 위한 카메라를 사용하는 로봇에 일정한 시간 간격으로 도착하는 경우를 가정하면, 그 그림의 도착은 이벤트이고 그림 데이터 자체는 예비 인출되는 연관 데이터이다.Although the method of the present invention has been described in a network processor environment, it will be apparent to those skilled in the art that the method of the present invention may be used in any system in which access to certain data by the processor occurs and its address may be readily determined. In all cases, external events are associated with certain data to be processed. Therefore, assuming that a new picture arrives at a fixed time interval at a robot using a camera for navigation, the arrival of the picture is an event and the picture data itself is preliminary associated data.

표준 마이크로프로세서에 있어서, 이미 캐쉬 연접성(coherency)의 관점에서 보여졌듯이, 어드레스 버스는 외부 소스로서 사용될 수 있다는 점이 인식되어야 한다. 이 경우에 오직 하나의 외부 와이어가 예비 인출 요청을 지시하기 위해 필요하다.In a standard microprocessor, it should be appreciated that the address bus can be used as an external source, as already seen in terms of cache coherency. In this case only one external wire is needed to indicate the preliminary withdrawal request.

Claims (8)

하부 구조(18)에 의해 취급될 데이터/명령을 수신하기 위한 입력 인터페이스(20)와 취급된 후의 데이터를 전송하기 위한 출력 인터페이스(22)를 갖는 상기 하부 구조, 상기 입력 인터페이스에 의해 데이터/명령이 수신된 때에 데이터/명령을 저장하기 위한 메모리(14), 적어도 데이터/명령의 일부를 처리하기 위한 프로세서(10)로서 처리 전에 상기 데이터/명령이 저장되는 캐쉬를 갖는 프로세서, 및 상기 프로세서로 순차 작업을 할당하기 위한 외부 소스(26)를 포함하는 시스템 내에서 외부적으로 트리거링되는 이벤트와 연관된 데이터/명령을 예비 인출하는 방법으로서,The infrastructure, the input interface having an input interface 20 for receiving data / commands to be handled by the infrastructure 18 and an output interface 22 for transmitting data after being handled, makes the data / commands accessible by the input interface. A memory 14 for storing data / commands when received, at least a processor 10 for processing a portion of the data / commands, a processor having a cache in which the data / commands are stored before processing, and a sequential operation with the processor A method of prefetching data / commands associated with an externally triggered event within a system that includes an external source 26 for assigning 상기 방법은, 상기 프로세서가 이전의 작업을 수행하는 동안 수행되는,The method is performed while the processor is performing a previous task, 상기 프로세서에 의해 처리될 데이터/명령의 상기 메모리 내의 위치를 결정하는 단계;Determining a location in the memory of data / instructions to be processed by the processor; 상기 메모리 위치의 어드레스를 상기 캐쉬로 지정하는 단계;Designating an address of the memory location as the cache; 상기 메모리 위치의 컨텐츠를 인출하여 이를 상기 캐쉬에 기록하는 단계; 및Retrieving content from the memory location and writing it to the cache; And 상기 데이터/명령을 처리하는 작업을 상기 프로세서로 할당하는 단계Assigning the processor to process the data / command to the processor 를 포함하는 것을 특징으로 하는 방법.Method comprising a. 제1항에 있어서, 상기 프로세서(10)는 네트워크 프로세서이고, 처리될 상기 데이터는 상기 하부 구조(18)에 의해 수신된 데이터 패킷의 헤더 내에 있는 방법.The method according to claim 1, wherein said processor (10) is a network processor and said data to be processed is in a header of a data packet received by said infrastructure (18). 제2항에 있어서, 상기 외부 소스는 상기 프로세서(10) 내의 상기 캐쉬에 직접적으로 접속되는 스케줄러(26)이고, 상기 스케줄러는 처리될 데이터/명령의 상기 메모리(14) 내의 위치를 결정하고 상기 캐쉬로 상기 어드레스를 직접적으로 지정하는 방법.3. The system of claim 2, wherein the external source is a scheduler 26 that is directly connected to the cache in the processor 10, the scheduler determining the location in the memory 14 of the data / instructions to be processed and Directly assigning the address to the. 제3항에 있어서, 상기 스케줄러(26)는 상기 어드레스를 계산함으로써 상기 메모리(14) 내의 상기 데이터/명령의 위치를 결정하는 방법.4. A method according to claim 3, wherein the scheduler (26) determines the location of the data / command in the memory (14) by calculating the address. 제2항 내지 제4항에 있어서, 상기 예비 인출된 데이터/명령을 처리하는 작업을 할당하는 단계는,The method of claim 2, wherein the step of allocating a job for processing the prefetched data / command comprises: 이전의 패킷의 처리를 인터럽트하는 단계; 및Interrupting processing of a previous packet; And 상기 이전의 패킷보다 더 높은 우선 순위를 갖는 새로운 패킷의 처리를 시작하는 단계Initiating processing of a new packet having a higher priority than the previous packet. 를 포함하는 방법.How to include. 제3항 내지 제5항에 있어서, 상기 캐쉬는 어드레스가 상기 스케줄러(26)에 의해 결정된 상기 메모리 위치의 컨텐츠를 인출하는 단계 및 이를 상기 캐쉬에 기록하는 단계를 담당하는 캐쉬 제어기와 연관되는 방법.6. A method as claimed in claim 3, wherein the cache is associated with a cache controller responsible for retrieving and writing the contents of the memory location whose address is determined by the scheduler (26). 제5항에 있어서, 프로세서 로컬 버스(Processor Local Bus; PLB)가 상기 프로세서(10) 및 상기 스케줄러(26)에 의해 사용되고, 상기 스케줄러는 상기 버스를 모니터링하고 상기 데이터가 상기 메모리(14)로 귀환하는 시점을 정확히 관찰함으로써 상기 데이터 캐쉬 인출의 종료를 결정한 후 상기 프로세서를 인터럽트하는 방법.A processor local bus (PLB) is used by the processor 10 and the scheduler 26, wherein the scheduler monitors the bus and the data is returned to the memory 14. Interrupting the processor after determining the end of the data cache fetch by observing exactly when. 제1항 내지 제7항에 따른 방법을 달성하도록 구성된 수단들을 포함하는 시스템.A system comprising means configured to achieve the method according to claim 1.
KR10-2004-7012736A 2002-03-05 2003-02-27 Method of prefetching data/instructions related to externally triggered events KR20040101231A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP02368022 2002-03-05
EP02368022.6 2002-03-05
PCT/EP2003/002923 WO2003075154A2 (en) 2002-03-05 2003-02-27 Method of prefetching data/instructions

Publications (1)

Publication Number Publication Date
KR20040101231A true KR20040101231A (en) 2004-12-02

Family

ID=27771964

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7012736A KR20040101231A (en) 2002-03-05 2003-02-27 Method of prefetching data/instructions related to externally triggered events

Country Status (8)

Country Link
JP (1) JP2005519389A (en)
KR (1) KR20040101231A (en)
CN (1) CN100345103C (en)
AU (1) AU2003221510A1 (en)
BR (1) BR0308268A (en)
CA (1) CA2478007A1 (en)
MX (1) MXPA04008502A (en)
WO (1) WO2003075154A2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4837247B2 (en) * 2003-09-24 2011-12-14 パナソニック株式会社 Processor
US8224937B2 (en) * 2004-03-04 2012-07-17 International Business Machines Corporation Event ownership assigner with failover for multiple event server system
CN101073051A (en) 2004-12-10 2007-11-14 皇家飞利浦电子股份有限公司 Data processing system and method for cache replacement
US7721071B2 (en) * 2006-02-28 2010-05-18 Mips Technologies, Inc. System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619663A (en) * 1994-09-16 1997-04-08 Philips Electronics North America Corp. Computer instruction prefetch system
US5854911A (en) * 1996-07-01 1998-12-29 Sun Microsystems, Inc. Data buffer prefetch apparatus and method
US5761506A (en) * 1996-09-20 1998-06-02 Bay Networks, Inc. Method and apparatus for handling cache misses in a computer system
US6092149A (en) * 1997-05-28 2000-07-18 Western Digital Corporation Disk drive cache system using a dynamic priority sequential stream of data segments continuously adapted according to prefetched sequential random, and repeating types of accesses
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor

Also Published As

Publication number Publication date
WO2003075154A3 (en) 2004-09-02
AU2003221510A1 (en) 2003-09-16
JP2005519389A (en) 2005-06-30
CN1698031A (en) 2005-11-16
CN100345103C (en) 2007-10-24
MXPA04008502A (en) 2004-12-06
WO2003075154A2 (en) 2003-09-12
AU2003221510A8 (en) 2003-09-16
BR0308268A (en) 2005-01-04
CA2478007A1 (en) 2003-09-12

Similar Documents

Publication Publication Date Title
US20230418759A1 (en) Slot/sub-slot prefetch architecture for multiple memory requestors
US6832280B2 (en) Data processing system having an adaptive priority controller
US6708257B2 (en) Buffering system bus for external-memory access
KR100524575B1 (en) Reordering a plurality of memory access request signals in a data processing system
US20070220361A1 (en) Method and apparatus for guaranteeing memory bandwidth for trace data
US6868087B1 (en) Request queue manager in transfer controller with hub and ports
US8255591B2 (en) Method and system for managing cache injection in a multiprocessor system
US20030018863A1 (en) Prioritized bus request scheduling mechanism for processing devices
US20010001867A1 (en) Host controller interface descriptor fetching unit
EP1139222A1 (en) Prefetch for TLB cache
US20120079202A1 (en) Multistream prefetch buffer
US6345320B1 (en) DMA address buffer and cache-memory control system
US6681270B1 (en) Effective channel priority processing for transfer controller with hub and ports
KR20040101231A (en) Method of prefetching data/instructions related to externally triggered events
US8719499B2 (en) Cache-line based notification
EP1628209B1 (en) System controller, speculative fetching method, and information processing apparatus for executing speculative fetch depending on hardware resource availability.
JP2006268753A (en) Dma circuit and computer system
US6308147B1 (en) Data structure synthesis in hardware using memory transaction translation techniques
JPH08212178A (en) Parallel computer
KR100195953B1 (en) High performance dma operating method of i/o processor
JP3372873B2 (en) Microprocessor with main memory prefetch mechanism
CN118276990A (en) Multithreading task management system and method, network processor and chip thereof
CN118550461A (en) Multichannel back pressure controller and method and chip thereof
KR19990069073A (en) Cache Reference and Correction Device Using Write Buffer
JP2002049607A (en) Microcomputer with built-in cache

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application