Что такое генерация в компьютере

Обновлено: 06.07.2024

Узнайте, как ваш компьютер может работать в качестве генератора сигналов произвольной формы. В данной статье мы будем использовать Scilab для генерирования цифровых сигналов, которые могут быть преобразованы в аналоговые сигналы с помощью звукового аппаратного обеспечения компьютера.

В последнее время я пишу статьи, которые демонстрируют использование Scilab для различных задач обработки сигналов. Эксперименты с DSP в такой вычислительной среде чрезвычайно удобны; алгоритмы, используемые в системах связи, датчиках и аудиосистемах, могут быть быстро разработаны и усовершенствованы, а сигналы могут быть тщательно проанализированы во временной и частотной областях.

Следующий шаг – расширить всю эту деятельность по обработке сигналов в область реальных сигналов напряжения, и Scilab делает выполнение этого очень простым (я предполагаю, что ваш компьютер может воспроизводить звук). В настоящее время у меня нет доступа к MATLAB, но я предполагаю, что он обеспечивает эквивалентные функциональные возможности, поэтому я надеюсь, что почти всё в этой статье будет актуально и для пользователей MATLAB. Существует еще одна бесплатная альтернатива MATLAB под названием GNU Octave. Я никогда не использовал его, поэтому я был бы признателен за любые отзывы пользователей Octave о том, как в нем реализовать операции преобразования цифры в аналог, обсуждаемые в этой и следующей статьях.

Вероятно, существует довольно много способов использовать эти возможности преобразования Scilab в аналог (или MATLAB в аналог). Один из вариантов использования, который приходит на ум, – это тестирование высокочастотной части беспроводного передатчика путем генерирования модулирующих сигналов основной полосы частот в Scilab и преобразования их в аналоговые сигналы, которые подаются на радиочастотную схему. В данной статье мы остановимся на более общем приложении: использование типового компьютера в качестве генератора сигналов произвольной формы.

Прежде чем перейти к основной части статьи, взгляните на предыдущие статьи по этой теме, чтобы ознакомиться с контекстом обсуждения.

Предыдущие статьи о цифровой обработке сигналов в Scilab

Базовая система

Единственное, что вам нужно из дополнительного аппаратного обеспечения, – это аудиокабель с разъемами на обоих концах. Один конец подключается к разъему наушников на компьютере, а второй конец подает сигнал на соответствующую схему (или на осциллограф). На следующей фотографии показано, как я подключил пробник осциллографа Tektronix к аудиоразъему.

Подключение аудиокабеля с выхода компьютера к осциллографу для тестирования генерируемых сигналов

Подключение аудиокабеля с выхода компьютера к осциллографу для тестирования генерируемых сигналов

Функция sound() также принимает аргумент для необходимой частоты дискретизации. Если вы не указываете частоту дискретизации, то она использует значение по умолчанию, которое составляет 22,05 кГц.

Пока мы говорим о частоте дискретизации, я должен упомянуть о серьезном ограничении, которое затрагивает любые попытки использовать звуковое оборудование компьютера в качестве генератора сигналов. Это аппаратное обеспечение предназначено для аудиосигналов, и, следовательно, его максимальная частота дискретизации была выбрана в соответствии с качеством звука, которое должно обеспечиваться аппаратным обеспечением. У меня сложилось впечатление, что в настоящее время многие компьютеры поддерживают частоты дискретизации до 192 кГц, но четкую информацию по этому вопросу найти трудно.

Генерирование синусоиды

Давайте начнем с простого примера. Мы сгенерируем синусоиду 441 Гц и рассмотрим некоторые осциллограммы.

Массив n , и следовательно, и массив Signal_OneCycle , имеет длину 50. Период сэмплирования составляет 1/22050 ≈ 45 мкс. Таким образом, один период сигнала длится приблизительно 50 × 45 мкс = 2.25 мс. Я предпочитаю, чтобы общая продолжительность составляла примерно 10 секунд, чтобы у меня было достаточно времени, чтобы посмотреть на сигнал на осциллографе. Следующий цикл for используется для расширения массива Signal_OneCycle до массива, длина которого соответствует требуемой длительности сигнала.

Теперь мы готовы генерировать сигнал. Нам не нужно указывать частоту дискретизации, потому что частота дискретизации, которую я использовал (22,05 кГц) равна значению по умолчанию.

Следующая осциллограмма показывает сгенерированный сигнал. Внизу мы можете увидеть измерения размаха (пик-пик) сигнала и частоты. Амплитуда сигнала, взятого напрямую с разъема наушников, вероятно, будет достаточной для многих приложений; если вам нужно более высокое напряжение, то будет достаточно простой схемы на операционном усилителе.

Осциллограмма сгенерированной синусоиды

Осциллограмма сгенерированной синусоиды

Одним особенно удобным аспектом генерирования аналоговых сигналов таким способом является то, что функция регулировки громкость на компьютере дает вам превосходный контроль над амплитудой сигнала. Следующие осциллограммы дают представление о взаимосвязи между амплитудой сигнала и выставленной на компьютере громкостью.

Влияние регулировки громкости на компьютере на амплитуду генерируемого сигнала. Вариант 1 Влияние регулировки громкости на компьютере на амплитуду генерируемого сигнала. Вариант 2 Влияние регулировки громкости на компьютере на амплитуду генерируемого сигнала. Вариант 3

Генерирование треугольного сигнала

Следующие команды могут использоваться для генерирования треугольного сигнала. Мы будем использовать ту же частоту (т.е. 441 Гц), то есть длину в 25 выборок.

Сгенерированный треугольный сигнал

Сгенерированный треугольный сигнал

Прежде чем мы закончим, я хочу отметить, что эта система обеспечивает не только удобное управление амплитудой, но и быструю настройку частоты: вы можете изменить частоту аналогового сигнала, не изменяя цифровые значения, а указав другую частоту дискретизации при вызове функции sound() . Например, если указанная частота дискретизации выше исходной частоты дискретизации в 2 раза, то новая частота сигнала будет выше, чем исходная частота, в 2 раза.

Сгенерированный сигнал с частотой вдвое больше исходной частоты Сгенерированный сигнал с частотой вдвое меньше исходной частоты

Заключение

Мы обсудили простой способ, который использует Scilab (или MATLAB), чтобы превратить обычный компьютер в генератор сигналов произвольной формы. В данной статье представлены команды Scilab для генерирования синусоидального и треугольного сигналов, а в следующей статье мы рассмотрим другие типы сигналов.


К сожалению, ваша первая покупка в интернете была скомпрометирована с самого начала: вскоре обнаружится, что якобы безопасный протокол, по которому браузер установил соединение, на самом деле не очень защищён.

Проблема в том, что секретные ключи, которые использовал Netscape, были недостаточно случайными. Их длина составляла всего 40 бит, что означает около триллиона возможных комбинаций. Это кажется большим числом, но хакерам удалось взломать эти коды, даже на компьютерах 1990-х годов, примерно за 30 часов. Якобы случайное число, которое Netscape использовал для генерации секретного ключа, базировалось всего на трёх значениях: времени суток, идентификационном номере процесса и идентификационном номере материнского процесса — все они являются предсказуемыми. Из-за этого злоумышленник имел возможность сократить количество вариантов для перебора и найти нужный ключ гораздо раньше, чем предполагали в Netscape.

Программисты Netscape с радостью бы использовали полностью случайные числа для генерации ключа, но не знали, как их получить. Причина в том, что цифровые компьютеры всегда находятся в точно определённом состоянии, которое меняется только при поступлении определённой команды от программы. Самое лучшее, что вы можете сделать — эмулировать случайность, генерируя так называемые псевдослучайные числа с помощью специальной математической функции. Набор таких чисел на первый взгляд выглядит полностью случайным, но кто-нибудь другой с помощью такой же процедуры может легко сгенерировать в точности такие же числа, так что обычно они плохо подходят для шифрования.

Исследователям удалось изобрести генераторы псевдослучайных чисел, которые признаны криптографически надёжными. Но их нужно запускать с качественного случайного начального значения (random seed), иначе они всегда сгенерируют один и тот же набор чисел. И для этого начального значения вам нужно нечто такое, что действительно невозможно подобрать или предсказать.

К счастью, несложно получить действительно непредсказумые значения, используя хаотическую вселенную, которая со всех сторон окружает строго детерминированный мир компьютерных битов. Но как именно это сделать?


В течение последних лет в онлайне работает источник случайных чисел под названием Lavarand. Он был создан в 1996 году для автоматической генерации случайных значений путём обработки фотографий декоративного светильника — лавовой лампы, которая непредсказуемым образом меняет облик каждую секунду. С тех пор случайными значениями из этого источника воспользовались более миллиона раз.

Есть и более изощрённые аппаратные генераторы случайных чисел, которые регистрируют квантовые эффекты, например, удары фотонов в зеркало. Вы можете на самом обычном компьютере получить случайные числа путём регистрации непредсказуемых событий, таких как точное время нажатия на кнопки клавиатуры. Но чтобы получить большое количество таких случайных значений, придётся нажать немало кнопок.

Мы с коллегами в компании Intel решили, что нужно сделать более простой способ. Вот почему уже более десяти лет многие из чипсетов нашего производства содержат аналоговый аппаратный генератор случайных чисел. Проблема в том, что его аналоговый контур впустую расходует энергию. Вдобавок, трудно сохранить работоспособность этой аналоговой схемы по мере совершенствования техпроцесса по производству микросхем и их миниатюризации. Поэтому сейчас мы разработали новую и полностью цифровую систему, которая позволяет микропроцессору генерировать обильный поток случайных значений без этих проблем. Скоро этот новый цифровой генератор случайных чисел придёт к вам вместе с новым процессором.

Первая попытка Intel сделать лучший генератор случайных чисел на обычных ПК датируется 1999-м годом, когда компания Intel представила компонент Firmware Hub для чипсетов. Генератор случайных чисел в этом чипе (PDF) представляет собой аналоговый дизайн на базе кольцевого осциллятора, который регистрирует тепловой шум с резисторов, усиливает его и использует результирующий сигнал для изменения периода относительно медленного генератора тактовых импульсов. На каждый непредсказуемый «тик» этого медленного генератора микросхема накладывала частоту колебаний второго, быстрого генератора, который регулярно меняет своё значение между двумя бинарными состояниями: 0 и 1. В результате получается непредсказуемая последовательность нулей и единиц.

Проблема в том, что кольцевой осциллятор, который занимается усилением теплового сигнала, потребляет слишком много энергии — и он работает постоянно, независимо от того, нужны или нет компьютеру случайные числа в данный момент. Эти аналоговые компоненты также доставляют неудобства каждый раз, когда компания меняет техпроцесс производства микросхем. Каждые несколько лет компания модернизирует производственные линии, чтобы делать микросхемы в более миниатюрном масштабе. И каждый раз этот аналоговый фрагмент нужно по-новому калибровать и тестировать — эта сложная и кропотливая работа стала настоящей головной болью.

Вот почему в 2008 году Intel принялась за разработку генератора случайных чисел, который работает исключительно на цифровой основе. Исследователи компании в Хиллсборо (Орегон, США), совместно с инженерами Design Lab в Бангалоре (Индия) начали изучать ключевую проблему — как получить случайный поток битов без использования аналоговых схем.

Забавно, но предложенное ими решение нарушает основное правило цифрового дизайна, что схема должна всегда быть в определённом положении и возвращать либо логический 0, либо 1. Конечно, цифровой элемент может проводить краткосрочные промежутки времени в неопределённом положении, переключаясь между этими двумя значениями. Однако, он должен работать предельно чётко и никогда не должен колебаться между ними, иначе это вызовет задержки или даже сбой в системе. В нашем же генераторе случайных битов колебания являются фичей, а не багом.



НЕОПРЕДЕЛЁННЫЕ СХЕМЫ: Когда транзистор 1 и транзистор 2 включаются, пара инвертеров поворачивают узлы Node A и Node B в одинаковое положение [налево]. Если возрастает тактовая частота [жёлтый график справа], эти транзисторы отключаются. Первоначально оба инвертера обращаются в неопределённое положение, но случайный тепловой шум в инвертерах скоро поворачивает один узел в логическое положение 1, а другой узел — в логическое положение 0.

Дизайн состоит из пары инвертеров — элементов цепи, у которых значение на выходе является обратным значению на входе. Мы соединили выход одного инвертера со входом другого инвертера. Если на выходе у первого инвертера 0, то второй инвертер получает это на входе и, соответственно, выдаёт 1. Или если первый инвертер выдаёт 1, то второй инвертер будет выдавать 0.

Дополнительно в цепь к двум инверторам добавлены два транзистора с довольно странным местоположеием. Включение этих транзисторов даёт на входе и на выходе обоих инвертеров логическую 1. Конечно, инвертеры пришлось слегка модифицировать, чтобы такой фокус стал возможным, но это довольно просто сделать.

Самое интересное начинается, когда транзисторы отключают. Двум инвертерам не нравится, что у них на выходах одинаковое состояние, и они стремятся принять противоположное положение, то есть одно из двух устойчивых состояний. Но какой инвертер поменяется на 0? Это неизвестно.

Есть две вероятности, и цепь выбирает между ними. В идеальном мире статус-кво может сохраняться вечно, но в реальности даже минимальное воздействие теплового шума — случайных атомных вибраций — сталкивает цепь в одно из двух возможных устойчивых состояний.

В данном случае, наша простая цифровая схема с лёгкостью получает частичку вездесущной случайности природы. Всё что нам остаётся — подключить генератор тактовых импульсов, который будет регулярно включать и выключать транзисторы. На каждый такт генерируется один случайный бит.

Этот цифровой подход к генерации случайных битов работал бы хорошо, если бы инвертеры были абсолютно одинаковыми. Но из-за несовершенства физического мира так никогда не бывает. В реальности, два инвертера никогда не бывают абсолютно одинаковыми. Отличия в их характеристиках могут казаться чрезвычайно маленькими, но в данном применении эти отличия способны легко скомпрометировать случайный поток битов, который мы пытаемся извлечь из цепи.

Чтобы соблюсти сбалансированность инвертеров, мы встроили механизм обратной связи, чтобы схема соответствовала одному из правил статистической случайности, в соответствии с которым в длинной последовательности должно быть одинаковое количество всех возможных чисел. Таким образом, мы можем бороться с предсказуемостью, которая внушает такой ужас любому криптологу.

Одновременно с разработкой надёжного цифрового источника случайных чисел, другие инженеры Intel начали разработку дополнительных логических элементов, чтобы эффективно обрабатывать и использовать эти биты. Вы могли бы подумать, что процессор способен просто принимать сырой поток битов из генерирующего контура и вставлять их в программу. Но на самом деле эти биты не настолько случайны, как хотелось бы. Сырой поток из контура, независимо от качества оборудования, в любом случае может иметь какие-то перекосы в ту или иную сторону.

Нашей целью было создать систему, которая выдаёт поток случайных чисел, соответствующий признанным криптографическим критериям, таким как стандарты Национального института стандартов и технологий США. Чтобы гарантировать качество наших случайных чисел, мы разработали трёхступенчатый процесс, в котором задействованы первоначальная цифровая схема, «нормализатор» (conditioner) и генератор псевдослучайных чисел — теперь известный под кодовым названием Bull Mountain.

Наш предыдущий аналоговый генератор был способен выдавать только пару сотен килобит случайных чисел в секунду, в то время как новый генерирует их потоком около 3 Гб/с. Он начинает работу, собирая практически случайные значения двух инвертеров блоками по 512 бит. В дальнейшем эти блоки разбиваются на пары 256-битных чисел. Конечно, если оригинальные 512 бит не полностью случайны, эти 256-битные числа тоже не будут полностью случайными. Но их можно математически скомбинировать таким образом, чтобы получить 256-битное число, близкое к идеальному.



ТРИ УРОВНЯ ЧИСЕЛ: Генератор случайных чисел Intel Bull Mountain предотвращает любые варианты предсказуемости с помощью трёхступенчатого процесса. Сначала цифровой контур генерирует поток случайных битов. Потом «нормализатор» (conditioner) генерирует на основе этого потока хорошие случайные начальные значения (random seeds). На третьем этапе генератор псевдослучайных чисел выдаёт поток цифр для использования в программном обеспечении.

Нам действительно хочется хорошо спать по ночам, так что спроектировали дополнительную схему, которая проводит тестирование потоков 256-битных чисел, которые поступают в «нормализатор», чтобы они не были слишком смещёнными в какую-то сторону. Если такое обнаруживается, мы помечаем его как бракованный и не соответствующий стандартам. Таким образом, операции производятся только с качественными парами чисел.

Новая инструкция под названием RdRand даёт возможность программе, которой нужны случайные числа, обратиться с запросом к аппаратному обеспечению, которое их производит. Созданная для 64-битных процессоров Intel, инструкция RdRand — это ключ к генератору Bull Mountain. Она извлекает 16-, 32- или 64-битные случайные значения и помещает их в регистр, доступный для программы. Инструкция RdRand была открыта для публики около года назад, и первым процессором Intel, который будет поддерживать её, станет Ivy Bridge. Новый чипсет работает на 37% быстрее, чем его предшественник, а размер его минимальных элементов уменьшен с 32 до 22 нанометров. Общее увеличение производительности хорошо сочетается с потребностями нашего генератора случайных чисел.

Хотя лавовые лампы выглядят круто, они впишутся не в каждый интерьер. Мы думаем, что наш подход к генерации случайных чисел, напротив, найдёт самое универсальное применение.

Как уже было упомянуто, регистрация точного времени нажатия на клавиши использовалась как удобный источник случайных стартовых значений для генераторов в прошлом. Для тех же целей использовали передвижения мыши и даже скорость поиска секторов на жёстком диске. Но такие события не всегда дают вам достаточное количество случайных битов, и при определённом времени измерений эти биты становятся предсказуемыми. Хуже того, поскольку мы теперь живём в мире серверов с SSD и виртуализацией, эти физические источники случайностей просто недоступны на многих компьютерах. На этих машинах требуется получать случайные числа каким-то другим способом, а не событиями на периферийных устройствах. Bull Mountain предлагает решение.

Так что если вы программист, будьте готовы к появлению обильного источника случайности прямо под рукой. И даже если вы не хотите отказываться от любимого генератора псевдослучайных чисел, который привыкли использовать для криптографии, научных вычислений или даже в играх — у вас теперь есть Bull Mountain для получения начальных значений к нему. Мы ожидаем, что такое применение Bull Mountain будет весьма популярным, в результате чего вырастут и расцветут разные виды замечательного софта.

Они лениво раз за разом вычисляют новые значения, но не помнят, что было до этого.

В программировании есть инструмент, который позволяет экономить память и при этом обрабатывать огромные массивы данных. Это генераторы. Мы рассмотрим работу генераторов на примере языка Python, но они есть и в других языках.

Классический подход к обработке — итераторы

Допустим, мы хотим вывести числа от 1 до 10 и для этого пишем такой код:

for i in range(1,10):
print(i)

Это один из вариантов реализации цикла. Что делает компьютер, когда обрабатывает такое:

  1. Создаст в памяти область для хранения данных.
  2. Заполнит её числами от 1 до 10.
  3. На каждом шаге цикла компьютер возьмёт новые данные из этой области и выведет их на экран.

При этом компьютер точно знает, какое значение у переменной i было на предыдущем шаге и будет на следующем, потому что все они хранятся в памяти.

Но что, если нам понадобится несколько переменных с диапазоном значений? Например, так:

a = range(1,100)
b = range(1000,2000)
for i in a:
print(a[i-1] + b[i])

Когда мы запустим этот код, то увидим, что компьютер выделил большой кусок памяти для обеих переменных и что можно обратиться к отдельным ячейкам в таких диапазонах. Это удобно, когда нужно постоянно держать под рукой какие-то данные. Но если переменные со счётчиками не понадобятся, то память будет простаивать зря.

👉 Итератор в данном случае — это цикл, который обращается к диапазону значений и берёт по очереди оттуда данные. При этом все данные уже есть в памяти.

Итераторы хороши своей предсказуемостью, но при обработке большого потока данных могут привести к расходу памяти и неоптимальной работе программы.

Генераторы — вычисление данных «на лету»

Генераторы работают иначе: вместо того чтобы сразу хранить в памяти все данные, они их генерируют на каждом шаге и отдают в работу. Вот как выглядит цикл с генератором:

  1. Цикл выполняется нужное количество раз.
  2. На каждом шаге цикла генератор получает какое-то значение, отдаёт его в нужное место и забывает всё напрочь.
  3. Генератор не помнит значение, которое он отдавал до этого, и не знает, что он будет отдавать на следующем шаге. Всё, что у него есть, — данные, которые нужно обработать на текущем шаге.
  4. Память под работу генератора выделяется, только когда он генерирует новые данные. Пока генератор стоит или не выдаёт данные — память не выделяется.

Чаще всего генераторы используют как функции. Каждый раз, когда обращаются к такой функции-генератору, она делает так:

  1. Берёт новую порцию данных из указанного ей источника.
  2. Обрабатывает данные.
  3. Возвращает результат.
  4. Забывает про всё до следующего вызова.

Обычно функции возвращают результат своей работы с помощью команды return(), а для генераторов есть специальная команда — yield().

Yield() работает так же, как и return(), только функция на ней не заканчивается, а ставится на паузу. При следующем вызове генератор возьмёт новую порцию данных, и единственное, что он помнит, — на каком месте он остановился в прошлый раз. Всё остальное генератор каждый раз считает заново.

Пример из практики

Генераторы часто применяют для одноразовой обработки данных по каким-то правилам. Например, в проекте с генератором текста на цепях Маркова у нас был такой фрагмент кода:

А вот что произошло здесь по шагам:

  1. Мы открыли файл и записали всё его содержимое в переменную text.
  2. С помощью встроенной функции split() мы разбили текст на отдельные слова и поместили все слова в отдельный массив. На этом этапе в массиве примерно 150 тысяч слов — для хранения такого количества данных компьютер выделил много памяти.
  3. Мы пишем функцию-генератор. Каждый раз, когда к ней будут обращаться, она вернёт пару слов — текущее и следующее за ним.
  4. В самом конце мы создаём новую переменную — pairs. Может показаться, что в ней сразу будут храниться все пары слов, но на самом деле это переменная-генератор. При каждом обращении к ней она вернёт новую пару слов и забудет о них.

В итоге у нас все слова хранятся в переменной corpus, а пары возвращаются «на лету» при каждом обращении к этой переменной.

👉 Главный плюс генераторов — их можно указывать в качестве диапазона в циклах. На каждом шаге цикл получает новое значение от генератора и работает уже с ним. Как только у генератора заканчиваются варианты и он останавливается — цикл тоже останавливается.

Вот как мы работаем с этой переменной дальше:

Здесь алгоритм работает так:

  1. Делаем пустую переменную для словаря.
  2. Запускаем цикл for и указываем переменную-генератор в качестве диапазона цикла.
  3. Теперь на каждом шаге цикла он будет получать новую пару от генератора и обрабатывать её внутри цикла. При этом сами пары физически нигде не хранятся — их генератор каждый раз собирает на ходу.

❌ Если бы мы не знали про генераторы, нам бы пришлось делать отдельный массив с парами слов и выделять под него память. В нашем проекте так сделать можно, но в реальных задачах с перебором большого количества данных такой подход может съесть всю память.

И что, всё теперь нужно делать на генераторах?

Нет, нужно просто знать, что есть такая возможность — собирать данные на ходу и при этом не тратить на это память. Если вам в проекте не нужны генераторы или экономия памяти будет мизерная — работайте без них. Но если нужно обработать огромный массив данных, из которых нужна только часть, то генераторы могут реально выручить.

Устройство для выработки через равные отрезки времени последовательности импульсов. Время между двумя последовательными импульсами называется тактом.

Некоторые команды процессора выполняются за несколько тактов. Импульсы, проходя через все элементы компьютера, заставляют их работать в едином такте – синхронно. Частота генерации тактовых импульсов определяет быстродействие компьютера.

Центральный процессор - это центральное устройство компьютера, которое выполняет операции по обработке данных и управляет периферийными устройствами компьютера. У компьютеров четвёртого поколения и старше функции центрального процессора выполняет микропроцессор на основе СБИС, содержащей несколько миллионов элементов, конструктивно созданный на полупроводниковом кристалле путём применения сложной микроэлектронной технологии.

В состав центрального процессора входят:

1 устройство управления (УУ) ;

2 арифметико-логическое устройство (АЛУ) ;

3 запоминающее устройство (ЗУ) на основе регистров процессорной памяти и кэш-памяти процессора;

4 генератор тактовой частоты (ГТЧ) .

Устройство управления организует процесс выполнения программ и координирует взаимодействие всех устройств ЭВМ во время её работы.

Арифметико-логическое устройство выполняет арифметические и логические операции над данными: сложение, вычитание, умножение, деление, сравнение и др.

Запоминающее устройство - это внутренняя память процессора. Регистры служит промежуточной быстрой памятью, используя которые, процессор выполняет расчёты и сохраняет промежуточные результаты. Для ускорения работы с оперативной памятью используется кэш-память, в которую с опережением подкачиваются команды и данные из оперативной памяти, необходимые процессору для последующих операций.

Генератор тактовой частоты генерирует электрические импульсы, синхронизирующие работу всех узлов компьютера. В ритме ГТЧ работает центральный процессор.

Для математических вычислений к основному микропроцессору добавляют математический сопроцессор. Начиная с модели 80486DX процессор и сопроцессор выполняют на одном кристалле.

Читайте также: