Современные процессоры синхронизируются: каждая операция занимает некоторое целое число тактов. Конструкторы процессора определяют длительность тактового цикла. Здесь есть два соображения: во-первых, скорость аппаратного обеспечения, например, измеренная как задержка одного NAND-шлюза. Это зависит от используемой технологии и таких компромиссов, как скорость и энергопотребление. Это не зависит от конструкции процессора. Во-вторых, разработчики решают, что длина тактового цикла равна n задержкам одиночного NAND-шлюза, где n может быть 10, или 30, или любым другим значением.
Этот выбор n ограничивает, насколько сложными могут быть операции, которые могут быть выполнены за один цикл. Там будут операции, которые могут быть выполнены за 16, но не с 15 задержками NAND. Таким образом, выбор n = 16 означает, что такая операция может быть выполнена в цикле, выбор n = 15 означает, что она не может быть выполнена.
Дизайнеры выберут n так, чтобы многие важные операции можно было выполнить за один, или, может быть, два или три цикла. n будет выбран локально оптимальным: если вы замените n на n-1, то большинство операций будет немного быстрее, но некоторые (те, которые действительно нуждаются в полных задержках n NAND) будут медленнее. Если бы несколько операций замедлились, так что общее выполнение программы было бы в среднем быстрее, то вы бы выбрали n-1. Вы могли также выбрать n + 1. Это делает большинство операций немного медленнее, но если у вас есть много операций, которые не могут быть выполнены в течение n задержек, но могут быть выполнены в течение n + 1 задержек, то это сделает процессор быстрее в целом.
Теперь ваш вопрос: сложение и вычитание являются настолько распространенными операциями, что вы хотите иметь возможность выполнять их за один цикл. В результате не имеет значения, что AND, OR и т. Д. Могут выполняться быстрее: им все еще нужен этот один цикл. Конечно, у устройства, «вычисляющего» И, ИЛИ и т. Д., Есть много времени, чтобы крутить пальцы, но с этим ничего не поделаешь.
Обратите внимание, что дело не только в том, может ли операция быть выполнена в течение n NAND-задержек или нет: например, добавление может быть сделано быстрее, будучи немного умным, еще быстрее, будучи очень умным, все еще немного быстрее, вкладывая необычайное количество оборудования и, наконец, процессор может иметь смесь очень быстрых, очень дорогих и немного более медленных и более дешевых схем, поэтому есть возможность выполнить одну операцию достаточно быстро, потратив на нее больше денег.
Теперь вы можете сделать тактовую частоту настолько высокой / цикл настолько коротким, чтобы за один цикл выполнялись только простые битовые операции, а все остальное - за два или более. Это, скорее всего, замедлит процессор. Для операций, которые занимают два цикла, обычно бывает непросто переместить незавершенную инструкцию из одного цикла в другой, поэтому два цикла не означают, что у вас вдвое больше времени для выполнения. Таким образом, чтобы сделать сложение в два цикла, вы не можете удвоить тактовую частоту.