Понятие такта
В выполнении любых действий над данными участвуют несколько устройств компьютера. Совершенно очевидно, что действия, в которых участвуют несколь- ко исполнителей (людей, устройств), должны быть согласованы и синхронизи- рованы друг с другом.
В этом смысле можно провести наглядную аналогию меж- ду компьютером и оркестром музыкальных инструментов. Чтобы оркестр мог исполнить какую-либо мелодию, музыканты должны действовать строго син- хронно, несогласованная игра представляет собой какофонию, а не мелодию. За синхронизацию игры музыкантов в оркестре отвечает дирижер, который в опре- деленном темпе делает взмахи дирижерской палочкой. В компьютере такую же роль играет специальное устройство — тактовый генератор, который через рав- ные промежутки времени вырабатывает импульсы синхронизации — синхроим- пульсы, служащие ориентирами во времени и используемые для координации всеми участвующими в выполнении действия устройствами (рис. 3.1). Длитель- ности вырабатываемых импульсов также одинаковы.
Промежуток времени от начала одного импульса синхронизации до начала следую- щего за ним импульса называется тактом. Такты обладают равными длительностями с высокой степенью точности.
Выполнение процессором любых действий всегда происходит во время некото- рой части такта, а за ней следует пауза, в течение которой ничего не происхо- дит. Наличие такой паузы является принципиальным фактором, обусловленным физическими законами, которые управляют работой процессора. Аналогичным образом обстоят дела при забивании гвоздя молотком. Удары по шляпке гвоздя чередуются с периодами, во время которых молоток поднимается вверх для на- несения удара. Забить гвоздь без таких периодов невозможно.
Хотя движение молотка происходит непрерывно, можно считать, что процесс забивания гвоздя в целом распадается на ряд дискретных действий — ударов, происходящих мгно- венно в моменты соприкосновения молотка и шляпки гвоздя. Точно так же, обсу- ждая выполнение процессором определенной в программе последовательности действий, можно считать, что любые длящиеся внутри такта действия происхо- дят мгновенно в моменты времени tQy tu i2·.·, соответствующие границам тактов. Строго говоря, синхроимпульсы, которые считаются границами тактов, также имеют отличную от нуля длительность, поэтому моменты времени tθУ tь t2. сле- дует привязывать к началам тактовых импульсов.
Синхроимпульсы тактового генератора Рис. 3.1. К понятию такта
С понятием такта связана тактовая частота — одна из важнейших технических характеристик различных устройств компьютера.
Тактовая частота представляет собой техническую характеристику отдельных устройств компьютера, которая равна количеству тактов, управляющих работой устройства, в единицу времени. Единицей измерения тактовой частоты является герц, равный одному такту в секунду.
Тактовая частота является одним из главных факторов, определяющих скорость обработки данных компьютером. Первые персональные компьютеры работали на частотах 5-10 МГц. В настоящее время процессоры компьютеров работают с тактовыми частотами от сотен мегагерц до 3-4 ГГц. Возможно, в недалеком бу- дущем появятся процессоры с тактовой частотой порядка 10 ГГц. Однако следует заметить, что, согласно теоретическим оценкам, процессоры, выполненные по современным технологиям, не смогут превзойти частот 30-40 ГГц.
Как известно, программа в общем случае представляет собой некоторый текст, определяющий последовательность действий по обработке данных.
Такой текст, так же как и обрабатываемые данные, кодируется в компьютере с помощью двоичного кода. То есть программы, как и данные, представлены в компьютере в дискретном виде.
Для обеспечения задаваемого программой порядка обработки данных в компью- тере формируются и используются различные вспомогательные значения и при- знаки, так или иначе характеризующие результаты обработки и используемые для определения дальнейшего порядка выполнения действий. Так, например, при вычислении любых числовых значений формируется признак нулевого результата. Этот признак имеет значение 1, если в результате вычислений полу- чается 0, и значение 0, если результат ненулевой. Анализ этого признака, напри- мер, при вычислении знаменателя дроби, позволяет избежать бессмысленного деления на нуль. Упомянутые значения и признаки, так же как и выполняемая программа в целом, представлены в компьютере двоичным кодом, то есть явля- ются дискретными.
Совокупность, состоящая из двоичного кода выполняемой программы, значений обрабатываемых дискретных данных, а также набора дискретных значений и при- знаков, которые используются для управления процессом обработки, образует внутреннее состояние компьютера.
С точки зрения введенного понятия внутреннего состояния компьютера, можно считать, что в моменты времени i0, tu t2. происходит мгновенный переход компью- тера из одного внутреннего состояния в другое — из состояния, соответствую- щего значениям обрабатываемых данных и признаков до выполнения действия, в состояние, соответствующее значениям данных и признаков после выполнения этого действия. Таким образом, множество внутренних состояний компьютера также является дискретным. В связи с этим говорят, что компьютер в целом яв- ляется дискретным устройством.
Устройства, обеспечивающие работу с дискретными данными или сигналами, обла- дающие дискретным множеством внутренних состояний, а также выполняющие действия в дискретные моменты времени, называются дискретными. Компьютер в целом относится к группе дискретных устройств.
Такт как единица измерения
С коллегами обсуждаем до смешного простой вопрос: чем является такт работы процессора? Википедия уточняет:
В самом первом приближении тактовая частота характеризует производительность подсистемы (процессора, памяти и пр.), то есть количество выполняемых операций в секунду.
IMHO более правильно обратить внимание на другую цитату Такт процессора или такт ядра процессора — промежуток между двумя импульсами тактового генератора, который синхронизирует выполнение всех операций процессора. из той же Википедии. — Тут можно добавить, что в разных устройствах процессора могут использоваться разные тактовые частоты (обычно кратные). Напрямую связывать один такт процессора ни с изменением одного бита, ни с одной ассемблерной операцией в большинстве современных процессоров не следует.
Тем более, современные «суперскалярные» архитектуры означают, что за «один такт» происходит кусочек отработки целой цепочки команд, некоторые из которых могут и никогда не быть выполнены на самом деле. В общем, такт — эфемерное понятие.
@VladD, почему эфемерное? Вполне ощутимое, а вот время обработки отдельной инструкции — да, вполне может варьироваться от 0 до каких-то космических значений (если, например, случился cache miss или чего похлеще).
@gecube: эфемерность его в том, что оно мало отражается в ощутимых программистом характеристиках компьютера. Например, скорости вычисления данной операции (как мы выяснили, она «размазана» по нескольким тактам).
4 ответа 4
Такт работы — это такт работы, т.е. промежуток времени между двумя соседними «пиками» некоего задающего тактового сигнала. Увы, без него не обойтись, т.к. схемы у нас цифровые и нам нужно фиксировать состояние сигналов. Физически к изменению битов и выполнению команд такт относится опосредованно. Во-первых, разные блоки процессора работают на разной частоте. Но если рассматривать простейший случай, то одна команда выполняется минимум за один такт работы исполнительного у-ва. Всякие команды типа умножения или деления могут выполняться за сотни тактов. Во-вторых, общение с внешним миром у процессора происходит через шины, например, шину данных. У этой шины есть разрядность, например, 64 бит. Опять же в простейшем случае мы можем по этой шине передать за единицу времени кол-во информации равное произведению частоты на битность. Т.е. за такт можно сделать одну передачу, при этом все 64 бита передаются одновременно
Еще раз поясню, что «кол-во тактов» — это по сути единица измерения времени. Связь со временем через частоту:
@gecube, а дополните свой ответ рассказом о конвейере исполнения команд, суперскалярности и разных задержках при обращении к разным уровням памяти (кэшам).
Почему процессор работает тактами?
Давайте изобретём компьютер! С чего мы начнём? Конечно же с идеи и модели. Что должен делать компьютер? — Исполнять какой-то алгоритм. Алгоритм нельзя выполнить мгновенно весь (позже разберём кейс, когда всё-таки в некотором смысле можно), он состоит из шагов, а конкретный шаг состоит ещё из каких-то элементарных действий, которые наш компьютер умеет делать сам за ограниченное время: имеет для этого все аппаратные средства. Количество этих действий чётко детерминировано, иначе был бы возможен компьютер, который умеет делать абсолютно всё. (Тут, кстати, по пути понятны потенциальные возможности компьютера, и чем они ограничены)
Как только мы говорим про детерминированный набор возможных действий и программирование последовательности выполнения этих действий, мы тут же попадаем в ловушку дискретности. Компьютеры — это дискретные автоматы. 1) Прочитать, какое действие и с какими параметрами будет следующим; 2) выполнить его; 3) вернуться к 1. Вот основные такты, которые выполняет компьютер.
На практике такты устроены сложнее и содержат этапы, передающие шины, по которым передаются данные и управляющие сигналы во владение разным устройствам: процессору, памяти, устройствам ввода-вывода. Но это общий вопрос и нет нужды эти такты расписывать. Для понимания идеи достаточно, тем более что в машинах с разной архитектурой они отличаются.
А можно ли обойтись без тактов?
Давайте вообразим машину, которая на любой входной сигнал мгновенно выдаёт ответ. Такими машинами можно считать нейронные сети. (Не важно что их внутреннее устройство и реализация могут быть основаны на дискретных машинах. Возьмём реализацию как данность. Ведь есть и живые биологические нейронные сети.) Теперь нет никаких тактов. На каждое изменение входной информации, например, картинки с видеокамеры, есть ответ, в котором, например, факт наличия улыбающегося лица. Такая программа, например есть во многих современных фотоаппаратах, которые осуществляют съёмку с задержкой, ожидая пока герои снимка улыбнуться.
Тут конечно есть небольшое лукавство. Нейронной сети тоже требуется некоторое время на распознавание образа. Это можно условно считать тактом, но если входные сигналы меняют своё состояние с меньшей частотой, то пользователь ни о каких этих тактах знать и не будет. Для него такая машина будет выглядеть как машина, работающая непрерывно.
Резюме: Я показал, каким путём развитие вычислительной техники пришло к дискретным детерминированным компьютерам, а также другой взгляд на компьютеры (в широком смысле) который даёт возможность до определённой степени вырваться из плена тактов.
Кстати аналоговые вычислители тоже существовали, они решали очень ограниченный круг задач, но были свободны от тактов. Т.е. делали всё за один такт. Полюбоваться на них можно в Бонне в музее Arithmeum. Например, там есть арифмометр, который умножает за один оборот ручки. Действующий.