[go: up one dir, main page]

WO1997030395A1 - Memoire a acces multiples et processeur de donnees procurant l'acces a cette memoire - Google Patents

Memoire a acces multiples et processeur de donnees procurant l'acces a cette memoire Download PDF

Info

Publication number
WO1997030395A1
WO1997030395A1 PCT/JP1996/000338 JP9600338W WO9730395A1 WO 1997030395 A1 WO1997030395 A1 WO 1997030395A1 JP 9600338 W JP9600338 W JP 9600338W WO 9730395 A1 WO9730395 A1 WO 9730395A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
data
address
port
cycle
Prior art date
Application number
PCT/JP1996/000338
Other languages
English (en)
French (fr)
Inventor
Makoto Hanawa
Kenjii Kaneko
Kazumichi Yamamoto
Kentaro Shimada
Original Assignee
Hitachi, Ltd.
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 Hitachi, Ltd. filed Critical Hitachi, Ltd.
Priority to JP52917597A priority Critical patent/JP3593346B2/ja
Priority to KR1019980706156A priority patent/KR19990082423A/ko
Priority to PCT/JP1996/000338 priority patent/WO1997030395A1/ja
Priority to US09/125,285 priority patent/US6282505B1/en
Priority to EP96902453A priority patent/EP0881575A4/en
Publication of WO1997030395A1 publication Critical patent/WO1997030395A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Definitions

  • the present invention relates to a cache memory that speeds up data access of a computer and a data processing device.
  • the present invention provides a cache memory suitable for a superscalar processor or a long word processor (hereinafter referred to as a VLIW processor) that can execute a plurality of memory access processes in one cycle.
  • VLIW processor a superscalar processor or a long word processor
  • the first method uses a memory cell that can be accessed from two ports as the memory itself. By providing two address decoders, two word lines, two data bit lines, and two sense amplifiers for one memory cell that stores 1-bit information, A memory that can be accessed from the port can be realized. This first method is Since two systems, one for the lead line and the other for the data bit line, are required, realizing the same memory capacity requires almost twice the memory cell area as compared to a single-port case.
  • the second method is to realize a memory that can access two ports by providing a conventional single-port memory in duplicate.
  • the difference is that memory cells are also duplicated as compared with the two-port memory of the first method. Therefore, when writing data to memory, the same data must be written to the same address in both memories.
  • the second method since the memory cells are duplicated, a memory cell having twice the memory capacity is required. Conversely, only one to two of the actual number of memory cells can hold independent data. That is, to achieve the same memory capacity, the area required for memory cells is twice as large as that of conventional memory cells.
  • the third method is to divide the memory into two memory banks according to addresses, and to simultaneously process a plurality of memory accesses if accessing different memory banks. Since the data of a certain address exists in only one of the memory banks, the correspondence between the memory port and the memory bank in the address input section and the data output section is compared with the two-port memory of the second method. Is needed. The selection of this selector is performed by the lower 1 bit of the address to be accessed. In the third method, since the memory cells are not duplicated, the memory cell capacity can be used as it is as the memory capacity. -The number of memory cells can realize twice the memory capacity.
  • the total access time of the memory can be selected by the selector in addition to the access time of the memory cell. It takes time. Therefore, the total access time of the memory may be longer than that of the second method.
  • the fourth method is to use one single-port memory in a time-sharing manner. One cycle is divided into two parts, and the first half of the cycle handles access to the first memory port, and the second half of the cycle handles access to the second memory port, realizing a two-port memory. it can.
  • the capacity of the memory cell can be used as it is as in the third method.
  • the access time of the memory cell is reduced to 1Z2
  • two memory access processes cannot be executed in one cycle.
  • the access time of the memory cell is used as a reference (if the access time is not changed)
  • two memory access processes must be executed in one cycle unless the overall cycle time is doubled. Can not.
  • An object of the present invention is to solve the above-described problem of the multiport memory, and the memory capacity is the same as the memory cell capacity in the case of a single-port memory, and does not substantially extend the memory access time, and a bank access collision occurs. Multiple memory access operations at the same time without increasing the overall cycle time. It is an object of the present invention to provide a multiport memory which can be operated. Disclosure of the invention
  • each of the memory banks is a means for storing data and its address in pairs, and an address corresponding to an address input from outside the memory.
  • Determining means for determining whether or not the address exists in the memory bank; and, when the corresponding address exists, means for accessing data paired with the address and outputting the data outside the memory bank,
  • the first means may include, in a first cycle, a first address input from a first memory port which is one of the plurality of memory ports.
  • a first address is input to one of the plurality of memory banks
  • a second address input from a second memory port is one of the plurality of memory ports.
  • Input to a second memory bank which is one of the memory banks of the first memory bank, and when the determination means in the first memory bank determines that there is no data paired with the first address,
  • the first address is input to the second memory bank in a cycle after the first cycle, and there is data in the second memory bank which is paired with the second address by the determination means in the second memory bank. If you decide not to The first memory bank in a cycle subsequent to the first cycle. This is achieved by inputting the second address to.
  • the first means may include, in a first cycle, a first address input from a first memory port which is one of the plurality of memory ports. This is achieved by inputting to all the memory banks among the plurality of memory banks.
  • a data processing device used by connecting the above-described multi-port memory as a data memory is used.
  • instructions for programming the control of the data processing device instructions for accessing the data memory are included.
  • the above multiport memory operates as follows.
  • the address from the first memory port is input to the first memory bank in the first cycle, and it is searched whether the data to be accessed is stored in the first memory bank. If so, the corresponding data is accessed and the processing on the first memory port side is terminated. If not, in the second cycle, the address is input to the second memory bank, and it is searched whether the data to be accessed is stored in the second memory bank. If so, access the corresponding data and end the processing of the first memory port.
  • the second memory port inputs an address to a memory bank other than the first memory bank in the first cycle, and searches whether the data to be accessed is stored in the memory bank. If it exists, the corresponding data is accessed and the processing of the second memory port ends. if, If not, in the second cycle, the address is input to a memory bank other than the second memory bank, and it is searched whether the data to be accessed is stored inside the memory bank. If there is, the corresponding data is accessed and the processing of the second memory port ends.
  • the first memory port accesses the first memory bank, and the second memory port accesses a memory bank other than the first memory bank. Do not collide, and both operations can be processed simultaneously, that is, in parallel. Also, in the second cycle, the first memory port accesses the second memory bank, and the second memory port accesses a memory bank other than the second memory bank. And both actions can be processed in parallel.
  • the memory access can be completed in one cycle by accessing all memory banks in the first cycle. That is, in the first cycle, the address of the first memory port is input to all the memory banks, and a search is made as to whether data to be accessed is stored in any of the memory banks. If it exists in any memory bank, the corresponding data is accessed and the processing of the first memory port is terminated.
  • data to be accessed is stored by appropriately specifying bit information in an instruction for accessing the above-mentioned data memory.
  • a memory bank can be accessed in the first cycle, and multiple memory accesses can be completed in one cycle.
  • FIG. 1 is a block diagram showing a cache memory according to one embodiment of the present invention and its peripheral blocks.
  • FIG. 2 is a diagram showing an operation in a first cycle in an operation of simultaneously processing two memory accesses in the cache memory shown in FIG.
  • FIG. 3 is a diagram showing an operation in a second cycle of an operation of simultaneously processing two memory accesses in the cache memory shown in FIG.
  • FIG. 4 is a diagram showing an operation of processing one memory access in the cache memory shown in FIG.
  • FIG. 5 is a block diagram showing the entire data processing device to which the cache memory shown in FIG. 1 is connected.
  • FIG. 6 is a block diagram showing a cache memory according to another embodiment of the present invention and its peripheral blocks. BEST MODE FOR CARRYING OUT THE INVENTION
  • FIG. 5 is a block diagram of a data processing device according to an embodiment of the present invention.
  • the data processing apparatus includes a processor 410 executing instructions, an instruction cache 420 serving as a cache memory for instructions, a data cache 430 serving as a cache memory for data, and a main memory 404. Consists of zero. These are connected to each other via an address bus, a data bus, and the like.
  • the instruction cache 420 holds a copy of the program area in the main memory 440
  • the data cache 430 holds a copy of the data area in the main memory 440.
  • the processor 410 includes a register file 106 for storing data, a computing unit 412 for performing an operation in accordance with an instruction, and a control circuit 413 for controlling them.
  • Processor 410 reads from instruction cache 420 An instruction, which is one processing unit of the RAM, is read, and the control circuit 413 operates circuits (register files, arithmetic units, etc.) inside the processor according to the instruction of the instruction.
  • the types of instructions include: the operation of the data in the register file 106 with a computing unit 4 1 2 etc., and the result of storing the result in the register file 106, There are instructions for writing to the main memory 440 and the data cache 430, and instructions for damaging the contents of the main memory 440 or the data cache 430 into the register file 106.
  • the data cache 430 is a cache memory having two memory ports. The data capacity to be accessed; two data accesses can be processed simultaneously if they exist in the data cache 430.
  • the data read from the data cache 430 as an access result is sent to the processor via a signal line (bus or the like) for sending data between the data cache and the processor.
  • the structure of this data cache 430 is shown in detail in FIG.
  • Figure 1 shows the instruction registers 100 and 110 constituting the processor 410, the register file 106, the address calculators 107 and 117, and the data cache 430 (enclosed by a broken line). Part).
  • Instructions for performing memory access are set in the instruction registers 100 and 110.
  • the instructions set in instruction registers 100 and 110 are each divided into five parts.
  • the five parts are the operation code parts 101 and 111 that specify the type of operation, and the port designation hint part 1 that is information used to specify the access port to the data cache. 0 2 and 1 1 2, destination register specification section 1 0 3 and 1 1 3, base address register specification section 1 0 4 and 1 1 4, displacement These are the comment specification sections 105 and 115.
  • the processor 410 can execute two instructions at the same time.
  • a load (LD) instruction which is an instruction for transferring memory data to the register, is set in the instruction register 100 in FIG.
  • Whether the instruction is an LD instruction can be determined by decoding the operation code section 101 with a decoder or the like not shown.
  • This LD instruction reads the contents of the register Rb0 specified by the base address register specification section 104 from the register file 106, and reads the value of the register Rb0 and the value of the displacement specification section 105. Adds the displacement disp 0, which is the contents, reads the contents of the memory using the result of the addition as an address, and reads the read contents into the register file 1 specified by the destination register specification section 103.
  • This instruction is stored in the register R d0 in 06.
  • a load (LD) instruction which is an instruction to transfer memory data to the register, is set in the instruction register 110 of FIG. Whether the instruction is an LD instruction can be determined by decoding the operation code section 111 with a decoder or the like not shown.
  • This instruction also reads the contents of the register Rb1 specified by the base address register specification section 114 from the register file 106, and uses the value and the contents of the displacement specification section 115 to read the contents of the register Rb1.
  • a certain displacement disp 1 is added, the content of the memory is read out using the addition result as an address, and the read out content is stored in the register R d 1 in the register file 106 specified by the destination register specification section 113. Is an instruction to be stored in
  • processor 4 1 0 has two L
  • two accesses to the data cache are issued at the same time via a signal line connecting the processor 410 and the data cache 430. This signal line can transmit two accesses by two instructions at the same time.
  • the data cache 430 has two memory links 125 and 135, four selectors 108, 118, 146 and 156, and a control circuit 16 for controlling them. Consists of zero.
  • the selector 108 assigns an input address to the memory bank 0 (125) to a memory port 0 (a port for the memory bank 0 and a general term for an address input port for the memory bank 0, an output port for memory contents, and the like). ) Or from memory port 1 (the port for memory bank 1 is a generic term for the address input port for memory bank 1, the output port for memory contents, etc.).
  • Selector 1 18 selects whether to input the input address to memory bank 1 (1 3 5) from memory port 0 or memory port 1.
  • Selector 1 4 6 outputs to memory port 0 Select whether to output the read data to be output from memory bank 0 (1 2 5) or memory bank 1 (1 3 5).
  • the selector 156 selects whether the read data to be output to the memory port 1 is output from the memory bank 0 (125) or the memory bank 1 (135).
  • Memory bank 0 (125) is a 2-way set-associative cache memory.
  • the lower bits of the address selected by the selector 108 are decoded by the address decoder 120, and the memory arrays 121, 122, 123, and 124 are read.
  • the memory arrays 1 2 1 and 1 2 2 store a tag of way 0 and a tag of way 1 respectively, 1 2 3 stores data of way 0, and 1 2 4 stores data of way 1.
  • the tag of way 0 and the tag of way 1 read from 121 and 122 are compared with the upper bits of the address selected by selector 108 by comparators 141 and 142, respectively. Be compared.
  • this state is called a hit, and the data corresponding to the matching way is read from the memory arrays 123 and 124.
  • the data is selected by the selector 144 from the data of the bay 0 and the data of the way 1 and output as the output data of the memory bank 0 (125). If there is no matching address, this condition is called a miss.
  • the memory bank 1 (135) is also a 2-way set-associative cache memory, like the memory bank 125.
  • the address decoder 130 decodes the lower bits of the address selected by the selector 118 and reads out the memory arrays 131, 132, 133, and 134.
  • the memory arrays 1331 and 1332 store a tag of way 0 and a tag of pair 1, respectively, 133 store data of way 0, and 134 store data of way 1.
  • the tags of layer 0 and the tag of way 1 read from the memory arrays 13 1 and 13 2 are compared with the upper bits of the address selected by the selector 1 18 by comparators 15 1 and 15 2, respectively.
  • this state is called a hit, and the data corresponding to the matching way is read from the memory arrays 133 and 134. And the data of way 1 are selected by the selector 153 and output as the output data of the memory bank 1 (135). If no matching address exists, this condition is called a miss.
  • the data output from each memory bank is read to memory port 0 if the read input address is from memory port 0.
  • Selectors 146 and 156 are selected to output the read data to memory port 1 if the read input AND is from memory port 1. You. Then, the read data output from the selector 146 is stored in the register in the register file specified by the destination register specification unit R d0 (103) of the instruction register 100.
  • the read data output from the selector 156 is stored in the register in the register file specified by the destination register specification unit R dl (113) of the instruction register 110.
  • the selector 146 for generating data and the selector 156 for generating data to be output to the memory port 1 are configured as separate selectors, respectively.
  • a selector that realizes the same function as the three selectors 143, 153, 146, and 156 can also be configured.
  • the data read from the memory arrays 123, 124, 133, and 134 are input to four systems, and two four-input one-output selectors that output one system are provided.
  • the output of the selector of the selector should be the output to the memory port 0, and the output of the other selector should be the output to the memory port 1.
  • the selection instruction of each 4-input selector must be performed independently.
  • the operation in the data cache 430 is controlled by the control circuit 160.
  • a signal line and the like for the control circuit 160 to collect the state of each component in the data cache and a signal line for controlling each component are omitted from the figure.
  • the arrow line on the drawing that specifies the register file 106 from the section register specification part R d0 (103) passes through the data cache 430, but this simply In fact, it is not necessary to pass through the data cache 430.
  • FIG. 2 and FIG. 3 are diagrams illustrating the operation of simultaneously processing the two LD instructions described in FIG. FIG. 2 shows the operation in the first cycle, and FIG. 3 shows the operation in the second cycle.
  • the cycle here is the timing at which the data cache 430 is operated, and the timing at which the processor 410 is operated.
  • the system clock for driving the entire data processing device shown in FIG. And have a certain relationship. For example, one clock of the system clock corresponds to one cycle, or multiple clocks of the system clock correspond to one cycle.
  • the input address selector 108 of the memory bank 0 accesses the memory port 0 side, that is, the access of the LD instruction set in the instruction register 100. Select an address. With this address, memory bank 0 (125), which is a 2-way set-associative cache memory, is searched. If the address is hit, the corresponding data is output from the selector 144 and the data of the memory bank 0 (125) is transferred to the memory port 0 of the data cache 430 by the selector 146. The data is output as read data, and the access on the memory port 0 side ends. If the address is wrong, the operation in the first cycle Up to this point, the control circuit 160 determines to access the memory bank 1 (135) in the second cycle.
  • the input address selector 1 18 of memory bank 1 selects the access address of the LD instruction set in the memory port 1 side, that is, the instruction register 110, as shown in Fig. 2. .
  • memory bank 1 (135) which is a two-way set-associative cache memory, is searched. If the address is hit, the corresponding data is output from the selector 153, and the selector 156 transfers the data of the memory bank 1 (135) to the read data on the memory port 1 side of the data cache 430. And terminates the access on the memory port 1 side. If the address is incorrect, the operation in the first cycle ends here, and the control circuit 160 determines to access the memory bank 0 (125) in the second cycle.
  • Figure 3 shows the second cycle when both memory port 0 and memory port 1 access miss in memory bank 0 (125) and memory bank 1 (135) in the first cycle, respectively. This shows the operation of.
  • This second cycle is a cycle after the first cycle in time.
  • the input address selector 108 of the memory bank 0 selects the memory port 1 side, that is, the access address of the LD instruction set in the instruction register 110.
  • memory bank 0 125
  • the selector 144 transfers the data of the memory link 0 (125) to the memory port 430 of the data cache 430.
  • Side reading The data is output as read data, and this memory port 1 access is completed. If the address is incorrect, the operation in the second cycle ends here, and the control circuit 160 determines to access the main memory 440 in the third cycle.
  • the input address selector 1 18 of the memory bank 1 selects the access address of the LD instruction set in the memory port 0, that is, the instruction register 100. With this address, memory bank 1 (135), which is a 2-way set-associative cache memory, is searched. If the address is hit, the corresponding data is output from the selector 153, and the selector 146 transfers the data of the memory bank 1 (135) with the read data of the memory port 0 side of the data cache 430. Then, the access on the memory port 0 side is terminated. If the address is missing, the operation in the second cycle ends here, and the control circuit 160 determines to access the main memory 440 in the third cycle.
  • each memory access is performed by searching both the memory bank 0 (125) and the memory bank 1 (135), which are two-way set-associative cache memories, and The unit is performing a hit judgment.
  • the data cache 430 operates as a 4-way set-associative cache memory whose cache capacity is the sum of the capacities of the memory banks.
  • the memory When two memory access instructions are executed simultaneously, as described above, the memory operates as a 4-way set-associative cache memory in two cycles. Here, if memory port 0 access hits memory bank 0 (125) and memory port 1 access hits memory bank 1 (135), then two memory accesses in one cycle Order Can be run simultaneously.
  • an LD instruction that is likely to hit in memory bank 0 (125) requires a data cache on memory port 0 side.
  • the data cache 430 can be accessed on the memory port 1 side. Such control is possible by the information of the memory port designation hint sections 102 and 112 in the LD instruction.
  • the control circuit 413 of the processor 410 decodes the memory port designation hint portion in the memory access instruction read from the main memory 440 or the instruction cache 420, for example, the LD instruction, and designates the memory port 0.
  • the instruction is set in the instruction register 100, and if the memory port 1 is specified, the instruction is set in the instruction register 110.
  • the memory access instruction set in the instruction register 100 accesses the memory bank 0 (125) in the first cycle, and the memory access instruction set in the instruction register 110 is the first memory access instruction. Since memory bank 1 (135) is accessed in the first cycle, the probability of hitting in each of memory banks 125 and 135 increases, and the probability that these two memory access instructions can be completed in one cycle Will be higher.
  • the setting of information in the memory port designation hints 102 and 112 of the LD instruction is performed by the compiler for data processing equipment consisting of a processor with a data cache described above when compiling a program.
  • the LD instruction memory port designation hints 102 and 11 are compiled. To 2, before performing the operation It has been set. This setting reduces the probability that the instructions on the memory port 0 and the instructions on the memory port 1 will access the same memory bank at the same time during execution on the processor.
  • the cache memory when two memory access instructions are executed simultaneously, the cache memory operates as a 4-way set-associative cache memory in two cycles.
  • the cache memory when only one memory access instruction is executed, the cache memory can operate as a 4-way set-associative cache memory in one cycle.
  • Figure 4 illustrates this operation.
  • FIG. 4 is a diagram when the LD instruction set in the instruction register 100 is executed.
  • Both the input address selector 108 of memory bank 0 and the input address selector 118 of memory bank 1 select the access address of the LD instruction set in the memory port 0, that is, the instruction register 110. .
  • the memory banks 0 (125) and 1 (135) which are two-way set-associative cache memories, are simultaneously searched. If the address is hit in one of the memory banks, the corresponding data is output from the selector 144 or the selector 153, and the selector 146 transfers this data to the memory port of the data cache 430. The data is output as read data on the 0 side, and the access on the memory port 0 side ends. If the address is missed in both memory banks, the operation in the first cycle ends at this point, and the control circuit 160 determines to access the main memory 440 in the second cycle.
  • the access address of the LD instruction set in the memory port 0, that is, the instruction register 100 is changed in both the memory bank 0 (125) and the memory bank 1 (1 35). If both are mistakes, the main memory 440 is accessed at the third cycle.
  • the data read from the main memory 440 is transferred to the processor 410 and stored in the register file 106.
  • the data cache 430 also stores the data in the data cache 430 because the data may be accessed again in the near future.
  • Which of the memory banks in the data cache 430 is to be stored is controlled by the memory port originally accessed. In this case, since it was accessed by the instruction set in the memory port 0, that is, the instruction register 100, it is stored in the memory bank 0 (125). For example, which way in memory bank 0 (125) is to be stored is selected, for example, from the way accessed at the oldest time. This method is called LRU method.
  • the access address of the LD instruction set in the memory port 1 side that is, the instruction register 111 is changed to the memory bank 0 (125) and the memory bank 1 (135). If both are misses, the main memory 440 is accessed from the third cycle onward.
  • the ability to access the main memory 440 immediately in the third cycle and the ability to access the main memory 440 in the subsequent cycles depend on the state of the memory port 0 miss. In other words, the memory port 0 side is also mistaken and the main memory 440 is When accessing, the processing on the memory port 0 side is performed in the third cycle, and the processing on the memory port 1 side is performed later.
  • Data read from the main memory 440 is transferred to the processor 410 as in the case of access from the memory port 0 side, and stored in the register file 106. At this time, since this data may be accessed again in the near future in the data cache 430, it is also stored in the data cache 430. Which of the memory banks in the data cache 430 is to be stored is controlled by which memory port was originally used to access. In this case, since it was accessed by the instruction set in the memory port 1 side, that is, the instruction set in the instruction register 110, it is stored in the memory bank 1 (135). Which way in the memory bank 1 (1 3 5) is to be stored is, for example, selected by the LRU method and stored.
  • both memory banks 125 and 135 are searched at the same time to determine the hit Z miss. If both memory banks 125 and 135 are missed, the main memory 440 is accessed in the second cycle. The data read from the main memory 440 is transferred to the processor 410 and stored in the register file 106. At this time, since the data may be accessed again in the near future in the data cache 430, it is also stored in the data cache 430. Which of the memory banks in the data cache 430 is stored can be controlled by which memory port was originally used to access. In the case of FIG. 4, since it was accessed by the instruction set in the memory port 0, that is, the instruction register 100, it is stored in the memory bank 0 (125).
  • Which way in the memory bank 0 (125) is stored, for example, by selecting a way by the LRU method and storing it. Also, as another control method, two ways in memory bank 0 (125) and two ways in memory bank 1 (135) are treated equally, and a total of four ways is used. It can be regarded as a set associative method, and one way can be selected from the four ways and stored. In this case, the LRU method of selecting and storing the way accessed at the oldest time from the above four wires can be adopted.
  • FIG. 6 shows the block diagram.
  • memory bank 0 (125) has the address of memory bank 1 (135) .tag.copies of memory arrays 1 3 1 and 1 32 at 126 and 1 27, address '' Tags.
  • Comparators 144 and 145 that compare tags read from memory arrays 126 and 127 with the upper bits of the address selected by selector 108 are added to the configuration in Figure 1. It has been done. As a result, the address search of the memory bank 1 (1 35) can be executed in parallel with the cycle of the address search in the memory link 0 (125). If both are missed, it can be detected in one cycle. Therefore, in the second cycle, the access to the main memory 440 can be started without accessing the memory bank 1 (135), and the processing at the time of a data cache 430 miss can be speeded up.
  • the address of memory bank 0 (1 2 5), the tag, and the memory array 1 2 1 and 1 2 2 2 Comparator 15 compares the tag held in address 13 and read from address memory array 13 6 and 13 7 with the upper bits of the address selected by selector 1 18 4 and 1 55 are added to the configuration of FIG.
  • the address search of the memory bank 0 (125) can be executed in parallel with the cycle of the address search in the memory bank 1 (135). If any bank misses, it can be detected in one cycle. Therefore, after the second cycle, the access to the main memory 440 can be started without accessing the memory bank 0 (125), and the processing at the time of the data cache 430 miss is accelerated. can do.
  • the present invention is also applicable to a case where the number of memory banks is three or more and the number of memory ports is three or more.
  • the first memory access port corresponds to the first memory bank
  • the second memory access port corresponds to the second memory bank
  • the third memory access port corresponds to the third memory access port.
  • the third memory bank accesses the fourth memory bank
  • the fourth memory access port accesses the fourth memory bank
  • the second and subsequent cycles access the other memory banks.
  • each of the first memory access boards Is the second memory bank
  • the second memory access port is the third memory bank
  • the third memory access port is the fourth memory bank
  • the fourth memory access port is the first memory bank.
  • the first memory access port accesses the third memory bank
  • the second memory access port accesses the fourth memory bank
  • the third memory access point accesses the memory bank in the third cycle.
  • One memory bank, a fourth memory access port accesses a second memory bank
  • the first memory access port accesses the fourth memory bank and the second memory bank, respectively.
  • the memory access port accesses the first memory bank
  • the third memory access port accesses the second memory bank
  • the fourth memory access port accesses the third memory bank.
  • the present invention is also applicable to a case where the number of memory banks is four and the number of memory ports is two.
  • the first memory access port corresponds to the first memory bank and the second memory bank
  • the second memory access port corresponds to the third memory bank and the fourth memory bank.
  • the bank is accessed, and after the second cycle, each of the other memory banks is accessed.
  • the first memory access port has the third memory bank and the fourth memory bank
  • the second memory access port has the first memory bank and the second memory bank. To access.
  • the case where the number of memory banks is two or more and the number of memory ports is two or more is within the scope of the present invention.
  • the present invention has the following effects.
  • the memory is divided into a plurality of memory banks and can operate in parallel, a function as a multiport memory capable of simultaneously processing a plurality of memory accesses can be realized. Further, if addresses to be accessed in the memory bank accessed in the first cycle are stored, a plurality of memory accesses can be processed in parallel in one cycle.
  • the function as a two-port memory can be achieved without reducing the access time of the memory cells to 12 and, conversely, without doubling the overall cycle time. It can be realized.
  • the memory bank is selected without using an address
  • the selection by the address input selector can be performed in parallel with other processing, and the selection time does not become a critical path. Therefore, the function as a multiport memory can be realized without extending the memory access time.
  • the multi-port memory according to the present invention can realize a multi-port memory without increasing the access time of the memory, and requires a plurality of memory access processes in one cycle, such as a single-pass color processor and a VLIW processor. It is suitable for use as a memory of a data processing device using a processor, especially as a cache memory.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

明細書 マルチポートメモリ及びそれをアクセスするデータ処理装置 技術分野
本発明は、 計算機やデータ処理装置のデータアクセスを高速化するキヤ ッシュメモリに関するものである。 特に、 メモリアクセス処理を 1サイク ルに複数個、 実行可能なスーパスカラプロセッサもしくは長語長プロセッ サ (以下、 V L I Wプロセッサと記す) などに好適なキャ ッシュメモリを 提供する。 背景技術
計算機やデータ処理装匱において、 スーパスカラプロセッサや VL I W プロセッサ等を用いる場合、 1サイクルに複数個のメモリアクセス処理が 発生する。 このメモリアクセス処理を 1サイクルに複数個、 実行するため には、 メモリのポートがアクセス処理の数だけ必要である。 1サイクルに 複数個のメモリアクセス処理を可能とするものと して、 2ポートのメモリ の従来例が、 参考文献 ( 「 P OWE R a n d P o w e r P Cj , 1 9 94年、 Mo r g a n K a u f m a n n出版社発行) の第 1 6 8頁から 1 7 0頁に記載されている。
第 1の方式は、 メモリ 自身と して、 2ポートからアクセスが可能なメモ リセルを用いる方法である。 1 ビッ トの情報を記憶する 1つのメモリセル に対して、 2系統のア ドレスデコーダ及び 2系統のワード線、 2系統のデ —タビッ ト線、 2系統のセンスアンプなどを設けることにより、 2ポー ト からアクセスが可能なメモリを実現することが出来る。 この第 1の方式は、 ヮ一ド線ゃデータビッ 卜線が 2系統必要なことから、 同じメモリ容量を実 現しようとすると、 メモリセルの面積はシングルポ一トの場合と比べてほ ぼ 2倍必要となる。
第 2の方式は、 従来のシングルポートメモリ を 2重化して設けることに よって、 2ポートのアクセスが可能なメモリを実現する方式である。 上記 第 1の方法の 2ポートメモリ と比較して、 メモリセルも 2重化される点が 異なる。 したがって、 メモリにデータを書き込む場合には、 両方のメモリ の同じア ドレスに同じデータを書き込む必要がある。 この上記第 2の方式 は、 メモリセルが 2重化されているので、 メモリ容量の 2倍のメモリセル が必要である。 逆に言えば、 実際のメモリセルの数の 1ノ 2 しか独立なデ ータを保持できない。 即ち、 同じメモリ容量を実現しょうとすると、 メモ リセル用と して面積が従来の 2倍必要である。
従って、 第 1の方式と第 2の方式を比較すると、 メモリセルの面積には ほとんど差がない。 また、 2つのポートから同一ア ドレスをアクセスする 際には、 メモリセルが共通な第 1の方式では、 片方のアクセスが待たされ るのでアクセス時間が必然的に 2倍となる。
第 3の方式は、 メモリ をァ ドレスによって 2つのメモリバンクに分割し、 異なるメモリバンクに対するアクセスであれば、 それら複数のメモリアク セスを同時に処理する方式である。 あるァドレスのデータはどちらか一方 のメモリバンクにしか存在しないので、 上記第 2の方式の 2ポー 卜メモリ と比較して、 ァ ドレス入力部及びデータ出力部にそれぞれのメモリポー ト とメモリバンクの対応を変換するセレクタが必要である。 なお、 このセレ クタの選択指示は、 アクセスするァドレスの下位 1 ビッ トにより行われる。 上記第 3の方式は、 メモリセルを 2重化していないので、 メモリセルの 容量が、 そのままメモリ の容量とすることができ、 第 2の方式に比べ、 同 —のメモリセルの数で 2倍のメモリ容量を実現することができる。 し力 し、 第 3の方式では、 ア ドレスの 1 ビッ 卜でどちらのメモリバンクをアクセス するかを決めるので、 メモリの トータルアクセス時間としては、 メモリセ ルのアクセス時間の他に、 セレクタでの選択時間が必要となる。 従って、 第 2の方式に比べ、 メモリのトータルアクセス時問が長くなる恐れがある。 第 4の方式は、 1つのシングルポートメモリを時分割で使う方法である。 1サイクルを 2つに分け、 前半の 1 2サイクルで第 1メモリポートのァ クセスを処理し、 後半の 1 2サイクルで第 2メモリポ一トのアクセスを 処理することにより、 2ポートのメモリを実現できる。
上記第 4の方式は、 メモリセルなどが 2重化されていないので、 上記第 3の方式と同様に、 メモリセルの容量を、 そのままメモリの容量とするこ とができる。 しカゝし、 メモリセルのアクセス時間を 1 Z 2に高速化しなけ れば、 1サイクルで 2個のメモリアクセス処理を実行することはできない。 逆に、 メモリセルのアクセス時間を基準にすれば (アクセス時間をそのま まにすれば) 、 全体のサイクル時間を 2倍に延ばさなければ、 1サイクル で 2個のメモリアクセス処理を実行することはできない。
上記述べたように、 従来のマルチポートメモリでは、 メモリセル面積を 変えない場合はメモリの容量がメモリセルの容量の 1 Z 2に削減されてし まう、 もしくは、 メモリのアクセス時問が延びる、 あるいは、 メモリセル のアクセス時間を基準に考えると全体のサイクル時間が 2倍に延びてしま うなどの課題があった。
本発明の目的は、 上記マルチポートメモリの課題を解決し、 メモリ容量 がシングルポ一 トメモリのときのメモリセルの容量と同一で、 実質的にメ モリのアクセス時間を延ばさず、 バンクアクセス衝突も発生させず、 また、 全体のサイクル時間も延ばさずに、 複数のメモリ アクセス処理を同時に実 行できるマルチポ一トメモリを提供することにある。 発明の開示
本発明は、 複数のメモリバンクに分割したメモリにおいて、 前記メモリバ ンクのそれぞれは、 データとそのア ドレスを対にして記憶する手段と、 当 該メモリ外から入力されるァドレスに対応するァドレスが当該メモリバン ク内に存在するか否かを判断する判断手段と、 前記対応するァドレスが存 在するとき、 当該ァ ドレスと対になるデータをアクセスし当該メモリバン クの外へ出力する手段を有し、 前記メモリは、 前記複数のメモリポートか ら入力される複数のア ドレスそれぞれを、 前記複数のメモリバンクのいず れのメモリバンクへ入力するかを選択し入力する第 1手段と、 前記各メモ リバンクから読み出されたデータを、 当該メモリバンクへ入力されたァド レスが入力された前記メモリポ一卜に対応するデータ出力用のポー卜へ出 力する手段を有するマルチポートメモリによって達成される。
また、 上記のマルチポートメモリにおいて、 前記第 1の手段は、 第 1サ ィクルで、 前記複数のメモリポ一トの内の一つである第 1のメモリポート から入力される第 1のァドレスを前記複数のメモリバンクの内の一つであ る第 1のメモリバンクへ入力し、 前記複数のメモリポートの内の一つであ る第 2のメモリポー卜から入力される第 2のァドレスを前記複数のメモリ バンクの内の一つである第 2のメモリバンクへ入力し、 前記第 1のメモリ バンク内の前記判断手段が前記第 1のァドレスと対になるデータが存在し ないと判断したとき、 前記第 1サイクルより後のサイクルで前記第 2のメ モリバンクへ前記第 1のァ ドレスを入力し、 前記第 2のメモリバンク内の 前記判断手段が前記第 2のァドレスと対になるデータが存在しないと判断 したとき、 前記第 1サイクルより後のサイクルで前記第 1のメモリバンク へ前記第 2のア ドレスを入力することによって達成される。
更に、 前述のマルチポートメモリにおいて、 前記第 1の手段は、 第 1の サイクルで、 前記複数のメモリポ一卜の内の一つである第 1のメモリポー トから入力される第 1のァドレスを前記複数のメモリバンクの内の全ての メモリバンクへ入力することによって達成される。
次に、 上述のマルチポートメモリをデータメモリ と して接続して用いら れるデータ処理装置であって、 前記データ処理装置の制御をプログラムす る命令の内、 前記データメモリをアクセスする命令の中に設けられている 所定のビッ ト数の情報をデコ一ドする手段と、 デコード結果に従って当該 命令を実行する手段とを有し、 ここで、 前記情報は前記複数のメモリポー トの内のいずれのメモリポ一トをアクセスするかを指定する情報であるこ とによって達成される。
上記のマルチポートメモリは、 以下の様に動作する。
第 1のメモリ ポー 卜からのア ドレスは、 第 1 のサイクルで第 1 のメモリ バンクに入力され、 アクセスするデータが第 1 のメモリバンクの内部に記 憶されているかが検索される。 もし存在していれば、 対応するデータをァ クセスして、 第 1のメモリポー ト側の処理を終了する。 もし、 存在してい なければ、 第 2のサイクルにおいて、 第 2のメモリバンクに当該ア ドレス が入力され、 アクセスするデータが第 2のメモリバンクの内部に記憶され ているかが検索される。 もし存在していれば、 対応するデータをアクセス して、 第 1のメモリポー トの処理を終了する。
—方、 第 2のメモリポー 卜は、 第 1のサイクルで第 1のメモリバンク以 外のメモリバンクにァドレスを入力し、 アクセスするデータがそのメモリ バンクの内部に記憶されているかを検索する。 もし存在していれば、 対応 するデータをアクセス して、 第 2のメモリポ一卜の処理を終了する。 もし、 存在していなければ、 第 2のサイクルにおいて、 第 2のメモリバンク以外 のメモリバンクにァ ドレスを入力し、 アクセスするデータがそのメモリバ ンクの内部に記憶されているかを検索する。 もし存在していれば、 対応す るデータをアクセスして、 第 2のメモリポ一卜の処理を終了する。
なお、 上記の動作において、 第 1サイクルにおいては、 第 1のメモリポ 一トは第 1 のメモリバンクをアクセス し、 第 2のメモリポートは第 1のメ モリバンク以外のメモリバンクをアクセスするので、 アクセスが衝突する ことはなく、 どちらの動作も同時に、 即ち並列に処理することが出来る。 また、 第 2サイクルにおいては、 第 1 のメモリポートは第 2のメモリバン クをアクセスし、 第 2のメモリポ一トは第 2のメモリバンク以外のメモリ バンクをアクセスするので、 この場合もアクセスが衝突することはなく、 どちらの動作も並列に処理することが出来る。
また、 メモリアクセスが 1つしかない場合は、 第 1サイクルで全てのメ モリバンクをアクセスすることにより、 1サイクルでメモリアクセスを終 了することが出来る。 つまり、 第 1のサイクルで全てのメモリバンクに、 第 1 のメモリポートのア ドレスを入力し、 アクセスするデータがどこかの メモリバンクの内部に記憶されているかを検索する。 どこかのメモリバン クに存在していれば、 対応するデータをアクセスして、 第 1のメモリポー 卜の処理を終了する。
さらにまた、 上記のマルチポートメモリをデータメモリ と して接続して いるデータ処理装置において、 上記データメモリをアクセスする命令中の ビッ 卜情報を適切に指定することによって、 アクセスすべきデータが記憶 されているメモリバンクに第 1のサイクルでアクセスすることができ、 1 サイクルで複数のメモリアクセスを終了することができる。 図面の簡単な説明
図 1は、 本発明の一実施例であるキヤッシュメモリ及びその周辺ブロッ クを示すブロック図である。 図 2は、 図 1に示したキャッシュメモリにお いて、 2つのメモリアクセスを同時に処理する動作の内、 第 1サイクル目 の動作を示した図である。 図 3は、 図 1に示したキャッシュメモリにおい て、 2つのメモリアクセスを同時に処理する動作の內、 第 2サイクル目の 動作を示した図である。 図 4は、 図 1に示したキャッシュメモリにおいて、 1つのメモリアクセスを処理する動作を示した図である。 図 5は、 図 1に 示したキャッシュメモリが接続されているデータ処理装置の全体を示すブ ロック図である。 図 6は、 本発明の他の一実施例であるキャッシュメモリ 及びその周辺ブロックを示すブロック図である。 発明を実施するための最良の形態
以下、 本発明を、 実施例をもとに、 図を用いて説明する.
図 5は本発明の一実施例であるデータ処理装置のブロック構成図である。 本実施例のデータ処理装置は、 命令を実行するプロセッサ 4 1 0、 命令用 のキャッシュメモリである命令キヤッシュ 4 2 0、 データ用のキヤッシュ メモリであるデータキヤッシュ 4 3 0、 及び、 メインメモリ 4 4 0から成 る。 これらは、 ア ドレスバス、 データバス等を介して互いに接続されてい る。 命令キャッシュ 4 2 0はメインメモリ 4 4 0中のプログラム領域のコ ピ—を保持し、 データキャッシュ 4 3 0はメインメモリ 4 4 0中のデータ 領域のコピ一を保持している。
プロセッサ 4 1 0は、 データを格納するレジスタファイル 1 0 6、 命令 に従って演算を実行する演算器 4 1 2、 及び、 それらを制御する制御回路 4 1 3なら成る。 プロセッサ 4 1 0は、 命令キャッシュ 4 2 0からプログ ラムの 1つの処理単位である命令を読み出し、 その命令の指示に従って制 御回路 4 1 3がプロセッサ内部の回路 (レジスタファイル、 演算器等) を 動作させる。
命令の種類には、 レジスタファイル 1 0 6の中のデータを演算器 4 1 2 などで演算し、 その結果をレジスタファイル 1 0 6に格納する命令のほ力 、 レジスタファイル 1 0 6の内容をメインメモリ 4 4 0及びデータキヤッシ ュ 4 3 0へ書き込む命令、 及び、 メインメモリ 4 4 0またはデ一タキャッ シュ 4 3 0の内容をレジスタファイル 1 0 6へ害き込む命令がある。
ここで、 データキャッシュ 4 3 0は、 2つのメモリポートを持つキヤッ シュメモリである。 アクセスすべきデータ力;、 データキャッシュ 4 3 0の 中に存在していれば、 2つのデータアクセスを同時に処理することができ る。 データキヤッシュ 4 3 0からアクセス結果と して読み出されたデータ は、 データキャッシュとプロセッサを結ぶデータを送る信号線 (バス等) を介してプロセッサへ送られる。 このデータキヤッシュ 4 3 0の部分の構 成を図 1に詳細に示す。
図 1は、 プロセッサ 4 1 0を構成する命令レジスタ 1 0 0及び 1 1 0、 レジスタファイル 1 0 6、 ァ ドレス計算器 1 0 7及び 1 1 7 と、 データキ ャッシュ 4 3 0 (破線で囲まれた部分) の内部ブロックを示す。
命令レジスタ 1 0 0及び 1 1 0は、 メモリアクセスを行う命令がセッ ト される。 命令レジスタ 1 0 0及び 1 1 0にセッ トされた命令は、 それぞれ 5つの部分に分割される。 5つの部分とは、 オペレーショ ンの種類を規定 するオペレーシヨ ンコード部 1 0 1及び 1 1 1 、 及び、 データキヤッシュ へのアクセスポートを指定するために使用する情報であるポ一ト指定ヒン ト部 1 0 2及び 1 1 2、 デスティネーションレジスタ指定部 1 0 3及び 1 1 3、 ベースア ドレスレジスタ指定部 1 0 4及び 1 1 4、 ディスプレース メ ン ト指定部 1 0 5及び 1 1 5である。 この構成を有することにより、 プ 口セッサ 4 1 0は 2つの命令を同時に実行することができる。
今、 図 1 の命令レジスタ 1 0 0に、 メモリのデータをレジスタへ転送す る命令であるロード (L D ) 命令がセッ トされているものとする。 L D命 令であることは、 ォペレ一ションコード部 1 0 1を図に示さないデコーダ 等により解読することにより判断できる。 この L D命令は、 レジスタファ ィル 1 0 6の中からベースァドレスレジスタ指定部 1 0 4で指定されたレ ジスタ R b 0の内容を読み出し、 その値とディスプレースメ ン ト指定部 1 0 5の内容であるディスプレースメ ン ト d i s p 0を加算し、 その加算結 果をア ドレスと してメモリの内容を読み出し、 その読み出した内容をデス ティネーションレジスタ指定部 1 0 3で指定されたレジスタファイル 1 0 6の中のレジスタ R d 0に格納する命令である。
また、 図 1 の命令レジスタ 1 1 0にも同様に、 メモリのデータをレジス タへ転送する命令であるロー ド (L D ) 命令がセッ トされている。 L D命 令であることは、 オペレーションコード部 1 1 1を図に示さないデコーダ 等により解読することにより判断できる。 この命令も、 レジスタファイル 1 0 6の中からベ一スァ ドレスレジスタ指定部 1 1 4で指定されたレジス タ R b 1 の内容を読み出し、 その値とディスプレースメン ト指定部 1 1 5 の内容であるディスプレースメント d i s p 1 を加算し、 その加算結果を アドレスと してメモリの内容を読み出し、 その読み出し内容をデスティネ ーシヨンレジスタ指定部 1 1 3で指定されたレジスタファイル 1 0 6の中 のレジスタ R d 1に格納する命令である。
命令レジスタ 1 ◦ 0の命令は、 データキヤッシュ 4 3 0のメモリポー 卜 0をアクセス し、 命令レジスタ 1 1 0の命令は、 データキヤッシュ 4 3 0 のメモリポー ト 1 をアクセスする。 従って、 プロセッサ 4 1 0が 2つの L D命令を同時に実行するとデータキャッシュへの 2つのアクセスが同時に、 プロセッサ 4 1 0とデータキャッシュ 4 3 0を結ぶ信号線を介して発行さ れることになる。 この信号線は 2つの命令による 2つのアクセスを同時に 送信することができるものとする。
データキャッシュ 4 3 0は、 2つのメモリ ノくンク 1 2 5及び 1 3 5、 4 つのセレクタ 1 08、 1 1 8、 1 4 6及び 1 5 6、 更に、 これらを制御す る制御回路 1 6 0から成る。 セレクタ 1 0 8は、 メモリバンク 0 ( 1 2 5) への入力ァ ドレスをメモリ ポー ト 0 (メモリバンク 0用のポー トでメモリ バンク 0に対するァドレス入力ポートおよびメモリ内容の出力ポート等を 総称するものとする) から入力するかメモリポート 1 (メモリバンク 1用 のポートでメモリバンク 1に対するァドレス入力ポートおよびメモリ内容 の出力ポート等を総称するものとする) から入力するかを選択する。 セレ クタ 1 1 8は、 メモリバンク 1 ( 1 3 5) への入力ァ ドレスをメモリポ一 ト 0から入力するかメモリポート 1から入力するかを選択する セレクタ 1 4 6は、メモリポート 0へ出力する読み出しデータをメモリバンク 0 ( 1 2 5) から出力するのかメモリバンク 1 ( 1 3 5) から出力するのかを選 択する。 セレクタ 1 5 6は、 メモリポート 1へ出力する読み出しデータを メモリバンク 0 ( 1 2 5) から出力するのかメモリバンク 1 ( 1 3 5) か ら出力するのかを選択する。
メモリバンク 0 ( 1 2 5) は、 2ウェイのセッ トァソシァティブ方式の キャッシュメモリである。 ア ドレスデコーダ 1 2 0によって、 セレクタ 1 08で選択されたァ ドレスの下位ビッ トをデコードし、 メモリアレイ 1 2 1及び 1 2 2、 1 2 3、 1 24を読み出す。 メモリアレイ 1 2 1及び 1 2 2にはそれぞれウェイ 0のタグ及びウェイ 1のタグ、 1 2 3にはウェイ 0 のデータ、 1 2 4にはウェイ 1のデータが記憶されている。 メモリアレイ 1 2 1及び 1 2 2から読み出されたウェイ 0のタグ及びウェイ 1のタグは、 それぞれ比較器 1 4 1および 1 4 2によって、 セレクタ 1 0 8で選択され たア ドレスの上位ビッ トと比較される。 比較の結果、 一致するア ドレスが 存在する場合は、 この状態をヒ ッ トと呼び、 一致している方のウェイに対 応するデータが、 メモリアレイ 1 2 3及び 1 24から読み出されたゥヱイ 0のデータ及びウェイ 1のデータの中から、 セレクタ 1 4 3により選択さ れて、 メモリバンク 0 ( 1 2 5) の出力データと して出力される。 一致す るア ドレスが存在しない場合は、 この状態をミスと呼ぶ。
メモリバンク 1 ( 1 3 5) も、 上記メモリバンク 1 2 5と同様に、 2ゥ エイのセッ トァソシァティブ方式のキャッシュメモリである。 ア ドレスデ コーダ 1 30によって、 セレクタ 1 1 8で選択されたァ ドレスの下位ビッ トをデコードし、 メモリアレイ 1 3 1及び 1 3 2、 1 3 3、 1 3 4を読み 出す。 メモリアレイ 1 3 1及び 1 3 2にはそれぞれウェイ 0のタグ及びゥ エイ 1のタグ、 1 3 3にはウェイ 0のデータ、 1 34にはウェイ 1のデ一 タが記億されている。 メモリアレイ 1 3 1及び 1 3 2から読み出されたゥ ヱイ 0のタグ及びウェイ 1のタグは、 それぞれ比較器 1 5 1および 1 5 2 によって、 セレクタ 1 1 8で選択されたァドレスの上位ビッ トと比較され る。 比較の結果、 一致するアドレスが存在する場合は、 この状態をヒ ッ ト と呼び、 一致している方のウェイに対応するデータが、 メモリアレイ 1 3 3及び 1 34から読み出されたゥヱイ 0のデータ及びウェイ 1のデータの 中から、 セレクタ 1 5 3により選択されて、 メモリバンク 1 ( 1 3 5) の 出力データと して出力される。 一致するア ドレスが存在しない場合は、 こ の状態をミスと呼ぶ。
それぞれのメモリバンクから出力されたデータは、 その読み出しの入力 ア ドレスがメモリポー卜 0からのものである場合はメモリポート 0に読み 出しデータを出力するように、 一方、 その読み出しの入力ア ドンスがメモ リポート 1からのものである場合はメモリポート 1に読み出しデータを出 力するように、 セレクタ 1 46、 1 5 6が選択される。 そして、 セレクタ 1 46から出力された読み出しデータは、 命令レジスタ 1 00のデスティ ネーシヨ ンレジスタ指定部 R d 0 ( 1 03) によって指定される レジスタ ファイル内のレジスタに格納される。 また、 セレクタ 1 5 6から出力され た読み出しデータは、 命令レジスタ 1 1 0のデスティネーションレジスタ 指定部 R d l ( 1 1 3) によって指定されるレジスタファイル内のレジス タに格納される。
なお、 上記実施例では、 メモリバンク 0 ( 1 25) の出力データを生成 するセレクタ 1 43及びメモリバンク 1 ( 1 3 5) の出力データを生成す るセレクタ 1 53と、 メモリポート 0へ出力するデータを生成するセレク タ 1 46及びメモリポート 1へ出力するデータを生成するセレクタ 1 5 6 を、 それぞれ別のセレクタと して構成したが、 4入力 1出力のセレクタを 2個用いて、 上記 4つのセレクタ 1 43、 1 53、 1 46、 1 56と同一 の機能を実現するセレクタを構成することもできる。 つまり、 メモリァレ ィ 1 23、 1 24、 1 3 3、 1 34から読み出されたデータを 4系統の入 力として、 その内 1系統を出力する 4入力 1出力のセレクタを 2個設け、 その一方のセレクタの出力をメモリポート 0への出力とし、 もう一方のセ レクタの出力をメモリポー ト 1への出力とすれば良い。 ここで、 それぞれ の 4入力セレクタの選択指示は、 独立に行う必要がある。
上記のデータキャッシュ 430内の動作は、 制御回路 1 60が制御して いる。 ここで、 制御回路 1 60がデータキャッシュ内の各構成要素の状態 を収集するための信号線等や各構成要素を制御するための信号線は図から 省略している。 なお、 図 1に於いて、 命令レジスタ 1 00のデスティネー ショ ンレジスタ指定部 R d 0 ( 1 0 3 ) からレジスタファイル 1 0 6を指 定する図面上の矢印線は、 データキヤッシュ 4 3 0内を通過するようにな つているが、 これは単に図面上の線であり、 実際は必ずしもデータキヤッ シュ 4 3 0を通過する必要はなレ、。 命令レジスタ 1 1 0のデスティネーシ ヨ ンレジスタ指定部 R d l ( 1 1 3 ) からレジスタファイル 1 0 6を指定 する図面上の矢印線に関しても前述の内容と同様である。
次に、 上記データキャッシュ 4 3 0の動作を図 2及び図 3、 図 4を用い て説明する。
図 2および図 3は、 図 1で説明した 2つの L D命令を同時に処理する動 作を説明する図である。 図 2は第 1サイクルでの動作を示したものであり、 図 3は第 2サイクルでの動作を示したものである。 なお、 ここでのサイク ノレとは、 本データキャッシュ 4 3 0を動作させるタイミングであり、 プロ セッサ 4 1 0を動作させるク口ックゃ図 5に示すデータ処理装置全体を駆 動させるシステムクロックと一定の関係を有する。 例えば、 システムクロ ックの 1クロックが 1サイクルと対応したり、 またはシステムクロックの 複数クロックが 1サイクルと対応したりする。
第 1サイクルでは、 図 2に示してある様に、 メモリバンク 0の入力ア ド レスセレクタ 1 0 8は、 メモリポ一ト 0側、 つまり命令レジスタ 1 0 0に セッ トされている L D命令のアクセスァ ドレスを選択する。 このァ ドレス によって、 2ウェイのセッ トァソシァティブ方式のキャッシュメモリであ るメモリバンク 0 ( 1 2 5 ) を検索する。 アドレスがヒッ トしていたら、 対応するデータをセレクタ 1 4 3から出力し、 セレクタ 1 4 6により、 こ のメモリバンク 0 ( 1 2 5 ) のデータを、 データキャッシュ 4 3 0のメモ リポート 0側の読み出しデータと して出力して、 このメモリポー ト 0側の アクセスを終了する。 ア ドレスがミスしていたら、 第 1サイクルの動作は ここまでとし、 第 2サイクルでメモリバンク 1 ( 1 3 5) をアクセスする よう制御回路 1 60が判断する。
—方、 メモリバンク 1の入力ァドレスセレクタ 1 1 8は、 図 2に示して ある様に、 メモリポート 1側、 つまり命令レジスタ 1 1 0にセッ トされて いる LD命令のアクセスア ドレスを選択する。 このア ドレスによって、 2 ウェイのセッ トァソシァティブ方式のキャッシュメモリであるメモリバン ク 1 ( 1 35) を検索する。 ァ ドレスがヒ ッ トしていたら、 対応するデー タをセレクタ 1 53から出力し、 セレクタ 1 56により、 このメモリバン ク 1 (1 35) のデータを、 データキャッシュ 430のメモリポート 1側 の読み出しデータとして出力して、 このメモリポート 1側のアクセスを終 了する。 ア ドレスがミスしていたら、 第 1サイクルの動作はここまでとし、 第 2サイクルでメモリバンク 0 (1 25) をアクセスするよう制御回路 1 60が判断する。
図 3は、 メモリポート 0のアクセス及びメモリポート 1のアクセスの両 方が、 第 1サイクルにおいて、 それぞれメモリバンク 0 ( 1 25) 及びメ モリバンク 1 ( 1 35) でミスした場合の第 2サイクル目の動作を示した ものである。 この第 2サイクルは、 時間的に第 1サイクルの後のサイクル である。
この第 2サイクルでは、 メモリバンク 0の入力ァドレスセレクタ 1 08 は、 メモリポ一 卜 1側、 つまり命令レジスタ 1 1 0にセッ トされている L D命令のアクセスア ドレスを選択する。 このア ドレスによって、 2ウェイ のセッ トァソシァティブ方式のキャッシュメモリであるメモリバンク 0 ( 1 2 5) を検索する。 ア ドレスがヒッ トしていたら、 対応するデータを セレクタ 1 4 3力 ら出力し、 セレクタ 1 56により、 このメモリ ノくンク 0 ( 1 2 5 ) のデータを、 データキヤッシュ 4 30のメモリポー ト 1側の読 み出しデータと して出力して、 このメモリポート 1側のアクセスを終了す る。 ア ドレスがミスしていたら、 第 2サイクルの動作はここまでとし、 第 3サイクルでメインメモリ 440をアクセスするよう制御回路 1 60が判 断する。
同様に、 メモリバンク 1の入力ァドレスセレクタ 1 1 8は、 メモリポ一 ト 0側、 つまり命令レジスタ 1 00にセッ トされている LD命令のァクセ スア ドレスを選択する。 このア ドレスによって、 2ウェイのセッ トァソシ ァティブ方式のキャッシュメモリであるメモリバンク 1 ( 1 35) を検索 する。 ア ドレスがヒッ トしていたら、 対応するデータをセレクタ 1 53か ら出力し、 セレクタ 146により、 このメモリバンク 1 ( 1 35) のデー タを、 データキャッシュ 430のメモリポート 0側の読み出しデータと し て出力して、 このメモリポート 0側のアクセスを終了する。 アドレスがミ スしていたら、 第 2サイクルの動作はここまでと し、 第 3サイクルでメイ ンメモリ 440をアクセスするよう制御回路 1 60が判断する。
以上のように、 本実施例では、 各メモリアクセスは、 2ウェイのセッ ト ァソシァティブ方式のキヤッシュメモリであるメモリバンク 0 ( 1 25) 及びメモリバンク 1 (1 35) の両方を検索して、 ヒ ッ ト判定を行ってい る。 つまり、 データキャッシュ 430は、 キャッシュ容量が各メモリバン クの容量の和で、 かつ 4ウェイのセッ トァソシァティブ方式のキヤッシュ メモリ と して動作していることになる。
2つのメモリアクセス命令を同時に実行する場合は、 上記で説明したよ うに、 2サイクルで 4ウェイのセッ 卜ァソシァティブ方式のキヤッシュメ モリ として動作する。 ここで、 メモリポート 0側のアクセスがメモリバン ク 0 ( 1 25) でヒッ トし、 メモリポート 1側のアクセスがメモリバンク 1 ( 1 3 5 ) でヒッ トすれば、 1サイクルで 2つのメモリアクセス命令を 同時に実行することができる。
したがって、 2つのメモリアクセス命令を 1サイクルで同時に実行し、 終了するためには、 メモリバンク 0 ( 1 2 5) でヒッ トする可能性が高い L D命令は、 メモリポート 0側でデータキヤッシュ 4 30をアクセスし、 メモリバンク 1 (1 35) でヒッ トする可能性が高い LD命令は、 メモリ ポート 1側でデータキャッシュ 430をアクセスすれば良い。 このような 制御は、 LD命令中のメモリポート指定ヒント部 1 02及び 1 1 2の情報 で可能である。
プロセッサ 4 1 0の制御回路 4 1 3において、 メインメモリ 440また は命令キャッシュ 420から読み出したメモリアクセス命令、 例えば LD 命令の中のメモリポート指定ヒント部を解読し、 メモリポート 0を指定し ていれば、 その命令を命令レジスタ 1 00にセッ トし、 メモリポー卜 1を 指定していれば、 その命令を命令レジスタ 1 1 0にセッ トする。 命令レジ スタ 1 00にセッ トされたメモリアクセス命令は、 第 1のサイクルにおい てメモリバンク 0 ( 1 2 5) をアクセスし、 命令レジスタ 1 1 0にセッ ト されたメモリアクセス命令は、第 1のサイクルにおいてメモリバンク 1 (1 35) をアクセスするので、 それぞれのメモリバンク 1 2 5及び 1 3 5で ヒッ トする可能性が高くなり、 これら 2つのメモリアクセス命令を 1サイ クルで終了できる確率が高くなる。
なお、 L D命令のメモリポー ト指定ヒン ト部 1 02及び 1 1 2への情報 の設定は、 上記説明したデータキヤッシュを持つプロセッサからなるデ一 タ処理装匱用のコンパイラが、 プログラムをコンパイルする際に、 上記デ —タキャッシュの構造、 プログラムのメインメモリへのアクセス順序、 デ 一タキャッシュの利用予定を踏まえてコンパィルすることにより、 L D命 令のメモリポ一 卜指定ヒン ト部 1 02及び 1 1 2へ、 演算実行前に事前に 設定されているものとする。 この設定により、 ブロセッサでの実行時にメ モリポート 0側の命令とメモリポート 1側の命令のメモリアクセスが同じ メモリバンクを同時にアクセスする確率を少なくできる。
以上で説明したように、 前述の実施例においては、 2つのメモリァクセ ス命令が同時に実行される場合、 2サイクルで 4ウェイのセッ トァソシァ ティブ方式のキャッシュメモリ と して動作する。 一方、 メモリアクセス命 令が 1つだけ実行される場合は、 キャッシュメモリを 1サイクルで 4ゥェ ィのセッ トァソシァティブ方式のキャッシュメモリと して動作することも できる。 図 4は、 この動作を示す。
図 4は、 命令レジスタ 1 0 0にセッ トされた L D命令を実行する場合の 図である。 メモリバンク 0の入力ァドレスセレクタ 1 0 8及びメモリバン ク 1の入力ァドレスセレクタ 1 1 8は、 共にメモリポート 0側、 つまり命 令レジスタ 1 1 0にセッ トされている L D命令のアクセスァドレスを選択 する。 このア ドレスによって、 2ウェイのセッ トァソシァティブ方式のキ ャッシュメモリであるメモリバンク 0 ( 1 2 5 ) 及びメモリバンク 1 ( 1 3 5 ) を同時に検索する。 どちらかのメモリバンクでア ドレスがヒ ッ ト し ていたら、 対応するデータをセレクタ 1 4 3もしくはセレクタ 1 5 3から 出力し、 セレクタ 1 4 6により、 このデータをデータキャッシュ 4 3 0の メモリポート 0側の読み出しデータと して出力して、 このメモリポ一ト 0 側のアクセスを終了する。 アドレスが両方のメモリバンクで共にミスして いたら、 第 1サイクルの動作はここまでと し、 第 2サイクルでメインメモ リ 4 4 0をアクセスするよう制御回路 1 6 0が判断する。
以上の様に、 メモリアクセス命令が 1つだけの場合は、 1サイクルで 4 ウェイのセッ トァソシァティブ方式のキヤッシュメモリ と して動作するこ とができる。 以上の説明では、 メモリアクセスがメモリバンク 0 (1 2 5) 又はメモ リバンク 1 ( 1 35) のどちらかでヒッ トした場合を中心に説明してきた。 以下では、 メモリアクセスがメモリバンク 0 ( 1 25) 及びメモリバンク 1 ( 1 35) のどちらでもミスした場合の動作について説明する。
図 3の動作の結果、 メモリポ一ト 0側、 つまり命令レジスタ 1 00にセ ッ トされている L D命令のアクセスァドレスが、 メモリバンク 0 (1 25) 及びメモリバンク 1 ( 1 3 5) の両方ともミスであった場合は、 第 3サイ クノレ目にメインメモリ 440をアクセスする。 メインメモリ 440から読 み出されたデータは、 プロセッサ 4 1 0へ転送され、 レジスタファイル 1 06に格納される。 このときデータキャッシュ 430は、 近い将来に再度 このデータがアクセスされる可能性があるので、 データキヤッシュ 4 30 の中にも記憶しておく。 データキャッシュ 430中のメモリバンクの内、 どちらに記億するかは、 もともとどちらのメモリポートでアクセスされた 力 こよって制御する。 この場合は、 メモリポート 0側、 つまり命令レジス タ 1 00にセッ トされている命令でアクセスされたので、 メモリバンク 0 (1 25) に記憶する。 メモリバンク 0 ( 1 2 5) 内のどのウェイに記億 するかは、 例えば、 最も古い時刻にアクセスされたウェイを選んで記憶す る。 この方式を LRU方式という。
同様に、 図 3の動作の結果、 メモリポート 1側、 つまり命令レジスタ 1 1 0にセッ トされている L D命令のアクセスア ドレスが、 メモリバンク 0 ( 1 25) 及びメモリバンク 1 ( 1 3 5) の両方ともミスであった場合は、 第 3サイクル目以降にメインメモリ 440をアクセスする。 第 3サイクル 目に直ちにメインメモリ 440をアクセスする力 、 それ以降のサイクルで メインメモリ 440をアクセスする力、は、 メモリポ— ト 0側のミスの状態 による。 つまり、 メモリポー ト 0側もミスで、 メインメモリ 440をァク セスする場合は、 第 3サイクル目でメモリポー ト 0側の処理を行い、 メモ リポート 1側の処理はその後になる。
メインメモリ 44 0から読み出されたデータは、 メモリポート 0側から のアクセスの場合と同様に、 プロセッサ 4 1 0へ転送され、 レジスタファ ィル 1 06に格納される。 このときデータキャッシュ 4 3 0は、 近い将来 に再度このデータがアクセスされる可能性があるので、 データキャッシュ 4 3 0の中にも記憶しておく。 デ一タキャッシュ 4 3 0中のメモリバンク の内、 どちらに記憶するかは、 もともとどちらのメモリポートでアクセス されたかによつて制御する。 この場合は、 メモリポート 1側、 つまり命令 レジスタ 1 1 0にセッ トされている命令でアクセスされたので、 メモリバ ンク 1 ( 1 3 5) に記憶する。 メモリバンク 1 ( 1 3 5) 内のどのウェイ に記憶するかは、 例えば、 L RU方式でウェイを選んで記憶する。
メモリアクセスが 1サイクルに 1つだけの場合は、 図 4に示したように、 両方のメモリバンク 1 2 5及び 1 3 5を同時に検索して、 ヒ ッ ト Zミス判 定を行う。 両方のメモリバンク 1 2 5及び 1 3 5が共にミスの場合は、 第 2サイクルでメインメモリ 44 0にアクセスする。 メインメモリ 44 0か ら読み出されたデータは、 プロセッサ 4 1 0へ転送され、 レジスタフアイ ノレ 1 06に格納される。 このときデータキャッシュ 4 30は、 近い将来に 再度このデータがアクセスされる可能性があるので、 データキヤッシュ 4 3 0の中にも記憶しておく。 データキャッシュ 4 3 0中のメモリバンクの 内、 どちらに記憶するかは、 もともとどちらのメモリポートでアクセスさ れたかによって制御することができる。 図 4の場合は、 メモリポート 0側、 つまり命令レジスタ 1 0 0にセッ トされている命令でアクセスされたので、 メモリバンク 0 ( 1 2 5) に記憶する。 メモリバンク 0 ( 1 2 5) 内のど のウェイに記憶するかは、 例えば、 L RU方式でウェイを選んで記憶する。 また、 別の制御方式と して、 メモリバンク 0 ( 1 2 5) 内の 2つのゥェ ィとメモリバンク 1 ( 1 3 5) 内の 2つのウェイを対等に扱い、 全体と し て 4ウェイのセッ トァソシァティブ方式とみなし、 4つのウェイの中から 1つのウェイを選んで記憶することもできる。 この場合は、 上記 4つのゥ エイの中から最も古い時刻にアクセスされたウェイを選んで記憶する L R U方式を採用することもできる。
これまで説明してきた図 1の構成では、 両方のメモリバンク 1 25及び 1 3 5のどちらもミスする場合、 これを検出するために 2サイクルを要す る。 若干のハードウエアを追加することにより、 両方のメモリバンク 1 2 5及び 1 3 5のどちもミスする場合を、 1サイクルで検出することができ る。 図 6に、 そのブロック図を示す。
図 6において、 メモリバンク 0 ( 1 25) は、 メモリバンク 1 ( 1 35) のァ ドレス . タグ . メモリアレイ 1 3 1および 1 32のコピーを 1 26お よび 1 2 7に持ち、 ア ドレス ' タグ . メモリアレイ 1 26および 1 2 7力 ら読み出したタグを、 セレクタ 1 08で選択されたァ ドレスの上位ビッ ト と比較する比較器 1 44及び 1 45が、 図 1の構成に対して追加されてい る。 これにより、 メモリ ノくンク 0 ( 1 25) 内のア ドレス検索を行ってい るサイクルと並行して、 メモリバンク 1 ( 1 3 5) のア ドレス検索を実行 できるので、 もし、 両方のメモリバンクともミスした場合は、 1サイクル で検出することができる。 したがって、 第 2サイクルでは、 メモリバンク 1 ( 1 35) をアクセスすること無く、 メインメモリ 440のアクセスを 起動することができ、 データキヤッシュ 4 30のミス時の処理を高速化す ることができる。
メモリバンク 1 ( 1 3 5) 側も同様に、 メモリバンク 0 ( 1 2 5) のァ ドレス . タグ . メモリアレイ 1 2 1および 1 2 2のコビ一を 1 3 6および 1 3 7に持ち、 アドレス ' タグ · メモリアレイ 1 3 6および 1 3 7力 ら読 み出したタグを、 セレクタ 1 1 8で選択されたァ ドレスの上位ビッ トと比 較する比較器 1 5 4及び 1 5 5が図 1の構成に対して追加されている。 こ れにより、 メモリバンク 1 ( 1 3 5 ) 内のア ドレス検索を行っているサイ クルと並行して、 メモリバンク 0 ( 1 2 5 ) のア ドレス検索を実行できる ので、 もし、 両方のメモリバンクともミスした場合は、 1サイクルで検出 することができる。 したがって、 第 2サイクル以降では、 メモリバンク 0 ( 1 2 5 ) をアクセスすること無く、 メインメモリ 4 4 0のアクセスを起 動することができ、 データキヤッシュ 4 3 0のミス時の処理を高速化する ことができる。
以上説明したように本実施例によれば、 第 1サイクルで両方のメモリバ ンク 1 2 5及び 1 3 5のミス判定ができるので、 データキヤッシュ 4 3 0 のミス時の処理を高速化することができる効果がある。
なお、 上記の実施例では、 メモリバンクに数が 2で、 メモリポートの数 が 2の場合について説明してきたが。 本発明は、 これらの数に限定された ものではない。
メモリバンクの数が 3以上で、 メモリポー トの数が 3以上の場合も、 本発 明の範囲である。
例えば、 メモリバンクの数が 4で、 メモリポー 卜の数が 4の場合も、 本 発明の範囲である。 この場合、 第 1 のサイクルでは、 それぞれ第 1のメモ リアクセスポー 卜が第 1 のメモリバンクを、 第 2のメモリ アクセスポー ト が第 2のメモリバンクを、 第 3のメモリアクセスポー卜が第 3のメモリバ ンクを、 第 4のメモリアクセスポ一卜が第 4のメモリバンクをアクセスし、 第 2のサイクル以降では、 それぞれそれ以外のメモリバンクをアクセスす る。 例えば、 第 2のサイクルでは、 それぞれ第 1のメモリアクセスボー ト が第 2のメモリバンクを、 第 2のメモリアクセスポー トが第 3のメモリバ ンクを、 第 3のメモリアクセスポートが第 4のメモリバンクを,. 第 4のメ モリアクセスポー卜が第 1のメモリバンクをアクセスし、 第 3のサイクル では、 それぞれ第 1のメモリアクセスポートが第 3のメモリバンクを、 第 2のメモリアクセスポートが第 4のメモリバンクを、 第 3のメモリァクセ スポ一トが第 1のメモリバンクを、 第 4のメモリアクセスポ一トが第 2の メモリバンクをアクセスし、 第 4のサイクルでは、 それぞれ第 1のメモリ アクセスポ一トが第 4のメモリバンクを、 第 2のメモリアクセスポー卜が 第 1のメモリバンクを、 第 3のメモリアクセスポー卜が第 2のメモリバン クを、 第 4のメモリアクセスポ一卜が第 3のメモリバンクをアクセスする。 また、 メモリバンクの数が 4で、 メモリポー トの数が 2の場合も、 本発 明の範囲である。 この場合、 第 1のサイクルでは、 それぞれ第 1のメモリ アクセスポー卜が第 1のメモリバンクおよび第 2のメモリバンクを、 第 2 のメモリアクセスポ一卜が第 3のメモリバンクおよび第 4のメモリバンク をアクセスし、 第 2のサイクル以降では、 それぞれ、 それ以外のメモリバ ンクをアクセスする。 例えば、 第 2のサイクルでは、 それぞれ第 1のメモ リアクセスポー卜が第 3のメモリバンクおよび第 4のメモリバンクを、 第 2のメモリアクセスポー 卜が第 1のメモリバンクおよび第 2のメモリバン クをアクセスする。
以上説明したように、 メモリバンクの数が 2以上で、 またメモリポート の数が 2以上の場合であれば、 本発明の範囲である。
以上説明したごとく、 本発明によれば以下の効果がある.
先ず、 メモリを複数のメモリバンクに分け、 並列に動作が可能であるか ら、 複数のメモリアクセスを同時に処理することが出来るマルチポ一卜メ モリ と しての機能を実現することが出来る。 さらに、 第 1サイクルでアクセスしたメモリバンクにアクセスすべきァ ドレスが記憶されていれば、 1サイクルで複数のメモリアクセスを並列に 処理することが出来る。
その結果、 1サイクルでアクセスしたメモリバンクにアクセスすべきァ ドレスが記憶されていれば、 1サイクルで複数のメモリアクセスを並列に 処理することが出来るので、 マルチポートメモリ と しての機能を実現する ことが出来る。 例えば、 メモリバンク数を 2とする場合、 メモリセルのァ クセス時間を 1 2に短縮することなく、 また逆に、 全体のサイクル時問 を 2倍に延ばすことなく、 2ポートメモリ としての機能を実現することが できる。
さらにまた、 メモリバンクの選択において、 ア ドレスを使わずに行って いるので、 ア ドレス入力セレクタでの選択が他の処理と並行してでき、 こ の選択時間がク リティカルパスにならない。 そのため、 メモリのアクセス 時間が延びることなく、 マルチポートメモリ と しての機能を実現すること が出来る。 産業上の利用可能性
以上のように、 本発明にかかわるマルチポ一トメモリはメモリのァクセ ス時間が延びることなくマルチポートメモリを実現でき、 ス一パスカラプ 口セッサや V L I Wプロセッサなど 1サイクルに複数個のメモリアクセス 処理を要求するプロセッサを用いたデータ処理装置のメモリ、 特にキヤッ シュメモリ として用いるのに適している。

Claims

請求の範囲
1 . 複数のメモリバンクに分割したメモリにおいて、
前記メモリバンクのそれぞれは、 データとそのァドレスを対にして記億 する手段と、 当該メモリ外から入力されるァドレスに対応するァ ドレスが 当該メモリバンク内に存在するか否かを判断する判断手段と、 前記対応す るァドレスが存在するとき、 当該ア ドレスと対になるデータをアクセスし 当該メモリバンクの外へ出力する手段を有し、
前記メモリは、 前記複数のメモリポートから入力される複数のァドレス それぞれを、 前記複数のメモリバンクのいずれのメモリバンクへ入力する かを選択し入力する第 1手段と、 前記各メモリバンクから読み出されたデ ータを、 当該メモリバンクへ入力されたァ ドレスが入力された前記メモリ ポートに対応するデータ出力用のポートへ出力する手段を有することを特 徴とするマルチポートメモリ。
2 . 請求項 1記載のマルチポートメモリにおいて、 前記第 1の手段は、 第 1サイクルで、 前記複数のメモリポー トの内の一つである第 1のメモ リポートから入力される第 1のァドレスを前記複数のメモリバンクの内の —つである第 1のメモリバンクへ入力し、 前記複数のメモリポ一卜の内の 一つである第 2のメモリポートから入力される第 2のァ ドレスを前記複数 のメモリバンクの内の一つである第 2のメモリバンクへ入力し、
前記第 1のメモリバンク内の前記判断手段が前記第 1のア ドレスと対に なるデータが存在しないと判断したとき、 前記第 1サイクルより後のサイ クルで前記第 2のメモリバンクへ前記第 1 のア ドレスを入力し、
前記第 2のメモリバンク内の前記判断手段が前記第 2のァ ドレスと対に なるデータが存在しないと判断したとき、 前記第 1サイクルより後のサイ クルで前記第 1 のメモリ バンクへ前記第 2のァ ドレスを入力することを特 徴とするマルチポー トメモリ。
3 . 請求項 1に記載のマルチポートメモリにおいて、
前記第 1の手段は、 第 1のサイクルで、 前記複数のメモリポートの内の —つである第 1のメモリポートから入力される第 1のァドレスを前記複数 のメモリバンクの内の全てのメモリバンクへ入力することを特徴とするマ ルチポートメモリ。
4 . 請求項 1または請求項 2に記載のマルチポートメモリをデ一タメモリ として接続して用いられるデータ処理装置であって、
前記データ処理装置の制御をプログラムする命令の内、 前記データメモ リをアクセスする命令の中に設けられている所定のビッ ト数の情報をデコ ードする手段と、 デコニド結果に従って当該命令を実行する手段とを有し、 ここで、 前記情報は前記複数のメモリポ一卜の内のいずれのメモリポー トをアクセスするかを指定する情報であることを特徴とするデータ処理装 置。
PCT/JP1996/000338 1996-02-16 1996-02-16 Memoire a acces multiples et processeur de donnees procurant l'acces a cette memoire WO1997030395A1 (fr)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP52917597A JP3593346B2 (ja) 1996-02-16 1996-02-16 マルチポートメモリ及びそれをアクセスするデータ処理装置
KR1019980706156A KR19990082423A (ko) 1996-02-16 1996-02-16 멀티포트메모리 및 그것을 액세스하는 데이타처리장치
PCT/JP1996/000338 WO1997030395A1 (fr) 1996-02-16 1996-02-16 Memoire a acces multiples et processeur de donnees procurant l'acces a cette memoire
US09/125,285 US6282505B1 (en) 1996-02-16 1996-02-16 Multi-port memory and a data processor accessing the same
EP96902453A EP0881575A4 (en) 1996-02-16 1996-02-16 MULTIPORT STORAGE AND DATA PROCESSOR TO ACCESS THIS STORAGE

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP1996/000338 WO1997030395A1 (fr) 1996-02-16 1996-02-16 Memoire a acces multiples et processeur de donnees procurant l'acces a cette memoire

Publications (1)

Publication Number Publication Date
WO1997030395A1 true WO1997030395A1 (fr) 1997-08-21

Family

ID=14152927

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP1996/000338 WO1997030395A1 (fr) 1996-02-16 1996-02-16 Memoire a acces multiples et processeur de donnees procurant l'acces a cette memoire

Country Status (5)

Country Link
US (1) US6282505B1 (ja)
EP (1) EP0881575A4 (ja)
JP (1) JP3593346B2 (ja)
KR (1) KR19990082423A (ja)
WO (1) WO1997030395A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008035417A1 (fr) * 2006-09-21 2008-03-27 Mitsubishi Electric Corporation Dispositif d'exécution d'accès, mémoire cache, dispositif de stockage de données, et dispositif d'accès de lecture
US7502887B2 (en) 2003-11-12 2009-03-10 Panasonic Corporation N-way set associative cache memory and control method thereof
US8745359B2 (en) 2008-02-26 2014-06-03 Nec Corporation Processor for concurrently executing plural instruction streams
WO2016043272A1 (ja) * 2014-09-19 2016-03-24 株式会社 東芝 メモリシステムおよびキャッシュメモリ

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR9911820A (pt) * 1998-07-03 2001-03-27 Siemens Ag Processo para o controle da distribuição de um acesso de memória
US6775752B1 (en) * 2000-02-21 2004-08-10 Hewlett-Packard Development Company, L.P. System and method for efficiently updating a fully associative array
US6665775B1 (en) * 2000-09-22 2003-12-16 Intel Corporation Cache dynamically configured for simultaneous accesses by multiple computing engines
US6988167B2 (en) * 2001-02-08 2006-01-17 Analog Devices, Inc. Cache system with DMA capabilities and method for operating same
US20020108021A1 (en) * 2001-02-08 2002-08-08 Syed Moinul I. High performance cache and method for operating same
US7206904B2 (en) * 2002-03-20 2007-04-17 Hewlett-Packard Development Company, L.P. Method and system for buffering multiple requests from multiple devices to a memory
US20040111567A1 (en) * 2002-12-05 2004-06-10 Anderson Adrian John SIMD processor with multi-port memory unit
GB2396031B (en) * 2002-12-05 2005-10-26 Imagination Tech Ltd A SIMD processor with multi-port memory unit
US8713286B2 (en) 2005-04-26 2014-04-29 Qualcomm Incorporated Register files for a digital signal processor operating in an interleaved multi-threaded environment
US7747833B2 (en) 2005-09-30 2010-06-29 Mosaid Technologies Incorporated Independent link and bank selection
EP1932158A4 (en) 2005-09-30 2008-10-15 Mosaid Technologies Inc MEMORY WITH OUTPUT CONTROL
TWI460736B (zh) * 2005-09-30 2014-11-11 Conversant Intellectual Property Man Inc 獨立連結與記憶庫選擇
US7652922B2 (en) 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link memory
KR100850277B1 (ko) 2006-11-15 2008-08-04 삼성전자주식회사 멀티패쓰 억세스블 반도체 메모리 장치에서의 뱅크어드레스 할당방법
US7870326B2 (en) 2006-07-28 2011-01-11 Samsung Electronics Co., Ltd. Multiprocessor system and method thereof
KR100754359B1 (ko) * 2006-03-29 2007-09-03 엠텍비젼 주식회사 복수의 공유 블록을 포함하는 다중 포트 메모리 장치
KR100764062B1 (ko) * 2006-05-01 2007-10-09 엘아이지넥스원 주식회사 항공기의 다중화 컴퓨터 시스템
TW201044371A (en) * 2009-06-15 2010-12-16 Novatek Microelectronics Corp Memory architecture of display device and reading method thereof
KR101635395B1 (ko) 2010-03-10 2016-07-01 삼성전자주식회사 멀티포트 데이터 캐시 장치 및 멀티포트 데이터 캐시 장치의 제어 방법
US10168938B2 (en) * 2016-11-25 2019-01-01 Hughes Network Systems, Llc LDPC decoder design to significantly increase throughput in ASIC by utilizing pseudo two port memory structure
US11226909B2 (en) 2018-08-24 2022-01-18 Rambus Inc. DRAM interface mode with interruptible internal transfer operation

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06333394A (ja) * 1993-04-20 1994-12-02 Internatl Business Mach Corp <Ibm> デュアル・ポート・コンピュータ・メモリ装置、アクセス方法、コンピュータ・メモリ装置、及びメモリ構造

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4129614C2 (de) * 1990-09-07 2002-03-21 Hitachi Ltd System und Verfahren zur Datenverarbeitung
US5542067A (en) * 1992-04-23 1996-07-30 International Business Machines Corporation Virtual multi-port RAM employing multiple accesses during single machine cycle
US5875470A (en) * 1995-09-28 1999-02-23 International Business Machines Corporation Multi-port multiple-simultaneous-access DRAM chip
US6023745A (en) * 1996-08-08 2000-02-08 Neomagic Corporation Scoreboarding for DRAM access within a multi-array DRAM device using simultaneous activate and read/write accesses

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06333394A (ja) * 1993-04-20 1994-12-02 Internatl Business Mach Corp <Ibm> デュアル・ポート・コンピュータ・メモリ装置、アクセス方法、コンピュータ・メモリ装置、及びメモリ構造

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7502887B2 (en) 2003-11-12 2009-03-10 Panasonic Corporation N-way set associative cache memory and control method thereof
WO2008035417A1 (fr) * 2006-09-21 2008-03-27 Mitsubishi Electric Corporation Dispositif d'exécution d'accès, mémoire cache, dispositif de stockage de données, et dispositif d'accès de lecture
US8745359B2 (en) 2008-02-26 2014-06-03 Nec Corporation Processor for concurrently executing plural instruction streams
WO2016043272A1 (ja) * 2014-09-19 2016-03-24 株式会社 東芝 メモリシステムおよびキャッシュメモリ
JP2016062503A (ja) * 2014-09-19 2016-04-25 株式会社東芝 メモリシステムおよびキャッシュメモリ
US9792972B2 (en) 2014-09-19 2017-10-17 Kabushiki Kaisha Toshiba Memory system and cache memory

Also Published As

Publication number Publication date
KR19990082423A (ko) 1999-11-25
EP0881575A4 (en) 2002-04-17
EP0881575A1 (en) 1998-12-02
JP3593346B2 (ja) 2004-11-24
US6282505B1 (en) 2001-08-28

Similar Documents

Publication Publication Date Title
WO1997030395A1 (fr) Memoire a acces multiples et processeur de donnees procurant l&#39;acces a cette memoire
JP3098071B2 (ja) 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム
JP4829541B2 (ja) マルチレベル・レジスタ・ファイルを有するディジタル・データ処理装置
EP1186995B1 (en) Instruction memory with associative cross-bar switch
US5809274A (en) Purge control for ON-chip cache memory
US5396641A (en) Reconfigurable memory processor
US20080222360A1 (en) Multi-port integrated cache
US7836253B2 (en) Cache memory having pipeline structure and method for controlling the same
EP0125855B1 (en) Buffer-storage control system
JPH10214227A (ja) マルチポートのインターリーブ・キャッシュ・メモリ
JP3641031B2 (ja) 命令装置
US5367648A (en) General purpose memory access scheme using register-indirect mode
US20020099910A1 (en) High speed low power cacheless computer system
US6104731A (en) Method and apparatus for data forwarding in a processor having a dual banked register set
JPH02162422A (ja) 優先ブランチ機構を備えたデータ処理システム
US4349874A (en) Buffer system for supply procedure words to a central processor unit
EP0465847B1 (en) Memory access control having commonly shared pipeline structure
JP3145545B2 (ja) メモリアクセス装置
US4348723A (en) Control store test selection logic for a data processing system
US5349672A (en) Data processor having logical address memories and purge capabilities
US6763421B2 (en) Instruction pair detection and pseudo ports for cache array
JP2005535045A (ja) Vliw命令を処理するためのプロセッサおよび方法
JPH103389A (ja) 並列計算機
JPH0695345B2 (ja) 連想記憶装置及びデ−タ駆動形計算機
JPH0740257B2 (ja) メモリアクセス制御装置

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): CN JP KR US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 1996902453

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 1019980706156

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 09125285

Country of ref document: US

WWP Wipo information: published in national office

Ref document number: 1996902453

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1019980706156

Country of ref document: KR

WWW Wipo information: withdrawn in national office

Ref document number: 1996902453

Country of ref document: EP

WWR Wipo information: refused in national office

Ref document number: 1019980706156

Country of ref document: KR