KR19990071554A - Multi-port cache memory with address conflict detection - Google Patents

Multi-port cache memory with address conflict detection Download PDF

Info

Publication number
KR19990071554A
KR19990071554A KR1019980703828A KR19980703828A KR19990071554A KR 19990071554 A KR19990071554 A KR 19990071554A KR 1019980703828 A KR1019980703828 A KR 1019980703828A KR 19980703828 A KR19980703828 A KR 19980703828A KR 19990071554 A KR19990071554 A KR 19990071554A
Authority
KR
South Korea
Prior art keywords
bank
port
access
cache
memory
Prior art date
Application number
KR1019980703828A
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 KR19990071554A publication Critical patent/KR19990071554A/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
    • 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/0851Cache with interleaved addressing
    • 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

Abstract

멀티포트 캐시 메모리가 개시된다. 멀티포트 캐시는 마이크로 시스템에서 동작하고, 다중 메모리 뱅크 및 그 뱅크로의 액세스를 허용하는 다중 포트를 포함한다. 충돌 검출 회로는 제 1 포트 및 제 2 포트를 통해 제 1 메모리 벵크의 동시 어드레싱을 검출하고 동시 어드레싱의 검출에 응답하여 소정 수의 클록 사이클 동안 마이크로 처리기의 동작을 스톨한다. 충돌 해소 회로는 스톨 중에 제 1 포트를 통해 제 1 뱅크로의 액세스를 허용하고 스톨이 완료된 후에 제 2 포트를 통해 액세스를 허용한다. 일반적으로, 충돌 해소 회로는 마이크로 처리기가 스톨되는 동안 연속 클록 사이클 중에 우선권이 증가하는 순서로 제 1 메모리 뱅크에 대한 액세스를 시도하는 포트를 통해 액세스를 허용한다. 제 1 뱅크로의 액세스를 시도하는 하나이상의 포트는 마이크로 처리기의 스톨 전후에 액세스가 허용될 수 있다. 각 뱅크는 단일 포트를 갖는다. 뱅크는 비중첩 어드레스 공간을 가지며 캐시 블록내 워드가 다중 뱅크 사이에서 분배되도록 어드레스된다.A multiport cache memory is started. The multiport cache operates in a microsystem and includes multiple memory banks and multiple ports to allow access to that bank. The collision detection circuit detects simultaneous addressing of the first memory bank through the first port and the second port and stalls the operation of the microprocessor for a predetermined number of clock cycles in response to detection of concurrent addressing. The collision avoidance circuit allows access to the first bank through the first port during stall and allows access via the second port after the stall is completed. Generally, the collision avoidance circuit allows access through a port that attempts to access the first memory bank in order of increasing priority during successive clock cycles while the microprocessor is stalled. One or more ports attempting to access the first bank may be allowed access before and after the stall of the microprocessor. Each bank has a single port. The banks have non-overlapping address spaces and are addressed such that the words in the cache block are distributed among the multiple banks.

Description

어드레스 충돌 검출 기능을 갖는 멀티포트 캐시 메모리Multi-port cache memory with address conflict detection

본 발명은 캐시 메모리에 관한 것으로서, 보다 구체적으로는 다중 액세스 포트를 갖는 캐시에 관한 것이다.The present invention relates to cache memories, and more particularly to caches having multiple access ports.

캐시는 메인 메모리에 주로 저장된 어드레스, 명령, 또는 데이터에 액세스하기 위해 프로세서에 의해 요구된 유효 시간을 감소시키기 위해 프로세서와 메인 메모리 사이에 배치된 소형의 고속 메모리이다. 예컨대, 프로세서가 메인 메모리로부터 워드를 판독할 때, 그 워드 및 인접 워드는 메인 메모리로부터 캐시로 블록으로서 판독된다. 통상, 프로세서는 다음에 그 블록내의 인접 워드 중 하나에 액세스를 시도할 확률이 높다. 이러한 기준 특성의 국부성으로 인해, 프로세서가 캐시와의 직접적인 다음 데이터 교환에 착수한 이후 메인 메모리의 버스 트래픽(traffic)은 감소된다. 캐시 액세스에는 메인 메모리 액세스보다 적은 시간이 소요된다. 따라서, 캐시의 사용은 프로세서의 스루풋(throughput)을 향상시킨다.Cache is a small, high-speed memory disposed between the processor and main memory to reduce the validity time required by the processor to access addresses, instructions, or data stored primarily in main memory. For example, when a processor reads a word from main memory, the word and the adjacent word are read as a block from main memory to cache. Typically, the processor is then likely to attempt to access one of the adjacent words in the block next. Due to the localization of these reference characteristics, the bus traffic in the main memory is reduced since the processor initiates the next direct data exchange with the cache. Cache access takes less time than main memory access. Thus, the use of a cache improves the throughput of the processor.

많은 모뎀 마이크로 프로세서는 동일한 처리기 클록 사이클내에서 다중 명령을 실행한다. 예컨대, 프로세서는 동시에 메모리 동작을 실행할 수도 있다. 이 경우, 프로세서는 캐시 메모리에 저장된 다중 워드에 대한 동시 접근을 필요로 한다. 따라서, 캐시는 각각 별개의 데이터 교환을 처리하는 다중 포트를 포함한다.Many modem microprocessors execute multiple instructions within the same processor clock cycle. For example, the processor may execute memory operations simultaneously. In this case, the processor requires concurrent access to multiple words stored in the cache memory. Thus, the cache includes multiple ports each handling a separate data exchange.

멀티포트 캐시는 단일 멀티포트 SRAM으로 구현될 수도 있다. 그러나, 그런 구성은 동작 속도가 매우 느리고, 비교적 큰 칩 면적을 차지한다. 대안으로, Aipperspach 등에게 허여된 미국 특허 제 5,359,557 호에 설명된 것처럼, 각각 캐시 포트중 하나에 대응하는 두 개의 단일 포트 메모리 어레이에 의해 이중 포트 캐시가 구현될 수 있다. 두 개의 어레이는 동일 어드레스 공간을 갖는다. 이 성가신 장치는 데이터가 캐시 포트중 하나에서 수정될 때 어레이가 동일 데이터를 저장한다는 것을 보장하기 위해 복잡한 데이터 코히어런스 회로를 필요로 한다. 또한, 동일 데이터의 용장성 카피를 저장하기 위해 두 개의 어레이를 사용하므로 어쩔 수 없이 큰 칩 면적을 차지한다.The multiport cache may be implemented as a single multiport SRAM. However, such a configuration is very slow in operation and occupies a relatively large chip area. Alternatively, a dual port cache may be implemented by two single port memory arrays, each corresponding to one of the cache ports, as described in U.S. Patent No. 5,359,557 to Aipperspach et al. The two arrays have the same address space. This cumbersome device requires a complex data coherence circuit to ensure that the array stores the same data when the data is modified in one of the cache ports. In addition, using two arrays to store a redundant copy of the same data will inevitably take up a large chip area.

따라서, 멀티 포트 캐시 메모리를 구현하는 보다 소형인 더 효율적인 수단을 찾는 것이 요망된다.Therefore, it is desirable to find a more compact and more efficient means of implementing multiport cache memory.

본 발명은 멀티포트 캐시 메모리를 제공한다. 이 멀티포트 캐시 메모리는 마이크로 프로세서 시스템에서 동작하며, 다중 메모리 뱅크와 그 뱅크에 대한 액세스를 가능하게 하는 다중 포트를 포함한다. 충돌 검출 회로는 제 1 포트 및 제 2 포트를 통해 제 1 메모리 뱅크의 동시 어드레싱을 검출하고, 동시 어드레싱의 검출에 응답하여 소정수의 클록 사이클에 대한 마이크로 프로세서 동작을 스톨(stall)한다. 충돌 해소 회로는 스톨중에 제 1 포트를 통해 제 1 뱅크에 대한 액세스를 허용하고, 스톨이 완료된 후 제 2 포트를 통해 액세스를 허용한다. 일반적으로, 충돌 해소 회로는 마이크로 프로세서가 스톨되는 동안 연속 클록 사이클 중에 우선권이 증가하는 순서로 제 1 메모리 뱅크의 액세스를 시도하는 포트를 통해 액세스를 허용한다. 마이크로 프로세서의 스톨 전후에, 제 1 뱅크에 대한 액세스를 시도하는 하나 이상의 포트의 액세스가 허용될 수도 있다. 각 뱅크는 단일 포트를 갖는다. 뱅크는 비중첩 어드레스 공간을 가지며, 캐시 블록내의 워드가 다중 뱅크 사이에서 분배되도록 어드레스된다.The present invention provides multiport cache memory. The multiport cache memory operates in a microprocessor system and includes multiple memory banks and multiple ports to enable access to the banks. The collision detection circuit detects the simultaneous addressing of the first memory bank through the first port and the second port and stalls the microprocessor operation for a predetermined number of clock cycles in response to detection of concurrent addressing. The collision avoidance circuit allows access to the first bank through the first port during stall and allows access via the second port after the stall is completed. Generally, the collision avoidance circuit allows access through a port that attempts to access the first memory bank in an order of increasing priority during successive clock cycles while the microprocessor is stalled. Access to one or more ports attempting to access the first bank may be allowed before or after the stall of the microprocessor. Each bank has a single port. The banks have non-overlapping address spaces and are addressed such that the words in the cache block are distributed among the multiple banks.

본 발명의 목적, 특징 및 장점은 다음 도면이 본 발명의 구조 및 동작의 예를 제공하는 상세한 설명에 비추어 당업자에게는 명백할 것이다.The objects, features and advantages of the present invention will become apparent to those skilled in the art in view of the following detailed description, which provides examples of the structure and operation of the present invention.

도 1은 본 발명의 멀티포트 캐시를 갖는 컴퓨터 시스템의 도면.1 is a diagram of a computer system having a multiport cache of the present invention.

도 2는 본 발명의 멀티포트 캐시에 결합된 프로세서를 도시하는 블록도.2 is a block diagram illustrating a processor coupled to a multiport cache of the present invention.

도 3A는 뱅크 충돌이 없을 때의 캐시 타이밍을 도시하는 타이밍도.3A is a timing chart showing cache timing when there is no bank conflict;

도 3B는 뱅크 충돌이 있을 때의 캐시 타이밍을 도시하는 타이밍도.3B is a timing chart showing cache timing when there is a bank conflict;

본 발명은 다중 메모리 뱅크를 갖는 멀티포트 캐시 메모리를 제공한다. 다음 설명에서, 본 발명의 충분한 이해를 위해 다수의 세부 설명이 제공된다. 그러나, 당업자라면, 이러한 특정 세부 설명이 불필요할 것이다. 또한, 공지된 요소, 소자, 처리 공정 등은 본 발명을 불명료하게 하지 않도록 상세히 설명되지 않을 것이다.The present invention provides multiport cache memory with multiple memory banks. In the following description, numerous details are set forth in order to provide a thorough understanding of the present invention. However, those skilled in the art will appreciate that these specific details are not required. In addition, well-known elements, elements, processing steps and the like will not be described in detail so as not to obscure the present invention.

도 1은 멀티포트 CPU(100), 메인 메모리(102), 메인 메모리 인터페이스(104) 및, 본 발명의 멀티포트 캐시(106)를 갖는 컴퓨터 시스템을 도시한다. 메인 메모리 인터페이스(104)는 CPU 액세스가 캐시를 미스하거나 CPU가 캐시에 새로운 데이터를 기록할 때 캐시 코히어런스를 유지하도록 캐시(106)와 메인 메모리(102) 사이에서의 정보 교환을 관리한다. 캐시(106)는 두 개의 포트를 갖는 것으로 도시되어 있지만, 당업자라면 본 발명이 임의 개수의 포트를 갖는 캐시로 쉽게 확장될 수 있다는 것을 인식할 것이다.1 shows a computer system having a multiport CPU 100, a main memory 102, a main memory interface 104, and a multiport cache 106 of the present invention. The main memory interface 104 manages the exchange of information between the cache 106 and the main memory 102 to maintain cache coherence when CPU access misses the cache or when the CPU writes new data to the cache. Although the cache 106 is shown as having two ports, those skilled in the art will appreciate that the present invention can be easily extended to a cache having any number of ports.

양호하게는, 프로세서는 다중 병렬 동작을 실행할 수 있으며, 따라서, 캐시내에 저장된 하나 이상의 워드에 대한 동시 액세스를 필요로 한다. 따른 구성(도시 안됨)에서, 별도의 프로세서 또는 다른 에이전트가 각각 대응하는 캐시 포트에 대한 액세스를 요구할 수도 있다.Preferably, the processor is capable of executing multiple parallel operations and thus requires concurrent access to one or more words stored in the cache. In an arrangement (not shown), separate processors or other agents may each require access to the corresponding cache port.

도 2는 본 발명의 캐시(106)의 실시예에 결합된 프로세서(100)의 상세한 블록도이다. 이 예에서, 캐시는 투웨이 세트 조합 캐시이다. 종래기술과 달리, 본 발명의 캐시는 동일 데이터를 저장하는 이중 포트 SRAM 이나 용장성 단일 포트 어레이를 사용하지 않는다. 대신, 본 발명은 다수의 단일 포트 메모리 뱅크를 사용하며, 여기서 각 뱅크는 비중첩 어드레스 공간에 데이터를 저장한다. 양호하게는 각 뱅크는 임의의 포트에 의해 액세스될 수 있다. 두 개의 포트 모두가 동일 뱅크에 액세스를 시도하지 않는 한, 모든 포트는 캐시에 대한 동시 액세스를 실행할 수 있다. 뱅크 충돌의 경우에, 즉, 두 개의 포트가 동일 뱅크에 대한 액세스를 시도할 때, 캐시는 이하와 같이 액세스의 타이밍을 제어한다.2 is a detailed block diagram of a processor 100 coupled to an embodiment of the cache 106 of the present invention. In this example, the cache is a two-way set combination cache. Unlike the prior art, the cache of the present invention does not use dual port SRAMs or redundant single port arrays that store the same data. Instead, the present invention uses a number of single port memory banks, where each bank stores data in a non-overlapping address space. Preferably, each bank may be accessed by any port. All ports can perform concurrent access to the cache, unless both ports attempt to access the same bank. In the case of a bank collision, that is, when two ports attempt to access the same bank, the cache controls the timing of access as follows.

본 발명에 따라, CPU(100)는 제 1 어드레스(A0) 및 제 2 어드레스(A1)로 표현되는, 캐시(106)에 대한 다중 액세스를 유발할 수 있다. 이들 어드레스는 본 예의 캐시의 두 개의 포트(201 및 203)에 대응한다. 본 예에서, 캐시는 제 1 뱅크(200)(bank0) 및 제 2 뱅크(202)(bank1)를 자체 포함한다. 여기서, 각 뱅크는 8 킬로바이트(8KB)의 데이터를 보유하며, 4바이트는 하나의 32 비트 워드를 포함한다. 따라서, 각 뱅크는 2K 워드를 저장한다. 또한, 각 캐시 블록은 2워드 길이이며, 2개의 블록은 본 예의 투웨이 세트 조합 캐시의 한 세트를 포함한다. 당업자라면, 본 발명이 다른 메모리 구성에도 응용될 수 있으며, 특히 뱅크수는 포트수와 반드시 동일할 필요는 없다는 것을 인식할 것이다.According to the present invention, the CPU 100 may cause multiple accesses to the cache 106, represented by a first address A0 and a second address A1. These addresses correspond to the two ports 201 and 203 of the cache of this example. In this example, the cache itself includes the first bank 200 (bank 0) and the second bank 202 (bank 1). Here, each bank holds 8 kilobytes (8 kilobytes) of data, and four bytes contain one 32 bit word. Thus, each bank stores 2K words. In addition, each cache block is two words long, and two blocks comprise a set of two-way set combination cache of the present example. It will be appreciated by those skilled in the art that the present invention may be applied to other memory configurations, and in particular, the number of banks need not necessarily be the same as the number of ports.

각 뱅크는 대응하는 3상 버스 구동기(206)를 통해 다수의 판독 버스(204)에 결합되고, 각 판독 버스(204)는 포트 중 하나에 대응한다. 또한, 각 뱅크는 기록 멀티플렉서(210)를 통해 다수의 기록 버스(208)에 결합되고, 각 기록 버스(208)는 포트 중 하나에 대응한다.Each bank is coupled to a plurality of read buses 204 via a corresponding three-phase bus driver 206, and each read bus 204 corresponds to one of the ports. Each bank is also coupled to a plurality of write buses 208 via a write multiplexer 210, and each write bus 208 corresponds to one of the ports.

판독 및 기록 버스(204, 208)는 CPU(100)의 입출력 포트에 결합된다(그 결합은 도면을 단순화시키기 위해 도시하지 않았다).The read and write buses 204 and 208 are coupled to the input and output ports of the CPU 100 (the combination is not shown for simplicity of illustration).

뱅크를 어드레스하는 회로는 대응하는 포트 전용인 어드레스 회로와 양 포트에 공통인 어드레스 회로로 분할된다. 본 실시예에서, 각 포트는 이중 태그 RAM(212)에 결합되고, 여기서 각 태그 어레이(214)는 투웨이 세트 조합 캐시의 원웨이에 대응한다. 각 어레이로부터의 태그는 대응하는 비교기(216)에 공급되며, 비교기는 그 태그와 대응하는 포트 어드레스의 태그 필드를 비교한다. 그 결과 히트(hit) 신호가 각 뱅크에 대한 히트 멀티플렉서(218)의 대응 포트 입력에 전달된다. 여기서 히트 신호는 최상위 1 비트에서 논리 1 값을 취하는 2비트의 "1 핫(one hot)" 신호이다. 각 뱅크는 또한 각 포트 어드레스의 세트 인덱스 필드를 수신하는 행 멀티플렉서(220)이다. 또한, 판독 메모리 동작이 수행되어야 할지 기록 메모리 동작이 수행되어야 할지를 나타내도록 판독/기록 제어 신호가 각 CPU 포트로부터 각 뱅크의 판독/기록 멀티플렉서(도시 안됨)의 대응 입력에 전달된다. 한 실시예에서는, 각 포트로부터 기록 인에이블 신호가 기록 멀티플렉서의 대응 입력에 전달된다. 유사하게, 각 포트로부터 판독 인에이블 신호가 판독 멀티플렉서의 대응 입력에 전달된다. 멀티플렉서의 출력은 대응 뱅크의 기록 인에이블 입력과 판독 인에이블 입력에 각각 결합된다. 여기서, 판독 및 기록 멀티플렉서는 함께 "판독/기록 멀티플렉서"로 언급된다.The circuit for addressing the bank is divided into an address circuit dedicated to the corresponding port and an address circuit common to both ports. In this embodiment, each port is coupled to a dual tag RAM 212, where each tag array 214 corresponds to a one way set combination cache. The tag from each array is fed to a corresponding comparator 216, which compares the tag and the tag field of the corresponding port address. As a result, a hit signal is delivered to the corresponding port input of the heat multiplexer 218 for each bank. Where the hit signal is a two-bit " one hot " signal that takes a logic one value at the most significant bit. Each bank is also a row multiplexer 220 that receives the set index field of each port address. In addition, read / write control signals are transferred from each CPU port to the corresponding inputs of the read / write multiplexers (not shown) of each bank to indicate whether the read memory operation should be performed or the write memory operation should be performed. In one embodiment, a write enable signal from each port is passed to a corresponding input of the write multiplexer. Similarly, a read enable signal from each port is passed to the corresponding input of the read multiplexer. The output of the multiplexer is coupled to the write enable input and the read enable input of the corresponding bank, respectively. Here, read and write multiplexers are collectively referred to as " read / write multiplexers ".

양 포트에 공통인 어드레스 회로는 포트 어드레스의 뱅크 어드레스 부분을 수신하는 충돌 검출 회로(222)를 포함한다. 이 예에서, 각 뱅크 어드레스는 뱅크 선택 신호를 응답적으로 생성하는 1:2 뱅크 디코더(224)를 통해 전달된다. 예컨대, 제로 뱅크 어드레스 비트가 bank0의 선택을 나타내면, 뱅크 디코더(224)는 그 bank0 출력으로부터 1을 출력할 것이고 bank1 출력으로부터 0을 출력할 것이다. 각 포트 디코더로부터 뱅크 선택 신호(bd)가 각 뱅크에 대한 대응 충돌 해소 회로(226)에 공급된다. 충돌 해소 회로(226)의 출력은 행 멀티플렉서(220), 히트 멀티플렉서(218) 및 어떤 포트가 그 뱅크에 액세스해야할지를 결정하는 각 뱅크에 대한 판독/기록 멀티플렉서(도시 안됨)를 제어한다. 충돌 해소 회로(226)는 또한 판독 버스(204)(도 2는 액티브 하이(active high)를 취한다)에 대한 3상 구동기(206) 및 기록 버스 멀티플렉서(210)를 제어하여 선택된 포드에 대응하는 버스에 대한 액세스를 보장한다.The address circuit, which is common to both ports, includes a collision detection circuit 222 that receives the bank address portion of the port address. In this example, each bank address is passed through a 1: 2 bank decoder 224 which responsively generates a bank select signal. For example, if the zero bank address bit indicates the selection of bank 0, the bank decoder 224 will output 1 from its bank 0 output and 0 from the bank 1 output. The bank selection signal bd is supplied from the respective port decoders to the corresponding collision elimination circuit 226 for each bank. The output of the collision solving circuit 226 controls a row multiplexer 220, a heat multiplexer 218 and a read / write multiplexer (not shown) for each bank that determines which port should access that bank. The conflict resolution circuitry 226 also controls the three-phase driver 206 and the write bus multiplexer 210 for the read bus 204 (Figure 2 takes active high) Ensuring access to the bus.

도 2의 캐시의 메모리 구성의 한 예에서, 각 뱅크는 8KB의 데이터를 저장하고 각 워드는 4바이트를 포함한다. 각 캐시 블록은 2 워드를 포함한다. 캐시가 투웨이 세트 조합 캐시이므로 메모리는 세트당 2 블록을 갖는 1K 세트를 포함한다. 어드레스의 비트 2는 뱅크를 선택하고, 비트 3-12는 세트중 하나를 선택한다. 어드레스의 비트 13-31은 캐시의 어드레스 블록의 존재를 나타내기 위한 태그 비교에 사용된다.In one example of the memory configuration of the cache of Figure 2, each bank stores 8 KB of data and each word contains 4 bytes. Each cache block contains two words. Since the cache is a two-way set associative cache, the memory contains a 1K set with two blocks per set. Bit 2 of the address selects the bank, and bits 3-12 select one of the sets. Bits 13-31 of the address are used for tag comparisons to indicate the presence of an address block in the cache.

본 발명의 캐시의 동작은 도 3A 및 도 3B의 타이밍도를 참조로 설명될 것이다. 도 3A는 뱅크 충돌이 존재하지 않는 캐시 타이밍을 도시한다. 도 3B는 뱅크 충돌을 갖는 캐시 타이밍을 도시한다. 두 경우, CPU는 제 1 CPU 포트(228)로부터 어드레스 A0을, 제 2 CPU 포트(230)로부터 어드레스 A1을 도출함으로써 캐시의 동시 액세스를 수행하고자 한다. 어드레스는 내부 CPU 버스(232)를 거쳐 제 1 캐시 포트(201) 및 제 2 캐시 포트(203)에 의해 수신된다. 본 예에서, 사이클 0 동안, 어드레스의 제 2 비트는 양 포트가 동일 메모리 뱅크의 액세스를 시도하고 있는지를 판단하도록 충돌 검출 회로(222)에 공급된다. 여기서, A0[2]=0 및 A1[2]=1로 가정한다. 이 경우, port0에 대한 뱅크 어드레스 디코더(224)는 bank0(200)에 대한 충돌 해소 회로(226)에 뱅크 선택 신호 bd[0][0]=1을 출력할 것이고, bank1(202)에 대한 충돌 해소 회로(226)에 뱅크 선택 신호 bd[0][1]=0을 출력할 것이다. port1(201)에 대한 뱅크 어드레스 디코더(224)는 bank0(200)에 대한 충돌 해소 회로(226)에 뱅크 선택 신호 bd[1][0]=0을 출력할 것이고, bank1(202)에 대한 충돌 해소 회로(226)에 뱅크 선택 신호 뱅크 선택 신호 bd[1][1]=1을 출력할 것이다. 사이클 0에서, 충돌 해소 회로(226)는 어떤 포트 입력이 행 멀티플렉서(220), 히트 멀티플렉서(218) 및 판독/기록 멀티플렉서에 의해 각 뱅크로 전달될 것인지를 결정하고, (판독 또는 기록 동작 중 어떤 동작이 수행되고 있는지에 따라) 그 뱅크와 통신하기에 적절한 판독 또는 기록 버스를 선택한다.The operation of the cache of the present invention will be described with reference to the timing diagrams of Figures 3A and 3B. FIG. 3A shows cache timing in which there is no bank conflict. Figure 3B shows cache timing with bank conflict. In either case, the CPU intends to perform simultaneous access of the cache by deriving address A0 from the first CPU port 228 and address A1 from the second CPU port 230. [ The address is received by the first cache port 201 and the second cache port 203 via the internal CPU bus 232. In this example, during cycle 0, the second bit of the address is supplied to the collision detection circuit 222 to determine if both ports are attempting to access the same memory bank. Here, it is assumed that A0 [2] = 0 and A1 [2] = 1. In this case, the bank address decoder 224 for port 0 will output the bank select signal bd [0] [0] = 1 to the conflict resolving circuit 226 for bank 0 200, And outputs the bank selection signal bd [0] [1] = 0 to the eliminating circuit 226. [ the bank address decoder 224 for port1 201 will output the bank select signal bd [1] [0] = 0 to the conflict resolver circuit 226 for bank0 200, And outputs the bank selection signal bank selection signal bd [1] [1] = 1 to the elimination circuit 226. At cycle 0, the collision resolution circuit 226 determines which port input is to be delivered to each bank by the row multiplexer 220, the heat multiplexer 218, and the read / write multiplexer, Selects an appropriate read or write bus to communicate with that bank (depending on whether the operation is being performed).

이 2 포트예에 대해, 충돌 해소 회로(226)는 다음 논리식을 실현한다.For this two-port example, the conflict resolution circuit 226 realizes the following logical expression.

sel[0][i] = bd[0][i] AND NOT (sel_ctrl[1])sel [0] [i] = bd [0] [i] AND NOT (sel_ctrl [1])

sel[1][i] = (NOT (bd[0][i] AND bd[1][i]) OR sel_ctrl[1]1] [i] = NOT (bd [0] [i] AND bd [1] [i]) OR sel_ctrl [1]

여기서 포트 선택 신호 sel[j][i]는 sel[j][i]=1이면 입력 포트 j에 뱅크 i에 대한 액세스를 제공한다. 뱅크 충돌이 발생할 때, 충돌 해소 회로는 우선 낮은 번호의 포트인 port0이 어드레스된 뱅크에 액세스하도록 허용한다. 그 클록 사이클에서 sel_ctrl[1]=0 이다. 다음 사이클에서, 포트1에 대한 액세스의 우선권을 제공하도록 무효화(override) 신호 sel_ctrl[1]은 1의 값을 취한다.Here, the port selection signal sel [j] [i] provides access to bank i at input port j if sel [j] [i] = 1. When a bank collision occurs, the collision resolution circuit first allows port0, the lower numbered port, to access the addressed bank. Sel_ctrl [1] = 0 in that clock cycle. In the next cycle, the override signal sel_ctrl [1] takes a value of 1 to provide priority of access to port 1. [

도 2에서, 2비트 신호 sel0은 bank0에 대한 2개의 포트 선택 신호를 나타내고, 2비트 신호 sel1은 bank1에 대한 2개의 포트 선택 신호를 나타낸다. 이들 결합된 신호는 멀티플렉서에 대한 적절한 포트 입력을 선택한다. 대안으로, 충돌 해소 논리는 표 1의 논리를 실현하는 임의 회로에 의해 구현될 수도 있다.2, the two-bit signal sel0 represents two port selection signals for bank0 and the two-bit signal sel1 represents two port selection signals for bank1. These combined signals select the appropriate port input to the multiplexer. Alternatively, the conflict resolution logic may be implemented by any circuitry that realizes the logic of Table 1.

port1port1 port0port0 port1port1 port0port0 bank1bd[1][1]bank1bd [1] [1] bank0bd[1][0]bank0bd [1] [0] bank1bd[0][1]bank1bd [0] [1] bank0bd[0][0]bank0bd [0] [0] bank1SEL[1][1]bank1SEL [1] [1] bank0SEL[1][0]bank0SEL [1] [0] bank1SEL[0][1]bank1SEL [0] [1] bank0SEL[0][0]bank0SEL [0] [0] 00 1One 00 1One 0/00/0 0/10/1 0/00/0 1/01/0 00 1One 1One 00 0/00/0 1/01/0 1/01/0 0/00/0 1One 00 00 1One 1/01/0 0/00/0 0/00/0 1/01/0 1One 00 1One 00 0/10/1 0/00/0 1/01/0 0/00/0

표 1에서, "x/y"는 포트 선택 신호가 한 클럭 사이클에서 x의 값을 취하고 다음 클럭 사이클에서 y의 값을 취한다는 것을 나타낸다.In Table 1, " x / y " indicates that the port selection signal takes the value of x in one clock cycle and takes the value of y in the next clock cycle.

본 예에서, bd[0][0]=1 및 bd[1][0]=0 이고, bd[0][1]=0 및 bd[1][1]=1 이다. 따라서, 도 3A의 사이클 0에서,In this example, bd [0] [0] = 1 and bd [1] [0] = 0, bd [0] [1] = 0, and bd [1] [1] = 1. Thus, in cycle 0 of FIG. 3A,

sel[0][0]=1sel [0] [0] = 1

sel[0][1]=0sel [0] [1] = 0

sel[1][0]=0sel [1] [0] = 0

sel[1][1]=1sel [1] [1] = 1

이다.to be.

충돌이 없을 때, sel-ctrl 무효화 신호는 동작되지 않는다. 따라서, bank0은 port0에 액세스가능하고, bank1은 port1에 액세스가능하다.When there is no collision, the sel-ctrl invalidation signal is not activated. Thus, bank0 is accessible to port0, and bank1 is accessible to port1.

요컨대, 충돌 해소 회로(226)는 어떤 포트가 각 뱅크와 통신할지를 결정한다. 이 선택은 본 예에서 비트 2인 포트 어드레스의 뱅크 어드레스 필드에 기초하여 이루어진다. 다른 비트들은 뱅크내의 특정 워드를 어드레스하는데 사용된다. 비트 3-12는 각 포트에 대한 이중 태그 어레이로 공급된 세트 인덱스이다. 본 예에서, 한 세트는 각 뱅크당 한 블록씩 2 블록을 포함한다. 비트 13-31은 이중 태그 어레이(212)로부터의 태그를 비교하는 태그 어드레스 필드를 포함한다.In short, the conflict resolution circuit 226 determines which port communicates with each bank. This selection is made based on the bank address field of the port address bit 2 in this example. The other bits are used to address the specific word in the bank. Bits 3-12 are the set indexes fed into the dual tag array for each port. In this example, one set includes two blocks, one block per each bank. Bits 13-31 include a tag address field that compares the tags from the dual tag array 212.

비교 결과가 어레이 중 하나에 히트를 초래하면, 히트 신호는 그 블록내의 워드를 선택한다. 캐시가 어느 한 포트를 미스할 경우, 그 미스는 미스 블록을 캐시로 로딩함으로써 조절된다. 미스가 발생하지 않았던 것처럼 동작이 다시 시도되어 히트를 초래한다. 예컨대, 하나의 명령이 동시 액세스를 시도하고 한 포트가 다른 포드가 미스되는 동안 히트되면, 미스가 먼저 조절된다. 다음에 그 명령이 다시 시작되어 2 비트를 초래하고 충돌 해소 회로는 본원에 설명된 것처럼 동작한다.If the comparison results in a hit in one of the arrays, the hit signal selects the word in that block. If the cache misses a port, the miss is adjusted by loading the miss block into the cache. The action is retried as if the miss did not occur, resulting in a hit. For example, if one instruction attempts simultaneous access and one port is hit while another pod is missed, the miss is first adjusted. The command is then resumed, resulting in two bits, and the conflict resolution circuit operates as described herein.

세트 인덱스 및 히트 신호는 충돌 해소 회로(226)에 의해 제어된 멀티플렉서를 통해 정확한 뱅크에 루팅된다. 양 포트 어드레스에 대한 히트를 가정한다. 사이클 0 동안, 히트 신호 hit0은 port0(201)으로부터 히트 멀티플렉서(218)를 통해 bank0(220)의 히트 입력에 루팅되고, 히트 신호 hit1은 port1(203)로부터 히트 멀티플렉서(218)를 통해 bank1(202)의 히트 입력에 루팅된다. port0(201)으로부터 판독되거나 port0으로 기록된 데이터는 X로 표현되고, port1(203)로부터 판독되거나 port1로 기록된 데이터는 Y로 표현된다. 사이클 1 동안, 이들 두 포트는 한 뱅크와 통신한다. 여기서 port0(201)으로부터의 X 데이터는 bank0(200)으로부터 판독되거나 bank0에 기록되고, port1로부터의 Y 데이터는 bank1(202)로부터 판독되거나 bank1에 기록된다.The set index and hit signal are routed to the correct bank via the multiplexer controlled by the conflict resolution circuitry 226. [ Assume a hit for both port addresses. During cycle 0, the hit signal hit0 is routed from port0 201 to the hit input of bank0 220 via the heat multiplexer 218 and the hit signal hit1 is routed from port1 203 to bank1 202 via heat multiplexer 218 Lt; / RTI > Data read from port 0 (201) or written to port 0 is represented by X, and data read from port 1 (203) or written to port 1 is represented by Y. During cycle 1, these two ports communicate with one bank. Here, the X data from port0 (201) is read from bank0 (200) or written to bank0, and the Y data from port1 is read from bank1 (202) or written to bank1.

도 3B는 뱅크 충돌의 경우 본 발명의 캐시의 동작을 도시하는 타이밍도이다. 본 예에서, 양 포트 어드레스 중 제 2 비트가 제로인 것으로 즉, 양 포트가 bank0에 대한 액세스를 시도하는 것으로 가정한다. 그에 응답하여, 충돌 검출 회로(222)는 다음 사이클 즉, 사이클 1에서 CPU(100)의 동작을 스톨할 것이다. CPU를 스톨하기 위해 충돌 검출 회로(222)에 의해 사용된 매커니즘은 캐시 미스 동안 CPU를 스톨하기 위해 표준 캐시 제어 논리에 의해 사용된 것과 유사한 회로를 사용하여 구현될 수 있다.3B is a timing diagram illustrating the operation of the cache of the present invention in the event of a bank conflict. In this example, it is assumed that the second bit of both port addresses is zero, that is, both ports attempt to access bank0. In response, the collision detection circuit 222 will stall the operation of the CPU 100 in the next cycle, i.e., cycle 1. The mechanism used by the collision detection circuit 222 to stall the CPU may be implemented using circuitry similar to that used by the standard cache control logic to stall the CPU during a cache miss.

본 예에서 A0[2]=A1[2]=0 이다. 따라서, bd[0][0]=1 및 bd[1][0]=1이고, bd[0][1]=0 및 bd[1][1]=0 이다. 따라서,In this example, A0 [2] = A1 [2] = 0. Therefore, bd [0] [0] = 1 and bd [1] [0] = 1, bd [0] [1] = 0, and bd [1] [1] = 0. therefore,

sel[0][0] = 1 AND NOT (sel_ctrl1)sel [0] [0] = 1 AND NOT (sel_ctrl1)

sel[0][1] = 0 AND NOT (sel_ctrl1)sel [0] [1] = 0 AND NOT (sel_ctrl1)

sel[1][0] = (NOT (1) AND 1) OR sel_ctrl1sel [1] [0] = (NOT (1) AND 1) OR sel_ctrl1

sel[1][1] = (NOT (1) AND 0) OR sel_ctrl1sel [1] [1] = (NOT (1) AND 0) OR sel_ctrl1

각 뱅크에 대한 뱅크 선택 신호는 뱅크 인에이블 신호로 공급된 출력을 갖는 OR 게이트(250)에 의해 함께 OR 연산된다. 뱅크에 대한 액세스를 시도하는 포트가 없을 경우, 뱅크는 인에이블되지 않는다. 여기서, bank1은 액세스되지 않을 것이다. 따라서, bank1에 대한 신호 sel[1](즉, sel[0][1] 및 sel[1][1])은 효과가 없다.The bank select signals for the respective banks are ORed together by the OR gate 250 having an output supplied to the bank enable signal. If there is no port attempting to access the bank, the bank is not enabled. Here, bank1 will not be accessed. Therefore, the signal sel [1] (i.e., sel [0] [1] and sel [1] [1]) for bank1 has no effect.

그러나, 양 포트는 bank0으로부터 판독을 시도할 것이다. 양포트 어드레스에 대한 히트를 가정한다. 사이클 0 동안, 히트 신호 hit0은 port0으로부터 히트 멀티플렉서(218)를 통해 bank0의 hit_bank0 입력으로 루팅되므로, 데이터 워드 X는 사이클 1 동안 port0으로부터 출력될 수 있다.However, both ports will attempt to read from bank0. Assume a hit for both port addresses. During cycle 0, since the hit signal hit0 is routed from port0 via hit multiplexer 218 to the hit_bank0 input of bank0, the data word X can be output from port0 during cycle 1.

다음에, 사이클 1 동안 sel0이 port1을 선택하도록 강제화하기 위해 스톨(사이클 1) 동안 sel_ctrl이 표명된다. 따라서, 스톨 사이클 1 동안, 히트 신호 hit1이 port1로부터 히트 멀티플렉서(218)를 통해 bank0의 hit_bank0 입력으로 루팅되므로 데이터 워드 Y는 다음 사이클인 사이클 2 동안 port1을 통해 출력될 수 있다. 또한, 스톨 사이클 동안, port0에 대한 판독 동작의 결과가 버스상의 래치 회로(도시 안됨)에 의해 port0에 대한 판독 버스에 래치된다. 따라서, port0으로부터 판독된 데이터 X와 port1로부터의 데이터 Y가 사이클 2 동안 동시에 나타난다. CPU 동작은 사이클 1 동안 스톨되므로, CPU에 대해 양 포트 캐시 액세스는 사이클 0에 바로 이어지는 사이클에서 동시에 발생하는 것처럼 보인다.Then sel_ctrl is asserted during the stall (cycle 1) to force sel0 to select port1 during cycle 1. Thus, during the stall cycle 1, since the hit signal hit1 is routed from port1 via the hit multiplexer 218 to the hit_bank0 input of bank0, the data word Y may be output via port1 during cycle 2, which is the next cycle. Also, during the stall cycle, the result of the read operation on port 0 is latched on the read bus to port 0 by a latch circuit (not shown) on the bus. Thus, data X read from port 0 and data Y from port 1 appear simultaneously during cycle 2. Since the CPU operation is stalled for cycle 1, both port cache accesses to the CPU appear to occur simultaneously in the cycle immediately following cycle 0.

충돌의 경우, 충돌 해소 회로(226)가 port0에 대한 우선 액세스를 승인함에 유의한다. 당업자라면, 충돌 해소 회로(226)가 충돌하는 포드에 대해 임의의 우선 순위로 액세스를 승인할 수 있다는 것을 인식할 것이다. 본원에 설명된 예에서, 포트는 낮은 번호의 포트가 높은 우선권의 액세스를 요구하는 포트에 대응하고, 높은 번호의 포트가 액세스를 더 오래 대기할 수 있도록 번호 매겨진다.Note that, in the event of a conflict, the conflict resolution circuit 226 approves priority access to port0. Those skilled in the art will appreciate that the conflict resolution circuitry 226 may grant access to the colliding pods with any priority. In the example described herein, a port is numbered such that a lower numbered port corresponds to a port requiring higher priority access, and a higher numbered port can wait for more access.

또한, 충돌 해소 회로는 단지 두 포트 사이의 충돌을 해소하도록 제한되는 것이 아니다. K 포트를 갖는 캐시에 대해, N 포트가 동일 뱅크에 대한 액세스를 시도할 경우, 액세스는 우선 최하위 번호의 포트에 제공되고, 포트 번호가 증가하는 순서로 나머지 충돌 포트에 의한 액세스를 허용하도록 N-1 사이클 동안 CPU가 스톨된다. 예컨대, K=3 포트를 갖는 캐시에 있어서, 각 뱅크 i에 대해 각 포트마다 하나씩, 뱅크 당 3개의 뱅크 선택 신호 bd[0][i], bd[1][i], bd[2][i]가 존재한다. port 0, 1, 2가 그 뱅크를 어드레스함을 나타내는 3개의 포트 선택 신호 sel[0][i], sel[1][i], sel[2][i]가 존재한다.Also, the collision avoidance circuit is not limited to solving only the collision between the two ports. For a cache with K ports, if the N port tries to access the same bank, access is first provided to the lowest numbered port, and the N- The CPU stalls for one cycle. For example, in the cache having three ports K = 3, the bank selection signals bd [0] [i], bd [1] [i], bd [2] i] exists. there are three port selection signals sel [0] [i], sel [1] [i], sel [2] [i] indicating that ports 0, 1 and 2 address the bank.

뱅크 충돌 해소의 우선권을 무효화하기 위해 모든 뱅크에 의해 공유되는 2개의 선택 제어 신호로서 sel_ctrl1, sel_ctrl2가 존재한다. sel_ctrl1이 표명되면, port1이 선택된다. sel_ctrl2가 표명되면, port2가 선택된다. sel_ctrl1과 sel_ctrl2 중 어떤 것도 표명되지 않으면, port0이 우선권을 갖는다.There are sel_ctrl1 and sel_ctrl2 as two selection control signals shared by all the banks in order to invalidate the priority of resolving the bank conflict. If sel_ctrl1 is asserted, port1 is selected. If sel_ctrl2 is asserted, port2 is selected. If neither sel_ctrl1 nor sel_ctrl2 is asserted, port0 takes precedence.

각 bank i에 대해,For each bank i,

sel[0][i] = bd[i] AND NOT (sel_ctrl1 OR sel_ctrl2)sel [0] [i] = bd [i] AND NOT (sel_ctrl1 OR sel_ctrl2)

sel[1][i] = (NOT (bd0[i]) AND bd1[i]) OR sel_ctrl1sel [1] [i] = (NOT (bd0 [i]) AND bd1 [i]) OR sel_ctrl1

sel[2][i] = (NOT (bd0[i] AND NOT (bd1[i]) AND bd2[i]) OR sel_ctrl2(2) [i] = (NOT (bd0 [i] AND NOT (bd1 [i]) AND bd2 [i]) OR sel_ctrl2

일반적으로 K(K>3) 포트에 있어서,Generally, in the K (K > 3) port,

각 bank i에 대해:For each bank i:

각 port j(0<j<K)에 대해:For each port j (0 <j <K):

bank i의 port j의 각 뱅크 선택 신호 bd[j][i]에 대해:For each bank selection signal bd [j] [i] of port j of bank i:

각 선택 제어 신호 sel_ctrl[m](m=1,..., K-1)에 대해:For each selection control signal sel_ctrl [m] (m = 1, ..., K-1):

충돌 해소 회로는 다음과 같은 출력 선택 신호 sel[j][i]를 발생시킨다.The collision avoidance circuit generates the following output selection signal sel [j] [i].

sel[0][i]=bd[0][i] AND NOT (sel_ctrl[1] OR sel_ctrl[2] OR ... ORsel [0] [i] = bd [0] [i] AND NOT (sel_ctrl [1] OR sel_ctrl [2] OR ... OR

sel_ctrl[K-1]sel_ctrl [K-1]

sel[1][i]=(NOT (bd[0][i]) AND bd[1][i]) OR sel_ctrl[1]1] [i] = (NOT (bd [0] [i]) AND bd [1] [i]) OR sel_ctrl [1]

sel[2][i]=(NOT (bd[0][i] AND NOT (bd[1][i] AND bd[2][i]) OR sel_ctrl[2](2) [i] = (NOT (bd [0] [i] AND NOT bd [1] [i] AND bd [2] [i]) OR sel_ctrl [

sel[j][i]= NOT (bd[0][i])sel [j] [i] = NOT (bd [0] [i])

AND NOT (bd[1][i])AND NOT (bd [1] [i])

......

AND NOT (bd[j-1][i])AND NOT (bd [j-1] [i])

AND (bd[j][i])AND (bd [j] [i])

OR sel_ctrl[j]OR sel_ctrl [j]

많은 스톨 사이클에 대해 전반적인 성능을 저해할 다수의 뱅크 충돌이 발생할 것임을 알 수 있다. 따라서, 동일 CPU 사이클내에서 뱅크 충돌의 수를 제한하는 것이 유리하다. 본 발명의 한 실시예에 따라, 다른 뱅크의 어드레스에 가까운 명령에 변수를 할당함으로써 컴파일러 및 응용 소프트웨어에서 뱅크 충돌이 방지된다. 따라서, 동일 사이클에서 동일 뱅크가 어드레스되기는 매우 어렵다. 또한, 어드레스 공간의 구성 자체가 뱅크 충돌 가능성을 감소시키는데 도움이 된다. 뱅크의 선택에 하위 어드레스 비트, 예컨대 제 2 비트를 사용함으로써, 캐시 블록의 인접 워드들은 모든 뱅크 사이에서 고르게 분배된다. 이런식으로, 인접 워드들의 어드레스는 다른 뱅크의 어드레스를 초래할 것이다. 기준 특성의 국부성으로 인해, 이 구성은 충돌 가능성을 감소시킨다.It can be seen that for many stall cycles a number of bank conflicts will occur which would impair overall performance. Therefore, it is advantageous to limit the number of bank conflicts within the same CPU cycle. According to one embodiment of the present invention, bank conflicts are prevented in the compiler and application software by assigning variables to instructions that are close to addresses of other banks. Therefore, it is very difficult for the same bank to be addressed in the same cycle. In addition, the configuration of the address space itself helps to reduce the possibility of bank conflict. By using the lower address bits, e.g. the second bit, for the selection of the bank, adjacent words of the cache block are evenly distributed among all the banks. In this way, the address of the adjacent word will result in the address of the other bank. Due to the localization of the reference characteristic, this configuration reduces the possibility of collision.

본 발명은 특정 실시예와 관련하여 설명되었지만, 본 발명의 정신 및 범위에서 벗어나지 않고 당업자에 의해 다양한 수정 및 변경이 가능할 것이다. 예컨대, 캐시는 8 뱅크의 8웨이 세트 조합 캐시로 구성될 수 있다. 그런 구성에서, 어드레스 비트 6-11는 세트 인덱스로 작용한다. 각 세트는 각 뱅크의 2 행을 포함한다. 비트 5는 2 행 중 하나를 선택하고 비트 2-4는 뱅크를 선택한다. 어드레스 비트 11-31은 태그 비교에 사용된다. 비트 0-1은 워드내 바이트에 대응한다. 또한, 본 발명은 파이프라인 캐시에 적용될 수 있다.While the invention has been described in conjunction with specific embodiments, various modifications and changes may be made by those skilled in the art without departing from the spirit and scope of the invention. For example, the cache may consist of 8 banks of 8-way set associative caches. In such a configuration, address bits 6-11 act as a set index. Each set includes two rows of each bank. Bit 5 selects one of the two rows and bit 2-4 selects the bank. Address bits 11-31 are used for tag comparison. Bits 0-1 correspond to bytes in the word. Further, the present invention can be applied to pipeline caches.

Claims (9)

다수의 메모리 뱅크와;A plurality of memory banks; 상기 뱅크에 액세스할 수 있는 다수의 포트 및;A plurality of ports capable of accessing the bank; 제 1 포트 및 제 2 포트를 통한 제 1 메모리 뱅크의 동시 어드레싱을 검출하고, 동시 어드레싱의 검출에 응답하여 소정 시간 동안 처리기 동작을 스톨하는 충돌 검출 회로를 포함하는 멀티 포트 캐시를 갖는 마이크로 처리기 시스템.And a collision detection circuit for detecting concurrent addressing of the first memory bank through the first port and the second port and stalling the processor operation for a predetermined time in response to detection of the concurrent addressing. 제 1 항에 있어서, 상기 스톨 동안 상기 제 1 포트를 통해 상기 제 1 메모리 뱅크에 대한 액세스를 허용하고, 상기 스톨이 완료된 후에 상기 제 2 포트를 통해 상기 제 1 메모리 뱅크에 대한 액세스를 허용하는 충돌 해소 회로를 더 포함하는 마이크로 처리기 시스템.2. The system of claim 1, further comprising: means for enabling access to the first memory bank through the first port during the stall, and for enabling access to the first memory bank via the second port after the stall is completed Lt; RTI ID = 0.0 &gt; circuitry. &Lt; / RTI &gt; 제 1 항에 있어서, 각 뱅크는 단일 포트를 갖는 마이크로 처리기 시스템.The microprocessor system of claim 1, wherein each bank has a single port. 제 1 항에 있어서, 상기 뱅크는 캐시 블록내의 워드가 다수의 뱅크 사이에서 분배되도록 어드레스되는 마이크로 처리기 시스템.2. The microprocessor system of claim 1, wherein the bank is addressed such that words in a cache block are distributed among a plurality of banks. 제 1 항에 있어서, 상기 뱅크는 비중첩 어드레스 공간을 갖는 마이크로 처리기 시스템.2. The microprocessor system of claim 1, wherein the bank has a non-overlapping address space. 제 1 항, 3 항, 4 항 또는 5 항중 어느 한 항에 있어서, 상기 처리기가 스톨되는 동안 연속 클록 사이클 중에 우선권이 증가하는 순서로 상기 제 1 메모리 뱅크에 대한 액세스를 시도하는 포트를 통해 상기 메모리 뱅크에 대한 액세스를 허용하는 충돌 해소 회로를 포함하는 마이크로 처리기 시스템.The method of any one of claims 1, 3, 4, or 5, further comprising: during a stall of the processor, through a port that attempts to access the first memory bank in an order of increasing priority during a continuous clock cycle, A microprocessor system comprising a conflict resolution circuit that allows access to a bank. 다수의 메모리 뱅크와;A plurality of memory banks; 상기 뱅크에 액세스할 수 있는 다수의 포트 및;A plurality of ports capable of accessing the bank; 제 1 포트 및 제 2 포트를 통한 제 1 메모리 뱅크의 동시 어드레싱을 검출하고, 동시 어드레싱의 검출에 응답하여 소정 시간 동안 처리기 동작을 스톨하기 위한 신호를 출력하는 충돌 검출 회로를 포함하는 멀티 포트 메모리.And a collision detection circuit for detecting concurrent addressing of the first memory bank through the first port and the second port and outputting a signal for stalling the processor operation for a predetermined time in response to detection of the concurrent addressing. 제 7 항에 있어서, 상기 스톨 동안 상기 제 1 포트를 통해 상기 제 1 메모리 뱅크에 대한 액세스를 허용하고, 상기 스톨이 완료된 후에 상기 제 2 포트를 통해 상기 제 1 메모리 뱅크에 대한 액세스를 허용하는 충돌 해소 회로를 더 포함하는 멀티 포트 메모리.8. The method of claim 7, further comprising: allowing access to the first memory bank through the first port during the stall, and allowing access to the first memory bank via the second port after the stall is completed Lt; RTI ID = 0.0 &gt; circuitry. &Lt; / RTI &gt; 제 8 항에 있어서, 상기 처리기가 스톨되는 동안 연속 클록 사이클 중에 우선권이 증가하는 순서로 상기 제 1 메모리 뱅크에 대한 액세스를 시도하는 포트를 통해 상기 메모리 뱅크에 대한 액세스를 허용하는 충돌 해소 회로를 포함하는 멀티포트 메모리.9. The system of claim 8 including collision avoidance circuitry that allows access to the memory bank through a port that attempts to access the first memory bank in an order of increasing priority during a continuous clock cycle while the processor stalls Multiport memory.
KR1019980703828A 1996-09-25 1997-09-23 Multi-port cache memory with address conflict detection KR19990071554A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US71960996A 1996-09-25 1996-09-25
US8/719,609 1996-09-25
PCT/IB1997/001146 WO1998013763A2 (en) 1996-09-25 1997-09-23 Multiport cache memory with address conflict detection

Publications (1)

Publication Number Publication Date
KR19990071554A true KR19990071554A (en) 1999-09-27

Family

ID=24890679

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980703828A KR19990071554A (en) 1996-09-25 1997-09-23 Multi-port cache memory with address conflict detection

Country Status (4)

Country Link
EP (1) EP0875030A2 (en)
JP (1) JP2000501539A (en)
KR (1) KR19990071554A (en)
WO (1) WO1998013763A2 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100780621B1 (en) * 2005-09-29 2007-11-29 주식회사 하이닉스반도체 Multi port memory device
US7613065B2 (en) 2005-09-29 2009-11-03 Hynix Semiconductor, Inc. Multi-port memory device
KR100955722B1 (en) * 2002-11-26 2010-05-03 어드밴스드 마이크로 디바이시즈, 인코포레이티드 Microprocessor including cache memory supporting multiple accesses per cycle
KR100974024B1 (en) * 2004-03-24 2010-08-05 콸콤 인코포레이티드 Cached memory system and cache controller for embedded digital signal processor
US8583873B2 (en) 2010-03-10 2013-11-12 Samsung Electronics Co., Ltd. Multiport data cache apparatus and method of controlling the same
KR20140011929A (en) * 2012-07-19 2014-01-29 에이알엠 리미티드 Handling collisions between accesses in multiport memories
WO2016089020A1 (en) * 2014-12-05 2016-06-09 삼성전자 주식회사 Memory access control method and apparatus

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19809640A1 (en) * 1998-03-06 1999-09-09 Pact Inf Tech Gmbh Speed-optimized cache system
US6557078B1 (en) * 2000-02-21 2003-04-29 Hewlett Packard Development Company, L.P. Cache chain structure to implement high bandwidth low latency cache memory subsystem
US6539457B1 (en) * 2000-02-21 2003-03-25 Hewlett-Packard Company Cache address conflict mechanism without store buffers
US6606684B1 (en) 2000-03-31 2003-08-12 Intel Corporation Multi-tiered memory bank having different data buffer sizes with a programmable bank select
US6446181B1 (en) * 2000-03-31 2002-09-03 Intel Corporation System having a configurable cache/SRAM memory
KR100754359B1 (en) * 2006-03-29 2007-09-03 엠텍비젼 주식회사 Multi-port memory device including plurality of shared blocks
KR101788245B1 (en) 2011-02-25 2017-11-16 삼성전자주식회사 Multi-port cache memory apparatus and method for operating multi-port cache memory apparatus
CN102622192B (en) * 2012-02-27 2014-11-19 北京理工大学 Weak correlation multiport parallel store controller

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0668735B2 (en) * 1987-02-09 1994-08-31 日本電気アイシーマイコンシステム株式会社 Cache memory
US5276850A (en) * 1988-12-27 1994-01-04 Kabushiki Kaisha Toshiba Information processing apparatus with cache memory and a processor which generates a data block address and a plurality of data subblock addresses simultaneously
JP2822588B2 (en) * 1990-04-30 1998-11-11 日本電気株式会社 Cache memory device
US5434989A (en) * 1991-02-19 1995-07-18 Matsushita Electric Industrial Co., Ltd. Cache memory for efficient access with address selectors

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100955722B1 (en) * 2002-11-26 2010-05-03 어드밴스드 마이크로 디바이시즈, 인코포레이티드 Microprocessor including cache memory supporting multiple accesses per cycle
KR100974024B1 (en) * 2004-03-24 2010-08-05 콸콤 인코포레이티드 Cached memory system and cache controller for embedded digital signal processor
US8316185B2 (en) 2004-03-24 2012-11-20 Qualcomm Incorporated Cached memory system and cache controller for embedded digital signal processor
KR100780621B1 (en) * 2005-09-29 2007-11-29 주식회사 하이닉스반도체 Multi port memory device
US7613065B2 (en) 2005-09-29 2009-11-03 Hynix Semiconductor, Inc. Multi-port memory device
US8583873B2 (en) 2010-03-10 2013-11-12 Samsung Electronics Co., Ltd. Multiport data cache apparatus and method of controlling the same
KR20140011929A (en) * 2012-07-19 2014-01-29 에이알엠 리미티드 Handling collisions between accesses in multiport memories
WO2016089020A1 (en) * 2014-12-05 2016-06-09 삼성전자 주식회사 Memory access control method and apparatus
KR20160068479A (en) * 2014-12-05 2016-06-15 삼성전자주식회사 Method and apparatus for controlling access for memory
US10983723B2 (en) 2014-12-05 2021-04-20 Samsung Electronics Co., Ltd. Memory access control method and apparatus

Also Published As

Publication number Publication date
WO1998013763A3 (en) 1998-06-04
WO1998013763A2 (en) 1998-04-02
JP2000501539A (en) 2000-02-08
EP0875030A2 (en) 1998-11-04

Similar Documents

Publication Publication Date Title
US5640534A (en) Method and system for concurrent access in a data cache array utilizing multiple match line selection paths
US5247649A (en) Multi-processor system having a multi-port cache memory
US5752260A (en) High-speed, multiple-port, interleaved cache with arbitration of multiple access addresses
US5239642A (en) Data processor with shared control and drive circuitry for both breakpoint and content addressable storage devices
US5561781A (en) Port swapping for improved virtual SRAM performance and processing of concurrent processor access requests
US4317168A (en) Cache organization enabling concurrent line castout and line fetch transfers with main storage
EP0407119B1 (en) Apparatus and method for reading, writing and refreshing memory with direct virtual or physical access
US5805855A (en) Data cache array having multiple content addressable fields per cache line
US5251310A (en) Method and apparatus for exchanging blocks of information between a cache memory and a main memory
US6356990B1 (en) Set-associative cache memory having a built-in set prediction array
US5668972A (en) Method and system for efficient miss sequence cache line allocation utilizing an allocation control cell state to enable a selected match line
KR19990071554A (en) Multi-port cache memory with address conflict detection
KR960006499B1 (en) Multi-processor system having a multi-port cache memory
US5269009A (en) Processor system with improved memory transfer means
US5712998A (en) Fast fully associative translation lookaside buffer with the ability to store and manage information pertaining to at least two different page sizes
US5761714A (en) Single-cycle multi-accessible interleaved cache
US5161219A (en) Computer system with input/output cache
JP2009505180A (en) Storage device formed in a computer system having at least two processing units and at least one memory, and storage method thereby
US5890221A (en) Method and system for offset miss sequence handling in a data cache array having multiple content addressable field per cache line utilizing an MRU bit
US5367657A (en) Method and apparatus for efficient read prefetching of instruction code data in computer memory subsystems
US5359557A (en) Dual-port array with storage redundancy having a cross-write operation
US6279082B1 (en) System and method for efficient use of cache to improve access to memory of page type
EP0304587B1 (en) Interruptible cache loading
JPH01199250A (en) Data processor
EP0377969A2 (en) I/O cached computer systems

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid