RU2358310C1 - Кэширование целевого адреса перехода с упреждающей выборкой - Google Patents
Кэширование целевого адреса перехода с упреждающей выборкой Download PDFInfo
- Publication number
- RU2358310C1 RU2358310C1 RU2007136785/09A RU2007136785A RU2358310C1 RU 2358310 C1 RU2358310 C1 RU 2358310C1 RU 2007136785/09 A RU2007136785/09 A RU 2007136785/09A RU 2007136785 A RU2007136785 A RU 2007136785A RU 2358310 C1 RU2358310 C1 RU 2358310C1
- Authority
- RU
- Russia
- Prior art keywords
- address
- command
- cache
- instruction
- processing
- Prior art date
Links
- 238000012545 processing Methods 0.000 claims abstract description 177
- 238000000034 method Methods 0.000 claims abstract description 47
- 238000005070 sampling Methods 0.000 claims description 70
- 230000007704 transition Effects 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 12
- 230000000977 initiatory effect Effects 0.000 claims description 7
- 230000003247 decreasing effect Effects 0.000 claims description 5
- 230000007423 decrease Effects 0.000 claims description 4
- 230000015572 biosynthetic process Effects 0.000 claims 1
- 238000012805 post-processing Methods 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 11
- 230000006872 improvement Effects 0.000 abstract description 3
- 230000000694 effects Effects 0.000 abstract description 2
- 239000000126 substance Substances 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 11
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Изобретение относится к способам кэширования целевых адресов команды перехода, в частности к усовершенствованной выборке кэшируемого целевого адреса по отношению к выборке кэшируемой команды перехода. Техническим результатом является повышение производительности процессоров, реализующих эти способы. Конвейерный процессор содержит кэш команд (iCache), кэш целевого адреса ветвления (ВТАС) и ступени обработки, включающие в себя ступень для выборки из iCache и ВТАС. Варианты способов описывают работу указанного процессора. При этом, чтобы компенсировать количество циклов, необходимых для выборки целевого адреса ветвления из ВТАС, выборка из ВТАС приводит к выборке команды перехода из iCache на величину, связанную с количеством циклов, необходимых для выборки из ВТАС. 5 н. и 25 з.п. ф-лы, 8 ил.
Description
Область техники
Настоящее описание относится к способам кэширования целевых адресов команды перехода, в частности к усовершенствованной выборке кэшируемого целевого адреса по отношению к выборке кэшируемой команды перехода, и к процессорам, использующим такие способы.
Уровень техники
Современные микропроцессоры и другие схемы программируемых процессоров часто основаны на конвейерной архитектуре обработки для повышения скорости выполнения. Конвейерный процессор включает в себя множество ступеней обработки для последовательной обработки каждой команды, когда она перемещается через конвейер. В то время как одна ступень обрабатывает команду, другие ступени вдоль конвейера одновременно обрабатывают другие команды.
Каждая ступень конвейера исполняет отличную функцию, необходимую в полной обработке каждой программной инструкции. Хотя порядок и/или функции могут немного изменяться, типичный простой конвейер включает в себя ступень Fetch (выборки) команды, ступень Decode (декодирования) команды, ступень доступа (обращения) к памяти или Readout (считывания), ступень Execute (выполнения) команды и ступень Write-back (обратной записи) результата. Более совершенные конструкции процессоров разбивают некоторые или все эти ступени на несколько отдельных ступеней для выполнения под-частей этих функций. Суперскалярные конструкции дополнительно разбивают эти функции и/или обеспечивают дублированные функции для выполнения операций в параллельных конвейерах аналогичной глубины.
Во время работы ступень выборки команды выбирает следующую команду в выполняемой в настоящее время программе. Часто следующая команда является командой, расположенной в ячейке памяти со следующим последовательным адресом. Обработка некоторых команд может приводить к операции ветвления (перехода), в этом случае следующая команда находится в непоследовательном целевом адресе, полученном посредством декодирования и принятия решения во время выполнения для выбора целевой ветви для последующей обработки.
Существуют два общих класса команд перехода (ветвления), условного и безусловного. Процессор принимает решение, выполнять ли команду условного перехода в зависимости от того, удовлетворено ли условие(я) ветвления во время обработки команды. Процессор выполняет безусловный переход каждый раз, когда процессор выполняет эту команду. Команда, которая должна быть обработана следующей после команды перехода, то есть, скажем, целевой адрес команды, определяется посредством вычисления на основании конкретной команды перехода. В частности, для условного ветвления целевой адрес результата ветвления может не быть определенно известен, пока процессор не примет решение, что условие ветвления удовлетворено.
Для заданной операции выборки ступень выборки первоначально пытается выбрать адресованную команду из кэша команд (iCache). Если команда еще не содержится в iCache, ступень выборки выбирает ее из памяти более высокого уровня, такого как кэш 2-го уровня команд или основной памяти системы. При выборке из памяти более высокого уровня команда загружается в iCache.
Ступень выборки выдает каждую выбранную команду на ступень декодирования команд. Логика ступени декодирования команд декодирует принятые байты команды и выдает результат на следующую ступень конвейера, то есть на Считывание в простом скалярном конвейере. Если команда является командой перехода, то часть обработки декодирования может использовать вычисление целевого адреса ветвления. Логика ступени Считывания обращается к памяти или другим ресурсам, чтобы получить данные операндов для обработки в соответствии с командой. Команду и данные операндов передают к ступени выполнения, которая выполняет конкретную команду над извлеченными данными и формирует результат. Типичная ступень выполнения может реализовывать арифметико-логическое устройство (АЛУ). Пятая ступень записывает результаты выполнения назад в регистр или память.
В таких операциях ступень выполнения время от времени будет принимать и обрабатывать одну из команд перехода. При обработке команды перехода логика ступени выполнения определяет, должна ли быть выбрана (принята) ветвь, например, если условия для условной операции ветвления удовлетворены. Если принимается, то часть этого результата есть целевой адрес (часто вычисленный ступенью декодирования команды), который ступень выборки использует как адрес команды для выборки следующей команды для обработки в конвейере. Для увеличения производительности целевой адрес может быть кэширован способом, аналогичным обработке кэша команд. Например, для принятой ветви вычисленный целевой адрес может быть сохранен в кэше целевого адреса ветвления (КЦАВ, BTAC), обычно вместе с адресом команды перехода, которая сформировала этот целевой адрес.
Для каждой операции выборки ступень выборки использует адрес новой команды и пытается обратиться и к iCache, и к BTAC с этим адресом выборки. Принимая, что команда была загружена в iCache, iCache выдаст адресованную команду на логику ступени выборки. Если адрес соответствует команде перехода и ветвь была предварительно принята, это будет "попаданием" в BTAC, заключающееся в том, что BTAC будет хранить целевой адрес для адреса этой команды и BTAC будет выдавать кэшируемый целевой адрес на логику (логическую схему) Выборки. Если текущий адрес выборки не соответствует команде перехода или ветвь еще не была принята, не имеется "попадания", поскольку BTAC не хранит целевой адрес для текущего адреса команды выборки.
Когда имеется "попадание" в BTAC, логика может предсказывать, должна ли быть эта ветвь, вероятно, снова принята. Если да, то целевой адрес подается на логику Выборки для использования в качестве следующего адреса (вместо следующего последовательного адреса). Поэтому следующая операция выборки после выборки команды перехода использует этот кэшированный целевой адрес, извлеченный из BTAC, чтобы выбрать команду, соответствующую целевому адресу.
Когда скорости процессора увеличиваются, заданная ступень имеет меньшее количество времени, чтобы исполнить свою функцию. Чтобы поддержать или дополнительно повысить производительность, каждая ступень подразделяется. Каждая новая ступень исполняет меньшее количество работы в течение заданного цикла, но имеется большее количество ступеней, работающих одновременно на более высокой тактовой частоте. Поскольку память и процессоры совершенствуются, длина команд и длины адресов команды увеличиваются. Во многих конвейерных процессорах операция выборки разбивается и распределяется среди двух или более ступеней, и выборка команд из iCache и целевых адресов из BTAC занимает два или более циклов обработки. В результате может потребоваться множество циклов, чтобы определить, имеется ли попадание при выборке BTAC, в течение которого ступени, выполняющие выборки из iCache, проходят и начались ли операции выборки в отношении одной или более последующих выборок iCache. В операции выборки, занимающей много циклов, после обнаружения попадания в BTAC последующая обработка выборки должна быть отвергнута, поскольку следующая операция выборки должна использовать адрес, идентифицированный в BTAC. Это отвергание вызывает задержки и снижает выгоду использования кэширования BTAC. Когда количество циклов, требуемых для выборок BTAC, увеличивается, производительность дополнительно ухудшается. Следовательно, существует потребность в дальнейших усовершенствованиях способов кэширования целевого адреса при ветвлении, особенно когда это может помочь уменьшить или устранить ненужную обработку на ступенях iCache в случае попадания в BTAC.
Сущность изобретения
Как должно быть очевидно из описания уровня техники, нормальная операция использует один и тот же адрес, чтобы одновременно обратиться и к кэшу команд, и кэшу целевого адреса ветвления (перехода) (BTAC) во время вызова команды. Чтобы дополнительно повысить производительность, операция выборки BTAC выполняет "просмотр вперед" (упреждающий просмотр), то есть выполняет выборку до выборки команды из кэша команд. В раскрытых примерах выборка BTAC выполняет "просмотр вперед" выборки iCache посредством использования адреса будущей команды или из-за того, что этот адресат был записан в BTAC с более ранним значением адреса. Аспекты этих принципов относятся и к способам и процессорам.
Первый такой способ для выборки команд для использования в конвейерном процессоре использует команды выборки из кэша команд и одновременно осуществляя доступ к кэшу целевого адреса ветвления (BTAC) в течение каждой выборки команды. Обращение к BTAC определяет, хранит ли BTAC целевой адрес ветвления (перехода). Каждое обращение к BTAC занимает по меньшей мере два цикла обработки. Способ также использует смещение операций доступа на заранее определенную величину относительно операций выборки, чтобы начать обращение к BTAC относительно команды перехода по меньшей мере на один цикл прежде инициирования выборки команды перехода.
В различных примерах, подробно описанных ниже, смещение является достаточным, чтобы выбрать целевой адрес ветвления, соответствующий команде перехода, из BTAC для использования в последующей выборке команды, которая начинается в цикле обработки сразу после того цикла обработки, который начал выборку команды перехода. Конкретные примеры этого способа обеспечивают приращение адреса для выборки BTAC как часть операций выборки или обеспечивают уменьшение адреса для записи адресата ветвления в BTAC. Последняя опция не должна быть реализована в самой операции выборки, но может быть реализована в или в ответ на обработку в одном или большем количестве последующих ступеней конвейерной обработки.
Величина смещения является достаточной, чтобы разрешить выборку целевого адреса ветвления, соответствующего команде перехода, из BTAC для использования в выборке последующей команды, которая начинается в цикле обработки сразу после того цикла, который начал выборку команды перехода. В примерах величина смещения охватывает разность адресов между кэшем команд и BTAC, равную величине на единицу меньше, чем количество циклов, требуемых для каждого обращения к BTAC.
Другой способ выборки команд для использования в конвейерном процессоре влечет за собой начало выборки первой команды из кэша команд и одновременно инициирование выборки в BTAC. Обращение к BTAC служит для выборки целевого адреса, соответствующего команде перехода, которая следует за первой командой. Этот способ также использует начало выборки команды перехода из кэша команд. Вслед за началом выборки команды перехода целевой адрес, соответствующий команде перехода, используется, чтобы инициировать выборку целевой команды из кэша команд.
Процессор в соответствии с настоящим раскрытием содержит кэш команд, кэш целевого адреса ветвления и ступени обработки. Одной из сохраненных команд является команда перехода, и кэш целевого адреса ветвления хранит целевой адрес ветвления, соответствующий этой команде. Ступени обработки включают в себя ступень выборки и по меньшей мере одну последующую ступень обработки для выполнения одной или более функций обработки в соответствии с выбранными командами. Ступень выборки выбирает команды из кэша команд и выбирает целевой адрес ветвления из кэша целевого адреса ветвления. Процессор также включает в себя логику смещения. Эта логика обеспечивает смещение выборки из кэша целевого адреса ветвления перед выборкой команд из кэша команд на величину, связанную с количеством циклов обработки, требуемых для завершения каждой выборки из кэша целевого адреса ветвления.
В примерах величина смещения упреждающего просмотра на единицу меньше количества циклов обработки, требуемых для завершения каждой выборки из кэша целевого адреса ветвления. Логика смещения может быть ассоциирована со ступенью выборки, например, чтобы увеличить адрес выборки команды для того, чтобы разрешить этой ступени выборки использовать начальный адрес для осуществления выборки из кэша целевого адреса ветвления. Альтернативно, логика смещения может записывать адресаты ветвления в кэш целевого адреса ветвления, используя уменьшенное значение адреса команды.
Примерные процессоры являются конвейерными процессорами, часто имеющими пять или более ступеней. Последовательно расположенные ступени обработки могут включать в себя ступень декодирования команды, ступень считывания, и ступень выполнения команды, и ступень обратной записи результата. Конечно, каждая из этих ступеней может быть дополнительно разделена или конвейеризована. Также ступень выборки может быть конвейеризована, чтобы содержать множество ступеней обработки.
В одном примере адрес, используемый для выборки BTAC, опережает таковой, использованный при выборке кэша команд, на смещение, предназначенное для компенсации задержки выборки из BTAC в случае попадания. Если это осуществлено в течение выборки, это влечет за собой приращение адреса выборки. Альтернативно, при записи в кэш-памяти адрес записи BTAC может опережать адрес, используемый для хранения команды перехода в кэше команд, на соответствующую величину смещения. Так как это реализовано для операции записи, но предназначено, чтобы вызвать считывание или выборку перед соответствующей выборкой кэша команд, операция записи уменьшает адрес, используемый для записи целевого адреса в BTAC.
Дополнительные задачи, преимущества и новые признаки будут сформулированы частично в описании, которое следует ниже, и частично станет очевидным специалистам после рассмотрения нижеследующего описания и сопроводительных чертежей или может быть изучено посредством реализации или оперирования примерами. Задачи и преимущества настоящего раскрытия могут быть реализованы и достигнуты практикой или использованием методологий, инструментария и комбинаций, конкретно указанных в прилагаемой формуле изобретения.
Краткое описание чертежей
Чертежи изображают один или более вариантов выполнения в соответствии с настоящим раскрытием только посредством примера, а не посредством ограничения. На чертежах аналогичные цифровые ссылочные обозначения относятся к одному и тому же или подобным элементам.
Фиг.1 изображает функциональную блок-схему простого примера конвейерного процессора со смещением упреждающим просмотром для выборки из кэша целевого адреса ветвления перед соответствующей выборкой из кэша команд.
Фиг.2 изображает функциональную блок-схему простого примера ступеней выборки и декодирования конвейерного процессора, реализующего выборку с двумя циклами (или двумя ступенями).
Фиг.3 изображает таблицу, полезную при объяснении синхронизации циклов в ступени выборки согласно фиг.2 без смещения между выборкой из кэша команд и соответствующей выборкой из кэша целевого адреса ветвления.
Фиг.4 изображает таблицу, полезную при объяснении синхронизации циклов в ступени выборки согласно фиг.2 со смещением между выборкой из кэша целевого адреса ветвления и соответствующей выборкой из кэша команд, где смещение относится к (например, на единицу меньше) количеству циклов или количеству ступеней, реализующих выборку целевого адреса.
Фиг.5 изображает функциональную блок-схему простого примера ступеней выборки и декодирования конвейерного процессора, реализующего выборку с тремя циклами (или тремя ступенями).
Фиг.6 изображает таблицу, полезную при объяснении синхронизации циклов в ступени выборки согласно фиг.5 со смещением между выборкой из кэша целевого адреса ветвления и соответствующей выборкой из кэша команд, где смещение относится к (например, на единицу меньше) количеству циклов или количеству ступеней, реализующих выборку целевого адреса.
Фиг.7 изображает частичную блок-схему и последовательность операций, полезных для понимания примера, в котором смещение реализовано как приращение адреса выборки команды.
Фиг.8 изображает частичную блок-схему и последовательность операций, полезных для понимания примера, в котором смещение реализовано в отношении адреса команды, используемого при записи целевого адреса в кэш целевого адреса ветвления.
Подробное описание
В нижеследующем подробном описании многочисленные конкретные подробности сформулированы посредством примеров, чтобы обеспечить полное понимание релевантных вариантов раскрытия. Однако специалистам должно быть очевидно, что настоящее раскрытие может быть реализовано без таких подробностей. В других примерах известные способы, процедуры, компоненты и схема описаны на относительно высоком уровне детализации без подробностей, чтобы избежать излишнего усложнения аспектов настоящего раскрытия.
Различные способы, раскрытые здесь, относятся к выгодной синхронизации выборки целевого адреса ветвления (перехода) перед соответствующей выборкой команды, особенно когда такие выборки выполняются в обработке конвейерного типа. Ниже приводятся ссылки на подробные примеры, проиллюстрированные на сопроводительных чертежах и описанные ниже. Фиг.1 является упрощенной блок-схемой конвейерного процессора 10. Упрощенный конвейер включает в себя пять ступеней.
Первая ступень конвейера в процессоре 10 является ступенью 11 Выборки команд. Эта ступень Выборки получает команды для обработки последующими ступенями. Ступень 11 Выборки подает каждую команду к ступени 13 Декодирования. Логика ступени 13 Декодирования команд декодирует принятые байты команды и выдает результат на следующую ступень конвейера. В простом примере следующей ступенью является ступень 15 доступа (обращения) к данным или Считывания. Логика ступени 15 Считывания обращается к памяти или другим ресурсам (не показаны), чтобы получить данные операнда для обработки в соответствии с командой. Команду и данные операнда передают к ступени 17 Выполнения, который выполняет конкретную команду над извлеченными данными и выдает результат. Пятая ступень 19 записывает результаты обратно в регистр и/или память (не показаны).
Конвейеризация архитектуры обработки таким способом разрешает параллельную работу ступеней 11-19 в отношении последовательных команд. Современные реализации, особенно для высокопроизводительных приложений, обычно разбивают эти ступени на множество под-ступеней. Суперскалярные структуры используют два или более конвейеров, по существу, одинаковой глубины, работающих одновременно параллельно. Для простоты описания, однако, ниже приводятся ссылки на примеры с простым примером конвейера с пятью ступенями, как в процессоре 10.
Логика ступени Выборки часто будет включать в себя или взаимодействовать с кэшем 21 команд (iCache). При выборке команды, идентифицированной адресом, логика (логическая схема) ступени 11 Выборки сначала обратится к iCache 21, чтобы извлечь команду. Если адресованная команда еще не находится в iCache, логика ступени 11 Выборки выберет команду в iCache 21 из других ресурсов, например, кэша 23 уровня два (второго уровня) или основной памяти 25. Команда и адрес сохраняются в iCache 21. Логика ступени Выборки может затем выбирать команду из iCache 21. Команда должна быть также доступна в iCache 21, если необходима впоследствии.
Выполнение многих команд приводит к ветвлениям от текущего местоположения в последовательности программы к другой команде, то есть к команде, сохраненной в отличном местоположении в памяти (и соответствующей непоследующему адресу). Обработка команды перехода использует вычисление ветвления к целевому адресу. Чтобы ускорить операции выборки, логика ступени выборки часто будет включать в себя или осуществлять сопряжение с кэшем целевого адреса ветвления (BTAC) 27 для кэширования целевых адресов способом, аналогичным этой функции в iCache 21. В соответствии с настоящим раскрытием целевой адрес, извлеченный из BTAC 27, смещается (в 29) от такового соответствующей команды в iCache 21, так что обработка просмотра BTAC начинается на один или более циклов прежде просмотра соответствующей команды перехода в iCache 21, чтобы компенсировать любую задержку ожидания при извлечении целевого адреса из BTAC 27.
Смещение, осуществленное в 29, может быть выражено в терминах времени, выражено как один или более тактов или обрабатывающих циклов, выражено как смещение в нумерации адреса, или подобным образом. Ниже описан пример, в котором смещение идентифицирует адрес выборки, несколько опережая (с приращением) во времени или в последовательности команд, по сравнению с адресом выборки, используемым для выборки команды из iCache. Альтернативный пример записывает целевой адрес ветвления в BTAC с соответствующим смещением (уменьшением), так чтобы обе выборки использовали один и тот же адрес, но выборка BTAC все еще опережает выборку iCache на желательную величину смещения. В любом примере, если имеется целевой адрес ветвления в BTAC 27, этот адрес ветвления подается к логике ступени Выборки, чтобы начать выбирать целевую команду немедленно после команды перехода.
Для команды перехода, которая предварительно не была скопирована в iCache 21, BTAC 27 не будет включать в себя целевой адрес для операции ветвления. Могут быть некоторые ситуации, в которых BTAC 27 не будет включать в себя целевой адрес, даже при том, что iCache 21 включает в себя команду перехода, например, потому что обработка еще не выбрала конкретную ветвь. В любом таком случае, когда целевой адрес ветвления не включен в BTAC 27, часть 31 логики декодирования команды будет вычислять целевой адрес во время обработки команды перехода в ступени 13 декодирования.
Процессор может записывать вычисленный целевой адрес в BTAC 27, когда вычислено как часть логики декодирования. Однако не все ветвления выбираются, например, потому что условие для команды условного перехода не выполнено. Логика ступени 17 выполнения будет включать в себя логику 33, чтобы определить, должна ли быть ветвь принята (выбрана). Если да, то обработка должна включать в себя операцию записи (логика, показанная как 35), чтобы записать вычисленный целевой адрес ветвления в BTAC 27. Хотя отдельно не показан, результат выполнения для выбора (приема) конкретной ветви будет использовать выдачу целевого адреса к логике ступени Выборки, чтобы выбрать целевую команду для последующей обработки посредством конвейера.
Нормальная операция или операция, при которой обращение к BTAC занимает один цикл выборки, используют один и тот же адрес, чтобы одновременно обратиться и к iCache 21, и к BTAC 27 в течение выборки команды. Чтобы дополнительно повысить производительность, когда обращение к BTAC требует множества циклов, операция выборки BTAC осуществляет выборку перед командой, выбранной в iCache, на основании Смещения, осуществленного в 29 на фиг.1.
Количество циклов, требуемых для выборки BTAC, определяет количество циклов или длину, требуемую для смещения упреждающего просмотра. Если обращение к BTAC занимает два цикла, то выборка BTAC должна просматривать на один цикл выборки перед выборкой iCache. Если обращение к BTAC занимает три цикла, то выборка BTAC должна просматривать на два цикла выборки прежде выборки iCache, и так далее. Как отмечено, если обращение к BTAC требует только один цикл выборки, смещение может не быть необходимым.
В одном примере адрес, используемый для выборки BTAC, опережает таковой, используемый в выборке iCache, на смещение, предназначенное для компенсации задержки выборки из BTAC в случае попадания. Если реализовано в течение выборки, это влечет за собой приращение в адресе выборки. Альтернативно, при записи в кэш-памяти адрес записи BTAC может опережать адрес, используемый для хранения команды перехода в iCache, на соответствующую величину смещения. Так как это реализовано в отношении операции записи, но предназначено, чтобы вызвать считывание или выборку перед соответствующей выборкой iCache, операция записи уменьшает адрес, используемый для записи целевого адреса в BTAC.
Чтобы полностью оценить операции с упреждающим просмотром, может быть, полезно рассмотреть некоторые примеры. Со ссылками на фиг.2 - 4 предположим, что выборка BTAC требует двух циклов обработки. Хотя циклы для двух выборок могут не всегда быть одинаковыми, для простоты описания в этом примере выборка команды из iCache аналогично требует двух циклов. По существу, ступень 112 выборки может рассматриваться как конвейерная. Хотя ступени выборки могут быть объединены, для этого примера предполагается, что каждый тип выборки выполняется в двух отдельных ступенях конвейера, и конвейер выборки iCache выполняется параллельно со ступенями, формирующими конвейер выборки BTAC. Каждый из конвейеров поэтому состоит из двух ступеней.
Каждая ступень конвейера 112 выборки исполняет различную функцию, необходимую для полной обработки каждой команды программы. Первая ступень, относящаяся к обработке выборки команды (iCache F1), принимает адрес (iAddress) команды, выполняет его функциональную обработку, чтобы начать выборку адресованной команды, и передает свои результаты ко второй ступени, относящейся к обработке выборки команды (iCache F2). В течение следующего цикла iCache F1 принимает адрес другой команды, в то время как iCache F2 завершает обработку выборки в отношении первого адреса и передает результаты, то есть выбранную команду, к ступени 13 Декодирования.
Параллельно первая ступень, относящаяся к обработке выборки целевого адреса (BTAC) (F1 BTAC), принимает адрес выборки BTAC, выполняет его функциональную обработку, чтобы начать выборку из BTAC, и передает свои результаты ко второй ступени, относящейся к обработке выборки команды (F2 BTAC). В течение следующего цикла ступень F1 BTAC принимает адрес другой команды, в то время как iCache F2 завершает обработку выборки в отношении первого адреса и передает результаты, если они есть, к ступени 13 Декодирования. Если обработка BTAC выбирает целевой адрес ветвления из BTAC 27, вторая ступень конвейера BTAC (F2 BTAC) обеспечивает результаты попадания на первую ступень, относящуюся к обработке выборки команды (iCache F1) так, чтобы выборка следующей новой команды использовала соответствующий целевой адрес ветвления из кэша 27.
Фиг.3 является таблицей или диаграммой синхронизации, представляющей синхронизацию циклов и связанную обработку в ступени выборки с 2 циклами, такой как ступень 112, показанная на фиг.2. Алфавитные символы в таблице представляют адреса команд. Например, A, B и C являются последовательным адресом, поскольку они могут быть обработаны в начале прикладной программы. Z представляет целевой адрес, то есть следующую команду, которая должна быть обработана после обработки принятой команды перехода.
В примере согласно фиг.3 для целей описания принимается, что не имеется никакого смещения между обработкой для ступеней выборки iCache и ступеней выборки BTAC. Следовательно, в течение цикла 1 обработки ступень iCache F1 выполняет свою связанную с выборкой обработку в отношении первого адреса A и ступень F1 BTAC выполняет свою связанную с выборкой обработку в отношении первого адреса A. Две ступени F1 передают соответствующие результаты к соответствующим ступеням F2 для обработки во втором цикле. В течение обработки во втором цикле ступень iCache F1 выполняет свою связанную с выборкой обработку в отношении второго адреса B и ступень F1 BTAC выполняет свою связанную с выборкой обработку в отношении второго адреса B. Ступени F2 обе завершают обработку в отношении второго адреса B в конце третьего цикла. Однако в течение этого третьего цикла ступени F1 обе обрабатывают третью последующую команду C.
Теперь предположим, что вторая команда B является командой перехода, для которой BTAC 27 хранит адрес Z целевой ветви. Вторая ступень конвейера BTAC (F2 BTAC) находит попадание и выдает целевой адрес Z в третьем цикле. Целевой адрес Z становится доступным и обрабатывается как адрес выборки команды в ступени iCache F1 в следующем цикле обработки, то есть в четвертом цикле.
Как показано тем не менее, обе ступени F1 начали обрабатывать последующий адрес в третьем цикле (как представлено обведенным в кружок адресом C). Такая обработка является посторонней, и любые результаты должны быть очищены из конвейера. Аналогичная обработка может происходить и должна быть очищенной из ступеней F2 в следующем (четвертом) цикле обработки (снова обведенным в кружок адресом C). Ненужная обработка третьего последовательного адреса является непроизводительной тратой времени обработки, и необходимость очищать ступени от любых связанных данных вносит задержку и снижает производительность.
Фиг.4 является таблицей или временной диаграммой, представляющей синхронизацию циклов и связанную обработку в ступени выборки с 2 циклами, такой как ступени 112, показанные на фиг.2, в котором ступень 112 выборки реализует смещение с упреждающим просмотром выборки BTAC относительно выборки iCache. Таблица согласно фиг.4 аналогична таковой на фиг.3 в том, что обе используют одну и ту же нотацию. Смещение, представленное на фиг.4, однако, устраняет затраченные впустую циклы обработки выборок iCache.
В примере на фиг.4 смещение между обработкой для ступеней выборки iCache и ступеней выборки BTAC соответствует адресу одной команды. Для целей описания смещение представлено приращением адреса выборки. Как отмечено выше, те же самые результаты могут быть достигнуты уменьшающим смещением адреса записи BTAC.
В течение цикла 1 обработки ступень iCache F1 выполняет свою связанную с выборкой обработку в отношении первого адреса A, однако ступень F1 BTAC выполняет свою связанную с выборкой обработку в отношении второго адреса B. Эти две ступени F1 передают соответствующие результаты на соответствующие ступени F2 для обработки, относящейся к А и B соответственно во втором цикле. В течение второго цикла ступень iCache F1 выполняет свою связанную с выборкой обработку в отношении второго адреса B и ступень F1 BTAC выполняет свою связанную с выборкой обработку в отношении третьего адреса C.
Ступень BTAC F2 завершает свою обработку в отношении второго адреса B в конце второго цикла. Так как в этом примере вторая команда B является командой перехода, для которой BTAC 27 хранит адрес Z целевой ветви, ступень BTAC F2 конвейера BTAC находит попадание и выдает целевой адрес Z во втором цикле. Целевой адрес Z становится доступным и обрабатывается как адрес выборки команды на ступени iCache F1 в следующем цикле обработки, то есть в третьем цикле. Следовательно, ступени конвейера iCache могут обрабатывать команду, соответствующую целевому адресу ветвления, немедленно, без необходимости начинать обработку следующего последовательного адреса.
Может все же присутствовать некоторая ненужная обработка следующего последовательного адреса на ступенях конвейера BTAC (как представлено обведенным в кружок адресом C). Однако из-за низкой частоты возникновения команд перехода, в частности сдвоенных принятых (выбранных) команд ветвления, очищение данных для такой ненужной обработки в конвейере BTAC имеет относительно небольшое воздействие на общую производительность процессора.
Должно быть очевидно из рассмотрения этого простого примера согласно фиг.2 и 4, что вначале команды, выбранные из iCache 21 в начальном(ых) цикле(ах), соответствующих смещению, не имеют соответствующей выборки BTAC. Как правило, первая команда не является ветвлением, так что это не является проблематичным. Однако, когда количество циклов выборки BTAC увеличивается и сопровождающее смещение увеличивается, может быть желательно избежать операций ветвления в первой последовательности команд перед первым выполнением (проходом) смещения BTAC.
На фиг.5 и 6 показана конвейерная обработка и ассоциированная синхронизация для процессора, в котором операции выборки BTAC занимают три цикла обработки. Хотя циклы iCache и BTAC не могут быть всегда одинаковыми, для простоты описания выборка команды из iCache аналогично в этом примере требует трех циклов. По существу, ступень 113 Выборки может рассматриваться как конвейерная. Хотя ступени выборки могут быть объединены, для этого примера предполагается, что каждый тип выборки выполняется в двух отдельных ступенях конвейера и конвейер выборки iCache работает параллельно со ступенями, формирующими конвейер выборки BTAC. Каждый из конвейеров поэтому состоит из трех ступеней.
Каждая ступень конвейера выборки 113 выполняет различную функцию, необходимую при полной обработке каждой команды программы. Первая ступень, относящаяся к обработке выборки команды (iCache F1), принимает адрес команды (iAddress), выполняет его функциональную обработку, чтобы начать выборку адресованной команды, и передает свои результаты ко второй ступени, относящейся к обработке выборки команды (iCache F2). В течение следующего цикла ступень iCache F1 принимает адрес другой команды, в то время как ступень iCache F2 выполняет свою обработку выборки в отношении первого адреса и передает результаты к следующей ступени. В течение третьего цикла ступень iCache F1 принимает адрес другой команды, в то время как ступень iCache F2 выполняет свою обработку выборки в отношении второго адреса, и третья ступень, связанная с обработкой выборки команды (iCache F3), завершает обработку в отношении адреса первой команды и передает результаты к ступени 13 Декодирования.
Параллельно первая ступень, связанная с обработкой выборки целевого адреса (BTAC) (F1 BTAC), принимает адрес выборки BTAC, выполняет его функциональную обработку и передает свои результаты ко второй ступени, относящейся к обработке выборки команды (F2 BTAC). В течение следующего цикла ступени BTAC F1 принимает адрес другой команды, в то время как ступень BTAC F2 выполняет свою обработку выборки в отношении первого адреса и передает результаты к следующей ступени. В течение третьего цикла F1 BTAC принимает адрес еще одной команды, в то время как BTAC F2 выполняет свою обработку выборки, связанную со вторым адресом BTAC, и третья ступень, связанная с обработкой выборки команды (F3 BTAC), завершает обработку в отношении первого адреса BTAC и передает результаты к ступени 13 Декодирования.
Фиг.6 является таблицей или временной диаграммой, представляющей синхронизацию циклов и ассоциированную обработку в ступени выборки с 3 циклами, такой как та, что показана на фиг.5, в которой конвейер 113 ступени выборки реализует смещение с упреждающим просмотром для выборки BTAC относительно выборки iCache, соответствующее двум адресам. Таблица фиг.6 аналогична таковой на фиг.4 в том, что использует аналогичную нотацию. В этом примере с 3 циклами для удобства предполагают, что третья последовательная команда C является командой перехода, для которой целевой адрес уже сохранен в BTAC 27.
В примере согласно фиг.6 смещение между обработкой для ступеней выборки iCache и ступеней выборки BTAC соответствует двум адресам команды. Для целей описания смещение представлено приращением адреса выборки. Как отмечено выше, те же самые результаты могут быть достигнуты уменьшенным смещением адреса записи BTAC.
В течение обработки цикла 1 ступень iCache F1 выполняет свою соответствующую выборку, относящуюся к обработке первого адреса A, однако ступень F1 BTAC выполняет свою выборку, относящуюся к обработке первого адреса C. Две ступени F1 передают соответствующие результаты к соответствующим ступеням F2 для обработки в отношении А и C соответственно во втором цикле. В течение второго цикла ступень iCache F1 выполняет свою выборку, связанную с обработкой в отношении второго адреса B, и ступень iCache F2 выполняет свою выборку, связанную с обработкой в отношении первого адреса A. В течение этого же цикла ступень BTAC F2 выполняет свою выборку, связанную с обработкой в отношении адреса C.
В третьем цикле обработки ступень iCache F1 обрабатывает третий адрес C, ступень iCache F2 свою выборку, связанную с обработкой в отношении адреса B, и ступень iCache F3 выполняет свою выборку, связанную с обработкой в отношении адреса A. В то же самое время в конвейере BTAC ступень F3 BTAC завершает обработку в отношении адреса C. В этом примере такая обработка формирует попадание, и выборка BTAC выбирает целевой адрес Z (нижняя строка таблицы).
Так как команда C является командой перехода, для которой BTAC 27 хранит адрес Z целевой ветви, ступень F3 BTAC конвейера BTAC обнаруживает попадание и выдает целевой адрес Z в третьем цикле. Целевой адрес Z становится доступным и обрабатывается как адрес выборки команды в ступени iCache F1 в следующем цикле обработки, то есть в четвертом цикле в нашем примере. Следовательно, ступени конвейера iCache могут обрабатывать команду, соответствующую целевому адресу ветвления, немедленно, без ненужного начала обработки следующего последовательного адреса.
Должно быть отмечено, что выборка BTAC с упреждающим просмотром может быть осуществлена в любом конвейерном процессоре, имеющем iCache и BTAC. Ступень Выборки не должна быть конвейерной, или если она конвейерная, то нет необходимости, чтобы ступень Выборки была конвейеризована способом, показанным в примерах на фиг.2 и 5. Преимущества смещения для обеспечения выборки BTAC с упреждающим просмотром могут быть реализованы в любом процессоре, в котором операция выборки требует двух или более циклов обработки.
В этих примерах циклы обработки, в которых ступень Выборки начинает выборку iCache, влечет за собой соответствующую выборку BTAC (или выборка BTAC влечет за собой выборку iCache) на один или более циклов обработки, определенных смещением, то есть, скажем, на единицу меньше числа циклов обработки, чем требуется для выполнения выборки BTAC. Например, на фиг.4 ступень iCache F1 начинает выборку команды перехода B в цикле 2, через один цикл после соответствующего начала выборки для целевого адреса B ступенью F1 BTAC. В этом первом примере выборка BTAC требует двух циклов. Точно так же на фиг.6 ступень iCache F1 начинает выборку команды перехода C в цикле 3, через два цикла после соответствующего начала выборки для целевого адреса C ступенью F1 BTAC. В примере на фиг.5 и 6 выборка BTAC требует трех циклов обработки. В каждом случае не имеется ненужной промежуточной обработки при обработке выборки iCache.
В примерах на фиг.2-6, описанных выше, принималось, что смещение использовало адрес для выборки BTAC, который был с опережением или впереди адреса, используемого для выборки iCache. Чтобы осуществлять такую операцию в течение обработки выборки, логика выборки будет осуществлять приращение адреса. По существу, когда ступень 11 Выборки принимает адрес для выборки команды, она использует этот адрес как адрес команды iCache, но логика (логическая схема) увеличивает этот адрес, чтобы сформировать адрес для выборки BTAC. Фиг.7 изображает функциональную диаграмму элементов, вовлеченных в такую операцию выборки, используя приращение адреса выборки, чтобы получить адрес для выборки BTAC. Для простоты описания другие элементы конвейера были опущены.
Как показано, логика (логическая схема) 71 в ступени Выборки выдает адрес выборки для использования при обращении как к iCache 21, так и к BTAC 27. Адрес выборки из логики 71 используется непосредственно как адрес для обращения к iCache. При нормальной обработке ступень Выборки выполнит два или более циклов обработки, чтобы получить соответствующую команду из iCache 21. Команда из iCache 21 загружается в регистр 73 и/или выдается к логике 71 для передачи к ступени Декодирования. Как отмечено ранее, часть 31 из логики декодирования команды вычислит целевой адрес в течение обработки команды в ступени 13 Декодирования, и логика ступень 17 выполнения будет включать в себя логику 33 для определения, была ли ветвь принята (выбрана). Если да, то обработка будет включать в себя операцию записи (логика, обозначенная 35 на фиг.1), чтобы записывать вычисленный целевой адрес ветвления в BTAC 27. В этом примере операция записи не изменяется.
Однако ступень Выборки включает в себя логическую схему 291 (включенную в или ассоциированную с логикой 71 ступени выборки) для приращения адреса выборки на соответствующую величину смещения, чтобы сформировать адрес выборки BTAC. В примере выборки с 2 циклами согласно фиг.2 и 4 схема 291 будет увеличивать адрес выборки на одно адресное значение, так чтобы выборка BTAC привела к выборке iCache за один цикл. В примере выборки с 3 циклами на фиг.5 и 6 схема 291 будет увеличивать адрес выборки на два адресных значения, так чтобы выборка BTAC привела к выборке iCache за два цикла. Таким образом, ступень Выборки выполнит два или более циклов обработки, чтобы определить, имеется ли попадание BTAC, соответствующее соответствующей будущей команде, и если да, то извлечет целевой адрес кэшируемого ветвления из BTAC 27. Целевой адрес загружается в регистр 75 и выдается к логике 71. Логика 71 принимает этот целевой адрес ветвления достаточно рано, чтобы использовать этот адрес в качестве следующего адреса выборки в следующем цикле обработки выборки (см. например, фиг.4 и 6). Хотя этот путь не показывается для удобства, результирующий целевой адрес также обычно передается на ступень Декодирования с соответствующей командой перехода, чтобы облегчить дальнейшую обработку команды перехода в конвейере.
В качестве альтернативы приращению адреса в течение операции выборки, обеспечивающей желательную выборку BTAC с упреждающим просмотром, также возможно модифицировать адрес BTAC целевых данных ветвления при записи данных в BTAC 27. Если ассоциированный адрес команды уменьшается, когда этот адрес и целевой адрес ветвления записываются в память, последующая выборка из BTAC на основании текущего адреса команды будет приводить к таковому выборки команды перехода из iCache. Если уменьшение адреса является подходящим, то есть смещение адреса на единицу меньше, чем количество циклов, требуемых для выборки BTAC, то выборка команд из iCache 21 и любых ассоциированных целевых адресов из BTAC 27 будет точно такой же, как в более ранних примерах. На практике часто проще осуществить смещение посредством модификации адреса записи, когда имеется ветвь, выбранная в течение выполнения, вместо приращения адреса выборки каждый раз в течение операций выборки.
Фиг.8 изображает функциональную диаграмму элементов, вовлеченных в такую операцию выборки, используя уменьшение адреса целевых данных при записи вычисленного адресата ветвления BTAC. Для простоты описания другие элементы конвейера были опущены. Как показано, логика 71 в ступени Выборки обеспечивает адрес выборки для использования при обращении и к iCache 21, и к BTAC 27. В этом примере обе выборки используют один и тот же адрес, то есть и для выборки команды из iCache 21, и для обращения к BTAC 27.
Ступень Выборки выполнит два или более циклов обработки, чтобы получить соответствующую команду из iCache 21. Команда из iCache 21 загружается в регистр 73 и/или выдается к логике 71 для передачи к ступени Декодирования. Как отмечено выше, часть 31 логики декодирования команды будет вычислять целевой адрес в течение обработки команды в ступени 13 Декодирования; и логика ступени 17 выполнения будет включать в себя логику 33, чтобы определить, должна ли быть ветвь принята (выбрана). Если да, то обработка будет включать в себя операцию записи, чтобы записывать вычисленный целевой адрес ветвления в BTAC 27.
В этом примере операция записи модифицирована. В частности, логика записи в ступени Выполнения включает в себя логическую схему 292 уменьшения (-) Смещения. Обычно адрес записи, используемый для записи данных целевого адреса в BTAC 27, является адресом команды перехода, которая сформировала адрес ветвления. В примере на фиг.8, однако, схема 292 уменьшает этот адрес на соответствующую величину смещения. Для конвейерного процессора, реализующего выборку с 2 циклами, схема 292 будет уменьшать адрес записи на единичное значение адреса. Для процессора, реализующего выборку с 3 циклами, схема 292 будет уменьшать адрес записи на два адреса.
Теперь снова рассмотрим операцию выборки. Когда логика 71 формирует адрес выборки, этот адрес указывает на текущую желательную команду в iCache 21. Однако из-за уменьшения адреса записи для записи целевых данных в BTAC 27 адрес, используемый в выборке, фактически соответствует адресу более поздней команды, определенной величиной смещения. Если смещение равно одному адресному значению, адрес выборки фактически указывает на потенциальное попадание в BTAC для следующей команды, которая должна быть извлечена из iCache 21. Точно так же, если смещение равно двум адресам, адрес выборки фактически указывает на потенциальное попадание BTAC для двух команд перед адресом, в настоящее время извлекаемым из iCache 21.
Таким образом, ступень Выборки будет выполнять два или более циклов обработки, чтобы определить, имеется ли попадание в BTAC, соответствующее подходящей будущей команде, и если да, извлекать кэшируемый целевой адрес ветвления из BTAC 27. Целевой адрес загружается в регистр 75 и выдается к логике 71. Логика 71 принимает целевой адрес ветвления достаточно рано, чтобы использовать этот адрес в качестве следующего адреса выборки в следующем цикле обработки выборки после того, как она инициализирует выборку iCache для соответствующей команды перехода (см., например, фиг.4 и 6). Хотя путь не показан для удобства, результирующий целевой адрес также обычно передается ступени Декодирования с соответствующей командой перехода, чтобы облегчить обработку команды перехода далее ниже по конвейеру.
Хотя примеры относятся к обработке выборки из BTAC за два и три цикла и соответствующим смещениям, специалистам очевидно, что описание с легкостью адаптируется для обработки выборки, в которой выборка BTAC использует большее количество циклов. В каждом случае оптимальное смещение может быть на единицу меньше, чем количество циклов в выборке BTAC. Однако в начале последовательности выборки некоторое количество команд, соответствующих этому смещению, не должно включать в себя команду перехода, чтобы избежать пропуск попадания BTAC. Если команда перехода включена ранее, первое выполнение программы может обработать команду перехода как ту, для которой не имеется попадания BTAC (ветвь не является предварительно принятой), и программа может работать обычным способом, но без усовершенствования работы, которое иначе должно обеспечиваться при обнаружении попадания в BTAC.
В то время как выше описано то, что, как рассматривается, является наилучшим режимом и/или другими примерами, понимается, что различные модификации могут быть сделаны и что сущность, раскрытая здесь, может быть осуществлена в различных формах и примерах, и что описание может применяться в многочисленных приложениях, только некоторые из которых были описаны здесь. Предполагается нижеследующей формулой изобретения охватывать любое и все приложения, модификации и изменения, которые попадают в объем истинного объема настоящего описания.
Claims (30)
1. Способ выборки команд для использования в конвейерном процессоре, содержащий:
выборку команд из кэша команд;
в течение каждой выборки команды одновременное обращение к кэшу целевого адреса ветвления (ВТАС), чтобы определить, хранит ли ВТАС целевой адрес ветвления, причем каждое обращение к ВТАС содержит по меньшей мере два цикла обработки; и
выполнение смещения операций обращения на заранее определенную величину относительно упомянутых операций выборки, чтобы начать обращение к ВТАС в отношении команды перехода по меньшей мере за один цикл перед инициированием выборки команды перехода из кэша команд.
выборку команд из кэша команд;
в течение каждой выборки команды одновременное обращение к кэшу целевого адреса ветвления (ВТАС), чтобы определить, хранит ли ВТАС целевой адрес ветвления, причем каждое обращение к ВТАС содержит по меньшей мере два цикла обработки; и
выполнение смещения операций обращения на заранее определенную величину относительно упомянутых операций выборки, чтобы начать обращение к ВТАС в отношении команды перехода по меньшей мере за один цикл перед инициированием выборки команды перехода из кэша команд.
2. Способ по п.1, в котором:
каждая выборка из кэша команд содержит формирование адреса выборки для команды, которая должна быть выбрана;
причем выполнение смещения содержит приращение каждого адреса выборки на заранее определенную величину; и
каждое обращение к ВТАС содержит выборку из ВТАС, используя увеличенный адрес выборки, полученный в результате смещения.
каждая выборка из кэша команд содержит формирование адреса выборки для команды, которая должна быть выбрана;
причем выполнение смещения содержит приращение каждого адреса выборки на заранее определенную величину; и
каждое обращение к ВТАС содержит выборку из ВТАС, используя увеличенный адрес выборки, полученный в результате смещения.
3. Способ по п.1, в котором:
выполнение смещения содержит уменьшение адреса для команды перехода и запись целевого адреса ветвления и уменьшенного адреса в ВТАС;
способ дополнительно содержит в течение каждого цикла формирование адреса выборки для команды, которая должна быть выбрана; и
выборку и обращение, начатые в каждом цикле, причем оба используют адрес выборки, сформированный в течение цикла.
выполнение смещения содержит уменьшение адреса для команды перехода и запись целевого адреса ветвления и уменьшенного адреса в ВТАС;
способ дополнительно содержит в течение каждого цикла формирование адреса выборки для команды, которая должна быть выбрана; и
выборку и обращение, начатые в каждом цикле, причем оба используют адрес выборки, сформированный в течение цикла.
4. Способ по п.1, в котором заранее определенная величина смещения является достаточной, чтобы разрешить выборку целевого адреса ветвления, соответствующего команде перехода, из ВТАС для использования в последующей выборке команды, начинающейся в цикле обработки, непосредственно после цикла обработки, в котором выборка команды начала выборку команды перехода.
5. Способ по п.4, в котором заранее определенная величина является разностью адресов между выборкой из кэша команд и обращением к ВТАС равной величине, на единицу меньшей, чем количество циклов в каждом обращении к ВТАС.
6. Способ по п.5, в котором: каждое обращение к ВТАС состоит из двух циклов обработки; и заранее определенная величина является разностью адресов между выборкой команд из кэша команд и обращением к ВТАС, равной одному адресу команды.
7. Способ по п.5, в котором: каждое обращение к ВТАС состоит из трех циклов обработки; и заранее определенная величина является разностью адресов между выборкой команд из кэша команд и обращением к ВТАС, равной двум адресам команды.
8. Способ выборки команд для использования в конвейерном процессоре, содержащий этапы:
начинают выборку первой команды из кэша команд;
одновременно с началом выборки первой команды инициируют выборку в кэше целевого адреса ветвления (ВТАС), чтобы выбрать целевой адрес, соответствующий команде перехода, которая следует за первой командой,
начинают выборку команды перехода из кэша команд;
после начала выборки команды перехода используют целевой адрес, соответствующий команде перехода, чтобы начать выборку целевой команды из кэша команд.
начинают выборку первой команды из кэша команд;
одновременно с началом выборки первой команды инициируют выборку в кэше целевого адреса ветвления (ВТАС), чтобы выбрать целевой адрес, соответствующий команде перехода, которая следует за первой командой,
начинают выборку команды перехода из кэша команд;
после начала выборки команды перехода используют целевой адрес, соответствующий команде перехода, чтобы начать выборку целевой команды из кэша команд.
9. Способ по п.8, в котором выборка в ВТАС требует два или более циклов обработки.
10. Способ по п.9, в котором инициирование выборки в ВТАС предшествует началу выборки команды перехода из кэша команд на один или более циклов обработки.
11. Способ по п.10, в котором один или более циклов обработки, на которые выборка в ВТАС предшествует началу выборки команды перехода из кэша команд, на единицу меньше, чем два или более циклов обработки, требуемых для выборки в ВТАС.
12. Способ по п.8, в котором: выборка первой команды использует адрес выборки; и выборка в ВТАС использует адрес, увеличенный по отношению к упомянутому адресу выборки.
13. Способ по п.8, в котором: выборка первой команды использует адрес выборки; и
одновременная выборка в ВТАС использует этот адрес выборки, адрес ветвления записан в ВТАС с уменьшенным адресом, чтобы соответствовать упомянутому адресу выборки.
одновременная выборка в ВТАС использует этот адрес выборки, адрес ветвления записан в ВТАС с уменьшенным адресом, чтобы соответствовать упомянутому адресу выборки.
14. Способ выборки команд для использования в конвейерном процессоре, содержащий этапы:
в первом цикле обработки начинают выборку первой команды из кэша команд;
в первом цикле обработки инициирование выборки в кэше целевого адреса ветвления (ВТАС), чтобы выбрать целевой адрес, соответствующий команде перехода, которая следует за первой командой через заранее определенную величину,
во втором цикле обработки после первого цикла обработки начинают выборку команды перехода из кэша команд и завершают выборку целевого адреса из ВТАС;
в третьем цикле обработки после второго цикла обработки используют целевой адрес, соответствующий команде перехода, чтобы начать выборку целевой команды из кэша команд.
в первом цикле обработки начинают выборку первой команды из кэша команд;
в первом цикле обработки инициирование выборки в кэше целевого адреса ветвления (ВТАС), чтобы выбрать целевой адрес, соответствующий команде перехода, которая следует за первой командой через заранее определенную величину,
во втором цикле обработки после первого цикла обработки начинают выборку команды перехода из кэша команд и завершают выборку целевого адреса из ВТАС;
в третьем цикле обработки после второго цикла обработки используют целевой адрес, соответствующий команде перехода, чтобы начать выборку целевой команды из кэша команд.
15. Способ по п.14, в котором второй цикл обработки следует за первым циклом обработки через один или более циклов обработки, что на единицу меньше, чем количество из двух или более циклов обработки, требуемых для завершения выборки из ВТАС.
16. Способ по п.14, в котором этап инициирования выборки в ВТАС содержит: приращение адреса команды, используемого в начале выборки первой команды из кэша команд в первом цикле обработки, на заранее определенную величину; и
использование упомянутого увеличенного адреса, чтобы начать выборку в ВТАС, чтобы выбрать целевой адрес, соответствующий команде перехода.
использование упомянутого увеличенного адреса, чтобы начать выборку в ВТАС, чтобы выбрать целевой адрес, соответствующий команде перехода.
17. Способ по п.16, в котором каждое приращение равно величине из одного или более адресов, что на единицу меньше, чем количество из двух или более циклов обработки, требуемых для завершения выборки из ВТАС.
18. Способ по п.14, в котором этап инициирования выборки в ВТАС в первом цикле обработки содержит обращение к ВТАС, используя адрес команды, используемый в начале выборки первой команды из кэша команд в первом цикле обработки; и
адрес, используемый для записи целевого адреса ветвления в ВТАС, был предварительно уменьшен по отношению к адресу команды, используемому для записи команды перехода в кэш команд, на заранее определенную величину, так чтобы адрес целевого адреса в ВТАС соответствовал адресу команды, используемой при начале выборки первой команды из кэша команд в первом цикле обработки.
адрес, используемый для записи целевого адреса ветвления в ВТАС, был предварительно уменьшен по отношению к адресу команды, используемому для записи команды перехода в кэш команд, на заранее определенную величину, так чтобы адрес целевого адреса в ВТАС соответствовал адресу команды, используемой при начале выборки первой команды из кэша команд в первом цикле обработки.
19. Способ по п.18, в котором уменьшение на величину одного или более адресов на единицу меньше, чем количество из двух или более циклов обработки, требуемых для завершения выборки из ВТАС.
20. Процессор, содержащий:
кэш команд для сохранения команд;
кэш целевого адреса ветвления для сохранения целевого адреса ветвления, соответствующего одной из сохраненных команд, которая является командой перехода;
ступень выборки для выборки команд из кэша команд и для выборки целевого адреса ветвления из кэша целевого адреса ветвления;
по меньшей мере одна ступень последующей обработки для выполнения одной или более функций обработки в соответствии с выбранными командами; и
логику для смещения выборки от кэша целевого адреса ветвления перед выборкой команд из кэша команд на величину, связанную с количеством циклов обработки, требуемых для завершения каждой выборки из кэша целевого адреса ветвления.
кэш команд для сохранения команд;
кэш целевого адреса ветвления для сохранения целевого адреса ветвления, соответствующего одной из сохраненных команд, которая является командой перехода;
ступень выборки для выборки команд из кэша команд и для выборки целевого адреса ветвления из кэша целевого адреса ветвления;
по меньшей мере одна ступень последующей обработки для выполнения одной или более функций обработки в соответствии с выбранными командами; и
логику для смещения выборки от кэша целевого адреса ветвления перед выборкой команд из кэша команд на величину, связанную с количеством циклов обработки, требуемых для завершения каждой выборки из кэша целевого адреса ветвления.
21. Процессор по п.20, в котором упомянутая величина является количеством, меньшим на единицу, чем количество циклов обработки, требуемых для завершения каждой выборки из кэша целевого адреса ветвления.
22. Процессор по п.20, в котором: логика содержит логику, связанную со ступенью выборки для приращения адреса, который ступень выборки использует, чтобы осуществить выборку из кэша команд; и
ступень выборки использует этот увеличенный адрес для выполнения выборки из кэша целевого адреса ветвления.
ступень выборки использует этот увеличенный адрес для выполнения выборки из кэша целевого адреса ветвления.
23. Процессор по п.20, в котором: ступень выборки одновременно использует адрес команды как для выборки из кэша команд так и для выборки из кэша целевого адреса ветвления; и эта логика содержит логику для уменьшения адреса команды перехода и использования упомянутого уменьшенного адреса, чтобы записать целевой адрес ветвления в кэш целевого адреса ветвления.
24. Процессор по п.23, в котором логика для уменьшения связана с по меньшей мере одной последующей ступенью обработки.
25. Процессор по п.20, в котором ступень выборки содержит множество конвейерных ступеней обработки.
26. Процессор по п.25, в котором количество циклов обработки, требуемых для завершения каждой выборки из кэша целевого адреса ветвления, равно количеству конвейерных ступеней обработки.
27. Процессор по п.20, в котором по меньшей мере одна последующая ступень обработки содержит: ступень декодирования команд; ступень считывания; ступень выполнения команд; и ступень обратной записи результата.
28. Конвейерный процессор, содержащий:
ступень выборки для выборки команд из кэша команд, в котором одна из команд является командой перехода, и для выборки целевого адреса ветвления, соответствующего команде перехода, из кэша целевого адреса ветвления;
по меньшей мере одна последующая ступень обработки для выполнения одной или более функций обработки в соответствии с выбранными командами; и
средство для смещения выборки из кэша целевого адреса ветвления, так чтобы привести к выборке команд из кэша команд, чтобы компенсировать количество циклов обработки, требуемых для завершения каждой выборки из кэша целевого адреса ветвления.
ступень выборки для выборки команд из кэша команд, в котором одна из команд является командой перехода, и для выборки целевого адреса ветвления, соответствующего команде перехода, из кэша целевого адреса ветвления;
по меньшей мере одна последующая ступень обработки для выполнения одной или более функций обработки в соответствии с выбранными командами; и
средство для смещения выборки из кэша целевого адреса ветвления, так чтобы привести к выборке команд из кэша команд, чтобы компенсировать количество циклов обработки, требуемых для завершения каждой выборки из кэша целевого адреса ветвления.
29. Конвейерный процессор по п.28, в котором ступень выборки содержит множество конвейерных ступеней обработки.
30. Конвейерный процессор по п.28, в котором по меньшей мере одна последующая ступень обработки содержит: ступень декодирования команд; ступень считывания; ступень выполнения команд; и ступень обратной записи результата.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/073,283 | 2005-03-04 | ||
US11/073,283 US20060200655A1 (en) | 2005-03-04 | 2005-03-04 | Forward looking branch target address caching |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2358310C1 true RU2358310C1 (ru) | 2009-06-10 |
Family
ID=36945389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2007136785/09A RU2358310C1 (ru) | 2005-03-04 | 2006-03-03 | Кэширование целевого адреса перехода с упреждающей выборкой |
Country Status (9)
Country | Link |
---|---|
US (1) | US20060200655A1 (ru) |
EP (1) | EP1853997A2 (ru) |
KR (1) | KR20070108939A (ru) |
CN (1) | CN101164043A (ru) |
CA (1) | CA2599724A1 (ru) |
IL (1) | IL185593A0 (ru) |
RU (1) | RU2358310C1 (ru) |
TW (1) | TW200707284A (ru) |
WO (1) | WO2006096569A2 (ru) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7797520B2 (en) * | 2005-06-30 | 2010-09-14 | Arm Limited | Early branch instruction prediction |
US8327115B2 (en) | 2006-04-12 | 2012-12-04 | Soft Machines, Inc. | Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode |
US7917731B2 (en) * | 2006-08-02 | 2011-03-29 | Qualcomm Incorporated | Method and apparatus for prefetching non-sequential instruction addresses |
EP2527972A3 (en) | 2006-11-14 | 2014-08-06 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
JP5145809B2 (ja) * | 2007-07-31 | 2013-02-20 | 日本電気株式会社 | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム |
KR101685247B1 (ko) | 2010-09-17 | 2016-12-09 | 소프트 머신즈, 인크. | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 |
US9678755B2 (en) | 2010-10-12 | 2017-06-13 | Intel Corporation | Instruction sequence buffer to enhance branch prediction efficiency |
EP2689326B1 (en) | 2011-03-25 | 2022-11-16 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
CN108376097B (zh) | 2011-03-25 | 2022-04-15 | 英特尔公司 | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 |
CN103547993B (zh) | 2011-03-25 | 2018-06-26 | 英特尔公司 | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 |
US20140019722A1 (en) * | 2011-03-31 | 2014-01-16 | Renesas Electronics Corporation | Processor and instruction processing method of processor |
TWI603198B (zh) | 2011-05-20 | 2017-10-21 | 英特爾股份有限公司 | 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行 |
WO2012162189A1 (en) | 2011-05-20 | 2012-11-29 | Soft Machines, Inc. | An interconnect structure to support the execution of instruction sequences by a plurality of engines |
WO2013077876A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer |
EP2783280B1 (en) | 2011-11-22 | 2019-09-11 | Intel Corporation | An accelerated code optimizer for a multiengine microprocessor |
US9710399B2 (en) | 2012-07-30 | 2017-07-18 | Intel Corporation | Systems and methods for flushing a cache with modified data |
US9916253B2 (en) | 2012-07-30 | 2018-03-13 | Intel Corporation | Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput |
US9740612B2 (en) | 2012-07-30 | 2017-08-22 | Intel Corporation | Systems and methods for maintaining the coherency of a store coalescing cache and a load cache |
US9229873B2 (en) | 2012-07-30 | 2016-01-05 | Soft Machines, Inc. | Systems and methods for supporting a plurality of load and store accesses of a cache |
US9678882B2 (en) | 2012-10-11 | 2017-06-13 | Intel Corporation | Systems and methods for non-blocking implementation of cache flush instructions |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
CN105247484B (zh) | 2013-03-15 | 2021-02-23 | 英特尔公司 | 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法 |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
EP2972845B1 (en) | 2013-03-15 | 2021-07-07 | Intel Corporation | A method for executing multithreaded instructions grouped onto blocks |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US10664280B2 (en) | 2015-11-09 | 2020-05-26 | MIPS Tech, LLC | Fetch ahead branch target buffer |
CN107479860B (zh) * | 2016-06-07 | 2020-10-09 | 华为技术有限公司 | 一种处理器芯片以及指令缓存的预取方法 |
US10747540B2 (en) | 2016-11-01 | 2020-08-18 | Oracle International Corporation | Hybrid lookahead branch target cache |
US10853076B2 (en) * | 2018-02-21 | 2020-12-01 | Arm Limited | Performing at least two branch predictions for non-contiguous instruction blocks at the same time using a prediction mapping |
US11334495B2 (en) * | 2019-08-23 | 2022-05-17 | Arm Limited | Cache eviction |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
US5987599A (en) * | 1997-03-28 | 1999-11-16 | Intel Corporation | Target instructions prefetch cache |
US6279105B1 (en) * | 1998-10-15 | 2001-08-21 | International Business Machines Corporation | Pipelined two-cycle branch target address cache |
US6895498B2 (en) * | 2001-05-04 | 2005-05-17 | Ip-First, Llc | Apparatus and method for target address replacement in speculative branch target address cache |
US6823444B1 (en) * | 2001-07-03 | 2004-11-23 | Ip-First, Llc | Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap |
-
2005
- 2005-03-04 US US11/073,283 patent/US20060200655A1/en not_active Abandoned
-
2006
- 2006-03-03 KR KR1020077022665A patent/KR20070108939A/ko not_active Application Discontinuation
- 2006-03-03 RU RU2007136785/09A patent/RU2358310C1/ru not_active IP Right Cessation
- 2006-03-03 WO PCT/US2006/007759 patent/WO2006096569A2/en active Application Filing
- 2006-03-03 TW TW095107343A patent/TW200707284A/zh unknown
- 2006-03-03 CN CNA2006800138547A patent/CN101164043A/zh active Pending
- 2006-03-03 CA CA002599724A patent/CA2599724A1/en not_active Abandoned
- 2006-03-03 EP EP06736990A patent/EP1853997A2/en not_active Withdrawn
-
2007
- 2007-08-29 IL IL185593A patent/IL185593A0/en unknown
Also Published As
Publication number | Publication date |
---|---|
CN101164043A (zh) | 2008-04-16 |
TW200707284A (en) | 2007-02-16 |
WO2006096569A2 (en) | 2006-09-14 |
IL185593A0 (en) | 2008-01-06 |
WO2006096569A3 (en) | 2006-12-21 |
US20060200655A1 (en) | 2006-09-07 |
EP1853997A2 (en) | 2007-11-14 |
CA2599724A1 (en) | 2006-09-14 |
KR20070108939A (ko) | 2007-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2358310C1 (ru) | Кэширование целевого адреса перехода с упреждающей выборкой | |
US6553488B2 (en) | Method and apparatus for branch prediction using first and second level branch prediction tables | |
US6338136B1 (en) | Pairing of load-ALU-store with conditional branch | |
US5848269A (en) | Branch predicting mechanism for enhancing accuracy in branch prediction by reference to data | |
US6263427B1 (en) | Branch prediction mechanism | |
RU2417407C2 (ru) | Способы и устройство для моделирования поведения предсказания переходов явного вызова подпрограммы | |
US5131086A (en) | Method and system for executing pipelined three operand construct | |
JP5209633B2 (ja) | ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法 | |
US7516312B2 (en) | Presbyopic branch target prefetch method and apparatus | |
EP2220556B1 (en) | A method and a system for accelerating procedure return sequences | |
EP0655679B1 (en) | Method and apparatus for controlling instruction in pipeline processor | |
US7454602B2 (en) | Pipeline having bifurcated global branch history buffer for indexing branch history table per instruction fetch group | |
US5822577A (en) | Context oriented branch history table | |
US9710269B2 (en) | Early conditional selection of an operand | |
US7640422B2 (en) | System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache | |
RU2450329C2 (ru) | Эффективный механизм сохранения адреса возврата из прерывания | |
US20050216713A1 (en) | Instruction text controlled selectively stated branches for prediction via a branch target buffer | |
US20040225866A1 (en) | Branch prediction in a data processing system | |
KR20070108936A (ko) | 조건부 명령어가 실행되지 않을 경우 소스 오퍼랜드를대기하는 것을 중지하는 방법 | |
US7234046B2 (en) | Branch prediction using precedent instruction address of relative offset determined based on branch type and enabling skipping | |
US20080065870A1 (en) | Information processing apparatus | |
US6948054B2 (en) | Simple branch prediction and misprediction recovery method | |
JP3532835B2 (ja) | データ処理装置およびプログラム変換装置 | |
US20080005545A1 (en) | Dynamically shared high-speed jump target predictor | |
US7114063B1 (en) | Condition indicator for use by a conditional branch instruction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20110304 |