RU2817624C1 - Delaying cache state updates in non-speculative cache memory in processor system in response to speculative data request until speculative data request becomes non-speculative - Google Patents

Delaying cache state updates in non-speculative cache memory in processor system in response to speculative data request until speculative data request becomes non-speculative Download PDF

Info

Publication number
RU2817624C1
RU2817624C1 RU2022108690A RU2022108690A RU2817624C1 RU 2817624 C1 RU2817624 C1 RU 2817624C1 RU 2022108690 A RU2022108690 A RU 2022108690A RU 2022108690 A RU2022108690 A RU 2022108690A RU 2817624 C1 RU2817624 C1 RU 2817624C1
Authority
RU
Russia
Prior art keywords
cache
speculative
data
instruction
entry
Prior art date
Application number
RU2022108690A
Other languages
Russian (ru)
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 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Application granted granted Critical
Publication of RU2817624C1 publication Critical patent/RU2817624C1/en

Links

Abstract

FIELD: physics.
SUBSTANCE: invention relates to methods of managing cache memory of a computer system. Technical result is achieved due to the fact that the cache controller is configured to: select a SAR record in the SAR scheme, wherein the SAR record contains the instruction ID and the main data set; and in response to the fact that the received instruction ID in the fixation indicator indicates that the data request loading instruction is non-speculative, determine whether or not the received instruction ID is contained in the instruction ID entry in the SAR entry in the SAR scheme; and in response to determining that the received instruction ID is contained in the SAR record in the SAR scheme, updating the cache replacement state of the cache entry proper in the main data array corresponding to said index in the main data array entry associated with the target address of the data request in the SAR entry containing the received instruction ID.
EFFECT: faster operation of the system by reducing the occupied cache memory.
14 cl, 13 dwg

Description

Область техники, к которой относится изобретениеField of technology to which the invention relates

[0001] Технология раскрытия относится к процессорным системам с использованием центрального процессора (CPU), также известного как "процессор", а более конкретно, к кэш-памяти в процессорной системе, используемой для того, чтобы сохранять или "кэшировать" копии информации в основной памяти для более быстрого доступа посредством процессора.[0001] The technology of the disclosure relates to processor systems using a central processing unit (CPU), also known as a "processor", and more particularly, to a cache memory in a processor system used to store or "cache" copies of information in the main memory for faster access via the processor.

Уровень техникиState of the art

[0002] Центральный процессор (CPU), также известный как "процессор", выполняет вычислительные задачи для широкого множества вариантов применения. Традиционный процессор включает в себя одно или более ядер процессора, также известных как "CPU-ядра". Процессор выполняет компьютерные программные инструкции ("инструкции"), также известные как "программные инструкции", которые получаются выборкой из памяти инструкций. Процессор выполняет полученные выборкой инструкции из памяти, чтобы выполнять операции на основе типа инструкций и операндов данных, и формирует результат. Результат может предоставляться в качестве ввода, который должен потребляться посредством другой инструкции и/или сохраняться в памяти данных в качестве данных. Память инструкций и память данных могут предоставляться в основной памяти в качестве части процессорной системы, которая включает в себя процессор. Память инструкций и память данных также могут предоставляться в форме кэш-памяти. Например, кэш-память данных включает в себя или "кэширует" меньшие копии данных, сохраненных в основной памяти, чтобы предоставлять процессору более быстрый доступ к данным. Система кэш-памяти включает в себя одну или более кэш-памятей, организованных в иерархии между процессором и основной памятью. Данные мигрируют между основной памятью и различными уровнями кэш-памяти на основе удачных обращений и неудачных обращений в кэш. Если процессор запрашивает данные, не сохраненные на любом из уровней кэш-памятей (т.е. неудачное обращение в кэш), данные извлекаются из основной памяти и сохраняются на уровнях кэш-памятей. Если выполняется последующий запрос на идентичные данные, приводящий к удачному обращению в кэш (т.е. данные запрашиваются до того, как данные вытесняются из уровней кэш-памяти), данные предоставляются из кэш-памяти в процессор, в противоположность необходимости повторно осуществлять выборку данных из основной памяти.[0002] A central processing unit (CPU), also known as a “processor,” performs computing tasks for a wide variety of applications. A traditional processor includes one or more processor cores, also known as "CPU cores". The processor executes computer program instructions (“instructions”), also known as “soft instructions,” which are obtained by fetching instructions from memory. The processor executes fetched instructions from memory to perform operations based on the type of instructions and data operands and produces a result. The result may be provided as input, which must be consumed through another instruction and/or stored in data memory as data. The instruction memory and data memory may be provided in main memory as part of a processor system that includes a processor. Instruction memory and data memory may also be provided in the form of cache memory. For example, a data cache includes or "caches" smaller copies of data stored in main memory to provide the processor with faster access to the data. A cache memory system includes one or more cache memories organized in a hierarchy between the processor and main memory. Data migrates between main memory and various cache levels based on cache hits and cache misses. If the processor requests data that is not stored in any of the cache levels (i.e., a cache miss), the data is fetched from main memory and stored in the cache levels. If a subsequent request for identical data is made that results in a cache hit (that is, the data is requested before the data is evicted from the cache levels), the data is provided from the cache to the processor, as opposed to having to refetch the data from main memory.

[0003] Данные, извлеченные из высокоуровневой кэш-памяти или основной памяти в качестве результата неудачного обращения в кэш в низкоуровневой кэш-памяти, временно сохраняются в выделенной структуре, известной как заполняющий буфер в низкоуровневой кэш-памяти. Заполняющий буфер также известен как регистр запоминания состояний неудачного обращения (MSHR). Заполняющий буфер кэш-памяти выступает в качестве области стадирования для входящих данных, которые должны сохраняться в кэш-памяти до тех пор, пока запись кэша в кэш-памяти не становится доступной для того, чтобы сохранять входящие данные. Кэш-память должна вытеснять существующую запись кэша в массиве данных кэш-памяти на основе политики вытеснения, к примеру, на основе принципа "наиболее давно использованный", для того, чтобы освобождать пространство для новых входящих данных в качестве результата неудачного обращения в кэш. Неудачное обращение в низкоуровневую кэш-память может приводить к запросу данных (т.е. к запросу на считывание) в следующую высокоуровневую кэш-память, которая имеет запрашиваемые данные, сохраненные в массиве данных или по-прежнему сохраненные в заполняющем буфере, перед сохранением в массиве данных кэша. В любом случае, запрашиваемые данные, содержащиеся в заполняющем буфере или в массиве данных высокоуровневой кэш-памяти, могут предоставляться в низкоуровневую кэш-память в ответ на запрос на данные из низкоуровневой кэш-памяти. Кэш-память может сохранять входящие данные в своем заполняющем буфере и не сохранять данные в своем массиве данных до тех пор, пока заполняющий буфер не становится полным, поскольку входящие запросы на данные могут удовлетворяться из заполняющего буфера, а также массива данных.[0003] Data retrieved from the high-level cache or main memory as a result of a cache miss in the low-level cache is temporarily stored in a dedicated structure known as a fill buffer in the low-level cache. The padding buffer is also known as the Failed Status Hold Register (MSHR). The cache fill buffer acts as a staging area for incoming data, which must be retained in the cache until a cache entry in the cache becomes available to store the incoming data. The cache must evict an existing cache entry in the cache data array based on an eviction policy, such as the most recently used principle, in order to free up space for new incoming data as a result of a cache miss. A low-level cache miss may result in a data request (i.e., a read request) to the next high-level cache that has the requested data stored in the data array or still stored in the padding buffer before being stored in cache data array. In either case, the requested data contained in the fill buffer or data array of the high-level cache may be provided to the low-level cache in response to a request for data from the low-level cache. The cache can store incoming data in its fill buffer and not store data in its data array until the fill buffer becomes full, since incoming data requests can be satisfied from the fill buffer as well as the data array.

[0004] Процессор может использовать конвейерную обработку инструкций в качестве технологии обработки, за счет чего пропускная способность выполняемых компьютерных инструкций может увеличиваться посредством разбиения обработки каждой инструкции на последовательность этапов. Эти этапы выполняются в конвейере выполнения команд, состоящем из нескольких стадий. Тем не менее, в конвейере обработки инструкций могут возникать структурные опасности, когда следующая инструкция не может выполняться без приведения к некорректным результатам вычисления. Например, опасность по управлению может возникать в результате выполнения инструкции потока управления, которая вызывает точное прерывание в процессоре. Один пример инструкции потока управления, которая может вызывать опасность по управлению, представляет собой инструкцию условного ветвления. Инструкция условного ветвления может перенаправлять тракт потока выполнения инструкций на основе оцененного условия, когда условие инструкции ветвления управления выполняется. Один подход для максимизации производительности процессора заключает в себе использование схемы прогнозирования для того, чтобы спекулятивно прогнозировать результат условия инструкции условного ветвления перед ее выполнением. Таким образом, младшие инструкции, которые соответствуют прогнозированному тракту потока инструкции условного ветвления, могут получаться выборкой и также обрабатываться в конвейере обработки инструкций вместо остановки до тех пор, пока условие ветвления не разрешается, когда инструкция условного ветвления выполняется. Когда инструкция условного ветвления в завершение достигает стадии выполнения конвейера обработки инструкций и выполняется, результирующий целевой адрес инструкции условного ветвления верифицируется посредством его сравнения с ранее прогнозированным целевым адресам, когда инструкция условного ветвления получена выборкой. Если прогнозированные и фактические целевые адреса совпадают, что означает то, что корректное прогнозирование выполнено, задержка не вызывается при выполнении инструкций, поскольку последующие инструкции в целевом адресе корректно получаются выборкой и уже присутствуют в конвейере обработки инструкций, когда инструкция условного ветвления достигает стадии выполнения конвейера обработки инструкций. Тем не менее, если прогнозированные и фактические целевые адреса не совпадают, в конвейере обработки инструкций возникает опасность ошибочно прогнозированного ветвления, которая вызывает точное прерывание. Как результат, выполняется процесс восстановления после ошибочного прогнозирования, за счет которого младшие инструкции относительно инструкции условного ветвления в конвейере обработки инструкций сбрасываются, и модуль выборки из конвейера обработки инструкций перенаправляется с возможностью осуществлять выборку новых инструкций, начиная с целевого адреса, что приводит к задержке и уменьшенной производительности.[0004] A processor may use instruction pipelining as a processing technology, whereby the throughput of executing computer instructions can be increased by breaking the processing of each instruction into a sequence of steps. These steps are executed in a command execution pipeline consisting of several stages. However, structural hazards can occur in the instruction processing pipeline when the next instruction cannot be executed without causing incorrect computation results. For example, a control hazard may result from the execution of a control flow instruction that causes a precise interrupt in the processor. One example of a control flow instruction that can cause a control hazard is a conditional branch instruction. A conditional branch instruction can redirect the instruction flow path based on an evaluated condition when the condition of the control branch instruction is satisfied. One approach for maximizing processor performance involves using a prediction circuit to speculatively predict the outcome of a conditional branch instruction before executing it. Thus, low-order instructions that match the predicted conditional branch instruction flow path can be fetched and also processed in the instruction processing pipeline instead of stalling until the branch condition is resolved when the conditional branch instruction is executed. When the conditional branch instruction finally reaches the execution stage of the instruction processing pipeline and is executed, the resulting target address of the conditional branch instruction is verified by comparing it with the previously predicted target addresses when the conditional branch instruction was fetched. If the predicted and actual target addresses are the same, meaning that the correct prediction is made, no delay is caused during instruction execution because subsequent instructions at the target address are correctly fetched and are already present in the instruction processing pipeline when the conditional branch instruction reaches the execution stage of the processing pipeline instructions. However, if the predicted and actual target addresses do not match, a mispredicted branch hazard occurs in the instruction processing pipeline, which causes a precise interrupt. As a result, a misprediction recovery process is performed whereby the low-order instructions relative to the conditional branch instruction in the instruction processing pipeline are reset, and the instruction processing pipeline fetch unit is redirected to be able to fetch new instructions starting from the target address, resulting in latency and reduced productivity.

[0005] Даже если восстановление после ошибочного прогнозирования заключает в себе сброс младших инструкций относительно инструкции условного ветвления в некорректно прогнозированном тракте потока и затем выборку и обработку инструкций для инструкций в корректном тракте потока, обработка младших инструкций в некорректном тракте потока по-прежнему может приводить к отправке данных в кэш-память в качестве результата неудачных обращений в кэш. Это может вызывать проблему безопасности в форме утечек. Например, злоумышленный атакующий процесс, выполняющийся в процессоре, может включать в себя код, который загружает большой объем данных из памяти, обеспечивая тем самым заполнение этими данными совместно используемой кэш-памяти, чтобы подготовить (prime) кэш-память. Атакующий процесс также может подготовить схему прогнозирования ветвлений, чтобы она принудительно обеспечивала выполнение некорректного спекулятивного прогнозирования инструкции условного ветвления в выполняемом позднее процессе-жертве в более позднее время. Инструкции загрузки в некорректном спекулируемом тракте потока согласно инструкции условного ветвления в процессе-жертве инструктируют процессору загружать данные в кэш-память, даже если эти инструкции загрузки впоследствии сбрасываются, когда инструкция условного ветвления выполняется, и ее условие разрешается. Это инструктирует некоторым данным в кэш-памяти, подготовленной посредством атакующего процесса, вытесняться из кэш-памяти посредством инструкций загрузки в некорректном тракте потока в процессе-жертве. Когда атакующий процесс выполняется снова после того, как процесс-жертва переключается, атакующий процесс может определять то, какие из его подготовленных данных вытеснены из кэш-памяти. Эта информация может предоставлять информацию относительно адресов данных, к которым осуществляет доступ процесс-жертва.[0005] Even if recovery from a misprediction involves flushing the minor instructions relative to the conditional branch instruction in the incorrectly predicted flow path and then fetching and processing instructions for the instructions in the correct flow path, processing the minor instructions in the incorrect flow path may still result in sending data to the cache as a result of cache misses. This may cause a security problem in the form of leaks. For example, a malicious attack process running on a processor may include code that loads a large amount of data from memory, causing the shared cache to be filled with that data to prime the cache. The attacking process can also prepare a branch prediction circuit to force the execution of an incorrect speculative prediction of a conditional branch instruction in a later-executing victim process at a later time. Load instructions in an invalid speculated thread path under a conditional branch instruction in the victim process instruct the processor to load data into the cache, even if those load instructions are subsequently cleared when the conditional branch instruction is executed and its condition is resolved. This instructs some data in the cache prepared by the attacking process to be evicted from the cache via load instructions in the invalid thread path in the victim process. When the attacking process executes again after the victim process switches, the attacking process can determine which of its prepared data is evicted from the cache. This information can provide information regarding the data addresses accessed by the victim process.

[0006] Вышеуказанная проблема безопасности может разрешаться посредством предоставления неиспользуемого совместно спекулятивного буфера(ов) за пределами совместно используемой кэш-памяти, чтобы сохранять загруженные данные из обработки спекулятивно обработанных инструкций загрузки. Спекулятивно загруженные данные в спекулятивный буфер из обработки спекулятивно обработанной инструкции загрузки по-прежнему могут предоставляться в потребляющие инструкции в зависимости от спекулятивно обработанной инструкции загрузки. Когда инструкция загрузки, которая инструктирует данным спекулятивно загружаться в спекулятивный буфер, выполняется и становится неспекулятивной, если спекулятивное прогнозирование является корректным, спекулятивный запрос может повторно выдаваться неспекулятивно. Если спекулятивное прогнозирование является не корректным, спекулятивный запрос на данные повторно не выдается, за счет этого предотвращая установку спекулятивно загруженных данных в кэш-памяти. Таким образом, данные не загружаются в кэш-память в качестве результата обработки некорректно спекулируемых инструкций загрузки. Тем не менее, вдвое больше (2X) запросов данных должны выдаваться для того, чтобы загружать данные в процессор, что является неэффективным.[0006] The above security problem may be resolved by providing unused speculative buffer(s) outside the shared cache to store loaded data from processing speculatively processed load instructions. Speculatively loaded data into a speculative buffer from processing a speculatively processed load instruction may still be provided to consuming instructions depending on the speculatively processed load instruction. When a load instruction that instructs data to be speculatively loaded into the speculative buffer is executed and becomes non-speculative, if the speculative prediction is correct, the speculative request may be re-issued non-speculatively. If the speculative prediction is incorrect, the speculative data request is not reissued, thereby preventing the speculatively loaded data from being installed in the cache. Thus, data is not loaded into the cache as a result of incorrectly speculated load instructions. However, twice as many (2X) data requests must be issued in order to load the data into the processor, which is inefficient.

Сущность изобретенияThe essence of the invention

[0007] Аспекты, раскрытые в данном документе, включают в себя отсрочку обновлений состояний кэша в неспекулятивной кэш-памяти в процессорной системе в ответ на спекулятивный запрос данных до тех пор, пока спекулятивный запрос данных не станет неспекулятивным. Процессорная система включает в себя процессор, который может включать в себя одно или более ядер процессора, которые выполняют компьютерные программные инструкции, чтобы выполнять операции на основе загруженных данных, сохраненных в основной памяти. Процессорная система также включает в себя систему кэш-памяти, которая включает в себя одну или более закрытых и/или совместно используемых кэш-памятей, организованных в иерархии между процессором и основной памятью. Каждая кэш-память имеет политику замещения кэша, которая регулирует то, какие данные в ее записях кэша должны вытесняться в высокоуровневую кэш-память или основную память, чтобы освобождать пространство для того, чтобы сохранять новые запросы данных (т.е. запросы на загрузку/считывание). Инструкции на основе загрузки ("инструкции загрузки"), которые спекулятивно обрабатываются посредством процессора в качестве результата спекулятивного прогнозирования условия инструкции условного управления потоком (например, инструкции условного ветвления), инструктируют осуществление запросов данных в систему кэш-памяти. Тем не менее, если условие инструкции условного управления потоком определяется как ошибочно прогнозированное при выполнении, спекулятивно обработанные инструкции на основе загрузки могут сбрасываться. Тем не менее, предыдущие запросы данных в систему кэш-памяти, получающиеся в результате обработки спекулятивных инструкций на основе загрузки, которые более не являются допустимыми, выполняются в систему кэш-памяти. Если таким запросам данных разрешено инструктировать вытеснение других данных кэша в системе кэш-памяти, это может вызывать загрязнение кэша. Это также может вызывать проблемы безопасности. Например, злоумышленный атакующий процесс может распознавать информацию относительно данных, к которым осуществляет доступ процесс-жертва, на основе некорректных спекулятивных данных, загружаемых в систему кэш-памяти. Злоумышленный атакующий процесс может подготавливать систему кэш-памяти собственными данными и подготавливать схему управляющего прогнозирования таким образом, чтобы выполнять ошибочные прогнозирования для инструкций условного управления потоком в процессе-жертве, вызывая загрузку некорректных спекулятивных данных в систему кэш-памяти. Атакующее приложение может распознавать информацию относительно процесса-жертвы на основе того, какие из подготовленных данных в системе кэш-памяти заменены посредством некорректных спекулятивных данных для загрузки в систему кэш-памяти.[0007] Aspects disclosed herein include deferring updates to cache states in a non-speculative cache memory in a processor system in response to a speculative data request until the speculative data request becomes non-speculative. The processor system includes a processor, which may include one or more processor cores that execute computer program instructions to perform operations based on downloaded data stored in main memory. The processor system also includes a cache system that includes one or more private and/or shared cache memories organized in a hierarchy between the processor and main memory. Each cache has a cache eviction policy that governs what data in its cache entries should be evicted to the high-level cache or main memory to free up space for storing new data requests (i.e., load/load requests). reading). Load-based instructions (“load instructions”), which are speculatively processed by the processor as a result of speculatively predicting the condition of a conditional flow control instruction (eg, a conditional branch instruction), instruct data requests to be made to the cache system. However, if the condition of a conditional flow control instruction is determined to be mispredicted during execution, speculatively processed load-based instructions may be discarded. However, previous data requests to the cache system resulting from processing speculative load-based instructions that are no longer valid are executed to the cache system. If such data requests are allowed to instruct the eviction of other cache data in the cache system, this can cause cache pollution. This may also cause security issues. For example, a malicious attacking process may discern information regarding data accessed by a victim process based on incorrect speculative data loaded into the cache system. A malicious attacking process could prime the cache system with its own data and prepare the control prediction circuitry to perform erroneous predictions on conditional flow control instructions in the victim process, causing incorrect speculative data to be loaded into the cache system. The attacking application can discern information regarding the victim process based on which of the prepared data in the cache system is replaced by incorrect speculative data to be loaded into the cache system.

[0008] В этом отношении, в примерных аспектах, раскрытых в данном документе, по меньшей мере одно состояние кэша в кэш-памяти отсрочивается в отношении обновления в кэш-памяти в ответ на принимаемый запрос данных до тех пор, пока запрос данных не станет неспекулятивным. Таким образом, кэш-память не обновляется на основе запроса данных, получающегося в результате ошибочного прогнозирования, который не должен выдаваться, если возникает ошибочное прогнозирование, и в силу этого кэш-память представляет собой неспекулятивную кэш-память. Таким образом, загрязнение кэша может уменьшаться. В качестве другого примера, атакующий процесс не может получать информацию относительно доступов к данным посредством процесса-жертвы, выполняющегося в процессоре, посредством заправки ошибочных прогнозирований в схеме управляющего прогнозирования, которая инструктирует запросам данных выдаваться посредством процесса-жертвы, что приводит к спекулятивно измененным состояниям кэша в кэш-памяти. Если запросы данных, которые не разрешаются как неспекулятивные, могут изменять состояние кэша в кэш-памяти, атакующее приложение может получать понимание доступов к данным посредством процесса-жертвы посредством понимания измененных состояний кэша в кэш-памяти.[0008] In this regard, in exemplary aspects disclosed herein, at least one cache state in the cache memory is deferred with respect to an update in the cache memory in response to a received data request until the data request becomes non-speculative . Thus, the cache is not updated based on a data request resulting from a misprediction, which should not be issued if a misprediction occurs, and thus the cache is a non-speculative cache. In this way, cache pollution can be reduced. As another example, an attacking process is prevented from obtaining information regarding data accesses by a victim process running on the processor by seeding mispredictions in a control prediction circuit that instructs data requests to be issued by the victim process, resulting in speculatively modified cache states. in cache memory. If data requests that are not resolved as non-speculative may change the cache state in the cache memory, the attacking application can gain insight into the data accesses by the victim process by understanding the changed cache states in the cache memory.

[0009] В одном примерном аспекте, отсрочка обновления состояния кэша в кэш-памяти предоставляется посредством несохранения первоначально принимаемых спекулятивных запрашиваемых данных в записи кэша в основном массиве данных кэш-памяти, принимаемой из высокоуровневой памяти в качестве результата неудачного обращения в кэш-память. Вместо этого, принимаемые спекулятивные запрашиваемые данные сначала сохраняются в спекулятивной буферной памяти, т.е. не в основном массиве данных кэш-памяти. Например, спекулятивная буферная память может представлять собой заполняющую буферную схему в кэш-памяти, которая выступает в качестве области стадирования для запрашиваемых данных, которые должны сохраняться до тех пор, пока запись кэша в основном массиве данных кэш-памяти не становится доступной для того, чтобы сохранять входящие данные. Спекулятивные запрашиваемые данные, сохраненные в спекулятивной буферной памяти, сохраняются в доступную запись кэша в основном массиве данных кэш-памяти, если инструкция загрузки, которая приводит к запрашиваемому запросу данных, становится неспекулятивной. Новый запрос данных не должен обязательно выдаваться посредством процессора в систему кэш-памяти, чтобы инструктировать спекулятивным запрашиваемым данным, сохраненным в спекулятивной буферной памяти, сохраняться в запись кэша в кэш-памяти в ответ на то, что запрос данных становится неспекулятивным.[0009] In one exemplary aspect, deferring a cache state update in a cache memory is provided by not storing the initially received speculative request data in a cache entry in the main cache data body received from high-level memory as a result of a cache miss. Instead, the received speculative request data is first stored in the speculative buffer memory, i.e. not in the main cache data. For example, a speculative buffer memory may be a fill buffer circuit in a cache memory that acts as a staging area for requested data that must be retained until a cache entry in the main cache data array becomes available in order for save incoming data. Speculative query data stored in speculative buffer memory is stored into an accessible cache entry in the main cache data array if the load instruction that results in the requested data query becomes non-speculative. A new data request need not be issued by the processor to the cache memory system to cause the speculative request data stored in the speculative buffer memory to be stored in a cache entry in the cache memory in response to the data request becoming non-speculative.

[0010] В другом примерном аспекте, когда запрос данных, выданный из процессора в кэш-память в системе кэш-памяти, содержится в записи кэша в основном массиве данных кэш-памяти, в результате получается удачное обращение в кэш. Поскольку спекулятивные запрашиваемые данные уже содержатся в записи кэша основного массива данных в кэш-памяти, спекулятивные запрашиваемые данные в записи кэша удачного обращения в основном массиве данных в кэш-памяти возвращаются запросчику в процессоре. Тем не менее, обновление состояния заменяющего кэша для записи кэша в основном массиве данных, содержащем спекулятивные запрашиваемые данные, может отсрочиваться до тех пор, пока инструкция загрузки, которая инициирует запрос данных для данных, не станет неспекулятивной. Таким образом, например, политика замены для основного массива данных кэш-памяти не должна выполняться на основе состояния заменяющего кэша, которое изменено для записи кэша основного массива данных, содержащего спекулятивные запрашиваемые данные, в качестве результата запроса данных, в случае если запрос данных сбрасывается в качестве результата ошибочного прогнозирования.[0010] In another exemplary aspect, when a data request issued from the processor to a cache memory in a cache memory system is contained in a cache entry in the main cache memory data array, a cache hit results. Since the speculative request data is already contained in the cache entry of the main cache data, the speculative request data in the hit cache entry in the main cache data is returned to the requester in the processor. However, updating the state of the replacement cache for a cache entry in the main data set containing the speculative query data may be delayed until the load instruction that initiates the data query for the data becomes non-speculative. Thus, for example, the replacement policy for the main cache data body should not be executed based on the state of the replacement cache, which is modified to write the main data body cache containing the speculative requested data as the result of the data request, in case the data request is flushed to as a result of erroneous forecasting.

[0011] В другом примерном аспекте, если запрос данных, выданный из процессора в кэш-память, не содержится в основном массиве данных, но содержится в спекулятивной буферной памяти, ассоциированной с кэш-памятью, спекулятивные запрашиваемые данные в спекулятивной буферной памяти также возвращаются в запросчик в процессоре в качестве удачного обращения в кэш. Обновление состояния кэша для спекулятивных запрашиваемых данных отсрочивается посредством незаписи спекулятивных запрашиваемых данных в запись кэша в основном массиве данных кэш-памяти до тех пор, пока запрос данных не станет неспекулятивным. Кроме того, в качестве примера, обновление состояния заменяющего кэша для спекулятивных запрашиваемых данных автоматически отсрочивается до тех пор, пока новый запрос данных для идентичных данных не приводит к удачному обращению в кэш в основном массиве данных кэш-памяти, как пояснено выше.[0011] In another exemplary aspect, if a data request issued from the processor to a cache memory is not contained in the main data array but is contained in a speculative buffer memory associated with the cache memory, the speculative request data in the speculative buffer memory is also returned to requester in the processor as a successful cache hit. The update of the cache state for speculative request data is delayed by not writing the speculative request data to a cache entry in the main cache data until the data request becomes non-speculative. Additionally, by way of example, updating the state of a replacement cache for speculative data requests is automatically deferred until a new data request for identical data results in a cache hit in the main cache data body, as explained above.

[0012] В этом отношении, в одном примерном аспекте, предоставляется неспекулятивная кэш-память в процессорной системе. Неспекулятивная кэш-память содержит основной массив данных, содержащий множество записей кэша, каждая из которых выполнена с возможностью сохранять данные кэша данных, ассоциированных с адресом памяти, в системе памяти процессорной системы. Неспекулятивная кэш-память также содержит спекулятивную буферную память, содержащую множество записей буфера, каждая из которых содержит запись данных, выполненную с возможностью сохранять кэшированные данные, ассоциированные с адресом памяти, в системе памяти. Неспекулятивная кэш-память также содержит контроллер кэша, выполненный с возможностью принимать от запросчика запрос данных, содержащий целевой адрес и идентификационные данные (ID) инструкции, идентифицирующие инструкцию загрузки, содержащую целевой адрес, обработанный посредством процессора в процессорной системе. Контроллер кэша также выполнен с возможностью выполнять поиск записи кэша в основном массиве данных, ассоциированной с целевым адресом запроса данных. Контроллер кэша также выполнен с возможностью выполнять поиск в спекулятивной буферной памяти на предмет записи буфера, ассоциированной с целевым адресом запроса данных. Контроллер кэша также выполнен с возможностью отправлять запросчику ответ с данными на запрос данных на основе данных кэша в основном массиве данных, ассоциированных с целевым адресом, и данных кэша в записи буфера в спекулятивной буферной памяти, ассоциированной с целевым адресом. Контроллер кэша также выполнен с возможностью принимать индикатор фиксации, содержащий ID инструкции собственно инструкции, которая является неспекулятивной. Контроллер кэша также выполнен с возможностью, в ответ на принимаемый ID инструкции в индикаторе фиксации, указывающем то, что инструкция загрузки запроса данных является неспекулятивной, обновлять состояние кэша для записи кэша в основном массиве данных, ассоциированной с целевым адресом запроса данных.[0012] In this regard, in one exemplary aspect, a non-speculative cache memory is provided in a processor system. The non-speculative cache memory includes a main body of data containing a plurality of cache entries, each of which is configured to store data cache data associated with a memory address in a memory system of the processor system. The non-speculative cache memory also includes a speculative buffer memory comprising a plurality of buffer entries, each of which contains a data record configured to store cached data associated with a memory address in a memory system. The non-speculative cache memory also includes a cache controller configured to receive from a requester a data request containing a target address and an instruction identification (ID) identifying a load instruction containing the target address processed by a processor in the processor system. The cache controller is also configured to search for a cache entry in the main data array associated with the target address of the data request. The cache controller is also configured to search the speculative buffer memory for a buffer entry associated with a data request target address. The cache controller is also configured to send to the requester a data response to a data request based on cache data in the main data array associated with the target address and cache data in a buffer entry in the speculative buffer memory associated with the target address. The cache controller is also configured to receive a commit indicator containing the instruction ID of the instruction itself, which is non-speculative. The cache controller is also configured, in response to receiving an instruction ID in the latch indicator indicating that the data request load instruction is non-speculative, to update the cache state for a cache entry in the main data array associated with the data request target address.

[0013] В другом примерном аспекте, предоставляется способ обновления состояния кэша в неспекулятивной кэш-памяти в процессорной системе. Способ содержит прием от запросчика запроса данных, содержащего целевой адрес и ID инструкции, идентифицирующий инструкцию загрузки, содержащую целевой адрес, обработанный посредством процессора в процессорной системе. Способ также содержит выполнение поиска в основном массиве данных на предмет записи кэша, ассоциированной с целевым адресом запроса данных, из множества записей кэша, каждая из которых выполнена с возможностью сохранять данные кэша, ассоциированные с адресом памяти, в системе памяти процессорной системы. Способ также содержит выполнение поиска в спекулятивной буферной памяти на предмет записи буфера, ассоциированной с целевым адресом запроса данных, из множества записей кэша, каждая из которых выполнена с возможностью сохранять данные кэша, ассоциированные с адресом памяти, в системе памяти. Способ также содержит отправку запросчику ответа с данными на запрос данных на основе записи кэша в основном массиве данных, ассоциированной с целевым адресом, и данных кэша в записи буфера в спекулятивной буферной памяти, ассоциированной с целевым адресом. Способ также содержит прием индикатора фиксации, содержащего ID инструкции собственно инструкции, которая является неспекулятивной. Способ также содержит обновление состояния кэша для записи кэша в основном массиве данных, ассоциированной с целевым адресом запроса данных, в ответ на принимаемый ID инструкции в индикаторе фиксации, указывающем то, что инструкция загрузки запроса данных является неспекулятивной.[0013] In another exemplary aspect, a method for updating cache state in a non-speculative cache memory on a processor system is provided. The method comprises receiving from a requester a data request containing a target address and an instruction ID identifying a load instruction containing the target address processed by a processor in the processor system. The method also includes searching the main body of data for a cache entry associated with a target data request address from a plurality of cache entries, each of which is configured to store cache data associated with the memory address in a memory system of the processor system. The method also includes searching the speculative buffer memory for a buffer entry associated with a target data request address from a plurality of cache entries, each of which is configured to store cache data associated with the memory address in a memory system. The method also includes sending to the requester a data response to a data request based on a cache entry in the main data array associated with the target address and cache data in a buffer entry in the speculative buffer memory associated with the target address. The method also includes receiving a commit indicator containing the instruction ID of the instruction itself, which is non-speculative. The method also includes updating a cache state for a cache entry in the main data array associated with a data request target address in response to a received instruction ID in a commit indicator indicating that the data request load instruction is non-speculative.

[0014] Специалисты в данной области техники должны принять во внимание объем настоящего раскрытия и реализовывать его дополнительные аспекты после прочтения нижеприведенного подробного описания предпочтительных вариантов осуществления в ассоциации с прилагаемыми чертежами.[0014] Those skilled in the art should appreciate the scope of the present disclosure and implement the additional aspects thereof after reading the following detailed description of the preferred embodiments in conjunction with the accompanying drawings.

Краткое описание чертежейBrief description of drawings

[0015] Прилагаемые чертежи, включенные и составляющие часть данного подробного описания, иллюстрируют несколько аспектов раскрытия и наряду с описанием служат для того, чтобы пояснять принципы раскрытия.[0015] The accompanying drawings, incorporated in and forming a part of this detailed description, illustrate several aspects of the disclosure and, along with the description, serve to explain the principles of the disclosure.

[0016] Фиг. 1 является схемой примерной процессорной системы, которая включает в себя процессор, выполненный с возможностью выдавать запросы на распределение памяти (т.е. запросы на считывание данных и на запись данных) в систему памяти, которая включает в себя систему кэш-памяти и основную память, при этом по меньшей мере одна кэш-память в системе кэш-памяти выполнена с возможностью отсрочивать обновление состояния кэша, в ответ на прием запроса данных из процессора до тех пор, пока запрос данных не станет неспекулятивным;[0016] FIG. 1 is a diagram of an exemplary processor system that includes a processor configured to issue memory allocation requests (i.e., data read requests and data write requests) to a memory system that includes a cache memory system and main memory wherein the at least one cache memory in the cache memory system is configured to delay updating a cache state in response to receiving a data request from the processor until the data request becomes non-speculative;

[0017] Фиг. 2 является схемой примерной схемы обработки инструкций, которая может включаться в процессор на фиг. 1, и которая включает в себя один или более конвейеров обработки инструкций для обработки компьютерных инструкций для выполнения, при этом схема обработки инструкций включает в себя схему прогнозирования потока управления, выполненную с возможностью спекулятивно прогнозировать условия инструкций условного управления потоком, полученных выборкой и обработанных посредством схемы обработки инструкций;[0017] FIG. 2 is a diagram of an example instruction processing circuit that may be included in the processor of FIG. 1, and which includes one or more instruction processing pipelines for processing computer instructions for execution, wherein the instruction processing circuit includes a control flow prediction circuit configured to speculatively predict the conditions of conditional flow control instructions sampled and processed by the circuit processing instructions;

[0018] Фиг. 3 является схемой примерной неспекулятивной кэш-памяти в системе кэш-памяти на фиг. 1;[0018] FIG. 3 is a diagram of an exemplary non-speculative cache in the cache system of FIG. 1;

[0019] Фиг. 4 является блок-схемой последовательности операций способа, иллюстрирующей примерный процесс отсрочки, посредством контроллера кэша в кэш-памяти на фиг. 3, обновления состояния кэша данных для принимаемого запроса данных, который является спекулятивным, и обновления отсроченного состояния кэша в основном массиве данных для данных, ассоциированных с запросом данных, в ответ на то, что запрос данных становится неспекулятивным;[0019] FIG. 4 is a flowchart illustrating an exemplary backoff process by a cache controller in the cache memory of FIG. 3, updating a data cache state for a received data request that is speculative, and updating a deferred cache state in the main data body for data associated with the data request in response to the data request becoming non-speculative;

[0020] Фиг. 5A иллюстрирует выдачу, посредством процессора на фиг. 1, запроса данных в систему кэш-памяти, приводящего к удачному обращению в кэш в основном массиве данных кэш-памяти, при этом контроллер кэша кэш-памяти выделяет запись в схеме регистрации спекулятивных доступов (SAR), ассоциированную с инструкцией загрузки, обработанной посредством процессора, который формирует запрос данных, чтобы регистрировать отсрочку обновлений состояний кэша для записи кэша в основном массиве данных, сохраняющем спекулятивные запрашиваемые данные;[0020] FIG. 5A illustrates output by the processor of FIG. 1, a data request to the cache memory system resulting in a cache hit in the main cache data array, wherein the cache memory cache controller allocates a speculative access registration (SAR) entry associated with a load instruction processed by the processor , which generates a data request to register the deferral of cache state updates for a cache entry in the main data array storing the speculative requested data;

[0021] Фиг. 5B иллюстрирует прием, посредством кэш-памяти на фиг. 3, неспекулятивного индикатора из процессора, указывающего то, что инструкция загрузки, обработанная посредством процессора, становится неспекулятивной, и осуществление доступа, посредством контроллера кэша в кэш-памяти, к зарегистрированной отсрочке обновлений состояний кэша, ассоциированной с инструкцией загрузки, которая становится неспекулятивной таким образом, что состояние кэша для записи кэша в основном массиве данных, сохраняющем спекулятивные запрашиваемые данные, обновляется;[0021] FIG. 5B illustrates reception via the cache of FIG. 3, a non-speculative indicator from the processor indicating that a load instruction processed by the processor becomes non-speculative, and accessing, by a cache controller in the cache memory, a registered cache state update backoff associated with the load instruction that becomes non-speculative thereby that the cache state for the cache entry in the main data array storing the speculative query data is updated;

[0022] Фиг. 6A иллюстрирует выдачу, посредством процессора на фиг. 1, запроса данных в систему кэш-памяти, приводящего к неудачному обращению в кэш в основном массиве данных кэш-памяти, и записи, выделяемой в схеме регистрации спекулятивных доступов (SAR), выполненной с возможностью сохранять индекс, ассоциированный с инструкцией, ассоциированной с запросом данных, в записи буфера в спекулятивной буферной памяти, выделяемой для того, чтобы сохранять данные кэша для запроса данных, с тем чтобы регистрировать отсрочку обновлений состояний кэша для запроса данных;[0022] FIG. 6A illustrates output by the processor of FIG. 1, a data request to a cache system resulting in a cache miss in the main cache data array, and an entry allocated in a speculative access record (SAR) circuit configured to store an index associated with an instruction associated with the request. data, in a buffer entry in a speculative buffer memory allocated to store cache data for a data request, so as to register deferral of updates of cache states for a data request;

[0023] Фиг. 6B иллюстрирует прием, посредством кэш-памяти на фиг. 3, неспекулятивного индикатора из процессора, указывающего то, что инструкция загрузки, обработанная посредством процессора, становится неспекулятивной, и в ответ, осуществление доступа, посредством контроллера кэша в кэш-памяти, к зарегистрированной отсрочке обновлений состояний кэша, ассоциированной с инструкцией загрузки в спекулятивной буферной памяти, индексированной посредством записи в SAR-схеме, ассоциированной с инструкцией, ассоциированной с запросом данных, чтобы обновлять состояние кэша для записи кэша в основном массиве данных, сохраняющем запрашиваемые данные;[0023] FIG. 6B illustrates reception via the cache memory of FIG. 3, a non-speculative indicator from the processor indicating that a load instruction processed by the processor becomes non-speculative, and in response, accessing, by a cache controller in the cache memory, a registered cache state update backoff associated with the load instruction in the speculative buffer a memory indexed by an entry in a SAR circuit associated with an instruction associated with a data request to update a cache state for a cache entry in a main data array storing the requested data;

[0024] Фиг. 7A-7D иллюстрируют пример выдачи, посредством процессора на фиг. 1, запросов данных в систему кэш-памяти, приводящих к удачным обращениям в кэш и неудачным обращениям в кэш в основном массиве данных кэш-памяти, и примерную обработку отсрочки обновления состояний кэша для данных кэша в основном массиве данных, ассоциированных с запросами данных, посредством использования SAR-схемы, выполненной с возможностью индексировать виртуальную заполняющую буферную схему, и виртуальную заполняющую буферную схему, выполненную с возможностью индексировать спекулятивную буферную память таким образом, чтобы регистрировать отсроченное обновление состояния кэша для использования при обновлении состояния кэша, ассоциированного с запросами данных, после того как они становятся неспекулятивными; и[0024] FIG. 7A-7D illustrate an example of output by the processor of FIG. 1, data requests to a cache memory system resulting in cache hits and cache misses in the main cache data body, and exemplary cache state update deferral processing for cache data in the main data body associated with the data requests, by using a SAR circuit configured to index a virtual fill buffer circuit, and a virtual fill buffer circuit configured to index a speculative buffer memory so as to register a delayed update of a cache state for use in updating a cache state associated with data requests thereafter how they become non-speculative; And

[0025] Фиг. 8 является блок-схемой примерной процессорной системы, включающей в себя процессор, выполненный с возможностью выдавать запросы на распределение памяти в систему памяти, которая включает в себя систему кэш-памяти и основную память, при этом система кэш-памяти включает в себя по меньшей мере одну кэш-память, в том числе, но не только, кэш-памяти на фиг. 1, 3, 5A-5B, 6A-6B и 7A-7D, выполненные с возможностью отсрочивать обновление состояния кэша, в ответ на прием запроса данных из процессора до тех пор, пока запрос данных не станет неспекулятивным.[0025] FIG. 8 is a block diagram of an exemplary processor system including a processor configured to issue memory allocation requests to a memory system that includes a cache memory system and a main memory, wherein the cache memory system includes at least one cache memory, including, but not limited to, the cache memory in FIG. 1, 3, 5A-5B, 6A-6B, and 7A-7D, configured to delay updating a cache state in response to receiving a data request from the processor until the data request becomes non-speculative.

Подробное описание изобретенияDetailed Description of the Invention

[0026] Аспекты, раскрытые в данном документе, включают в себя отсрочку обновлений состояний кэша в неспекулятивной кэш-памяти в процессорной системе в ответ на спекулятивный запрос данных до тех пор, пока спекулятивный запрос данных не станет неспекулятивным. Процессорная система включает в себя процессор, который может включать в себя одно или более ядер процессора, которые выполняют компьютерные программные инструкции, чтобы выполнять операции на основе загруженных данных, сохраненных в основной памяти. Процессорная система также включает в себя систему кэш-памяти, которая включает в себя одну или более закрытых и/или совместно используемых кэш-памятей, организованных в иерархии между процессором и основной памятью. Каждая кэш-память имеет политику замещения кэша, которая регулирует то, какие данные в ее записях кэша должны вытесняться в высокоуровневую кэш-память или основную память, чтобы освобождать пространство для того, чтобы сохранять новые запросы данных (т.е. запросы на загрузку/считывание). Инструкции на основе загрузки ("инструкции загрузки"), которые спекулятивно обрабатываются посредством процессора в качестве результата спекулятивного прогнозирования условия инструкции условного управления потоком (например, инструкции условного ветвления), инструктируют осуществление запросов данных в систему кэш-памяти. В примерных аспектах, раскрытых в данном документе, по меньшей мере одно состояние кэша в кэш-памяти отсрочивается в отношении обновления в кэш-памяти в ответ на принимаемый запрос данных до тех пор, пока запрос данных не станет неспекулятивным. Таким образом, кэш-память не обновляется на основе запроса данных, получающегося в результате ошибочного прогнозирования, который не должен выдаваться, если возникает ошибочное прогнозирование, и в силу этого кэш-память представляет собой неспекулятивную кэш-память.[0026] Aspects disclosed herein include deferring updates to cache states in a non-speculative cache memory in a processor system in response to a speculative data request until the speculative data request becomes non-speculative. The processor system includes a processor, which may include one or more processor cores that execute computer program instructions to perform operations based on downloaded data stored in main memory. The processor system also includes a cache system that includes one or more private and/or shared cache memories organized in a hierarchy between the processor and main memory. Each cache has a cache eviction policy that governs what data in its cache entries should be evicted to the high-level cache or main memory to free up space for storing new data requests (i.e., load/load requests). reading). Load-based instructions (“load instructions”), which are speculatively processed by the processor as a result of speculatively predicting the condition of a conditional flow control instruction (eg, a conditional branch instruction), instruct data requests to be made to the cache system. In exemplary aspects disclosed herein, at least one cache state in the cache memory is delayed with respect to an update in the cache memory in response to a received data request until the data request becomes non-speculative. Thus, the cache is not updated based on a data request resulting from a misprediction, which should not be issued if a misprediction occurs, and thus the cache is a non-speculative cache.

[0027] Таким образом, загрязнение кэша может уменьшаться. В качестве другого примера, атакующий процесс не может получать информацию относительно доступов к данным посредством процесса-жертвы, выполняющегося в процессоре, посредством заправки ошибочных прогнозирований в схеме управляющего прогнозирования, которая инструктирует запросам данных выдаваться посредством процесса-жертвы, что приводит к спекулятивно измененным состояниям кэша к кэш-памяти. Если запросы данных, которые не разрешаются как неспекулятивные, могут изменять состояние кэша в кэш-памяти, атакующее приложение может получать понимание доступов к данным посредством процесса-жертвы посредством понимания измененных состояний кэша в кэш-памяти.[0027] Thus, cache pollution can be reduced. As another example, an attacking process is prevented from obtaining information regarding data accesses by a victim process running on the processor by seeding mispredictions in a control prediction circuit that instructs data requests to be issued by the victim process, resulting in speculatively modified cache states. to cache memory. If data requests that are not resolved as non-speculative may change the cache state in the cache memory, the attacking application can gain insight into the data accesses by the victim process by understanding the changed cache states in the cache memory.

[0028] Фиг. 1 является схемой примерной процессорной системы 100, которая включает в себя центральный процессор (CPU) или процессор 102, выполненный с возможностью выдавать запросы на распределение памяти (т.е. запросы на считывание данных и на запись данных) в систему 104 памяти, которая включает в себя систему 106 кэш-памяти и основную память 108. Например, основная память 108 может представлять собой динамическую оперативную память (DRAM), предоставленную в отдельной DRAM-микросхеме. Процессор 102 включает в себя одно или более соответствующих CPU-ядер 110(1)-110(N), при этом "N" является положительным целым числом, представляющим число CPU-ядер, включенных в процессор 102. Процессор 102 может пакетироваться в микросхеме 112 с интегральными схемами (IC). Система 106 кэш-памяти включает в себя одну или более кэш-памятей 114(1)-114(X), которые могут иметь различные иерархии в процессорной системе 100, которые логически находятся между CPU-ядрами 110(1)-110(N) и основной памятью 108, где "X" является положительным целым числом, представляющим число CPU-ядер, включенных в процессор 102. Кэш-памяти сохраняют или кэшируют поднабор данных, содержащихся в основной памяти 108, чтобы предоставлять для CPU-ядер 110(1)-110(N) более быстрый доступ к данным в основной памяти 108 для выполнения запросов данных. Контроллер 116 памяти управляет доступом к основной памяти 108.[0028] FIG. 1 is a diagram of an exemplary processor system 100 that includes a central processing unit (CPU) or processor 102 configured to issue memory allocation requests (i.e., data read requests and data write requests) to a memory system 104 that includes includes a cache memory system 106 and a main memory 108. For example, the main memory 108 may be dynamic random access memory (DRAM) provided on a separate DRAM chip. Processor 102 includes one or more corresponding CPU cores 110(1)-110(N), wherein "N" is a positive integer representing the number of CPU cores included in processor 102. Processor 102 may be packaged within chip 112 with integrated circuits (IC). The cache system 106 includes one or more caches 114(1)-114(X), which may have different hierarchies in the processor system 100, that are logically located between the CPU cores 110(1)-110(N) and main memory 108, where "X" is a positive integer representing the number of CPU cores included in processor 102. The cache memories store or cache a subset of data contained in main memory 108 to provide for CPU cores 110(1) -110(N) faster access to data in main memory 108 to perform data queries. Memory controller 116 controls access to main memory 108.

[0029] Например, CPU-ядро 110(1)-110(N) в качестве запрашивающего устройства может выдавать запрос 118 данных на то, чтобы считывать данные в ответ на обработку инструкции загрузки. Запрос 118 данных включает в себя целевой адрес данных, которые должны считываться из памяти. Запрос 118 данных также может включать в себя идентификационные данные (ID) инструкции, идентифицирующие инструкцию, которая инструктирует CPU-ядру 110(1)-110(N) выдавать запрос 118 данных. С использованием CPU-ядра 110(1) в качестве примера, если запрашиваемые данные не находятся в закрытой кэш-памяти 114(1) (т.е. неудачное обращение в кэш-память 114(1)), которая может считаться кэш-памятью первого уровня (L1), закрытая кэш-память 114(1) отправляет запрос 118 данных по межсоединительной шине 117 в этом примере в совместно используемую кэш-память 114(X), совместно используемую всеми CPU-ядрами 110(1)-110(N), которая может представлять собой кэш-память третьего уровня (3). Другие совместно используемые кэш-памяти 114(2), 114(3) с процессором 102, совместно используемые только с поднабором CPU-ядер 110(1)-110(N), также могут считаться кэш-памятью второго уровня (2). Запрашиваемые данные в конечном счете получаются либо в кэш-памяти 114(1)-114(X), либо в основной памяти 108, если не содержатся в любой из кэш-памятей 114(1)-114(X). Данные, принимаемые посредством кэш-памяти 114(1)-114(X) из высокоуровневой кэш-памяти 114(1)-114(X) или основной памяти 108 вследствие неудачного обращения в кэш, инструктируют принимающей кэш-памяти 114(1)-114(N) вытеснять данные кэша в высокоуровневую память, чтобы освобождать пространство для новых данных кэша. Каждая кэш-память 114(1)-114(X) имеет политику замещения кэша, которая регулирует то, какие из ее данных кэша должны вытесняться в высокоуровневую кэш-память 114(1)-114(X) или в основную память 108, чтобы освобождать пространство для того, чтобы сохранять новые данные кэша для запроса 118 данных, который приводит к неудачному обращению в кэш.[0029] For example, the CPU core 110(1)-110(N) as a requesting device may issue a data request 118 to read data in response to load instruction processing. Data request 118 includes a target address of data to be read from memory. The data request 118 may also include an instruction ID identifying an instruction that instructs the CPU core 110(1)-110(N) to issue the data request 118. Using CPU core 110(1) as an example, if the requested data is not in the closed cache 114(1) (i.e., cache 114(1) misses), which may be considered a cache miss first level (L1) cache 114(1) sends a data request 118 over interconnect bus 117 in this example to shared cache 114(X) shared by all CPU cores 110(1)-110(N ), which may be a third-level cache (3). Other shared caches 114(2), 114(3) with processor 102 that are shared only with a subset of CPU cores 110(1)-110(N) may also be considered L2 caches (2). The requested data is ultimately obtained in either cache 114(1)-114(X) or main memory 108 if not contained in either cache 114(1)-114(X). Data received by the cache memory 114(1)-114(X) from the high-level cache memory 114(1)-114(X) or the main memory 108 due to a cache miss instructs the receiving cache memory 114(1)- 114(N) evict cache data into high-level memory to free up space for new cache data. Each cache memory 114(1)-114(X) has a cache replacement policy that controls which of its cache data should be evicted to the high-level cache memory 114(1)-114(X) or to main memory 108 so that free up space to store new cache data for a data request 118 that results in a cache miss.

[0030] Фиг. 2 иллюстрирует схему 200 обработки инструкций, которая предоставляется в CPU-ядре 110, которое может представлять собой любое из CPU-ядер 110(1)-110(N) в процессоре 102 на фиг. 1. Схема 200 обработки инструкций включает в себя один или более конвейеров I0-IN обработки инструкций для обработки полученных выборкой компьютерных инструкций 202F, полученных выборкой посредством схемы 204 выборки инструкций для выполнения из последовательности инструкций 202, сохраненных в кэш-памяти 206 инструкций или в памяти 208 инструкций, в качестве примеров. Кэш-память 206 инструкций может предоставляться в качестве части кэш-памяти 114(1)-114(X) в системе 106 кэш-памяти в процессорной системе 100 на фиг. 1. Память 208 инструкций может предоставляться в или в качестве части основной памяти 108 в процессорной системе 100 на фиг. 1. Схема 204 выборки инструкций выполнена с возможностью предоставлять полученные выборкой инструкции 202F в один или более конвейеров I0-IN обработки инструкций в качестве потока 210 инструкций в схеме 200 обработки инструкций для предварительной обработки, до того, как полученные выборкой инструкции 202F достигают схемы 212 выполнения для выполнения. Конвейеры I0-IN обработки инструкций предоставляются в различных схемах или стадиях обработки схемы 200 обработки инструкций, чтобы предварительно обрабатывать и обрабатывать полученные выборкой инструкции 202F в последовательности этапов, которые могут выполняться параллельно, чтобы увеличивать пропускную способность до выполнения полученных выборкой инструкций 202F посредством схемы 212 выполнения.[0030] FIG. 2 illustrates an instruction processing circuit 200 that is provided in a CPU core 110, which may be any of the CPU cores 110(1)-110(N) in the processor 102 in FIG. 1. The instruction processing circuit 200 includes one or more I pipelines0-IN instruction processing for processing sampled computer instructions 202F sampled by instruction sampling circuit 204 for execution from a sequence of instructions 202 stored in instruction cache 206 or instruction memory 208, as examples. Instruction cache 206 may be provided as part of cache 114(1)-114(X) in cache system 106 in processor system 100 in FIG. 1. Instruction memory 208 may be provided in or as part of main memory 108 in the processor system 100 of FIG. 1. The instruction fetch circuit 204 is configured to provide fetched instructions 202F to one or more I pipelines0-IN processing instructions as an instruction flow 210 in the instruction processing circuit 200 for preprocessing, before the fetched instructions 202F reach the execution circuit 212 for execution. Conveyors I0-IN instruction processing are provided in various circuits or processing stages of the instruction processing circuit 200 to preprocess and process the fetched instructions 202F in a series of steps that can be executed in parallel to increase throughput prior to executing the fetched instructions 202F by the execution circuit 212.

[0031] С дальнейшей ссылкой на фиг. 2, схема 200 обработки инструкций включает в себя схему 214 декодирования инструкций, выполненную с возможностью декодировать полученные выборкой инструкции 202F, полученные выборкой посредством схемы 204 выборки инструкций, в декодированные инструкции 202D, с тем чтобы определять тип инструкций и требуемые действия. Декодированные инструкции 202D размещаются в одном или более конвейеров I0-IN обработки инструкций и затем предоставляются в схему 216 переименования в схеме 200 обработки инструкций, чтобы определять то, должны либо нет вообще имена регистров в декодированных инструкциях 202D переименовываться, чтобы разрывать все зависимости между регистрами, которые должны предотвращать параллельную обработку или обработку не по порядку. Схема 216 переименования выполнена с возможностью вызывать таблицу 218 преобразования регистров (RMT) с возможностью переименовывать логический исходный регистровый операнд и/или записывать целевой регистровый операнд декодированной инструкции 202D в доступные физические регистры 220(1)-220(X) (P0, P1, ..., PX) в файле 222 физических регистров (PRF). RMT 218 содержит множество записей преобразования, преобразованных (т.е. ассоциированных) в соответствующий логический регистр R0-RP. Записи преобразования выполнены с возможностью сохранять информацию в форме адресного указателя, чтобы указывать на физический регистр 220(1)-220(X) в файле 222 физических регистров (PRF). Каждый физический регистр 220(1)-220(X) в PRF 222 содержит запись данных, выполненную с возможностью сохранять данные для исходного и/или целевого регистрового операнда декодированной инструкции 202D.[0031] With further reference to FIG. 2, the instruction processing circuit 200 includes an instruction decoding circuit 214 configured to decode the sampled instructions 202F sampled by the instruction sampling circuit 204 into decoded instructions 202D so as to determine the type of instructions and required actions. The decoded instructions 202D are placed in one or more instruction processing pipelines I 0 -I N and are then provided to a renaming circuit 216 in the instruction processing circuit 200 to determine whether register names in the decoded instructions 202D should be renamed to break any dependencies between registers that should prevent parallel processing or out-of-order processing. The renaming circuit 216 is configured to call a register mapping table (RMT) 218 with the ability to rename the logical source register operand and/or write the target register operand of the decoded instruction 202D to the available physical registers 220(1)-220(X) (P 0 , P 1 , ..., P X ) in the 222 physical register file (PRF). RMT 218 contains a plurality of conversion entries mapped (ie, associated) to a corresponding logical register R 0 -R P . The conversion records are configured to store information in the form of an address pointer to point to the physical register 220(1)-220(X) in the physical register file (PRF) 222. Each physical register 220(1)-220(X) in the PRF 222 contains a data record configured to store data for a source and/or destination register operand of the decoded instruction 202D.

[0032] Схема 200 обработки инструкций также включает в себя схему 224 доступа к регистрам (RACC), выполненную с возможностью осуществлять доступ к физическому регистру 220(1)-220(X) в PRF 222 на основе записи преобразования, преобразованной в логический регистр R0-RP в RMT 218 исходного регистрового операнда декодированной инструкции 202D, чтобы извлекать сформированное значение из выполняемой инструкции 202E в схеме 212 выполнения. RACC-схема 224 также выполнена с возможностью предоставлять извлеченное сформированное значение из выполняемой декодированной инструкции 202E в качестве исходного регистрового операнда декодированной инструкции 202D, которая должна выполняться. Кроме того, в схеме 200 обработки инструкций, схема 226 планировщика предоставляется в конвейере I0-IN обработки инструкций и выполнена с возможностью сохранять декодированные инструкции 202D в записях резервирования до тех пор, пока все исходные регистровые операнды для декодированной инструкции 202D не являются доступными. Схема 226 планировщика выдает декодированные инструкции 202D, готовые к выполнению в трассе L0-LK выполнения, в схему 212 выполнения. Схема 228 записи также предоставляется в схеме 200 обработки инструкций, чтобы записывать обратно или фиксировать сформированные значения из выполняемых инструкций 202E в память, к примеру, в PRF 222, в систему 106 кэш-памяти или в основную память 108.[0032] The instruction processing circuit 200 also includes a register access circuit (RACC) 224 configured to access the physical register 220(1)-220(X) in the PRF 222 based on a mapping entry mapped to the logical register R 0 -R P in the RMT 218 of the source register operand of the decoded instruction 202D to extract the generated value from the executed instruction 202E in the execution circuit 212. The RACC circuit 224 is also configured to provide the extracted generated value from the executing decoded instruction 202E as the source register operand of the decoded instruction 202D to be executed. In addition, in the instruction processing circuit 200, the scheduler circuit 226 is provided in the instruction processing pipeline I 0 -I N and is configured to store the decoded instructions 202D in reservation entries until all source register operands for the decoded instruction 202D are available. The scheduler circuit 226 supplies the decoded instructions 202D, ready for execution in the execution path L 0 -L K , to the execution circuit 212. Write circuitry 228 is also provided in instruction processing circuitry 200 to write back or commit generated values from executing instructions 202E to memory, for example, to PRF 222, to cache memory system 106, or to main memory 108.

[0033] С дальнейшей ссылкой на фиг. 2, схема 200 обработки инструкций также включает в себя схему 230 управляющего прогнозирования потока. Схема 230 управляющего прогнозирования потока выполнена с возможностью спекулятивно прогнозировать результат условия полученной выборкой инструкции 202F условного управления потоком, к примеру, инструкции условного ветвления, которая управляет тем, подвергается либо нет выбранный или не выбранный тракт в тракте потока управления инструкциями потока 210 инструкций выборке в конвейеры I0-IN обработки инструкций для выполнения. Таким образом, условие полученной выборкой инструкции 202F условного управления потоком не должно обязательно разрешаться при выполнении посредством схемы 212 выполнения до того, как схема 200 обработки инструкций может продолжать обработку спекулятивно полученных выборкой инструкций 202F. Прогнозирование, выполненное посредством схемы 230 управляющего прогнозирования потока, может предоставляться в качестве информации 232 прогнозирования в схему 204 выборки инструкций для использования посредством схемы 204 выборки инструкций для того, чтобы определять следующие инструкции 202 для выборки.[0033] With further reference to FIG. 2, the instruction processing circuit 200 also includes a control flow prediction circuit 230. The flow prediction control circuit 230 is configured to speculatively predict the outcome of a condition of a sampled conditional flow control instruction 202F, for example, a conditional branch instruction that controls whether or not a selected or unselected path in the instruction control flow path of instruction flow 210 is sampled into pipelines. I 0 -I N processing instructions for execution. Thus, the condition of the sampled conditional flow control instruction 202F need not be resolved upon execution by the execution circuit 212 before the instruction processing circuit 200 can continue processing the speculatively sampled instructions 202F. The prediction performed by the control flow prediction circuit 230 may be provided as prediction information 232 to the instruction fetch circuit 204 for use by the instruction fetch circuit 204 to determine the next instructions 202 to fetch.

[0034] Тем не менее, если условие инструкции 202F условного управления потоком определяется как ошибочно прогнозированное, когда инструкция 202F условного управления потоком выполняется в схеме 212 выполнения, спекулятивные полученные выборкой инструкции 202F, которые получены выборкой после инструкции 202F условного управления потоком и обработаны в схеме 202 обработки инструкций, сбрасываются, поскольку эти инструкции не должны обрабатываться. Схема 202 обработки инструкций возвращается в состояние, которое существует до того, когда обрабатывается инструкция 202F условного управления потоком. Спекулятивные полученные выборкой инструкции 202F, которые очищаются в ответ на ошибочное прогнозирование, могут включать в себя инструкции на основе загрузки ("инструкции загрузки"), которые выдают спекулятивные запросы 118 данных в систему 106 кэш-памяти в процессорной системе 100 на фиг. 1. Если такие спекулятивные запросы 118 данных приводят к неудачным обращениям в кэш, данные вытесняются из системы 106 кэш-памяти, чтобы освобождать пространство для ответа с данными на любые такие спекулятивные запросы 118 данных. Это может вызывать загрязнение кэша. Это также может вызывать проблемы безопасности. Например, злоумышленный атакующий процесс, выполняющийся в процессоре 102, может распознавать информацию относительно данных, к которым осуществляет доступ процесс-жертва, выполняющийся в процессоре 102, на основе некорректных спекулятивных данных, загружаемых в систему 106 кэш-памяти. Злоумышленный атакующий процесс может подготавливать систему 106 кэш-памяти собственными данными и подготавливать схему 230 управляющего прогнозирования потока таким образом, чтобы выполнять ошибочные прогнозирования для инструкций 202F условного управления потоком в процессе-жертве, вызывая загрузку некорректных спекулятивных данных в систему 106 кэш-памяти. Атакующее приложение может распознавать информацию относительно процесса-жертвы на основе того, какие из подготовленных воздействуемых данных в системе 106 кэш-памяти заменены посредством некорректных спекулятивных данных для загрузки в систему 106 кэш-памяти.[0034] However, if the condition of the conditional flow control instruction 202F is determined to be falsely predicted when the conditional flow control instruction 202F is executed in the execution circuit 212, the speculative fetched instructions 202F that are fetched after the conditional flow control instruction 202F are processed in the circuit 202 instruction processing, are reset because these instructions should not be processed. The instruction processing circuit 202 returns to a state that exists before the conditional flow control instruction 202F is processed. Speculative fetch instructions 202F that are cleared in response to a prediction error may include load-based instructions (“load instructions”) that issue speculative data requests 118 to cache memory system 106 in processor system 100 of FIG. 1. If such speculative data requests 118 result in cache misses, the data is evicted from the cache system 106 to make room for responding with data to any such speculative data requests 118. This may cause cache pollution. This may also cause security issues. For example, a malicious attack process running on processor 102 may discern information regarding data accessed by a victim process running on processor 102 based on incorrect speculative data loaded into cache system 106 . A malicious attacking process may prime the cache system 106 with its own data and prepare the flow prediction control circuit 230 to make erroneous predictions for the conditional flow control instructions 202F in the victim process, causing incorrect speculative data to be loaded into the cache system 106. The attacking application can discern information regarding the victim process based on which of the prepared attack data in the cache system 106 is replaced by incorrect speculative data to be loaded into the cache system 106 .

[0035] В этом отношении, одна или более кэш-памятей 114(1)-114(X) в системе 106 кэш-памяти в процессорной системе 100 на фиг. 1 могут быть выполнены с возможностью представлять собой неспекулятивные кэш-памяти. Неспекулятивная кэш-память выполнена с возможностью отсрочивать обновление состояния кэша для записи кэша для принимаемого запроса 118 данных в отношении обновления до тех пор, пока запрос данных не станет неспекулятивным. Например, фиг. 3 иллюстрирует пример кэш-памяти 114 в процессорной системе 100 на фиг. 1, сконфигурированной в качестве неспекулятивной кэш-памяти 114. Как показано на фиг. 3, неспекулятивная кэш-память 114 включает в себя контроллер 300 кэша, который представляет собой схему, выполненную с возможностью управлять операциями неспекулятивной кэш-памяти 114, включающими в себя обработку запросов 118 данных для доступа к данным кэша, сохраненным в неспекулятивной кэш-памяти 114, предоставление ответов 302 с данными для данных кэша запросчику, запросов 304 на заполнение, чтобы получать данные кэша из высокоуровневой памяти в ответ на неудачное обращение в кэш для принимаемого запроса 118 данных, и ответов 306 по заполнению с данными кэша, принимаемыми из высокоуровневой памяти, в ответ на запрос 304 на заполнение.[0035] In this regard, one or more caches 114(1)-114(X) in the cache system 106 in the processor system 100 in FIG. 1 may be configured to be non-speculative cache memories. The non-speculative cache is configured to defer updating a cache state for a cache entry for a received data request 118 for an update until the data request becomes non-speculative. For example, FIG. 3 illustrates an example of cache memory 114 in the processor system 100 of FIG. 1 configured as a non-speculative cache 114. As shown in FIG. 3, non-speculative cache memory 114 includes a cache controller 300, which is circuitry configured to control operations of non-speculative cache memory 114 including processing data requests 118 to access cache data stored in non-speculative cache memory 114 , providing data responses 302 for the cache data to the requestor, padding requests 304 to receive cache data from high-level memory in response to a cache miss for the received data request 118, and padding responses 306 with cache data received from the high-level memory, in response to a 304 padding request.

[0036] Неспекулятивная кэш-память 114 также включает в себя основной массив 308 данных, который включает в себя множество записей 310(0)-310(M) кэша, каждая из которых выполнена с возможностью сохранять данные 314(0)-314(M) кэша, сохраненные в системе 104 памяти по фиг. 1, в адресе памяти, ассоциированном с соответствующим тегом 312(0)-312(M). Неспекулятивная кэш-память 114 также включает в себя массив 311 тегов, который выполнен с возможностью сохранять множество тегов 312(0)-312(M), соответствующих надлежащим записям 310(0)-310(M) кэша. Основной массив 308 данных также может включать в себя состояние 315(0)-315(M) замещения кэша в каждой соответствующей записи 310(0)-310(M) кэша для того, чтобы указывать состояние замены для ассоциированной записи 310(0)-310(M) кэша, используемой посредством контроллера 300 кэша для того, чтобы определять то, какую запись 310(0)-310(M) кэша следует вытеснить, когда новые данные для неспекулятивного запроса 118 данных должны сохраняться в основном массиве 308 данных. Основной массив 308 данных также может включать в себя допустимый индикатор 316(0)-316(M) в каждой соответствующей записи 310(0)-310(M) кэша для того, чтобы указывать то, являются или нет данные 314(0)-314(M) кэша допустимыми. Неспекулятивная кэш-память 114 в этом примере также включает в себя спекулятивную буферную память 318, которая включает в себя множество записей 320(0)-320(B) буфера, каждая из которых выполнена с возможностью сохранять данные 324(0)-324(B) кэша, сохраненные в системе 104 памяти, в адресе памяти, ассоциированном с соответствующим тегом 322(0)-322(B) буфера. Неспекулятивная кэш-память 114 также включает в себя массив 323 тегов, который выполнен с возможностью сохранять теги 322(0)-322(B) буфера, ассоциированные соответствующей записью 320(0)-320(B) буфера. Например, спекулятивная буферная память 318 может представлять собой заполняющий буфер для неспекулятивной кэш-памяти 114, который выступает в качестве области стадирования для входящих данных в ответе 306 по заполнению в ответ на выданный запрос 304 на заполнение, который должен сохраняться в неспекулятивной кэш-памяти 114 до тех пор, пока запись 310(0)-310(M) кэша в основном массиве 308 данных не становится доступной для того, чтобы сохранять входящие данные.[0036] Non-speculative cache memory 114 also includes a main data array 308 that includes a plurality of cache entries 310(0)-310(M), each configured to store data 314(0)-314(M). ) caches stored in the memory system 104 of FIG. 1, at the memory address associated with the corresponding tag 312(0)-312(M). The non-speculative cache 114 also includes a tag array 311 that is configured to store a plurality of tags 312(0)-312(M) corresponding to corresponding cache entries 310(0)-310(M). The main data array 308 may also include a cache replacement state 315(0)-315(M) in each corresponding cache entry 310(0)-310(M) to indicate the replacement state for the associated cache entry 310(0)- 310(M) cache used by cache controller 300 to determine which cache entry 310(0)-310(M) should be evicted when new data for non-speculative data request 118 is to be stored in main data array 308. The main data array 308 may also include a valid indicator 316(0)-316(M) in each corresponding cache entry 310(0)-310(M) to indicate whether or not the data 314(0)- 314(M) cache is valid. The non-speculative cache memory 114 in this example also includes a speculative buffer memory 318 that includes a plurality of buffer entries 320(0)-320(B), each configured to store data 324(0)-324(B) ) caches stored in memory system 104 at a memory address associated with a corresponding buffer tag 322(0)-322(B). Non-speculative cache 114 also includes a tag array 323 that is configured to store buffer tags 322(0)-322(B) associated with a corresponding buffer entry 320(0)-320(B). For example, speculative buffer memory 318 may be a fill buffer for non-speculative cache 114 that acts as a staging area for incoming data in fill response 306 in response to an issued fill request 304 to be stored in non-speculative cache 114 until cache entry 310(0)-310(M) in main data array 308 becomes available to store incoming data.

[0037] С дальнейшей ссылкой на фиг. 3, спекулятивная буферная память 318 также включает в себя идентификатор 326(0)-326(B) инструкции в каждой соответствующей записи 320(0)-320(B) буфера, чтобы сохранять ID инструкции собственно инструкции загрузки, которая выдает запрос 118 данных в неспекулятивную кэш-память 114, чтобы отслеживать то, становится либо нет и когда запрос 118 данных становится неспекулятивным. Контроллер 300 кэша выполнен с возможностью обновлять состояние кэша, ассоциированное с запросом 118 данных, в записи 310(0)-310(M) кэша в основном массиве 308 данных, ассоциированной с запросом 118 данных после того, как инструкция, которая инструктирует выдачу запроса 118 данных, становится неспекулятивной в процессоре 102. Как подробнее поясняется ниже, контроллер 300 кэша выполнен с возможностью выделять запись 320(0)-320(B) буфера в спекулятивной буферной памяти 318 в ответ на принимаемый запрос 118 данных. Контроллер 300 кэша выполнен с возможностью первоначально обновлять соответствующий спекулятивный индикатор 330(0)-330(B) (NS) со спекулятивным состоянием в каждой записи 320(0)-320(B) буфера для принимаемого запроса 118 данных в качестве спекулятивного. Каждая запись 320(0)-320(B) буфера в спекулятивной буферной памяти 318 также включает в себя индикатор 332(0)-332(B) нахождения в кэше, указывающий то, сохраняются или нет данные для ассоциированной записи 320(0)-320(B) буфера в записи 310(0)-310(M) кэша в основном массиве 308 данных, и допустимый индикатор 334(0)-334(B), указывающий то, является или нет запись 320(0)-320(B) буфера допустимой. Неспекулятивная кэш-память 114 выполнена с возможностью принимать индикатор 328 фиксации, выданный посредством процессора 102, содержащий ID инструкции собственно инструкции, которая является неспекулятивной. Контроллер 300 кэша может использовать принимаемый ID инструкции в индикаторе 328 фиксации, чтобы выполнять поиск идентификаторов 326(0)-326(B) инструкций в спекулятивной буферной памяти 318, чтобы обновлять соответствующий неспекулятивный индикатор 330(0)-330(B) (NS) в каждой записи 320(0)-320(B) буфера. Контроллер 300 кэша затем может обновлять состояние кэша для данных, ассоциированных с запросом 118 данных в записи 310(0)-310(M) кэша в основном массиве 308 данных, в ответ на неспекулятивный индикатор 330(0)-330(B) (NS) для запроса 118 данных, который становится неспекулятивным.[0037] With further reference to FIG. 3, the speculative buffer memory 318 also includes an instruction ID 326(0)-326(B) in each corresponding buffer entry 320(0)-320(B) to store the instruction ID of the actual load instruction that issues the data request 118 in a non-speculative cache 114 to keep track of whether or not a data request 118 becomes non-speculative. The cache controller 300 is configured to update the cache state associated with the data request 118 in a cache entry 310(0)-310(M) in the main data array 308 associated with the data request 118 after an instruction that causes the request 118 to be issued data becomes non-speculative in processor 102. As explained in more detail below, cache controller 300 is configured to allocate a buffer entry 320(0)-320(B) in speculative buffer memory 318 in response to a received data request 118. The cache controller 300 is configured to initially update the corresponding speculative indicator 330(0)-330(B) (NS) with the speculative state in each buffer entry 320(0)-320(B) for the received data request 118 as speculative. Each buffer entry 320(0)-320(B) in the speculative buffer memory 318 also includes a cache presence indicator 332(0)-332(B) indicating whether or not data is stored for the associated entry 320(0)- 320(B) of a buffer in a cache entry 310(0)-310(M) in the main data array 308, and a valid indicator 334(0)-334(B) indicating whether or not an entry 320(0)-320( B) the buffer is valid. The non-speculative cache 114 is configured to receive a commit indicator 328 provided by the processor 102 containing the instruction ID of the instruction itself, which is non-speculative. The cache controller 300 may use the received instruction ID in the commit indicator 328 to look up the instruction IDs 326(0)-326(B) in the speculative buffer memory 318 to update the corresponding non-speculative indicator 330(0)-330(B) (NS) each entry has 320(0)-320(B) buffers. The cache controller 300 may then update the cache state for the data associated with the data request 118 in the cache entry 310(0)-310(M) in the main data array 308 in response to the non-speculative indicator 330(0)-330(B) (NS ) for a data query 118 that becomes non-speculative.

[0038] Например, если инструкция 202D загрузки, которая спекулятивно обрабатывается на основе прогнозирования потока управления в процессоре 102 на фиг. 2, инструктирует процессору 102 выдавать запрос 118 данных для данных в неспекулятивную кэш-память 114 на фиг. 3, контроллер 300 кэша выполнен с возможностью выполнять поиск в массиве 311 тегов на предмет тега 312(0)-312(M) в записи 310(0)-310(M) кэша, ассоциированной с целевым адресом запроса 118 данных, чтобы определять то, присутствуют или нет данные для запроса 118 данных. Контроллер 300 кэша также выполнен с возможностью выполнять поиск в спекулятивной буферной памяти 318 на предмет тега 322(0)-322(B) буфера в массиве 323 тегов, соответствующего записи 320(0)-320(B) буфера, ассоциированной с целевым адресом запроса 118 данных, чтобы определять то, присутствуют или нет данные для запроса 118 данных в спекулятивной буферной памяти 318. Если возникает неудачное обращение в кэш, при котором данные для запроса 118 данных не присутствуют в основном массиве 308 данных или в спекулятивной буферной памяти 318, контроллер 300 кэша выдает запрос 304 на заполнение для данных из высокоуровневой памяти и принимает запрашиваемые данные в качестве ответа 306 по заполнению. Контроллер 300 кэша может быть выполнен с возможностью отсрочивать обновление состояния кэша для запроса 118 данных посредством несохранения первоначально принимаемых данных в ответе 306 по заполнению для запроса 118 данных в записи 310(0)-310(M) кэша в основном массиве 308 данных. Вместо этого, принимаемые данные для запроса 118 данных могут сначала сохраняться в качестве данных 324(0)-324(B) кэша в выделяемой записи 320(0)-320(B) буфера в спекулятивной буферной памяти 318, с тем чтобы не загрязнять основной массив 308 данных спекулятивными данными. Когда запрос 118 данных становится неспекулятивным, как указано посредством ID инструкции в индикаторе 328 фиксации, совпадающего с идентификатором 326(0)-326(B) инструкции в записи 320(0)-320(B) буфера в спекулятивной буферной памяти 318, контроллер 300 кэша может инструктировать сохранение данных для запроса 118 данных в выделяемой записи 310(0)-310(M) кэша в основном массиве 308 данных.[0038] For example, if load instruction 202D, which is speculatively processed based on control flow prediction in processor 102 in FIG. 2 instructs processor 102 to issue a data request 118 for data to non-speculative cache 114 in FIG. 3, cache controller 300 is configured to search tag array 311 for tag 312(0)-312(M) in cache entry 310(0)-310(M) associated with the target address of data request 118 to determine whether , whether the data for the 118 data request is present or not. The cache controller 300 is also configured to search the speculative buffer memory 318 for a buffer tag 322(0)-322(B) in the tag array 323 corresponding to a buffer entry 320(0)-320(B) associated with the target request address. 118 data to determine whether or not the data for the data request 118 is present in the speculative buffer memory 318. If a cache miss occurs in which the data for the data request 118 is not present in the main data array 308 or in the speculative buffer memory 318, the controller Cache 300 issues a fill request 304 for data from high-level memory and receives the requested data as a fill response 306. The cache controller 300 may be configured to delay updating the cache state for the data request 118 by not storing the initially received data in the padding response 306 for the data request 118 in the cache entry 310(0)-310(M) in the main data array 308. Instead, received data for data request 118 may first be stored as cache data 324(0)-324(B) in an allocated buffer entry 320(0)-320(B) in speculative buffer memory 318 so as not to pollute the main one. speculative data array 308. When the data request 118 becomes non-speculative, as indicated by the instruction ID in the commit indicator 328 matching the instruction ID 326(0)-326(B) in the buffer entry 320(0)-320(B) in the speculative buffer memory 318, the controller 300 The cache may cause data for the data request 118 to be stored in an allocated cache entry 310(0)-310(M) in the main data array 308.

[0039] В другом примере, когда целевой адрес запроса 118 данных соответствует совпадающему тегу 312(0)-312(M) в массиве 311 тегов в неспекулятивной кэш-памяти 114, в результате получается удачное обращение в кэш. Это означает то, что данные для запроса 118 данных уже содержатся в записи 310(0)-310(M) кэша в основном массиве 308 данных, соответствующей совпадающему тегу 312(0)-312(M). Данные 314(0)-314(M) кэша для запроса 118 данных, сохраненного в соответствующей записи 310(0)-310(M) кэша, возвращаются в качестве ответа 302 с данными запросчику в процессоре 102. Тем не менее, обновление состояния 315(0)-315(M) замещения кэша для записи 310(0)-310(M) кэша, которая имеет данные 314(0)-314(M) кэша для запроса 118 данных, может отсрочиваться до тех пор, пока запрос 118 данных не станет неспекулятивным. Таким образом, например, политика замещения неспекулятивной кэш-памяти 114 не должна выполняться на основе состояния заменяющего кэша для записи 310(0)-310(M) кэша в основном массиве 308 данных, которая изменена посредством спекулятивного запроса 118 данных, который может сбрасываться в процессоре 102 вследствие ошибочного прогнозирования, что приводит к недопустимости обновления состояния кэша.[0039] In another example, when the target address of data request 118 matches a matching tag 312(0)-312(M) in tag array 311 in non-speculative cache 114, a cache hit results. This means that the data for the data request 118 is already contained in the cache entry 310(0)-310(M) in the main data array 308 corresponding to the matching tag 312(0)-312(M). Cache data 314(0)-314(M) for data request 118 stored in corresponding cache entry 310(0)-310(M) is returned as data response 302 to the requester at processor 102. However, status update 315 A cache replacement (0)-315(M) for a cache entry 310(0)-310(M) that has cache data 314(0)-314(M) for a data request 118 may be delayed until the request 118 data will not become non-speculative. Thus, for example, the replacement policy of the non-speculative cache 114 need not be executed based on the state of the replacement cache for a cache entry 310(0)-310(M) in the main data array 308 that is modified by a speculative data request 118 that may be flushed to processor 102 due to misprediction, which results in the cache state not being updated.

[0040] В другом примере, если запрос 118 данных, выданный из процессора 102, неспекулятивная кэш-память 114, не содержится в записи 310(0)-310(M) кэша в основном массиве 308 данных, но содержится в записи 320(0)-320(B) буфера в спекулятивной буферной памяти 318, соответствующие данные 324(0)-324(B) кэша для запроса 118 данных возвращаются запросчику в процессоре 102 в качестве ответа 302 с данными. Тем не менее, контроллер 300 кэша может быть выполнен с возможностью отсрочивать обновление состояния кэша для запроса 118 данных посредством несохранения данных в спекулятивной буферной памяти 318 для запроса 118 данных в записи 310(0)-310(M) кэша в основном массиве 308 данных, с тем чтобы не загрязнять основной массив 308 данных спекулятивными данными. Когда запрос 118 данных становится неспекулятивным, как указано посредством ID инструкции в индикаторе 328 фиксации, совпадающего с идентификатором 326(0)-326(B) инструкции в записи 320(0)-320(B) буфера в спекулятивной буферной памяти 318, контроллер 300 кэша может инструктировать сохранение данных для запроса 118 данных в выделяемой записи 310(0)-310(M) кэша в основном массиве 308 данных. Таким образом, в качестве другого примера, если дальнейшее удачное обращение в кэш возникает в такой выделяемой записи 310(0)-310(M) кэша для нового, последующего запроса 118 данных, то обновление состояния 315(0)-315(M) замещения кэша для записи 310(0)-310(M) кэша в основном массиве 308 данных, которая имеет данные 314(0)-314(M) кэша для запроса 118 данных, должно отсрочиваться до тех пор, пока запрос 118 данных не станет неспекулятивным, как пояснено выше для удачного обращения в кэш для основного массива 308 данных.[0040] In another example, if a data request 118 issued from processor 102, non-speculative cache 114 is not contained in cache entry 310(0)-310(M) in main data array 308, but is contained in cache entry 320(0) )-320(B) buffers in the speculative buffer memory 318, the corresponding cache data 324(0)-324(B) for the data request 118 is returned to the requester in the processor 102 as a data response 302. However, the cache controller 300 may be configured to delay updating the cache state for the data request 118 by not storing the data in the speculative buffer memory 318 for the data request 118 in the cache entry 310(0)-310(M) in the main data array 308. so as not to pollute the main data set 308 with speculative data. When the data request 118 becomes non-speculative, as indicated by the instruction ID in the commit indicator 328 matching the instruction ID 326(0)-326(B) in the buffer entry 320(0)-320(B) in the speculative buffer memory 318, the controller 300 The cache may cause data for the data request 118 to be stored in an allocated cache entry 310(0)-310(M) in the main data array 308. Thus, as another example, if a further cache hit occurs in such an allocated cache entry 310(0)-310(M) for a new, subsequent data request 118, then the replacement state update 315(0)-315(M) cache entry 310(0)-310(M) in the main data array 308 that has cache data 314(0)-314(M) for data request 118 must be deferred until data request 118 becomes non-speculative , as explained above for successful cache access for the main data array 308.

[0041] Фиг. 4 является блок-схемой последовательности операций способа, иллюстрирующей примерный процесс 400 отсрочки, посредством контроллера 300 кэша в неспекулятивной кэш-памяти 114 на фиг. 3, обновления состояния кэша данных для принимаемого запроса 118 данных, который является спекулятивным. Процесс 400 на фиг. 4 также включает в себя обновление отсроченного состояния кэша в основном массиве 308 данных для данных, ассоциированных с запросом 118 данных, в ответ то, что запрос 118 данных становится неспекулятивным. В дальнейшем поясняется процесс 400 на фиг. 4 в сочетании с неспекулятивной кэш-памятью 114 на фиг. 3 и процессором 102 на фиг. 1 и 2. В этом отношении, неспекулятивная кэш-память 114 принимает от запросчика запрос 118 данных, содержащий целевой адрес и идентификационные данные (ID) инструкции, идентифицирующие инструкцию загрузки, содержащую целевой адрес, обработанный посредством процессора 102 (этап 402 на фиг. 4). Контроллер 300 кэша выполняет поиск в массиве 311 тегов на предмет тега 312(0)-312(M), ассоциированного с целевым адресом запроса 118 данных (этап 404 на фиг. 4). Контроллер 300 кэша также выполняет поиск в спекулятивной буферной памяти 318 на предмет тега 322(0)-322(B) буфера, ассоциированного с целевым адресом запроса 118 данных (этап 406 на фиг. 4). Контроллер 300 кэша отправляет ответ 302 с данными для запроса 118 данных запросчику в процессоре 102 на основе тега 312(0)-312(M) в записи 310(0)-310(M) кэша в основном массиве 308 данных, ассоциированной с целевым адресом, и тега 322(0)-322(B) буфера в массиве 323 тегов в спекулятивной буферной памяти 318, ассоциированном с целевым адресом запроса 118 данных (этап 408 на фиг. 4). Контроллер 300 кэша принимает индикатор 328 фиксации, содержащий ID инструкции собственно инструкции, которая является неспекулятивной (этап 410 на фиг. 4). В ответ на принимаемый ID инструкции в индикаторе 328 фиксации, указывающий то, что инструкция загрузки запроса 118 данных является неспекулятивной, контроллер 300 кэша обновляет состояние кэша для записи 310(0)-310(M) кэша в основном массиве 308 данных, ассоциированной с целевым адресом запроса 118 данных (этап 412 на фиг. 4).[0041] FIG. 4 is a flowchart illustrating an example backoff process 400 by cache controller 300 in non-speculative cache 114 in FIG. 3, updates the data cache state for the received data request 118, which is speculative. Process 400 in FIG. 4 also includes updating a deferred cache state in the main data array 308 for data associated with the data request 118 in response to the data request 118 becoming non-speculative. The process 400 in FIG. is further explained. 4 in combination with the non-speculative cache 114 of FIG. 3 and processor 102 in FIG. 1 and 2. In this regard, the non-speculative cache 114 receives from the requester a data request 118 containing a target address and an instruction ID identifying a load instruction containing the target address processed by the processor 102 (step 402 in FIG. 4 ). Cache controller 300 searches tag array 311 for tag 312(0)-312(M) associated with the target address of data request 118 (step 404 in FIG. 4). The cache controller 300 also searches the speculative buffer memory 318 for a buffer tag 322(0)-322(B) associated with the target address of the data request 118 (step 406 in FIG. 4). The cache controller 300 sends a response 302 with data for a data request 118 to the requester in the processor 102 based on the tag 312(0)-312(M) in the cache entry 310(0)-310(M) in the main data array 308 associated with the target address. , and a buffer tag 322(0)-322(B) in a tag array 323 in the speculative buffer memory 318 associated with the target address of the data request 118 (step 408 in FIG. 4). Cache controller 300 receives a commit indicator 328 containing the instruction ID of the instruction itself, which is non-speculative (step 410 of FIG. 4). In response to a received instruction ID in the commit indicator 328 indicating that the load instruction of the data request 118 is non-speculative, the cache controller 300 updates the cache state for the cache entry 310(0)-310(M) in the main data array 308 associated with the target data request address 118 (step 412 in FIG. 4).

[0042] Как также подробнее поясняется ниже, неспекулятивная кэш-память 114 также может включать в себя схему 336 регистрации спекулятивных доступов (SAR), чтобы отслеживать то, содержатся или нет данные, ассоциированные с запросом 118 данных, относительно которого еще не известно, что он является неспекулятивным, в основном массиве 308 данных или в спекулятивной буферной памяти 318. Как пояснено выше, данные для принимаемого запроса 118 данных могут уже содержаться в основном массиве 308 данных, что приводит к удачному обращению в кэш, могут уже содержаться в спекулятивной буферной памяти 318, что также приводит к удачному обращению в кэш, либо могут не содержаться ни в одном из них, что приводит к неудачному обращению в кэш. В случае неудачного обращения в кэш, запись 320(0)-320(B) буфера, которая сохраняет данные запроса 118 данных, выделяется в спекулятивной буферной памяти 318. Таким образом, данные для запроса 118 данных могут сохраняться в основном массиве 308 данных или в спекулятивной буферной памяти 318. В ответ на прием индикатора 328 фиксации, указывающего ID инструкции собственно инструкции, которая фиксируется посредством процессора 102, контроллеру 300 кэша требуется способ для того, чтобы определять то, сохраняются либо нет данные, ассоциированные с запросом 118 данных, выданным в качестве результата совпадения инструкции с идентификатором инструкции, в основном массиве 308 данных или в спекулятивной буферной памяти 318, так что состояние кэша может обновляться. Если данные, ассоциированные с зафиксированной инструкцией, идентифицированной посредством ID инструкции в индикаторе 328 фиксации, сохраняются в основном массиве 308 данных, контроллер 300 кэша должен обновлять состояние кэша для записи 310(0)-310(M) кэша в основном массиве 308 данных, сохраняющем данные для зафиксированного запроса 118 данных. Если данные, ассоциированные с зафиксированной инструкцией, идентифицированной посредством ID инструкции в индикаторе 328 фиксации, сохраняются в спекулятивной буферной памяти 318, контроллер 300 кэша должен обновлять неспекулятивный индикатор 330(0)-330(B) (NS) записи 320(0)-320(B) буфера в спекулятивной буферной памяти 318. Контроллер 300 кэша обновляет неспекулятивный индикатор 330(0)-330(B) (NS) записи 320(0)-320(B) буфера, ассоциированной с идентификатором инструкции, в качестве неспекулятивного, так что данные, ассоциированные с зафиксированным запросом 118 данных, записываются в основной массив 308 данных в качестве неспекулятивных данных.[0042] As also explained in more detail below, the non-speculative cache 114 may also include a speculative access registration (SAR) circuit 336 to keep track of whether or not data associated with a data request 118 is not yet known to be present. it is non-speculative, in the main data array 308 or in the speculative buffer memory 318. As explained above, the data for the received data request 118 may already be contained in the main data array 308, resulting in a cache hit, may already be contained in the speculative buffer memory 318, which also results in a cache hit, or may not be contained in any of them, which leads to a cache hit. In the event of a cache miss, a buffer entry 320(0)-320(B) that stores the data of the data request 118 is allocated in the speculative buffer memory 318. Thus, the data for the data request 118 may be stored in the main data array 308 or in speculative buffer memory 318. In response to receiving a commit indicator 328 indicating the instruction ID of the actual instruction that is being committed by processor 102, cache controller 300 requires a method for determining whether data associated with a data request 118 issued to as a result of an instruction match with an instruction identifier, in the main data array 308 or in the speculative buffer memory 318, so that the cache state can be updated. If data associated with a committed instruction identified by the instruction ID in the commit indicator 328 is stored in the main data array 308, the cache controller 300 must update the cache state for cache entries 310(0)-310(M) in the main data array 308 storing data for recorded request 118 data. If data associated with a committed instruction identified by the instruction ID in the commit indicator 328 is stored in the speculative buffer memory 318, the cache controller 300 must update the non-speculative indicator 330(0)-330(B) (NS) entries 320(0)-320 (B) buffer in speculative buffer memory 318. Cache controller 300 updates non-speculative indicator 330(0)-330(B) (NS) of buffer entry 320(0)-320(B) associated with the instruction ID as non-speculative, so that the data associated with the committed data request 118 is written to the main data array 308 as non-speculative data.

[0043] В этом отношении, как проиллюстрировано на фиг. 3, неспекулятивная кэш-память 114 включает в себя SAR-схему 336, которая выполнена с возможностью сохранять SAR-записи 338(0)-338(S), ассоциированные соответствующим идентификатором 340(0)-340(S) инструкции. Когда запрос 118 данных принимается, контроллер 300 кэша выделяет SAR-запись 338(0)-338(S), выделяемую в SAR-схеме 336, ассоциированной с идентификатором инструкции для инструкции, которая выдает запрос 118 данных. Если данные, ассоциированные с инструкцией, идентифицированной посредством ID инструкции принимаемого запроса 118 данных, уже сохраняются в записи 310(0)-310(M) кэша в основном массиве 308 данных, индекс 342(0)-342(S) основного массива данных (MDA) для выделяемой SAR-записи 338(0)-338(S) обновляется с индексом в записи 310(0)-310(M) кэша в основном массиве 308 данных, которая содержит данные для запроса 118 данных. Если данные, ассоциированные с инструкцией, идентифицированной посредством ID инструкции принимаемого запроса 118 данных, не сохраняются в записи 310(0)-310(M) кэша в основном массиве 308 данных, но сохраняются в записи 320(0)-320(B) буфера в спекулятивной буферной памяти 318, индекс 344(0)-344(S) спекулятивного буфера (SB) для выделяемой SAR-записи 338(0)-338(S) обновляется с индексом в записи 320(0)-320(B) буфера в спекулятивной буферной памяти 318, которая содержит данные для запроса 118 данных. Если данные, ассоциированные с инструкцией, идентифицированной посредством ID инструкции принимаемого запроса 118 данных, не сохраняются в записи 310(0)-310(M) кэша в основном массиве 308 данных или в записи 320(0)-320(B) буфера в спекулятивной буферной памяти 318, что приводит к неудачному обращению в кэш, индекс 344(0)-344(S) спекулятивного буфера (SB) для выделяемой SAR-записи 338(0)-338(S) обновляется с индексом в записи 320(0)-320(B) буфера в спекулятивной буферной памяти 318, которая содержит данные для запроса 118 данных, принимаемого из ответа 306 по заполнению из высокоуровневой памяти в ответ на запрос 304 на заполнение. Как пояснено выше, выделение SAR-записи 338(0)-338(S) для запросов 118 данных в SAR-схеме 336 обеспечивает возможность того, что контроллер 300 кэша определяет то, следует либо нет обновлять состояние кэша данных, ассоциированных с запросом 118 данных, который становится неспекулятивным, в основном массиве 308 данных или в спекулятивной буферной памяти 318.[0043] In this regard, as illustrated in FIG. 3, non-speculative cache 114 includes a SAR circuit 336 that is configured to store SAR entries 338(0)-338(S) associated with a corresponding instruction identifier 340(0)-340(S). When a data request 118 is received, the cache controller 300 allocates a SAR entry 338(0)-338(S) allocated in the SAR schema 336 associated with the instruction identifier for the instruction that issues the data request 118. If data associated with the instruction identified by the instruction ID of the received data request 118 is already stored in the cache entry 310(0)-310(M) in the main data array 308, the main data array index 342(0)-342(S) ( The MDA) for the allocated SAR entry 338(0)-338(S) is updated with an index in the cache entry 310(0)-310(M) in the main data array 308, which contains the data for the data request 118. If the data associated with the instruction identified by the instruction ID of the received data request 118 is not stored in the cache entry 310(0)-310(M) in the main data array 308, but is stored in the buffer entry 320(0)-320(B) in speculative buffer memory 318, speculative buffer (SB) index 344(0)-344(S) for allocated SAR entry 338(0)-338(S) is updated with index in buffer entry 320(0)-320(B) in a speculative buffer memory 318 that contains data for the data request 118. If the data associated with the instruction identified by the instruction ID of the received data request 118 is not stored in the cache entry 310(0)-310(M) in the main data array 308 or in the buffer entry 320(0)-320(B) in the speculative buffer memory 318 resulting in a cache miss, the speculative buffer (SB) index 344(0)-344(S) for the allocated SAR entry 338(0)-338(S) is updated with the index in entry 320(0) -320(B) of a buffer in the speculative buffer memory 318 that contains data for the data request 118 received from the fill response 306 from the high-level memory in response to the fill request 304. As explained above, allocating a SAR record 338(0)-338(S) for data requests 118 in the SAR circuit 336 allows the cache controller 300 to determine whether or not to update the cache state of the data associated with the data request 118 , which becomes non-speculative, in the main data array 308 or in the speculative buffer memory 318.

[0044] Чтобы иллюстрировать пример использования SAR-схемы 336 посредством неспекулятивной кэш-памяти 114, чтобы отслеживать зарегистрированные спекулятивные запросы данных и иметь возможность отсрочивать обновление состояния кэша в неспекулятивной кэш-памяти 114 до тех пор, пока запрос данных не станет неспекулятивным, предоставляются фиг. 5A и 5B. Фиг. 5A иллюстрирует выдачу, посредством процессора 102 на фиг. 1, запроса 118 данных, содержащего ID инструкции и целевой адрес, который принимается посредством неспекулятивной кэш-памяти 114, что приводит к удачному обращению в кэш в основном массиве 308 данных неспекулятивной кэш-памяти 114. В этом примере, ID инструкции в запросе 118 данных, идентифицирующий инструкцию по обработке, которая инструктирует запросу 118 данных выдаваться, представляет собой идентификатор 1 инструкции. Контроллер 300 кэша в неспекулятивной кэш-памяти 114 выполнен с возможностью выполнять поиск в основном массиве 308 данных и в спекулятивной буферной памяти 318, чтобы выполнять поиск данных, соответствующих целевому адресу запроса 118 данных. В этом примере, данные, соответствующие целевому адресу запроса 118 данных, содержатся в основном массиве 308 данных, что приводит к удачному обращению в кэш. Данные для запроса 118 данных в основном массиве 308 данных возвращаются в качестве ответа 302 с данными запросчику в процессоре 102. Тем не менее, инструкция, идентифицированная посредством идентификатора 1 инструкции, которая инструктирует запросу 118 данных выдаваться, считается спекулятивной до тех пор, пока индикатор 328 фиксации не принимается посредством неспекулятивной кэш-памяти 114, указывающий иное, как пояснено выше. Контроллер 300 кэша в неспекулятивной кэш-памяти 114 выполнен с возможностью выделять SAR-запись 338(1) в SAR-схеме 336, показанной на фиг. 5A, ассоциированной с идентификатором 1 инструкции, чтобы регистрировать отсрочку обновления состояния кэша в основном массиве 308 данных для запроса 118 данных. Как показано на фиг. 5A идентификатор 1 инструкции сохраняется в идентификаторе 340(1) инструкции SAR-записи 338(1). Поскольку запрос 118 данных приводит к удачному обращению в кэш для основного массива 308 данных в неспекулятивной кэш-памяти 114, набор/путь кэша "12/4" записи 310(0)-310(M) кэша в основном массиве 308 данных, которая содержит данные для запроса 118 данных, сохраняется в MDA-индексе 342(1). В этом отношении, контроллер 300 кэша может позднее находить запись 310(0)-310(M) кэша в основном массиве 308 данных на основе MDA-индекса 342(1), чтобы обновлять свое состояние кэша, когда идентификатор 1 инструкции указывается в качестве зафиксированного согласно принимаемому индикатору 328 фиксации. Следует отметить, что нуль сохраняется в SB-индексе 344(1) для SAR-записи 338(1), поскольку данные для запроса 118 данных находятся в основном массиве 308 данных, а не в спекулятивной буферной памяти 318. Следует отметить, что в этом примере, SAR-запись 338(0) регистрирует местоположение данных для предыдущего запроса данных 118 в SB-индексе 344(0), соответствующем записи 1, в спекулятивной буферной памяти 318. Также следует отметить, что выделяемая SAR-запись 338(0)-338(S) необязательно может быть дополнена посредством контроллера 300 кэша с информацией, связанной с задержанным обновлением политики замещения кэша. Например, SAR-запись 338(0)-338(S) может помечаться в качестве наименее давно используемой (MRU) записи в политике замещения кэша на основе принципа "наиболее давно использованный" (LRU).[0044] To illustrate an example of using the SAR circuit 336 through the non-speculative cache 114 to keep track of logged speculative data requests and to be able to delay updating the cache state in the non-speculative cache 114 until the data request becomes non-speculative, FIGS are provided. . 5A and 5B. Fig. 5A illustrates output by processor 102 of FIG. 1, a data request 118 containing an instruction ID and a target address that is received by the non-speculative cache 114, resulting in a cache hit in the main data array 308 of the non-speculative cache 114. In this example, the instruction ID in the data request 118 , identifying the processing instruction that instructs the data request 118 to be issued, is instruction identifier 1. The cache controller 300 in the non-speculative cache memory 114 is configured to search the main data array 308 and the speculative buffer memory 318 to search for data corresponding to the target address of the data request 118. In this example, data corresponding to the target address of data request 118 is contained in the main data array 308, resulting in a cache hit. The data for the data request 118 in the main data array 308 is returned as a data response 302 to the requester in the processor 102. However, the instruction identified by instruction identifier 1 that instructs the data request 118 to be issued is considered speculative until the indicator 328 commit is not received by non-speculative cache 114 indicating otherwise, as explained above. The cache controller 300 in the non-speculative cache 114 is configured to allocate a SAR entry 338(1) in the SAR circuit 336 shown in FIG. 5A associated with instruction ID 1 to register a cache state update deferral in the main data array 308 for data request 118. As shown in FIG. 5A, instruction ID 1 is stored in instruction ID 340(1) of SAR record 338(1). Because the data request 118 results in a cache hit for the main data array 308 in the non-speculative cache 114, the cache set/path "12/4" of the cache entry 310(0)-310(M) in the main data array 308 that contains data for data request 118 is stored in MDA index 342(1). In this regard, cache controller 300 may later locate cache entry 310(0)-310(M) in main data array 308 based on MDA index 342(1) to update its cache state when instruction ID 1 is indicated as committed according to the received fixation indicator 328. It should be noted that zero is stored in the SB index 344(1) for the SAR record 338(1) because the data for the data request 118 is in the main data array 308 and not in the speculative buffer memory 318. It should be noted that in this example, the SAR record 338(0) records the data location for the previous data request 118 in the SB index 344(0) corresponding to record 1 in the speculative buffer memory 318. It should also be noted that the allocated SAR record 338(0)- 338(S) may optionally be supplemented by cache controller 300 with information associated with a delayed update of the cache replacement policy. For example, the SAR entry 338(0)-338(S) may be marked as the least recently used (MRU) entry in a cache replacement policy based on the most recently used (LRU) principle.

[0045] Фиг. 5B иллюстрирует пример приема, посредством процессора 102 на фиг. 5A, индикатора 328 фиксации, идентифицирующего идентификатор 1 инструкции как зафиксированный. В ответ, контроллер 300 кэша выполнен с возможностью выполнять поиск в SAR-схеме 336, чтобы определять то, содержит или нет SAR-запись 338 идентификатор 1 инструкции в идентификаторе 340(0)-340(S) инструкции, чтобы указывать то, что обновление состояния кэша запроса 118 данных, ассоциированного с идентификатором 1 инструкции, отсрочивается. В этом примере, идентификатор 1 инструкции содержится в SAR-записи 338(1) в ответ на принимаемый запрос 118 данных, вызываемый посредством обработки идентификатора 1 инструкции, как проиллюстрировано на фиг. 5A и описано выше. Контроллер 300 кэша выполнен с возможностью, в ответ на определение того, что идентификатор 1 инструкции содержится в SAR-записи 338(1), обновлять состояние 315(0)-315(M) замещения кэша в записи 310(0)-310(M) кэша в основном массиве 308 данных, индексированной посредством MDA-индекса 342(1). Это обусловлено тем, что запись 310(0)-310(M) кэша в основном массиве 308 данных, индексированная посредством MDA-индекса 342(1) для ID инструкции, более не является спекулятивной согласно принимаемому индикатору 328 фиксации. Контроллер 300 кэша может отменять выделение SAR-записи 338(1) в ответ на прием индикатора 328 фиксации, указывающего то, что идентификатор 1 инструкции зафиксирован, чтобы освобождать пространство для регистрации задержанного состояния обновления кэша будущих принимаемых запросов 118 данных.[0045] FIG. 5B illustrates an example of reception by processor 102 of FIG. 5A, a latching indicator 328 identifying instruction ID 1 as latched. In response, cache controller 300 is configured to search SAR schema 336 to determine whether SAR entry 338 contains instruction identifier 1 in instruction identifier 340(0)-340(S) to indicate that the update The state of the data request cache 118 associated with instruction ID 1 is deferred. In this example, instruction ID 1 is contained in SAR record 338(1) in response to a received data request 118 caused by processing instruction ID 1, as illustrated in FIG. 5A and described above. The cache controller 300 is configured to, in response to determining that instruction ID 1 is contained in the SAR entry 338(1), update the cache replacement state 315(0)-315(M) in the entry 310(0)-310(M). ) cache in the main data array 308, indexed by MDA index 342(1). This is because the cache entry 310(0)-310(M) in the main data array 308 indexed by the instruction ID MDA index 342(1) is no longer speculative according to the received commit indicator 328. The cache controller 300 may de-allocate the SAR entry 338(1) in response to receiving a commit indicator 328 indicating that instruction ID 1 is committed to free up space to record the cache update status of future received data requests 118.

[0046] Чтобы иллюстрировать пример использования SAR-схемы 336 и спекулятивной буферной памяти 318 в неспекулятивной кэш-памяти 114, чтобы отслеживать зарегистрированные спекулятивные запросы данных и иметь возможность отсрочивать обновление состояния кэша в неспекулятивной кэш-памяти 114 до тех пор, пока запрос данных не станет неспекулятивным, предоставляются фиг. 6A и 6B. Фиг. 6A иллюстрирует выдачу, посредством процессора 102 на фиг. 1, запроса 118 данных, содержащего ID инструкции и целевой адрес, который принимается посредством неспекулятивной кэш-памяти 114, что приводит к неудачному обращению в кэш для основного массива 308 данных и спекулятивной буферной памяти 318. В этом примере, ID инструкции в запросе 118 данных, идентифицирующий инструкцию по обработке, которая инструктирует запросу 118 данных выдаваться, представляет собой идентификатор 7 инструкции. Контроллер 300 кэша в неспекулятивной кэш-памяти 114 выполнен с возможностью выполнять поиск в основном массиве 308 данных и в спекулятивной буферной памяти 318, чтобы выполнять поиск данных, соответствующих целевому адресу запроса 118 данных. В этом примере, данные, соответствующие целевому адресу запроса 118 данных, не содержатся в основном массиве 308 данных или в спекулятивной буферной памяти 318 неспекулятивной кэш-памяти 114. Инструкция, идентифицированная посредством идентификатора 1 инструкции, которая инструктирует запросу 118 данных выдаваться, считается спекулятивной до тех пор, пока индикатор 328 фиксации не принимается посредством неспекулятивной кэш-памяти 114, указывающий иное, как пояснено выше.[0046] To illustrate an example of using SAR circuit 336 and speculative buffer memory 318 in non-speculative cache 114 to keep track of logged speculative data requests and be able to delay updating the cache state in non-speculative cache 114 until the data request is will become non-speculative, figs are provided. 6A and 6B. Fig. 6A illustrates output by processor 102 of FIG. 1, a data request 118 containing an instruction ID and a target address that is received by the non-speculative cache 114, resulting in a cache miss for the main data array 308 and the speculative buffer memory 318. In this example, the instruction ID in the data request 118 , identifying the processing instruction that instructs the data request 118 to be issued, is an instruction identifier 7. The cache controller 300 in the non-speculative cache memory 114 is configured to search the main data array 308 and the speculative buffer memory 318 to search for data corresponding to the target address of the data request 118. In this example, the data corresponding to the target address of data request 118 is not contained in the main data array 308 or in the speculative buffer memory 318 of the non-speculative cache 114. The instruction identified by instruction identifier 1 that instructs the data request 118 to be issued is considered speculative until until a commit indicator 328 is received by the non-speculative cache 114 indicating otherwise, as explained above.

[0047] Контроллер 300 кэша в неспекулятивной кэш-памяти 114 выполнен с возможностью выделять доступную запись 320(7) буфера в спекулятивной буферной памяти 318, как показано на фиг. 6A, которая представляет собой индекс 7 в этом примере. Таким образом, данные для запроса 118 данных, ассоциированные с идентификатором 1 инструкции и сохраненные в спекулятивной буферной памяти 318 в спекулятивном состоянии в ответ на принимаемый ответ 306 по заполнению из высокоуровневой памяти, могут извлекаться и устанавливаться посредством контроллера 300 кэша в основном массиве 308 данных, когда запрос 118 данных становится неспекулятивным. Индикатор 332(7) нахождения в кэше в записи 320(7) буфера задается равным "0" в этом примере, что означает то, что данные, ассоциированные с принимаемым запросом 118 данных, не содержатся в основном массиве 308 данных. Неспекулятивный индикатор 330(7) для записи 320(7) буфера задается равным "0", чтобы указывать спекулятивное состояние в этом примере. Допустимый индикатор 334(7) задается равным "1", чтобы указывать то, что запись 320(7) буфера является допустимой в этом примере. Если запись 320(0)-320(B) буфера не доступна в спекулятивной буферной памяти 318, контроллер 300 кэша может быть выполнен с возможностью отправлять индикатор повторной попытки в запросчик в процессоре 102 в качестве ответа 302 с данными, чтобы указывать для запросчика необходимость повторения попытки запроса 118 данных в последующее время. Это предоставляет больше времени для того, чтобы запросы 118 данных с зарегистрированными отсроченными обновлениями состояний кэша, сохраненными в спекулятивной буферной памяти 318, становились неспекулятивными, что в таком случае приводит к тому, что их соответствующие записи 320(0)-320(B) буфера имеют возможность использоваться и/или повторно выделяться, как подробнее описано ниже относительно фиг. 6B.[0047] The cache controller 300 in the non-speculative cache memory 114 is configured to allocate an available buffer entry 320(7) in the speculative buffer memory 318, as shown in FIG. 6A, which represents index 7 in this example. Thus, the data for data request 118 associated with instruction ID 1 and stored in the speculative buffer memory 318 in a speculative state in response to the received fill response 306 from the high-level memory can be retrieved and installed by the cache controller 300 in the main data array 308. when the data request 118 becomes non-speculative. The cache presence indicator 332(7) in the buffer entry 320(7) is set to "0" in this example, which means that the data associated with the received data request 118 is not contained in the main data array 308. The non-speculative indicator 330(7) for buffer entry 320(7) is set to "0" to indicate the speculative state in this example. The valid indicator 334(7) is set to "1" to indicate that the buffer entry 320(7) is valid in this example. If a buffer entry 320(0)-320(B) is not available in the speculative buffer memory 318, the cache controller 300 may be configured to send a retry indicator to the requester in the processor 102 as a data response 302 to indicate to the requester whether to retry attempts to request 118 data at a subsequent time. This provides more time for data requests 118 with registered deferred cache state updates stored in speculative buffer memory 318 to become non-speculative, which then causes their corresponding buffer entries 320(0)-320(B) to have the ability to be used and/or re-allocated, as discussed in more detail below with respect to FIG. 6B.

[0048] Снова со ссылкой фиг. 6A, контроллер 300 кэша в неспекулятивной кэш-памяти 114 также выполнен с возможностью выделять SAR-запись 338(0) в SAR-схеме 336, ассоциированной с идентификатором 1 инструкции, чтобы регистрировать отсрочку обновления состояния кэша в основном массиве 308 данных для запроса 118 данных. Как показано на фиг. 6A идентификатор 1 инструкции сохраняется в идентификаторе инструкции 340(0) SAR-записи 338(0). Поскольку запрос 118 данных приводит к неудачному обращению в кэш, нуль содержится в MDA-индексе 342(0), поскольку данные для запроса 118 данных не сохраняются в основном массиве 308 данных. SB-индекс "7" сохраняется в SB-индексе 344(0) в этом примере, чтобы указывать на запись 320(7) буфера, выделяемую в спекулятивной буферной памяти 318, которая регистрирует спекулятивное состояние запроса 118 данных, ассоциированного с идентификатором 1 инструкции. В этом отношении, контроллер 300 кэша может позднее выполнять поиск в SAR-схеме 336 идентификатор 1 инструкции, когда его запрос ассоциированных данных 118 становится неспекулятивным, чтобы определять запись 320(0)-320(B) буфера, чтобы обновлять свой соответствующий спекулятивный индикатор 330(7) на неспекулятивное состояние. Следует отметить, что нуль сохраняется в MDA-индексе 342(0) для SAR-записи 338(1), поскольку данные для запроса 118 данных не содержатся в основном массиве 308 данных. Контроллер 300 кэша выполнен с возможностью записывать данные для запросов 118 данных, ассоциированных с идентификаторами инструкций, содержащимися в записи 320(0)-320(B) буфера, в спекулятивной буферной памяти 318, которые имеют спекулятивный индикатор 330(7) в качестве неспекулятивного состояния. Фиг. 6B иллюстрирует пример приема, посредством процессора 102 на фиг. 6A, индикатора 328 фиксации, идентифицирующего идентификатор 1 инструкции как зафиксированный. В ответ, контроллер 300 кэша выполнен с возможностью выполнять поиск в SAR-схеме 336, чтобы определять то, содержит или нет SAR-запись 338 идентификатор 1 инструкции в идентификаторе 340(0)-340(S) инструкции, чтобы указывать то, что обновление состояния кэша запроса 118 данных, ассоциированного с идентификатором 1 инструкции, отсрочивается. В этом примере, идентификатор 1 инструкции содержится в SAR-записи 338(0) в ответ на принимаемый запрос 118 данных, вызываемый посредством обработки идентификатора 1 инструкции, как проиллюстрировано на фиг. 6A и описано выше. Контроллер 300 кэша выполнен с возможностью, в ответ на определение того, что идентификатор 1 инструкции содержится в SAR-записи 338(0), обращаться к SB-индексу 344(0), чтобы определять запись 320(0)-320(B) буфера, ассоциированную с идентификатором 1 инструкции. В этом примере, индекс "7" сохраняется в SB-индексе 344(0), чтобы указывать на запись 320(7) буфера в спекулятивной буферной памяти 318. Неспекулятивный индикатор 330(7) задается в качестве неспекулятивного состояния, которое составляет "1" в этом примере. Таким образом, контроллер 300 кэша может записывать данные, ассоциированные с запросом 118 данных для идентификатора 1 инструкции, зарегистрированного в записи 320(7) буфера, в основном массиве 308 данных. Контроллер 300 кэша может ожидать записи данных, ассоциированных с запросом 118 данных для идентификатора 1 инструкции, зарегистрированного в записи 320(7) буфера в основном массиве 308 данных, до тех пор, пока новая запись 320(0)-320(B) буфера не должна выделяться в спекулятивной буферной памяти 318, и отсутствуют пустые записи 320(0)-320(B) буфера. Данные, ассоциированные с запросом 118 данных для идентификатора 1 инструкции, могут оставаться в записи 320(7) буфера, поскольку последующий запрос 118 данных для идентичных данных на основе его целевого адреса может удовлетворяться в качестве удачного обращения в кэш из спекулятивной буферной памяти 318, как описано выше. Когда контроллер 300 кэша записывает данные, ассоциированные с запросом 118 данных, для идентификатора 1 инструкции, зарегистрированного в записи 320(7) буфера, в основном массиве 308 данных, индикатор 332(7) нахождения в кэше должен задаваться с возможностью указывать то, что данные сохраняются в основном массиве 308 данных, посредством индикатора "1". Таким образом, когда контроллер 300 кэша должен выделять новую запись 320(0)-320(B) буфера в спекулятивной буферной памяти 318 для нового запроса 118 данных, контроллер 300 кэша может выполнять поиск записи 320(0)-320(B) буфера, которая имеет индикатор нахождения в кэше, заданный равным "1" в этом примере. Это означает то, что данные для записи 320(0)-320(B) буфера записаны в основной массив 308 данных в качестве неспекулятивных данных, и в силу этого ассоциированная запись 320(0)-320(B) буфера может подвергаться отмене выделения и/или повторно выделяться.[0048] Again with reference to FIG. 6A, the cache controller 300 in the non-speculative cache 114 is also configured to allocate a SAR entry 338(0) in the SAR circuit 336 associated with instruction ID 1 to register a cache state refresh delay in the main data array 308 for data request 118 . As shown in FIG. 6A, instruction ID 1 is stored in instruction ID 340(0) of SAR record 338(0). Because the data request 118 results in a cache miss, a zero is contained in the MDA index 342(0) because the data for the data request 118 is not stored in the main data array 308. SB index "7" is stored in SB index 344(0) in this example to point to a buffer entry 320(7) allocated in the speculative buffer memory 318 that records the speculative state of the data request 118 associated with instruction ID 1. In this regard, cache controller 300 may later search SAR circuit 336 for instruction ID 1 when its request for associated data 118 becomes non-speculative to determine buffer entry 320(0)-320(B) to update its corresponding speculative indicator 330 (7) to a non-speculative state. It should be noted that zero is stored in the MDA index 342(0) for the SAR record 338(1) since the data for the data request 118 is not contained in the main data array 308. Cache controller 300 is configured to record data for data requests 118 associated with instruction identifiers contained in buffer entry 320(0)-320(B) in speculative buffer memory 318, which have speculative indicator 330(7) as a non-speculative state. . Fig. 6B illustrates an example of reception by processor 102 of FIG. 6A, a latching indicator 328 identifying instruction ID 1 as latched. In response, cache controller 300 is configured to search SAR schema 336 to determine whether SAR entry 338 contains instruction identifier 1 in instruction identifier 340(0)-340(S) to indicate that the update The state of the data request cache 118 associated with instruction ID 1 is deferred. In this example, instruction ID 1 is contained in SAR record 338(0) in response to a received data request 118 caused by processing instruction ID 1, as illustrated in FIG. 6A and described above. Cache controller 300 is configured to, in response to determining that instruction ID 1 is contained in SAR entry 338(0), access SB index 344(0) to determine buffer entry 320(0)-320(B). , associated with instruction ID 1. In this example, index "7" is stored in SB index 344(0) to point to buffer entry 320(7) in speculative buffer memory 318. Non-speculative indicator 330(7) is set as a non-speculative state that is "1" in this example. Thus, cache controller 300 may record data associated with data request 118 for instruction ID 1 registered in buffer entry 320(7) in main data array 308. The cache controller 300 may wait for a data entry associated with a data request 118 for instruction ID 1 registered in a buffer entry 320(7) in the main data array 308 until a new buffer entry 320(0)-320(B) must be allocated in speculative buffer memory 318, and there are no empty buffer entries 320(0)-320(B). Data associated with a data request 118 for instruction ID 1 may remain in the buffer entry 320(7) because a subsequent data request 118 for identical data based on its target address may be satisfied as a cache hit from the speculative buffer memory 318, as described above. When cache controller 300 writes data associated with data request 118 for instruction ID 1 registered in buffer entry 320(7) in main data array 308, cache presence indicator 332(7) must be set to indicate that the data are stored in the main data array 308 by means of an indicator "1". Thus, when the cache controller 300 needs to allocate a new buffer entry 320(0)-320(B) in the speculative buffer memory 318 for a new data request 118, the cache controller 300 may search the buffer entry 320(0)-320(B), which has a cache presence indicator set to "1" in this example. This means that the data for the buffer entry 320(0)-320(B) is written to the main data array 308 as non-speculative data, and therefore the associated buffer entry 320(0)-320(B) may be subject to de-allocation and /or re-allocate.

[0049] Относительно SAR-схемы 336 и спекулятивной буферной памяти 318 на фиг. 3, а также обновления спекулятивного состояния отслеживаемого запроса 118 данных на неспекулятивное состояние в примере на фиг. 6B, то, что идентификатор становится неспекулятивным, в конечном счете инициирует контроллер 300 кэша с возможностью записывать данные для запроса 118 данных, ассоциированного с идентификатором инструкции, в основной массив 308 данных. Как пояснено выше, запись 320(0)-320(B) буфера в спекулятивной буферной памяти 318 для ID инструкции, который становится неспекулятивным, и ее преобразованная ассоциированная SAR-запись 338(0)-338(S) должны подвергаться отмене выделения в спекулятивной буферной памяти 318, с тем чтобы обеспечивать их доступность для другого запроса 118 данных. Тем не менее, другие идентификаторы инструкций могут выделяться в SAR-записях 338(0)-338(S) в SAR-схеме 336, которые преобразуются в идентичную запись 320(0)-320(M) буфера в спекулятивной буферной памяти 318. Например, несколько запросов 118 данных могут иметь идентичный целевой адрес. Если запись 320(0)-320(M) буфера в спекулятивной буферной памяти 318, преобразованная в несколько SAR-записей 338(0)-338(S), подвергается отмене выделения, то оставшиеся SAR-записи 338(0)-338(S), преобразованные в идентичную запись 320(0)-320(M) буфера в спекулятивной буферной памяти 318, не будут обладать сведениями в отношении того, что указывается на запись 320(0)-320(M) буфера, которая была подвергнута отмене выделения. Таким образом, ID инструкции, ассоциированный с такими SAR-записями 338(0)-338(S), который позднее становится неспекулятивным, потеряет свое преобразование в спекулятивную буферную память 318, что приведет к невозможности его обновления, представляет собой ассоциированное состояние кэша. Как пояснено ниже, один способ разрешать эту проблему состоит в том, чтобы предоставлять другой уровень косвенности преобразования между SAR-схемой 336 и спекулятивной буферной памятью 318.[0049] With respect to SAR circuit 336 and speculative buffer memory 318 in FIG. 3, as well as updating the speculative state of the monitored data request 118 to the non-speculative state in the example of FIG. 6B, the fact that the identifier becomes non-speculative ultimately triggers the cache controller 300 to write data for the data request 118 associated with the instruction identifier to the main data array 308. As explained above, a buffer entry 320(0)-320(B) in speculative buffer memory 318 for an instruction ID that becomes non-speculative and its converted associated SAR entry 338(0)-338(S) must be deallocated in the speculative buffer memory 318 so that they are available for another data request 118. However, other instruction identifiers may be allocated in SAR entries 338(0)-338(S) in SAR circuit 336, which are mapped to an identical buffer entry 320(0)-320(M) in speculative buffer memory 318. For example, , multiple data requests 118 may have an identical target address. If a buffer entry 320(0)-320(M) in the speculative buffer memory 318, mapped to multiple SAR entries 338(0)-338(S), is de-allocated, then the remaining SAR entries 338(0)-338( S) mapped to an identical buffer entry 320(0)-320(M) in speculative buffer memory 318 will have no knowledge of what the buffer entry 320(0)-320(M) is pointing to that has been canceled discharge. Thus, an instruction ID associated with such SAR entries 338(0)-338(S) that later becomes non-speculative will lose its mapping to the speculative buffer memory 318, causing it to fail to be updated, representing the associated cache state. As explained below, one way to resolve this problem is to provide another level of indirection for the conversion between the SAR circuit 336 and the speculative buffer memory 318.

[0050] SAR-схема 336, поясненная выше для отслеживания спекулятивного состояния запросов 118 данных, принимаемых посредством неспекулятивной кэш-памяти 114, также может использоваться в комбинации с виртуальной заполняющей буферной (VFB) схемой. Как пояснено в ниже, виртуальная заполняющая буферная (VFB) схема может использоваться для того, чтобы преобразовывать SAR-записи 338(0)-338(S) в записи 320(0)-320(B) буфера в спекулятивной буферной памяти 318. VFB-схема может использоваться для того, чтобы отслеживать то, данные, ассоциированные с записью 320(0)-320(B) буфера в спекулятивной буферной памяти 318, становятся неспекулятивными и записываются в основной массив 308 данных или нет, так что другие идентификаторы инструкций могут оставаться преобразованными в VFB-схему. VFB-схема может отслеживать то, записана или нет запись 320(0)-320(B) буфера в спекулятивной буферной памяти 318, ассоциированная с идентификатором инструкции, остающимся преобразованным из SAR-схемы 336 в VFB-схему, в основной массив 308 данных, так что обновление состояния кэша для таких других преобразованных идентификаторов инструкций может обновляться прямо в основной массив 308 данных, поскольку ее преобразованная ассоциированная запись 320(0)-320(B) буфера в спекулятивной буферной памяти 318 должна подвергаться отмене выделения.[0050] The SAR circuit 336 explained above for tracking the speculative state of data requests 118 received through the non-speculative cache 114 may also be used in combination with a virtual fill buffer (VFB) circuit. As explained below, a virtual fill buffer (VFB) circuit may be used to map SAR entries 338(0)-338(S) to buffer entries 320(0)-320(B) in speculative buffer memory 318. VFB -circuitry may be used to keep track of whether data associated with a buffer entry 320(0)-320(B) in the speculative buffer memory 318 becomes non-speculative and written to the main data array 308 or not, so that other instruction identifiers may remain converted to VFB schema. The VFB circuit may monitor whether or not a buffer entry 320(0)-320(B) in the speculative buffer memory 318 associated with the instruction identifier remaining mapped from the SAR circuit 336 to the VFB circuit is written to the main data array 308. so the cache state update for such other mapped instruction IDs can be updated directly to the main data array 308 as its mapped associated buffer entry 320(0)-320(B) in the speculative buffer memory 318 must be deallocated.

[0051] Следует отметить снова, со ссылкой на неспекулятивную кэш-память 114 на фиг. 3 и в отношении фиг. 6A и 6B, что когда запись 310(0)-310(M) кэша вытесняется из основного массива 308 данных посредством контроллера 300 кэша, контроллер 300 кэша также может обновлять запись 320(0)-320(B) буфера в спекулятивной буферной памяти 318. Например, если конкретная запись 310(0)-310(M) кэша (например, посредством ее набора/пути) в основном массиве 308 данных идентифицируется в качестве записи-жертвы, которая должна вытесняться посредством контроллера 300 кэша, контроллер 300 кэша может быть выполнен с возможностью выполнять поиск в записях 320(0)-320(B) буфера, чтобы определять то, имеются или нет записи 320(0)-320(B) буфера в спекулятивной буферной памяти 318, которые соответствуют вытесненной записи 310(0)-310(M) кэша. Если да, такая соответствующая запись(и) буфера 320(0)-320(B) может признаваться недопустимой посредством задания ее соответствующего допустимого индикатора 334(0)-334(B) в недопустимое состояние (например, в состояние "0"). Таким образом, если новый запрос 118 данных принимается в неспекулятивной кэш-памяти 114, имеющей целевой адрес, соответствующий вытесненной записи 310(0)-310(M) кэша, которая приводит приводить к неудачному обращению в кэш для основного массива 308 данных, то удачное обращение в кэш не должно ложно возникать в спекулятивной буферной памяти 318. В этом отношении, фиг. 7A-7D иллюстрируют пример выдачи, посредством процессора 102 на фиг. 1, запросов 118 данных, принимаемых посредством неспекулятивной кэш-памяти 114 в системе 106 кэш-памяти. В этом примере, неспекулятивная кэш-память включает в себя альтернативную SAR-схему 700, которая может преобразовываться в записи в виртуальной заполняющей буферной (VFB) схеме 708, которая преобразуется в спекулятивную буферную память 318 для отслеживания спекулятивных запросов 118 данных и обновления состояния кэша таких запросов в основном массиве 308 данных, когда они становятся неспекулятивными. В этом примере, как показано на фиг. 7A, три (3) запроса 118 данных выполняются в неспекулятивную кэш-память 114, идентифицированную посредством трех (3) идентификаторов инструкций в качестве идентификаторов 1, 4 и 8 инструкций. Контроллер 300 кэша в неспекулятивной кэш-памяти 114 выполнен с возможностью выполнять поиск в основном массиве 308 данных и в спекулятивной буферной памяти 318 для того, чтобы выполнять поиск данных, соответствующих целевому адресу этих трех запросов 118 данных. В этом примере, данные, соответствующие целевому адресу запроса 118 данных для идентификатора 1 инструкции, не содержатся в основном массиве 308 данных или в спекулятивной буферной памяти 318 неспекулятивной кэш-памяти 114, что приводит к неудачному обращению в кэш. Контроллер 300 кэша выделяет SAR-запись 702(0) в SAR-схеме 700, показанной на фиг. 7A, которая является аналогичной SAR-схеме 336 на фиг. 3. Идентификатор 1 инструкции сохраняется в идентификаторе 704(0) инструкции в SAR-записи 702(0). Контроллер 300 кэша также выделяет VFB-запись 710(7) в VFB-схеме 708, показанной на фиг. 7A. Индекс "7", соответствующий выделяемой VFB-записи 710(7), сохраняется в VFB-индексе 706(0) в SAR-схеме 700, чтобы преобразовывать SAR-запись 702(0) для идентификатора 1 инструкции в VFB-запись 710(7) в VFB-схеме 708. Индикатор 714(7) нахождения в кэше в SAR-записи 702(7) задается в качестве данных, ассоциированных с запросом 118 данных, инициируемым из идентификатора 1 инструкции как не находящимся в основном массиве 308 данных, поскольку запрос 118 данных, связанный с идентификатором 1 инструкции, приводит к неудачному обращению в кэш. Таким образом, MDA-индекс 716(7) в VFB-записи 710(7) задается равным "0" или нулю как не указывающий на местоположение в основном массиве 308 данных. Тем не менее, индекс 718(7) спекулятивного буфера (SB) в VFB-схеме 708 задается в качестве индекса "4", чтобы преобразовывать VFB-запись 710(7) в запись 320(4) буфера в спекулятивной буферной памяти 318, которая содержит данные, принимаемые из ответа 306 по заполнению на выделяемую запись 320(4) буфера в спекулятивной буферной памяти 318.[0051] It should be noted again with reference to the non-speculative cache 114 in FIG. 3 and in relation to FIG. 6A and 6B that when a cache entry 310(0)-310(M) is evicted from the main data array 308 by the cache controller 300, the cache controller 300 may also update the buffer entry 320(0)-320(B) in the speculative buffer memory 318 For example, if a particular cache entry 310(0)-310(M) (eg, by its set/path) in the main data array 308 is identified as a victim entry to be evicted by the cache controller 300, the cache controller 300 may be configured to search the buffer entries 320(0)-320(B) to determine whether or not there are buffer entries 320(0)-320(B) in the speculative buffer memory 318 that correspond to the evicted entry 310(0) -310(M) cache. If so, such corresponding buffer entry(s) 320(0)-320(B) may be invalidated by setting its corresponding valid indicator 334(0)-334(B) to an invalid state (eg, state "0"). Thus, if a new data request 118 is received in the non-speculative cache 114 having a target address corresponding to an evicted cache entry 310(0)-310(M) that results in a cache miss for the main data array 308, then a hit cache hits should not falsely occur in the speculative buffer memory 318. In this regard, FIG. 7A-7D illustrate an example of dispensing by processor 102 in FIG. 1, data requests 118 received by non-speculative cache 114 in cache system 106. In this example, the non-speculative cache memory includes an alternative SAR circuit 700 that can map to entries in a virtual fill buffer (VFB) circuit 708 that maps to a speculative buffer memory 318 for tracking speculative data requests 118 and updating the cache state of such queries in the main data set 308 when they become non-speculative. In this example, as shown in FIG. 7A, three (3) data requests 118 are made to non-speculative cache 114 identified by three (3) instruction IDs as instruction IDs 1, 4, and 8. The cache controller 300 in the non-speculative cache memory 114 is configured to search the main data array 308 and the speculative buffer memory 318 to search for data corresponding to the target address of these three data requests 118. In this example, the data corresponding to the data request target address 118 for instruction ID 1 is not contained in the main data array 308 or the speculative buffer memory 318 of the non-speculative cache 114, resulting in a cache miss. The cache controller 300 allocates a SAR entry 702(0) in the SAR circuit 700 shown in FIG. 7A, which is similar to SAR pattern 336 in FIG. 3. Instruction ID 1 is stored in instruction ID 704(0) in SAR record 702(0). The cache controller 300 also allocates a VFB entry 710(7) in the VFB circuit 708 shown in FIG. 7A. An index "7" corresponding to the allocated VFB record 710(7) is stored in a VFB index 706(0) in the SAR circuit 700 to convert the SAR record 702(0) for instruction ID 1 into a VFB record 710(7 ) in the VFB circuit 708. The cache presence indicator 714(7) in the SAR record 702(7) is set as data associated with the data request 118 initiated from instruction ID 1 as not being in the main data array 308 because the request 118 data associated with instruction ID 1 results in a cache miss. Thus, the MDA index 716(7) in the VFB record 710(7) is set to "0" or zero as not indicating a location in the main data array 308. However, the speculative buffer (SB) index 718(7) in the VFB circuit 708 is set as index "4" to map the VFB entry 710(7) to a buffer entry 320(4) in the speculative buffer memory 318, which contains data received from the fill response 306 to the allocated buffer entry 320(4) in the speculative buffer memory 318.

[0052] Контроллер 300 кэша в неспекулятивной кэш-памяти 114 также выполнен с возможностью выполнять поиск в основном массиве 308 данных и в спекулятивной буферной памяти 318, чтобы выполнять поиск данных, соответствующих целевому адресу запроса 118 данных для идентификаторов 4 и 8 инструкций. В этом примере, оба таких поиска приводят к удачному обращению в спекулятивной буферной памяти 318, поскольку эти инструкции направлены на целевой адрес, идентичный целевому адресу для запроса 118 данных для идентификатора 1 инструкции, и контроллер 300 кэша заполняет эти данные в запись 320(4) буфера в спекулятивной буферной памяти 318 из ответа 306 по заполнению. Таким образом, SAR-записи 702(0) и 702(2) с идентификаторами 1 и 7 инструкций в идентификаторах инструкций 704(0) и 704 (2) также преобразуются в VFB-индекс "7" в соответствующих VFB-индексах 706(0), 706(2). Таким образом, предоставление VFB-схемы 708 обеспечивает возможность нескольких преобразования SAR-записей, которые в этом примере представляют собой SAR-записи 702(1)-702(2), в идентичный VFB-индекс, который может преобразовываться в запись 320(0)-320(B) буфера в спекулятивной буферной памяти 318, чтобы предоставлять другой уровень косвенности преобразования.[0052] The cache controller 300 in the non-speculative cache memory 114 is also configured to search the main data array 308 and the speculative buffer memory 318 to search for data corresponding to the data request target address 118 for instruction IDs 4 and 8. In this example, both such lookups result in hits in speculative buffer memory 318 because these instructions are directed to a target address identical to the target address for data request 118 for instruction ID 1, and cache controller 300 populates this data into entry 320(4). buffers in speculative buffer memory 318 from response 306 to full. Thus, SAR records 702(0) and 702(2) with instruction IDs 1 and 7 in instruction IDs 704(0) and 704(2) are also converted to VFB index "7" in corresponding VFB indexes 706(0 ), 706(2). Thus, providing a VFB schema 708 allows multiple mappings of SAR records, which in this example are SAR records 702(1)-702(2), into an identical VFB index that can be mapped to record 320(0) -320(B) buffers in speculative buffer memory 318 to provide another level of conversion indirection.

[0053] Также следует отметить, что, в качестве варианта, когда текущая SAR-запись 702(0)-702(S) в SAR-схеме 700 выделяется в ответ на новый запрос 118 данных, если имеется устаревшая SAR-запись 702(0)-702(S), указывающая на идентичную VFB-запись 710 в VFB-схеме 708, текущая SAR-запись 702(0)-702(S) может сворачиваться в устаревшую SAR-запись 702(0)-702(S). Текущая SAR-запись 702(0)-702(S) может заменять устаревшую SAR-запись 702(0)-702(S) или игнорироваться, так что новая SAR-запись 702(0)-702(S) не выделяется. Например, в SAR-схеме 700 на фиг. 7B, если SAR-записи 702(0) и 702(1) связаны с идентификатором 1 инструкции, обе SAR-записи 702(0), 702(1) могут предоставляться в качестве одной SAR-записи 702, поскольку обе из них указывают на идентичную VFB-запись 710(7). Как показано на фиг. 7B, неспекулятивная кэш-память 114 в этом примере принимает индикатор 328 фиксации для идентификатора 1 инструкции, чтобы указывать то, что идентификатор 1 инструкции фиксируется в процессоре 102, и в силу этого данные, ассоциированные с запросом 118 данных для идентификатора 1 инструкции в записи 320(4) буфера в спекулятивной буферной памяти 318, теперь являются неспекулятивными. В этом отношении, контроллер 300 кэша изменяет NS-индикатор 330(4) для записи 320(4) буфера в "1", чтобы указывать то, что эта запись является неспекулятивной. Кроме того, как показано на фиг. 7C, контроллер 300 кэша также изменяет индикатор 332(4) нахождения в кэше в записи 320(4) буфера в "1", чтобы указывать то, что данные, ассоциированные с запросом 118 данных для идентификатора 1 инструкции, содержатся в основном массиве 308 данных, в ответ на прием данных из высокоуровневой памяти в ответе 302 с данными. Контроллер 300 кэша может записывать данные, ассоциированные с запросом 118 данных для идентификатора 1 инструкции, зарегистрированного в записи 320(4) буфера в основном массиве 308 данных, на основе NS-индикатора 330(4), указывающего неспекулятивное состояние, как показано на фиг. 7C, когда запись 320(4) буфера повторно испрашивается. Как показано на фиг. 7D идентификаторы 4 и 8 инструкций в SAR-записях 702(0), 702(1) преобразованных в VFB-запись 710(7), могут использовать индикатор 714(7) нахождения в кэше и MDA-индекс 716(7), чтобы знать то, что местоположение записи 310(0)-310(M) кэша обновляется, когда идентификаторы 4 и 8 инструкций становятся неспекулятивными. Таким образом, если запись 320(4) буфера подвергается отмене выделения посредством контроллера 300 кэша до того, как идентификаторы 4 и 8 инструкций становятся неспекулятивными, VFB-схема 708 запоминает информацию, необходимую для состояний кэша для данных запросов 118 данных, ассоциированных с идентификаторами 4 и 8 инструкций, которые должны обновляться, в основном массиве 308 данных с использованием индикатора 714(7) нахождения в кэше и MDA-индекса 716(7).[0053] It should also be noted that, as an option, when the current SAR record 702(0)-702(S) in the SAR circuit 700 is allocated in response to a new data request 118, if there is a stale SAR record 702(0 )-702(S) pointing to an identical VFB record 710 in VFB schema 708, the current SAR record 702(0)-702(S) may be collapsed into a legacy SAR record 702(0)-702(S). The current SAR record 702(0)-702(S) may replace the legacy SAR record 702(0)-702(S) or be ignored so that a new SAR record 702(0)-702(S) is not allocated. For example, in SAR circuit 700 in FIG. 7B, if SAR records 702(0) and 702(1) are associated with instruction ID 1, both SAR records 702(0), 702(1) may be provided as a single SAR record 702 since they both point to identical VFB record 710(7). As shown in FIG. 7B, the non-speculative cache 114 in this example receives a commit indicator 328 for instruction ID 1 to indicate that instruction ID 1 is committed to processor 102, and thereby data associated with the data request 118 for instruction ID 1 in entry 320 (4) the buffers in the speculative buffer memory 318 are now non-speculative. In this regard, cache controller 300 modifies NS indicator 330(4) for buffer entry 320(4) to "1" to indicate that the entry is non-speculative. Moreover, as shown in FIG. 7C, the cache controller 300 also changes the cache presence indicator 332(4) in the buffer entry 320(4) to "1" to indicate that the data associated with the data request 118 for instruction ID 1 is contained in the main data array 308 , in response to receiving data from the high-level memory in data response 302. Cache controller 300 may record data associated with data request 118 for instruction ID 1 registered in buffer entry 320(4) in main data array 308 based on NS indicator 330(4) indicating non-speculative state, as shown in FIG. 7C when buffer entry 320(4) is re-requested. As shown in FIG. 7D instruction identifiers 4 and 8 in SAR records 702(0), 702(1) mapped to VFB record 710(7), may use cache presence indicator 714(7) and MDA index 716(7) to know that the cache entry location 310(0)-310(M) is updated when instruction IDs 4 and 8 become non-speculative. Thus, if buffer entry 320(4) is de-allocated by cache controller 300 before instruction IDs 4 and 8 become non-speculative, VFB 708 stores information necessary for cache states for data request data 118 associated with IDs 4 and 8 instructions that must be updated in the main data array 308 using the cache presence indicator 714(7) and the MDA index 716(7).

[0054] Следует отметить, что для любого из описанных вышеприведенных примеров, NS-индикаторы 330(0)-330(B) в спекулятивной буферной памяти 318 в неспекулятивной кэш-памяти 114 дополнительно могут использоваться посредством контроллера 300 кэша для того, чтобы затрагивать порядок, в котором записи 320(0)-320(B) буфера вытесняются из спекулятивной буферной памяти 318. Напомним, что после вытеснения записи 320(0)-320(B) буфера, если NS-индикатор 330(0)-330(B) задается в качестве неспекулятивного состояния для записи 320(0)-320(B) буфера, соответствующие данные для записи 320(0)-320(B) буфера записываются в основную память 108, в противном случае, запись 320(0)-320(B) буфера отбрасывается. При условии базовой политики замены заполняющего буфера (например, FIFO, LRU, PLRU, MRU, случайный, SRRIP, DRRIP и т.д.), может использоваться необязательная усовершенствованная политика замены. Если NS-индикаторы 330(0)-330(B) для всех записей 320(0)-320(B) буфера помечаются в неспекулятивном состоянии, базовая политика замены может использоваться посредством контроллера 300 кэша для того, чтобы заменять записи 320(0)-320(B) буфера. Если NS-индикатор 330(0)-330(B) для одной записи 320(0)-320(B) буфера помечается в неспекулятивном состоянии, такая запись 320(0)-320(B) буфера может заменяться сначала. Если NS-индикатор 330(0)-330(B) более чем для одной записи 320(0)-320(B) буфера помечается в неспекулятивном состоянии, базовая политика замены может применяться ко всем записям 320(0)-320(B) буфера, имеющим NS-индикатор 330(0)-330(B), помеченный в неспекулятивном состоянии. Если все записи 320(0)-320(B) буфера имеют NS-индикатор 330(0)-330(B), помеченный в спекулятивном состоянии, любая из следующих политик замены может использоваться в качестве примеров: базовая политика замены, выбор записи 320(0)-320(B) буфера на основе принципа "наименее давно используемый" (MRU), выбор записи 320(0)-320(B) буфера на основе принципа "наиболее давно используемый" (LRU), выбор последней вставленной записи 320(0)-320(B) буфера, выбор первой вставленной записи 320(0)-320(B) буфера и выбор случайной записи 320(0)-320(B) буфера. Комбинация вышеуказанных политик замены может выбираться на дополнительной метаинформации относительно запросчиков строк кэша (например, MRU, если имеется вероятность сброса, либо LRU, если предусмотрен поток, и т.д.).[0054] It should be noted that for any of the above-described examples, the NS indicators 330(0)-330(B) in the speculative buffer memory 318 in the non-speculative cache memory 114 may further be used by the cache controller 300 to affect the order , in which buffer entries 320(0)-320(B) are evicted from speculative buffer memory 318. Recall that after evicting buffer entries 320(0)-320(B), if the NS indicator 330(0)-330(B ) is set as a non-speculative state for buffer write 320(0)-320(B), the corresponding data for buffer write 320(0)-320(B) is written to the main memory 108, otherwise, write 320(0)-320 (B) The buffer is discarded. Given a basic padding buffer replacement policy (eg, FIFO, LRU, PLRU, MRU, random, SRRIP, DRRIP, etc.), an optional advanced replacement policy may be used. If NS indicators 330(0)-330(B) for all buffer entries 320(0)-320(B) are marked in a non-speculative state, a basic replacement policy may be used by cache controller 300 to replace entries 320(0) -320(B) buffer. If the NS indicator 330(0)-330(B) for one buffer entry 320(0)-320(B) is marked in a non-speculative state, such buffer entry 320(0)-320(B) may be replaced first. If the NS indicator 330(0)-330(B) for more than one buffer entry 320(0)-320(B) is marked in a non-speculative state, the underlying replacement policy can be applied to all entries 320(0)-320(B) buffer having the NS indicator 330(0)-330(B) marked in the non-speculative state. If all buffer entries 320(0)-320(B) have NS indicator 330(0)-330(B) marked in the speculative state, any of the following replacement policies can be used as examples: basic replacement policy, entry selection 320 (0)-320(B) least recently used (MRU) buffer, select entry 320(0)-320(B) most recently used (LRU) buffer, select last inserted entry 320 (0)-320(B) buffer, selecting the first inserted 320(0)-320(B) buffer entry, and selecting a random 320(0)-320(B) buffer entry. A combination of the above replacement policies may be selected based on additional meta-information regarding the cache line requesters (eg, MRU if there is a possibility of a flush, or LRU if a flow is provided, etc.).

[0055] Дополнительно, в случаях, если неспекулятивная кэш-память 114 может принимать запросы 118 данных из нескольких CPU-ядер 110(1)-110(N), SAR-схема 336, 700 может реализовываться с возможностью поддерживать регистрационную запись всех доступов к данным для запросов 118 данных, а также идентификационных данных CPU-ядра 110(0)-110(N) в качестве запросчика. VFB-схема 708 может совместно использоваться несколькими CPU-ядрами 110(1)-110(N). В ответ на запросы 118 данных, неспекулятивная кэш-память 114 может быть выполнена с возможностью отправлять идентификационные данные фиксации обратно, чтобы обеспечивать возможность отправки целевых сообщений фиксации посредством CPU-ядра 110(1)-110(N) в неспекулятивные кэш-памяти 114(1)-114(X). Это позволяет снижать трафик в межсоединительной шине 117 на фиг. 1 между CPU-ядром 110(0)-110(N) и кэш-памятями 114(1)-114(X). Кроме того, вместо отправки одного сообщения фиксации в расчете на неспекулятивный запрос 118 данных, процессор 102 также может отправлять сообщение пакета информации фиксации инструкций, чтобы снижать трафик межсоединительной шины 117. Пакет информации фиксации инструкций может быть явным, при этом каждый ID инструкции для запроса 118 данных указывается в сообщении пакета, либо неявным, при этом ID инструкции подразумевает то, что все идентификаторы инструкций, ниже неспекулятивного ID инструкции, также являются неспекулятивными.[0055] Additionally, in cases where the non-speculative cache 114 can receive data requests 118 from multiple CPU cores 110(1)-110(N), the SAR circuit 336, 700 may be implemented to maintain a record of all accesses to data for data requests 118, as well as identification data of the CPU core 110(0)-110(N) as a requester. VFB circuit 708 may be shared among multiple CPU cores 110(1)-110(N). In response to data requests 118, the non-speculative cache 114 may be configured to send commit identification data back to allow target commit messages to be sent by the CPU core 110(1)-110(N) to the non-speculative caches 114( 1)-114(X). This allows traffic to be reduced on interconnect bus 117 in FIG. 1 between the CPU core 110(0)-110(N) and cache memories 114(1)-114(X). In addition, instead of sending one commit message per non-speculative data request 118, processor 102 may also send an instruction commit information packet message to reduce traffic on interconnect bus 117. The instruction commit information packet may be explicit, with each instruction ID for request 118 data is specified in the packet message, or implicitly, with the instruction ID implying that all instruction identifiers below the non-speculative instruction ID are also non-speculative.

[0056] Фиг. 8 является блок-схемой примерной процессорной системы 800, которая включает в себя процессор 802 (например, микропроцессор), который включает в себя схему 804 обработки инструкций. Процессорная система 800 может представлять собой процессорную систему 100 на фиг. 1 в качестве примера. Схема 804 обработки инструкций может представлять собой схему 200 обработки инструкций на фиг. 2 в качестве примера. Процессорная система 800 может представлять собой схему или схемы, включенные в электронную плату, к примеру, печатную плату (PCB), сервер, персональный компьютер, настольный компьютер, переносной компьютер, персональное цифровое устройство (PDA), планшет, мобильное устройство либо любое другое устройство, и может представлять, например, сервер или пользовательский компьютер. В этом примере, процессорная система 800 включает в себя процессор 802. Процессор 802 представляет одну или более схем обработки общего назначения, таких как микропроцессор, центральный процессор и т.п. Более конкретно, процессор 802 может представлять собой микропроцессор с EDGE-набором инструкций или другой процессор, реализующий набор инструкций, который поддерживает явное потребляющее именование для обмена данными сформированных значений, получающихся в результате выполнения инструкций производителя. Процессор 802 выполнен с возможностью выполнять логику обработки в инструкциях для выполнения операций и этапов, поясненных в данном документе. В этом примере, процессор 802 включает в себя кэш 808 инструкций для временного хранения в памяти с быстрым доступом инструкций, доступных посредством схемы 804 обработки инструкций. Полученные выборкой или полученные упреждающей выборкой инструкции из памяти, к примеру, из основной памяти 810 по системной шине 812, сохраняются в кэше 808 инструкций. Схема 804 обработки инструкций выполнена с возможностью обрабатывать инструкции, полученные выборкой в кэш 808 инструкций, и обрабатывать инструкции для выполнения.[0056] FIG. 8 is a block diagram of an exemplary processor system 800 that includes a processor 802 (eg, a microprocessor) that includes instruction processing circuitry 804. The processor system 800 may be the processor system 100 of FIG. 1 as an example. The instruction processing circuit 804 may be the instruction processing circuit 200 in FIG. 2 as an example. Processor system 800 may be circuitry or circuits included on an electronic circuit board, such as a printed circuit board (PCB), server, personal computer, desktop computer, laptop computer, personal digital assistant (PDA), tablet, mobile device, or any other device. , and can represent, for example, a server or a user's computer. In this example, processor system 800 includes a processor 802. Processor 802 represents one or more general purpose processing circuitry, such as a microprocessor, a central processing unit, and the like. More specifically, processor 802 may be an EDGE instruction set microprocessor or other processor implementing an instruction set that supports explicit consumer naming for data exchange of generated values resulting from execution of manufacturer instructions. The processor 802 is configured to execute processing logic in instructions to perform the operations and steps explained herein. In this example, processor 802 includes an instruction cache 808 for temporary storage in fast access memory of instructions accessible through instruction processing circuit 804. Instructions fetched or prefetched from memory, such as from main memory 810 on system bus 812, are stored in instruction cache 808. The instruction processing circuit 804 is configured to process instructions fetched into the instruction cache 808 and process the instructions for execution.

[0057] Процессор 802 может включать в себя локальную кэш-память 814, чтобы сохранять кэшированные данные в основной памяти 810. Кэш-память 816 за рамками процессора 802 между локальной кэш-памятью 814 и основной памятью 810 также может предоставляться, чтобы предоставлять систему 818 кэш-памяти. Кэш-памяти 814, 816 в системе 818 кэш-памяти могут включать в себя любую из кэш-памятей 114(1)-114(X) на фиг. 1, 3, 5A-5B, 6A-6B и 7A-7D и выполнены с возможностью отсрочивать обновление состояния кэша в ответ на прием запроса данных из процессора 802 до тех пор, пока запрос данных не станет неспекулятивным.[0057] Processor 802 may include a local cache 814 to store cached data in main memory 810. A cache 816 outside of processor 802 between local cache 814 and main memory 810 may also be provided to provide system 818 cache memory. The caches 814, 816 in the cache system 818 may include any of the caches 114(1)-114(X) in FIG. 1, 3, 5A-5B, 6A-6B, and 7A-7D and are configured to delay updating the cache state in response to receiving a data request from processor 802 until the data request becomes non-speculative.

[0058] Процессор 802 и основная память 810 соединяются с системной шиной 812 и могут взаимно соединять периферийные устройства, включенные в процессорную систему 800. Хорошо известно, что процессор 800 обменивается данными с этими другими устройствами посредством обмена адресной информацией, управляющей информацией и информацией в виде данных по системной шине 812. Например, процессор 802 может передавать запросы на проведение транзакций через шину в контроллер 819 памяти в основной памяти 810 в качестве примера ведомого устройства. Хотя не проиллюстрировано на фиг. 8, могут предоставляться несколько системных шин 812, при этом каждая системная шина представляет собой отдельную структуру. В этом примере, контроллер 819 памяти выполнен с возможностью предоставлять запросы на доступ к памяти в массив 820 памяти в основной памяти 810. Массив 820 памяти состоит из массива битовых ячеек хранения для сохранения данных. Основная память 810 может представлять собой постоянную память (ROM), флэш-память, динамическую оперативную память (DRAM), к примеру, синхронное DRAM (SDRAM) и т.д., и статическую память (например, флэш-память, статическую оперативную память (SRAM) и т.д.), в качестве неограничивающих примеров.[0058] Processor 802 and main memory 810 are coupled to system bus 812 and may interconnect peripheral devices included in processor system 800. It is well known that processor 800 communicates with these other devices by exchanging address information, control information, and information in the form data on system bus 812. For example, processor 802 may transmit transaction requests via the bus to memory controller 819 in main memory 810 as an example of a slave device. Although not illustrated in FIG. 8, multiple system buses 812 may be provided, with each system bus being a separate structure. In this example, memory controller 819 is configured to provide memory access requests to memory array 820 in main memory 810. Memory array 820 consists of an array of bit storage cells for storing data. The main memory 810 may be read-only memory (ROM), flash memory, dynamic random access memory (DRAM), e.g., synchronous DRAM (SDRAM), etc., and static memory (e.g., flash memory, static random access memory (SRAM), etc.), as non-limiting examples.

[0059] Другие устройства могут соединяться с системной шиной 812. Как проиллюстрировано на фиг. 8, эти устройства могут включать в себя основную память 810, одно или более устройств 822 ввода, одно или более устройств 824 вывода, модем 826 и один или более контроллеров 828 отображения, в качестве примеров. Устройства 822 ввода могут включать в себя любой тип устройства ввода, в том числе, но не только, клавиатуры, коммутаторы, голосовые процессоры и т.д. Устройства 824 вывода могут включать в себя любой тип устройства вывода, в том числе, но не только, аудио-, видео-, другие визуальные индикаторы и т.д. Модем 826 может представлять собой любое устройство, выполненное с возможностью обеспечивать обмен данными в/из сети 830. Сеть 830 может представлять собой любой тип сети, в том числе, но не только, проводную или беспроводную сеть, частную или открытую сеть, локальную вычислительную сеть (LAN), беспроводную локальную вычислительную сеть (WLAN), глобальную вычислительную сеть (WAN), Bluetooth™-сеть и Интернет. Модем 826 может быть выполнен с возможностью поддерживать любой требуемый тип протокола связи. Процессор 802 также может быть выполнен с возможностью осуществлять доступ к контроллеру(ам) 828 отображения по системной шине 812 с тем, чтобы управлять информацией, отправленной в один или более дисплеев 832. Дисплей(и) 832 может включать в себя любой тип дисплея, в том числе, но не только, электронно-лучевую трубку (CRT), жидкокристаллический дисплей (ЖК-дисплей), плазменный дисплей и т.д.[0059] Other devices may connect to system bus 812. As illustrated in FIG. 8, these devices may include main memory 810, one or more input devices 822, one or more output devices 824, a modem 826, and one or more display controllers 828, as examples. Input devices 822 may include any type of input device, including, but not limited to, keyboards, switches, voice processors, etc. Output devices 824 may include any type of output device, including, but not limited to, audio, video, other visual indicators, etc. Modem 826 may be any device configured to communicate to/from network 830. Network 830 may be any type of network, including, but not limited to, a wired or wireless network, a private or public network, or a local area network. (LAN), wireless local area network (WLAN), wide area network (WAN), Bluetooth™ network and the Internet. Modem 826 may be configured to support any desired type of communication protocol. Processor 802 may also be configured to access display controller(s) 828 over system bus 812 to control information sent to one or more displays 832. Display(s) 832 may include any type of display, including including but not limited to cathode ray tube (CRT), liquid crystal display (LCD), plasma display, etc.

[0060] Процессорная система 800 на фиг. 8 может включать в себя набор инструкций 834, которые должны выполняться посредством процессора 802 для любого требуемого варианта применения согласно инструкциям. Инструкции 834 могут сохраняться в основной памяти 810, в процессоре 802 и/или в кэше 808 инструкций в качестве примеров энергонезависимого машиночитаемого носителя 836. Инструкции 834 также могут постоянно размещаться, полностью или, по меньшей мере, частично, в основной памяти 810 и/или в процессоре 802 во время их выполнения. Инструкции 834 дополнительно могут передаваться или приниматься по сети 830 через модем 826 таким образом, что сеть 830 включает в себя машиночитаемый носитель 836.[0060] Processor system 800 in FIG. 8 may include a set of instructions 834 to be executed by processor 802 for any desired application as instructed. Instructions 834 may be stored in main memory 810, processor 802, and/or instruction cache 808 as examples of non-volatile computer-readable media 836. Instructions 834 may also reside, in whole or at least in part, in main memory 810 and/or in the 802 processor while they are executed. Instructions 834 may further be transmitted or received over network 830 via modem 826 such that network 830 includes computer-readable media 836.

[0061] Хотя машиночитаемый носитель 836 показывается в примерном варианте осуществления в качестве одного носителя, термин "машиночитаемый носитель" должен рассматривается как включающий в себя один носитель или несколько носителей (например, централизованную или распределенную базу данных и/или ассоциированные кэши и серверы), которые сохраняют одну или более наборов из инструкций. Термин "машиночитаемый носитель" должен также рассматривается как включающий в себя любой носитель, который допускает сохранение, кодирование или перенос набора инструкций для выполнения посредством обрабатывающего устройства и который инструктирует обрабатывающему устройству выполнять любые одну или более технологий вариантов осуществления, раскрытых в данном документе. Термин "машиночитаемый носитель", соответственно, должен рассматриваться как включающий в себя, но не только, устройства полупроводниковой памяти, оптический носитель и магнитный носитель.[0061] Although computer-readable media 836 is shown in the exemplary embodiment as a single media, the term “computer-readable media” should be considered to include one media or multiple media (e.g., a centralized or distributed database and/or associated caches and servers), which store one or more sets of instructions. The term “machine-readable medium” should also be considered to include any medium that is capable of storing, encoding, or carrying a set of instructions for execution by a processing device and that instructs the processing device to perform any one or more of the technologies of the embodiments disclosed herein. The term "machine readable medium" should accordingly be considered to include, but not limited to, semiconductor memory devices, optical media, and magnetic media.

[0062] Варианты осуществления, раскрытые в данном документе, включают в себя различные этапы. Этапы вариантов осуществления, раскрытых в данном документе, могут формироваться посредством аппаратных компонентов или могут осуществляться в машиноисполняемых инструкциях, которые могут использоваться для того, чтобы инструктировать процессору общего назначения или специального назначения, программируемому с помощью инструкций, выполнять этапы. Альтернативно, этапы могут выполняться посредством комбинации аппаратных средств и программного обеспечения.[0062] Embodiments disclosed herein include various steps. The steps of the embodiments disclosed herein may be formed by hardware components or may be embodied in computer-executable instructions that can be used to instruct a general purpose or special purpose instruction programmable processor to execute the steps. Alternatively, the steps may be performed by a combination of hardware and software.

[0063] Варианты осуществления, раскрытые в данном документе, могут предоставляться в качестве компьютерного программного продукта или программного обеспечения, которое может включать в себя машиночитаемый носитель (или считываемый компьютером носитель), хранящий инструкции, которые могут использоваться для того, чтобы программировать компьютерную систему (или другие электронные устройства) с возможностью выполнять процесс согласно вариантам осуществления, раскрытым в данном документе. Машиночитаемый носитель включает в себя любой механизм для сохранения или передачи информации в форме, считываемой посредством машины (например, компьютера). Например, машиночитаемый носитель включает в себя: машиночитаемый носитель данных (например, ROM, оперативное память (RAM), носитель данных на магнитных дисках, оптический носитель данных, устройства флэш-памяти и т.д.); и т.п.[0063] Embodiments disclosed herein may be provided as a computer program product or software, which may include a computer-readable medium (or computer-readable medium) storing instructions that can be used to program a computer system ( or other electronic devices) capable of performing the process according to the embodiments disclosed herein. Machine-readable media includes any mechanism for storing or transmitting information in a form readable by a machine (eg, a computer). For example, a computer-readable medium includes: a computer-readable storage medium (eg, ROM, random access memory (RAM), magnetic disk storage medium, optical storage medium, flash memory devices, etc.); and so on.

[0064] Если прямо не указано иное, и как очевидно из предыдущего пояснения, следует принимать во внимание, что по всему описанию, пояснения с использованием таких терминов, как "обработка", "вычисление", "определение", "отображение", и т.п., означают действие и процессы компьютерной системы или аналогичного электронного вычислительного устройства, которое манипулирует и преобразует данные и блоки памяти, представленные в качестве физических (электронных) величин в регистрах компьютерной системы, в другие данные, аналогично представленные в качестве физических величин в компьютерных системных блоках памяти или регистрах либо в других таких устройствах хранения, передачи или отображения информации.[0064] Unless otherwise expressly stated, and as is apparent from the preceding explanation, it should be appreciated that throughout the specification, explanations using terms such as “processing,” “calculation,” “determining,” “displaying,” and etc., mean the actions and processes of a computer system or similar electronic computing device that manipulates and converts data and memory blocks represented as physical (electronic) quantities in the registers of the computer system into other data similarly represented as physical quantities in computer system memory units or registers or other such devices for storing, transmitting or displaying information.

[0065] Алгоритмы и отображения, представленные в данном документе, по сути, не связаны ни с одним конкретным компьютером или другим оборудованием. Различные системы могут использоваться с программами в соответствии с идеями в данном документе, либо может оказаться удобным конструировать более специализированное оборудование с возможностью выполнять требуемые этапы способа. Требуемая структура для множества этих систем должна быть очевидной из вышеприведенного описания. Помимо этого, варианты осуществления, описанные в данном документе, не описываются со ссылкой на конкретные языки программирования. Следует принимать во внимание, что множество языков программирования могут использоваться для того, чтобы реализовывать идеи вариантов осуществления, как описано в данном документе.[0065] The algorithms and displays presented in this document are not inherently associated with any specific computer or other equipment. Various systems may be used with programs in accordance with the teachings herein, or it may be convenient to construct more specialized equipment capable of performing the required method steps. The required structure for a variety of these systems should be obvious from the above description. In addition, the embodiments described herein are not described with reference to specific programming languages. It should be appreciated that a variety of programming languages may be used to implement the ideas of the embodiments as described herein.

[0066] Специалисты в данной области техники дополнительно должны принимать во внимание, что различные иллюстративные логические блоки, модули, схемы и алгоритмы, описанные в связи с вариантами осуществления, раскрытыми в данном документе, могут реализовываться как электронные аппаратные средства, инструкции, сохраненные в памяти или в другом машиночитаемом носителе и выполняемые посредством процессора или другого обрабатывающего устройства либо комбинаций означенного. Компоненты распределенных антенных систем, описанных в данном документе, могут использоваться в любой схеме, аппаратном компоненте, интегральной схеме (IC) или IC-микросхеме, в качестве примеров. Память, раскрытое в данном документе, может представлять собой любой тип и емкость памяти и может быть выполнено с возможностью сохранять любой тип требуемой информации. Чтобы ясно иллюстрировать эту взаимозаменяемость, различные иллюстративные компоненты, блоки, модули, схемы и этапы описываются выше, в общем, с точки зрения их функциональности. То, как реализуется такая функциональность, зависит от конкретного варианта применения, проектных решений и/или проектных ограничений, налагаемых на систему в целом. Специалисты в данной области техники могут реализовывать описанную функциональность различными способами для каждого конкретного варианта применения, но такие решения по реализации не должны интерпретироваться как отступление от объема настоящих вариантов осуществления.[0066] Those skilled in the art will further appreciate that the various illustrative logical blocks, modules, circuits, and algorithms described in connection with the embodiments disclosed herein may be implemented as electronic hardware, instructions stored in memory or in other machine-readable media and executed by a processor or other processing device or combinations thereof. The components of the distributed antenna systems described herein may be used in any circuit, hardware component, integrated circuit (IC), or IC chip, as examples. The memory disclosed herein may be any type and capacity of memory and may be configured to store any type of desired information. To clearly illustrate this interchangeability, various illustrative components, blocks, modules, circuits, and steps are described above generally in terms of their functionality. How such functionality is implemented depends on the specific application, design decisions, and/or design constraints imposed on the system as a whole. Those skilled in the art may implement the described functionality in different ways for each particular application, but such implementation decisions should not be interpreted as departing from the scope of the present embodiments.

[0067] Различные иллюстративные логические блоки, модули и схемы, описанные в связи с раскрытыми в данном документе вариантами осуществления, могут реализовываться или выполняться с помощью процессора, процессора цифровых сигналов (DSP), специализированной интегральной схемы (ASIC), программируемой пользователем вентильной матрицы (FPGA) или другого программируемого логического устройства, дискретного логического элемента или транзисторной логики, дискретных аппаратных компонентов либо любой комбинации вышеозначенного, предназначенной для того, чтобы выполнять функции, описанные в данном документе. Кроме того, контроллер может представлять собой процессор. Процессор может представлять собой микропроцессор, но в альтернативе, процессор может представлять собой любой традиционный процессор, контроллер, микроконтроллер или машину состояния. Процессор также может реализовываться как комбинация вычислительных устройств (к примеру, как комбинация DSP и микропроцессора, множество микропроцессоров, один или более микропроцессоров вместе с ядром DSP либо любая другая такая конфигурация).[0067] Various illustrative logical blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or executed by a processor, digital signal processor (DSP), application-specific integrated circuit (ASIC), field programmable gate array ( FPGA) or other programmable logic device, discrete logic element or transistor logic, discrete hardware components, or any combination of the foregoing designed to perform the functions described in this document. Additionally, the controller may be a processor. The processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices (eg, a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors plus a DSP core, or any other such configuration).

[0068] Варианты осуществления, раскрытые в данном документе, могут осуществляться в аппаратных средствах и в инструкциях, которые сохраняются в аппаратных средствах и могут постоянно размещаться, например, в RAM, флэш-памяти, ROM, электрически программируемом ROM (EPROM), электрически стираемом программируемом ROM (EEPROM), регистрах, на жестком диске, съемном диске, CD-ROM либо на любой другой форе машиночитаемого носителя, известной в данной области техники. Примерный носитель данных соединяется с процессором таким образом, что процессор может считывать информацию и записывать информацию с/на носитель данных. В альтернативе, носитель данных может составлять неотъемлемую часть процессора. Процессор и носитель данных могут постоянно размещаться в ASIC. ASIC может постоянно размещаться в удаленной станции. В альтернативе, процессор и носитель данных могут постоянно размещаться в качестве дискретных компонентов в удаленной станции, в базовой станции или на сервере.[0068] Embodiments disclosed herein may be implemented in hardware and in instructions that are stored in hardware and may be permanently located in, for example, RAM, flash memory, ROM, electrically programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), registers, a hard disk, a removable disk, a CD-ROM, or any other form of computer-readable medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from and write information from/to the storage medium. Alternatively, the storage medium may form an integral part of the processor. The processor and storage media can be permanently housed in the ASIC. The ASIC may be permanently located at the remote station. Alternatively, the processor and storage medium may be resident as discrete components in a remote station, base station, or server.

[0069] Также следует отметить, что функциональные этапы, описанные в любом из примерных вариантов осуществления в данном документе, описываются, чтобы предоставлять примеры и пояснение. Описанные операции могут выполняться во множестве различных последовательностей, отличных от проиллюстрированных последовательностей. Кроме того, операции, описанные на одном функциональном этапе, могут фактически выполняться в определенном числе различных этапов. Дополнительно, один или более функциональных этапов, поясненных в примерных вариантах осуществления, могут комбинироваться. Специалисты в данной области техники также должны понимать, что информация и сигналы могут представляться с помощью любой из множества технологий. Например, данные, инструкции, команды, информация, сигналы, биты, символы и микросхемы, которые могут упоминаться во всем вышеприведенном описании, могут быть представляться посредством напряжений, токов, электромагнитных волн, магнитных полей или частиц, оптических полей или частиц либо любой комбинации означенного.[0069] It should also be noted that the functional steps described in any of the exemplary embodiments herein are described to provide examples and explanation. The described operations may be performed in a variety of different sequences than those illustrated. In addition, operations described in one functional step may actually be performed in a number of different steps. Additionally, one or more of the functional steps explained in the exemplary embodiments may be combined. Those skilled in the art will also appreciate that information and signals may be represented using any of a variety of technologies. For example, the data, instructions, commands, information, signals, bits, symbols and chips that may be referred to throughout the foregoing description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof. .

[0070] Если в явной форме не указано иное, никоим образом не подразумевается, что любой способ, изложенный в данном документе, должен истолковываться как обязательно требующий то, что его этапы должны выполняться в конкретном порядке. Соответственно, если пункт формулы изобретения на способ не излагает фактический порядок, которого следует придерживаться посредством его этапов, либо если иным образом конкретно не указывается в пунктах формулы изобретения или в описаниях то, что этапы должны быть ограничены конкретным порядком, никоим образом не подразумевается, что любой конкретный порядок логически выводится.[0070] Unless expressly stated otherwise, it is not in any way intended that any method set forth herein should be construed as necessarily requiring that its steps be performed in a particular order. Accordingly, unless a method claim sets forth the actual order to be followed by its steps, or unless it is otherwise specifically stated in the claims or descriptions that the steps are to be limited to a particular order, it is not in any way intended that any particular order is logically inferred.

[0071] Специалистам в области техники должно быть очевидным, что различные модификации и изменения могут вноситься без отступления от сущности или объема изобретения. Поскольку модификации, комбинации, субкомбинации и изменения раскрытых вариантов осуществления, включающих сущность и предмет изобретения, могут быть очевидными для специалистов в данной области техники, изобретение должно истолковываться как включающее в себя все без исключения в пределах объема прилагаемой формулы изобретения и ее эквивалентов.[0071] Those skilled in the art will appreciate that various modifications and changes may be made without departing from the spirit or scope of the invention. Since modifications, combinations, subcombinations and variations of the disclosed embodiments embodying the spirit and subject matter of the invention may be obvious to those skilled in the art, the invention should be construed to include everything within the scope of the appended claims and their equivalents.

Claims (77)

1. Неспекулятивная кэш-память (114) в процессорной системе (100, 800), содержащая:1. Non-speculative cache memory (114) in the processor system (100, 800), containing: - основной массив (308) данных, содержащий множество записей (310(0)-310(M)) кэша, каждая из которых выполнена с возможностью сохранять данные (314(0)-314(B)) кэша, ассоциированные с адресом памяти в системе (104) памяти процессорной системы (100, 800);- a main data array (308) containing a plurality of cache entries (310(0)-310(M)), each of which is configured to store cache data (314(0)-314(B)) associated with a memory address in memory system (104) of the processor system (100, 800); - спекулятивную буферную память (318), содержащую множество записей (320(0)-320(B)) буфера, каждая из которых содержит запись данных, выполненную с возможностью сохранять кэшированные данные (324(0)-324(B)), ассоциированные с адресом памяти в системе (104) памяти, при этом спекулятивная буферная память выполнена с возможностью удерживания данных, извлекаемых из высокоуровневой памяти после неудачного обращения в кэш; и- a speculative buffer memory (318) containing a plurality of buffer entries (320(0)-320(B)), each of which contains a data entry configured to store cached data (324(0)-324(B)) associated with a memory address in the memory system (104), wherein the speculative buffer memory is configured to hold data retrieved from the high-level memory after a cache failure; And - контроллер (300) кэша, выполненный с возможностью:- cache controller (300), configured to: - принимать от запросчика запрос (118) данных, содержащий целевой адрес и идентификатор (ID) инструкции, идентифицирующий инструкцию загрузки, содержащую упомянутый целевой адрес, обрабатываемый посредством процессора (102, 802) в процессорной системе (100, 800);- receive from the requester a data request (118) containing a target address and an instruction identifier (ID) identifying a load instruction containing said target address processed by the processor (102, 802) in the processor system (100, 800); - выполнять поиск записи (310(0)-310(M)) кэша в основном массиве (308) данных, ассоциированной с целевым адресом запроса (118) данных;- search for a cache entry (310(0)-310(M)) in the main data array (308) associated with the target address of the data request (118); - выполнять поиск в спекулятивной буферной памяти (318) на предмет записи (320(0)-320(B)) буфера, ассоциированной с целевым адресом запроса (118) данных;- search the speculative buffer memory (318) for a buffer entry (320(0)-320(B)) associated with the target address of the data request (118); - отправлять запросчику ответ (302) с данными на запрос (118) данных на основе данных кэша в основном массиве (308) данных, ассоциированных с целевым адресом, и данных кэша в записи (320(0)-320(B)) буфера в спекулятивной буферной памяти (318), ассоциированной с целевым адресом;- send to the requester a response (302) with data to a request (118) for data based on cache data in the main array (308) of data associated with the target address, and cache data in the buffer entry (320(0)-320(B)) in a speculative buffer memory (318) associated with the target address; - принимать индикатор (328) фиксации, содержащий ID инструкции собственно инструкции (202), которая является неспекулятивной; и- receive a commit indicator (328) containing the instruction ID of the instruction itself (202), which is non-speculative; And - в ответ на то, что принятый ID инструкции в индикаторе (328) фиксации указывает то, что инструкция загрузки запроса (118) данных является неспекулятивной:- in response to the received instruction ID in the commit indicator (328) indicating that the data request (118) load instruction is non-speculative: - обновлять состояние кэша для записи (310(0)-310(M)) кэша в основном массиве (308) данных, ассоциированной с целевым адресом запроса (118) данных, при этом обновления состояния кэша основаны на политике, выбираемой по дополнительной метаинформации о запросчике строки кэша;- update the cache state for a cache entry (310(0)-310(M)) in the main data array (308) associated with the target data request address (118), wherein cache state updates are based on a policy selected from additional metainformation about cache line requester; дополнительно содержащая схему (336) регистрации спекулятивных доступов “SAR”, выполненную с возможностью сохранять SAR-запись, содержащую запись (340) ID инструкции и запись (342) основного массива данных;additionally comprising a “SAR” speculative access registration circuit (336), configured to store a SAR record containing an instruction ID record (340) and a main data record (342); - при этом контроллер кэша дополнительно выполнен с возможностью:- wherein the cache controller is additionally configured to: - в ответ на то, что запись кэша в основном массиве данных ассоциирована с целевым адресом запроса данных, контроллер кэша дополнительно выполнен с возможностью:- in response to the fact that the cache entry in the main data array is associated with the target address of the data request, the cache controller is further configured to: - выделять упомянутую SAR-запись в SAR-схеме, причем SAR-запись содержит запись ID инструкции, содержащую ID инструкции собственно инструкции загрузки запроса данных, и запись основного массива данных, содержащую индекс записи кэша в основном массиве данных, ассоциированной с целевым адресом запроса данных; и- highlight the said SAR record in the SAR schema, wherein the SAR record contains an instruction ID record containing the instruction ID of the data request loading instruction itself, and a main data record containing the index of a cache record in the main data array associated with the target address of the data request ; And - в ответ на то, что принятый ID инструкции в индикаторе фиксации указывает то, что инструкция загрузки запроса данных является неспекулятивной:- in response to the received instruction ID in the commit indicator indicating that the data request load instruction is non-speculative: - определять то, содержится или нет принятый ID инструкции в записи ID инструкции в SAR-записи в SAR-схеме; и- determine whether or not the received instruction ID is contained in the instruction ID record in the SAR record in the SAR diagram; And - в ответ на определение того, что принятый ID инструкции содержится в SAR-записи в SAR-схеме, обновлять состояние замещения кэша собственно записи кэша в основном массиве данных, соответствующей упомянутому индексу в записи основного массива данных, ассоциированной с целевым адресом запроса данных, в SAR-записи, содержащей принятый ID инструкции.- in response to determining that the received instruction ID is contained in a SAR entry in the SAR schema, update the cache replacement state of the cache entry itself in the main data set corresponding to said index in the main data record associated with the target data request address, in SAR record containing the received instruction ID. 2. Неспекулятивная кэш-память по п. 1, в которой:2. Non-speculative cache memory according to claim 1, in which: - контроллер кэша дополнительно выполнен с возможностью определять то, ассоциирована или нет запись кэша в основном массиве данных с целевым адресом запроса данных; и- the cache controller is further configured to determine whether or not a cache entry in the main data array is associated with the target address of the data request; And - в ответ на то, что запись кэша в основном массиве данных ассоциирована с целевым адресом запроса данных, контроллер кэша выполнен с возможностью отправлять запросчику ответ с данными на запрос данных, содержащий данные кэша в записи кэша в основном массиве данных, имеющей целевой адрес, ассоциированный с целевым адресом запроса данных.- in response to the fact that a cache entry in the main data array is associated with a target address of a data request, the cache controller is configured to send to the requester a data response to the data request containing cache data in a cache entry in the main data array having a target address associated with the target address of the data request. 3. Неспекулятивная кэш-память по п. 2, в которой контроллер кэша выполнен с возможностью, в ответ на то, что принятый ID инструкции в индикаторе фиксации, указывающем то, что инструкция загрузки запроса данных является неспекулятивной, обновлять состояние кэша, содержащее состояние замещения кэша собственно записи кэша в основном массиве данных, ассоциированной с целевым адресом запроса данных.3. The non-speculative cache memory of claim 2, wherein the cache controller is configured, in response to the received instruction ID in the commit indicator indicating that the data request load instruction is non-speculative, to update a cache state containing the replacement state cache of the actual cache entry in the main data array associated with the target address of the data request. 4. Неспекулятивная кэш-память по п. 2, в которой контроллер кэша дополнительно выполнен с возможностью, в ответ на то, что запись кэша в основном массиве данных не ассоциирована с целевым адресом запроса данных:4. The non-speculative cache memory of claim 2, wherein the cache controller is further configured to, in response to the fact that a cache entry in the main data array is not associated with a data request target address: - определять то, ассоциирована или нет запись буфера в спекулятивной буферной памяти с целевым адресом запроса данных; и- determine whether or not a buffer entry in the speculative buffer memory is associated with the target address of the data request; And - в ответ на то, что запись буфера в спекулятивной буферной памяти ассоциирована с целевым адресом запроса данных, контроллер кэша выполнен с возможностью отправлять запросчику ответ с данными на запрос данных, содержащий данные кэша в записи буфера в спекулятивной буферной памяти, имеющей целевой адрес, ассоциированный с целевым адресом запроса данных.- in response to the fact that a buffer entry in the speculative buffer memory is associated with a target address of a data request, the cache controller is configured to send to the requester a data response to the data request containing cache data in the buffer entry in the speculative buffer memory having a target address associated with the target address of the data request. 5. Неспекулятивная кэш-память по п. 4, в которой контроллер кэша дополнительно выполнен с возможностью, в ответ на то, что запись буфера в спекулятивной буферной памяти не ассоциирована с целевым адресом запроса данных:5. The non-speculative cache memory of claim 4, wherein the cache controller is further configured to, in response to the fact that a buffer entry in the speculative buffer memory is not associated with a data request target address: - отправлять запрос данных в следующую высокоуровневую память в процессорной системе;- send a data request to the next high-level memory in the processor system; - принимать данные для запроса данных из следующей высокоуровневой памяти;- receive data to request data from the next high-level memory; - определять то, доступна ли запись буфера в спекулятивной буферной памяти для сохранения данных кэша; и- determine whether a buffer entry is available in the speculative buffer memory for storing cache data; And - в ответ на определение того, что запись буфера в спекулятивной буферной памяти доступна для сохранения данных кэша, записывать данные для запроса данных, принятые из следующей высокоуровневой памяти, в доступной записи буфера в спекулятивной буферной памяти и в доступной записи буфера, ассоциированной с целевым адресом запроса данных.- in response to determining that a buffer entry in the speculative buffer memory is available for storing cache data, write the data request data received from the next higher-level memory in the available buffer entry in the speculative buffer memory and in the available buffer entry associated with the target address data request. 6. Неспекулятивная кэш-память по п. 5, в которой контроллер кэша выполнен с возможностью, в ответ на то, что принятый ID инструкции в индикаторе фиксации указывает то, что инструкция загрузки запроса данных является неспекулятивной:6. The non-speculative cache memory of claim 5, wherein the cache controller is configured to, in response to the received instruction ID in the commit indicator indicating that the data request load instruction is non-speculative: - обновлять состояние кэша собственно записи кэша в основном массиве данных, ассоциированной с целевым адресом запроса данных, будучи выполненным с возможностью записи данных для запроса данных в записи буфера в спекулятивной буферной памяти, ассоциированной с целевым адресом запроса данных, в запись кэша в основном массиве данных, ассоциированную с целевым адресом запроса данных.- update the cache state of the cache entry itself in the main data array associated with the target address of the data request, being configured to write data for the data request in a buffer entry in the speculative buffer memory associated with the target address of the data request, in the cache entry in the main data array , associated with the target address of the data request. 7. Неспекулятивная кэш-память по п. 6, в которой контроллер кэша дополнительно выполнен с возможностью выбирать запись буфера из множества записей буфера в спекулятивной буферной памяти, которая должна вытесняться из спекулятивной буферной памяти, на основе спекулятивного состояния в неспекулятивных индикаторах соответствующих записей буфера.7. The non-speculative cache memory of claim 6, wherein the cache controller is further configured to select a buffer entry from the plurality of buffer entries in the speculative buffer memory to be evicted from the speculative buffer memory based on the speculative state in the non-speculative indicators of the corresponding buffer entries. 8. Неспекулятивная кэш-память по п. 5, в которой:8. Non-speculative cache memory according to claim 5, in which: - каждая запись буфера в спекулятивной буферной памяти дополнительно содержит неспекулятивный индикатор, указывающий то, является или нет запись буфера неспекулятивной; и- each buffer entry in the speculative buffer memory further contains a non-speculative indicator indicating whether or not the buffer entry is non-speculative; And - контроллер кэша дополнительно выполнен с возможностью:- the cache controller is additionally configured to: - в ответ на то, что запись буфера в спекулятивной буферной памяти ассоциирована с целевым адресом запроса данных:- in response to the fact that a buffer entry in the speculative buffer memory is associated with the target address of the data request: - задавать неспекулятивный индикатор в записи буфера в спекулятивной буферной памяти, ассоциированной с целевым адресом запроса данных, в спекулятивное состояние;- set a non-speculative indicator in a buffer entry in the speculative buffer memory associated with the target address of the data request to a speculative state; - в ответ на то, что принятый ID инструкции в индикаторе фиксации указывает то, что инструкция загрузки запроса данных является неспекулятивной:- in response to the received instruction ID in the commit indicator indicating that the data request load instruction is non-speculative: - задавать неспекулятивный индикатор в записи буфера в спекулятивной буферной памяти, ассоциированной с целевым адресом запроса данных, в неспекулятивное состояние; и- set the non-speculative indicator in the buffer entry in the speculative buffer memory associated with the target address of the data request to a non-speculative state; And - в ответ на то, что неспекулятивный индикатор в записи буфера в спекулятивной буферной памяти, ассоциированной с целевым адресом запроса данных, задан в неспекулятивное состояние:- in response to the fact that the non-speculative indicator in the buffer entry in the speculative buffer memory associated with the target address of the data request is set to the non-speculative state: - обновлять состояние кэша собственно записи кэша в основном массиве данных, ассоциированной с целевым адресом запроса данных, будучи выполненным с возможностью записи данных для запроса данных в записи буфера в спекулятивной буферной памяти, ассоциированной с целевым адресом запроса данных, в запись кэша в основном массиве данных, ассоциированную с целевым адресом запроса данных.- update the cache state of the cache entry itself in the main data array associated with the target address of the data request, being configured to write data for the data request in a buffer entry in the speculative buffer memory associated with the target address of the data request, in the cache entry in the main data array , associated with the target address of the data request. 9. Неспекулятивная кэш-память по п. 8, дополнительно содержащая:9. Non-speculative cache memory according to claim 8, additionally containing: - схему SAR, выполненную с возможностью сохранять SAR-запись, содержащую запись ID инструкции и запись индекса виртуального заполняющего буфера “VFB”; и- a SAR circuit configured to store a SAR record containing an instruction ID record and a virtual fill buffer “VFB” index record; And - VFB-схему, выполненную с возможностью сохранять VFB-запись, содержащую запись ID инструкции и запись VFB-индекса;- a VFB circuit configured to store a VFB record containing an instruction ID record and a VFB index record; - контроллер кэша дополнительно выполнен с возможностью:- the cache controller is additionally configured to: - в ответ на то, что запись буфера в спекулятивной буферной памяти не ассоциирована с целевым адресом запроса данных:- in response to the fact that a buffer entry in the speculative buffer memory is not associated with the target address of the data request: - выделять VFB-запись в VFB-схеме, причем VFB-запись содержит запись ID инструкции, содержащую ID инструкции собственно инструкции загрузки запроса данных, и запись VFB-индекса, содержащую индекс записи буфера в спекулятивной буферной памяти, ассоциированной с целевым адресом запроса данных; и- allocate a VFB record in the VFB circuit, wherein the VFB record contains an instruction ID record containing the instruction ID of the actual data request loading instruction, and a VFB index record containing the index of the buffer record in the speculative buffer memory associated with the target address of the data request; And - выделять SAR-запись в SAR-схеме, причем SAR-запись содержит запись ID инструкции, сохраняющую ID инструкции собственно инструкции загрузки запроса данных, и запись VFB-индекса, сохраняющую индекс VFB-записи в VFB-схеме, имеющей запись ID инструкции, содержащую ID инструкции; и- allocate a SAR record in the SAR circuit, wherein the SAR record contains an instruction ID record that stores the instruction ID of the data request loading instruction itself, and a VFB index record that stores the index of the VFB record in the VFB circuit that has an instruction ID record containing Instruction ID; And - в ответ на то, что принятый ID инструкции в индикаторе фиксации указывает то, что инструкция загрузки запроса данных является неспекулятивной:- in response to the received instruction ID in the commit indicator indicating that the data request load instruction is non-speculative: - определять VFB-запись в ассоциированной VFB-схеме, имеющую запись ID инструкции, содержащую индексированный ID инструкции, на основе индекса в VFB-индексе в SAR-записи в SAR-схеме, имеющей запись ID инструкции, содержащую принятый ID инструкции; и- determine a VFB entry in an associated VFB schema having an instruction ID entry containing the indexed instruction ID based on an index in the VFB index in a SAR entry in the SAR schema having an instruction ID entry containing the received instruction ID; And - определять запись буфера в спекулятивной буферной памяти, ассоциированную с целевым адресом запроса данных, заданного в неспекулятивное состояние, на основе индекса в записи VFB-индекса в определенной VFB-записи в VFB-схеме;- determine a buffer entry in the speculative buffer memory associated with the target address of the data request set to the non-speculative state based on the index in the VFB index entry in the specific VFB entry in the VFB schema; - контроллер кэша, выполненный с возможностью:- a cache controller configured to: - задавать неспекулятивный индикатор в записи буфера в определенной записи буфера в спекулятивной буферной памяти, ассоциированной с целевым адресом запроса данных, в неспекулятивное состояние.- set the non-speculative indicator in a buffer entry in a specific buffer entry in the speculative buffer memory associated with the target address of the data request to a non-speculative state. 10. Неспекулятивная кэш-память по п. 9, в которой контроллер кэша дополнительно выполнен с возможностью, в ответ на выделение SAR-записи в SAR-схеме:10. The non-speculative cache memory of claim 9, wherein the cache controller is further configured to, in response to allocation of a SAR entry in the SAR circuit: - определять то, содержит или нет другая SAR-запись, содержащаяся в SAR-схеме, ID инструкции в своей записи ID инструкции и запись VFB-индекса в своей VFB-записи; и- determine whether or not another SAR record contained in the SAR diagram contains an instruction ID in its instruction ID record and a VFB index record in its VFB record; And - в ответ на определение того, что в SAR-схеме содержится другая SAR-запись, отменять выделение SAR-записи в SAR-схеме.- in response to a determination that the SAR schema contains another SAR record, de-allocate the SAR record in the SAR schema. 11. Неспекулятивная кэш-память по п. 1, в которой контроллер кэша дополнительно выполнен с возможностью вытеснять запись буфера в спекулятивной буферной памяти в ответ на вытеснение записи кэша в основном массиве данных согласно адресу памяти, соответствующему записи буфера.11. The non-speculative cache memory of claim 1, wherein the cache controller is further configured to evict a buffer entry in the speculative buffer memory in response to eviction of a cache entry in the main data array according to a memory address corresponding to the buffer entry. 12. Способ обновления состояния кэша в неспекулятивной кэш-памяти (114) в процессорной системе (100, 800), содержащий этапы, на которых:12. A method for updating cache state in a non-speculative cache memory (114) in a processor system (100, 800), comprising the steps of: - принимают (402) от запросчика запрос (118) данных, содержащий целевой адрес и идентификатор (ID) инструкции, идентифицирующий инструкцию загрузки, содержащую упомянутый целевой адрес, обрабатываемый посредством процессора (102, 802) в процессорной системе (100, 800);- receiving (402) from the requester a data request (118) containing a target address and an instruction identifier (ID) identifying a load instruction containing said target address processed by the processor (102, 802) in the processor system (100, 800); - выполняют поиск (404) в основном массиве (308) данных на предмет записи (310(0)-310(M)) кэша, ассоциированной с целевым адресом запроса данных, из множества записей (310(0)-310(M)) кэша, каждая из которых выполнена с возможностью сохранять данные (314(0)-314(B)) кэша, ассоциированные с адресом памяти в системе (104) памяти процессорной системы (100, 800);- perform a search (404) in the main data array (308) for a cache entry (310(0)-310(M)) associated with the target address of the data request from the plurality of entries (310(0)-310(M)) caches, each of which is configured to store cache data (314(0)-314(B)) associated with a memory address in the memory system (104) of the processor system (100, 800); - выполняют поиск (406) в спекулятивной буферной памяти (318) на предмет записи (320(0)-320(B)) буфера, ассоциированной с целевым адресом запроса (118) данных, из множества записей (320(0)-320(B)) буфера, каждая из которых выполнена с возможностью сохранять данные (324(0)-324(B)) кэша, ассоциированные с адресом памяти в системе памяти (104), при этом спекулятивная буферная память выполнена с возможностью удерживания данных, извлекаемых из памяти более высокого уровня после неудачного обращения в кэш;- searching (406) in the speculative buffer memory (318) for a buffer entry (320(0)-320(B)) associated with the target address of the data request (118), from the plurality of entries (320(0)-320( B)) buffers, each of which is configured to store cache data (324(0)-324(B)) associated with a memory address in the memory system (104), wherein the speculative buffer memory is configured to hold data retrieved from higher-level memory after a cache failure; - отправляют (408) запросчику ответ (302) с данными на запрос (118) данных на основе записи (310(0)-310(M)) кэша в основном массиве (308) данных, ассоциированной с целевым адресом, и данных кэша в записи (320(0)-320(B)) буфера в спекулятивной буферной памяти (318), ассоциированной с целевым адресом;- send (408) to the requester a response (302) with data to a request (118) for data based on a cache entry (310(0)-310(M)) in the main data array (308) associated with the target address, and cache data in writing (320(0)-320(B)) a buffer in a speculative buffer memory (318) associated with the target address; - принимают (410) индикатор (328) фиксации, содержащий ID инструкции собственно инструкции (202), которая является неспекулятивной; и- receive (410) a commit indicator (328) containing the instruction ID of the actual instruction (202), which is non-speculative; And - обновляют (412) состояние кэша собственно записи (310(0)-310(M)) кэша в основном массиве (308) данных, ассоциированной с целевым адресом запроса (118) данных, в ответ на то, что принятый ID инструкции в индикаторе (328) фиксации указывает то, что инструкция загрузки запроса (118) данных является неспекулятивной, при этом обновления состояний кэша основаны на политике, выбираемой по дополнительной метаинформации о запросчике строки кэша;- updating (412) the cache state of the actual cache entry (310(0)-310(M)) in the main data array (308) associated with the target address of the data request (118), in response to the received instruction ID in the indicator (328) commit indicates that the data request (118) load instruction is non-speculative, with cache state updates based on a policy selected by additional meta-information about the cache line requester; причем способ дополнительно содержит сохранение SAR-записи схемой (336) регистрации спекулятивных доступов “SAR”, причем SAR-запись содержит запись (340) ID инструкции и запись (342) основного массива данных;wherein the method further comprises storing the SAR record by the speculative access registration “SAR” circuit (336), the SAR record comprising an instruction ID record (340) and a main data record (342); - в ответ на то, что запись кэша в основном массиве данных ассоциирована с целевым адресом запроса данных, способ дополнительно содержит:- in response to the fact that the cache entry in the main data array is associated with the target address of the data request, the method further comprises: - выделение упомянутой SAR-записи в SAR-схеме, причем SAR-запись содержит запись ID инструкции, содержащую ID инструкции собственно инструкции загрузки запроса данных, и запись основного массива данных, содержащую индекс записи кэша в основном массиве данных, ассоциированной с целевым адресом запроса данных; и- highlighting said SAR record in the SAR circuit, wherein the SAR record contains an instruction ID record containing the instruction ID of the data request loading instruction itself, and a main data record containing the index of a cache record in the main data array associated with the target address of the data request ; And - в ответ на то, что принятый ID инструкции в индикаторе фиксации указывает то, что инструкция загрузки запроса данных является неспекулятивной:- in response to the received instruction ID in the commit indicator indicating that the data request load instruction is non-speculative: - определение того, содержится или нет принятый ID инструкции в записи ID инструкции в SAR-записи в SAR-схеме; и- determining whether or not the received instruction ID is contained in the instruction ID record in the SAR record in the SAR diagram; And - в ответ на определение того, что принятый ID инструкции содержится в SAR-записи в SAR-схеме, обновление состояния замещения кэша собственно записи кэша в основном массиве данных, соответствующей упомянутому индексу в записи основного массива данных, ассоциированной с целевым адресом запроса данных, в SAR-записи, содержащей принятый ID инструкции.- in response to determining that the received instruction ID is contained in a SAR entry in the SAR schema, updating the cache replacement state of the cache entry itself in the main data set corresponding to said index in the main data record associated with the target address of the data request, in SAR record containing the received instruction ID. 13. Способ по п. 12:13. Method according to item 12: - дополнительно содержащий этап, на котором определяют то, ассоциирована или нет запись кэша в основном массиве данных с целевым адресом запроса данных; и- further comprising a step of determining whether or not the cache entry in the main data array is associated with the target address of the data request; And - содержащий этап, на котором отправляют запросчику ответ с данными на запрос данных, содержащий данные кэша в записи кэша в основном массиве данных, имеющей целевой адрес, ассоциированный с целевым адресом запроса данных, в ответ на запись кэша в основном массиве данных, ассоциированную с целевым адресом запроса данных.- comprising the step of sending to the requester a data response to a data request containing cache data in a cache entry in the main data array having a target address associated with the target address of the data request, in response to a cache entry in the main data array associated with the target data request address. 14. Способ по п. 13, дополнительно содержащий, в ответ на то, что запись кэша в основном массиве данных не ассоциирована с целевым адресом запроса данных, этапы, на которых:14. The method of claim 13, further comprising, in response to the fact that the cache entry in the main data array is not associated with the target address of the data request, the steps of: - определяют то, ассоциирована или нет запись буфера в спекулятивной буферной памяти с целевым адресом запроса данных; и- determining whether or not the buffer entry in the speculative buffer memory is associated with the target address of the data request; And - отправляют запросчику ответ с данными на запрос данных, содержащий данные кэша в записи буфера в спекулятивной буферной памяти, имеющей целевой адрес, ассоциированный с целевым адресом запроса данных.- sending to the requester a data response to the data request containing cache data in a buffer entry in a speculative buffer memory having a target address associated with the target address of the data request.
RU2022108690A 2019-09-03 2020-06-17 Delaying cache state updates in non-speculative cache memory in processor system in response to speculative data request until speculative data request becomes non-speculative RU2817624C1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US16/558,843 2019-09-03

Publications (1)

Publication Number Publication Date
RU2817624C1 true RU2817624C1 (en) 2024-04-17

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6321328B1 (en) * 1999-03-22 2001-11-20 Hewlett-Packard Company Processor having data buffer for speculative loads
RU2220444C2 (en) * 1998-12-15 2003-12-27 Интернэшнл Бизнес Машинз Корпорейшн Computer system and method for data transmission in computer system
US8943273B1 (en) * 2008-08-14 2015-01-27 Marvell International Ltd. Method and apparatus for improving cache efficiency
CN107220032A (en) * 2012-06-15 2017-09-29 英特尔公司 Without the out of order load store queue of disambiguation
WO2019005975A1 (en) * 2017-06-28 2019-01-03 Nvidia Corporation Memory type which is cacheable yet inaccessible by speculative instructions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2220444C2 (en) * 1998-12-15 2003-12-27 Интернэшнл Бизнес Машинз Корпорейшн Computer system and method for data transmission in computer system
US6321328B1 (en) * 1999-03-22 2001-11-20 Hewlett-Packard Company Processor having data buffer for speculative loads
US8943273B1 (en) * 2008-08-14 2015-01-27 Marvell International Ltd. Method and apparatus for improving cache efficiency
CN107220032A (en) * 2012-06-15 2017-09-29 英特尔公司 Without the out of order load store queue of disambiguation
WO2019005975A1 (en) * 2017-06-28 2019-01-03 Nvidia Corporation Memory type which is cacheable yet inaccessible by speculative instructions

Similar Documents

Publication Publication Date Title
EP1388065B1 (en) Method and system for speculatively invalidating lines in a cache
US6523109B1 (en) Store queue multimatch detection
US20080005504A1 (en) Global overflow method for virtualized transactional memory
US7363435B1 (en) System and method for coherence prediction
US7200717B2 (en) Processor, data processing system and method for synchronizing access to data in shared memory
US7284094B2 (en) Mechanism and apparatus allowing an N-way set associative cache, implementing a hybrid pseudo-LRU replacement algorithm, to have N L1 miss fetch requests simultaneously inflight regardless of their congruence class
US10108548B2 (en) Processors and methods for cache sparing stores
US20170091097A1 (en) Hazard checking
EP4025998B1 (en) Swapping and restoring context-specific branch predictor states on context switches in a processor
EP4025996B1 (en) Deferring cache state updates in a non-speculative cache memory in a processor-based system in response to a speculative data request until the speculative data request becomes non-speculative
US11372757B2 (en) Tracking repeated reads to guide dynamic selection of cache coherence protocols in processor-based devices
US6704854B1 (en) Determination of execution resource allocation based on concurrently executable misaligned memory operations
US11360773B2 (en) Reusing fetched, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-fetching
RU2817624C1 (en) Delaying cache state updates in non-speculative cache memory in processor system in response to speculative data request until speculative data request becomes non-speculative
WO2022259090A1 (en) Sharing instruction cache footprint between multiple threads
US11138114B2 (en) Providing dynamic selection of cache coherence protocols in processor-based devices
US8108624B2 (en) Data cache with modified bit array
US11113068B1 (en) Performing flush recovery using parallel walks of sliced reorder buffers (SROBs)
US20230418615A1 (en) Providing extended branch target buffer (btb) entries for storing trunk branch metadata and leaf branch metadata
EP4034989B1 (en) Enabling early execution of move-immediate instructions having variable immediate value sizes in processor-based devices