Разное

С какими числами работает процессор: С Какими числами может работать процессор?С какими числами работает математический сопроцессор?

Содержание

Математический сопроцессор — это… Что такое Математический сопроцессор?

Математический сопроцессор 80×287 в колодке на базовой плате персонального компьютера.

Сопроцессор Motorola 68881

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

Модуль операций с плавающей запятой (или с плавающей точкой; англ. floating point unit (FPU)) — часть процессора для выполнения широкого спектра математических операций над вещественными числами.

Простым «целочисленным» процессорам для работы с вещественными числами и математическими операциями требуются соответствующие процедуры поддержки и время для их выполнения. Модуль операций с плавающей запятой поддерживает работу с ними на уровне примитивов — загрузка, выгрузка вещественного числа (в/из специализированных регистров) или математическая операция над ними выполняется одной командой, за счёт этого достигается значительное ускорение таких операций.

Сопроцессоры

Основная статья: X87

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

Сопроцессоры Intel семейства x86

Для процессоров семейства x86 с 8086/8088 по 386, модуль операций с плавающей запятой был выделен в отдельную микросхему, называемую математическим сопроцессором. Для установки сопроцессора на плате компьютера предусматривался отдельный разъём.

Сопроцессор не является полноценным процессором, так как не умеет делать многих необходимых для этого операций (например, не умеет работать с программой и вычислять адреса памяти), являясь всего лишь придатком центрального процессора.

Одна из схем взаимодействия центрального процессора и сопроцессора, применяемая, в частности, в x86 сопроцессорах, реализуется следующим образом:

  • Сопроцессор подключен к шинам центрального процессора, а также имеет несколько специальных сигналов для синхронизации процессоров между собой.
  • Часть командных кодов центрального процессора зарезервирована для сопроцессора, он следит за потоком команд, игнорируя другие команды. Центральный процессор, наоборот, игнорирует команды сопроцессора, занимаясь только вычислением адреса в памяти, если команда предполагает к ней обращение. Центральный процессор делает цикл фиктивного считывания, позволяя сопроцессору считать адрес с адресной шины. Если сопроцессору необходимо дополнительное обращение к памяти (для чтения или записи результатов), он выполняет его через захват шины.
  • После получения команды и необходимых данных сопроцессор начинает её выполнение. Пока сопроцессор выполняет команду, центральный процессор выполняет программу дальше, параллельно с вычислениями сопроцессора. Если следующая команда также является командой сопроцессора, процессор останавливается и ожидает завершения выполнения сопроцессором предыдущей команды.
  • Также существует специальная команда ожидания (FWAIT), принудительно останавливающая процессор до завершения вычислений (если для продолжения программы необходимы их результаты). В настоящее время команда используется лишь для обработки исключений при работе с плавающей точкой, работа процессора и сопроцессора синхронизируется прозрачно для программиста[1].

Начиная с процессора Intel486DX модуль операций с плавающей запятой был интегрирован в центральный процессор и назван FPU. В линейке Intel486SX модуль FPU отключался (поначалу в эту линейку попадали процессоры с бракованным FPU). Для процессоров Intel486SX также выпускался «сопроцессор» Intel487SX, но, фактически, он являлся процессором Intel486DX и при его установке процессор Intel486SX отключался.

Несмотря на интеграцию, FPU в процессорах i486 представляет собой неизменный сопроцессор, выполненный на том же кристалле, более того, схема FPU i486 полностью идентична сопроцессору предыдущего поколения 387DX вплоть до тактовой частоты (в два раза меньшей, чем частота центрального процессора). Настоящая интеграция FPU c центральным процессором началась только в процессорах Pentium модели MMX.

Сопроцессоры x86 от сторонних производителей

Широкое распространение в соответствующий период получили сопроцессоры для платформы x86, выпускавшиеся компанией Weitek — ею были выпущены 1167, 2167 в виде набора микросхем и микросхемы 3167, 4167, для процессоров 8086, 80286, 80386, 80486, соответственно. По сравнению с сопроцессорами от Intel они обеспечивали в 2-3 раза большую производительность, но обладали несовместимым программным интерфейсом, реализованным через технологию memory-mapping. Она сводилась к тому, что основной процессор должен был записывать информацию в те или иные области памяти, контролируемые Weitek-овским сопроцессором (собственно, оперативной памяти там, конечно не было). Конкретный адрес, куда производилась запись, интерпретировался в качестве той или иной команды. Несмотря на несовместимость, сопроцессоры от Weitek были широко поддержаны как разработчиками ПО, так и производителями материнских плат, предусматривавших на них гнёзда для установки такой микросхемы.

Ряд других компаний также выпускал различные несовместимые математические сопроцессоры, реализуя интерфейс к ним через порты ввода-вывода или прерывания BIOS, но они не получили такого широкого распространения.

Компании-производители клонов выпускали совместимые с 80287 80387 сопроцессоры, работавшие быстрее аналогичных интеловских. Среди этих компаний можно упомянуть Cyrix, AMD, Chips & Technologies (C&T). Иногда система команд этих сопроцессоров расширялась несколькими несовместимыми, например, аналог 80287 от C&T содержал команды для работы с вектором из четырёх значений с плавающей точкой. Серьёзной поддержки от производителей ПО эти расширенные команды не получили.

Процессоры EMC87 от фирмы Cyrix могли работать как в режиме программной совместимости с Intel 80387, так и в собственном несовместимом режиме программирования. Для них обеспечивалась аппаратная совместимость с разъёмом 80387-го сопроцессора.

В СССР выпускалась микросхема (КМ)1810ВМ87, которая являлась аналогом 8087

Другие платформы

Аналогично, материнские платы ПК, построенных на процессорах Motorola, до разработки этой фирмой процессора MC68040 (в который сопроцессор был встроен) содержали математический сопроцессор. Как правило, в качестве FPU использовался сопроцессор 68881 16 МГц или 68882 25 МГц. Практически любой современный процессор имеет встроенный сопроцессор.

Компания Weitek также выпускала математические сопроцессоры для платформ 68000 и MIPS.

Устройство FPU

Все процессоры Intel и AMD, начиная с 486DX, имеют встроенный математический сопроцессор, и в отдельном сопроцессоре не нуждаются (за исключением Intel486SX). Тем не менее, термин x87 всё ещё используется для выделения той части инструкций процессора, которая занимается вычислениями с использованием плавающей запятой; компиляторы могут использовать эти инструкции для производства кода, который работает быстрее, нежели тот, что использует вызовы к библиотекам для выполнения операций с плавающей запятой.

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

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

Начиная с Pentium III, вычисления с помощью инструкций SSE осуществляются с одинарной точностью, а в более поздних версиях — с двойной точностью форматов IEEE-754. После появления SSE2, использование x87 в значительной степени умаляется в 64-разрядных архитектурах x86-64 и связанных с ней 64-битных реализациях операционных систем, таких как Microsoft Windows, Mac OS X, Solaris, FreeBSD и Linux, хотя он по-прежнему хорошо поддерживается для полной совместимости со старыми приложениями.

Модуль операций с плавающей запятой[2][3] представляет собой стековый калькулятор, работающий по принципу обратной польской записи. Перед операцией аргументы помещаются в LIFO-стек, при выполнении операции необходимое количество аргументов снимается со стека. Результат операции помещается в стек, где может быть использован в дальнейших вычислениях или может быть снят со стека для записи в память. Также поддерживается и прямая адресация аргументов в стеке относительно вершины.

Форматы данных

Внутри FPU числа хранятся в 80-битном формате с плавающей запятой, для записи же или чтения из памяти могут использоваться:

  • Вещественные числа в трёх форматах: коротком (32 бита), длинном (64 бита) и расширенном (80 бит).
  • Двоичные целые числа в трёх форматах: 16, 32 и 64 бита.
  • Упакованные целые десятичные числа (BCD) числа — длина максимального числа составляет 18 упакованных десятичных цифр (72 бита).

FPU также поддерживает специальные численные значения:

  • Денормализованные вещественные числа — числа, которые меньше минимального нормализованного числа. При формировании такого значения в некотором регистре стека в соответствующем этому регистру теге регистра TWR формируется специальное значение (10).
  • Бесконечность (положительная и отрицательная), возникает при делении на нуль ненулевого значения, а также при переполнениях. При формировании такого значения в некотором регистре стека в соответствующем этому регистру теге регистра TWR формируется специальное значение (10).
  • нечисло (англ. not-a-number (NaN)). Различают два вида нечисел:
    • SNaN (Signaling Non a Number) — сигнальные нечисла. Сопроцессор реагирует на появление этого числа в регистре стека возбуждением исключения недействительной операции. Сопроцессор не формирует сигнальных чисел. Программисты формируют такие числа преднамеренно, чтобы возбудить в нужной ситуации исключение.
    • QNaN (Quiet Non a Number) — спокойные (тихие) нечисла. Сопроцессор может формировать спокойные нечисла в качестве реакции на определённые исключения, например число вещественной неопределённости.
  • Нуль — в формате с плавающей запятой, нуль также считается специальным значением.
  • Неопределённости и неподдерживаемые форматы. Существует много битовых наборов, которые можно представить в расширенном формате вещественного числа. Для большинства их значений формируется исключение недействительной операции.

Регистры

В FPU можно выделить три группы регистров:

  • Стек процессора: регистры R0..R7. Размерность каждого регистра: 80 бит.
  • Служебные регистры
    • Регистр состояния процессора SWR (Status Word Register) — информация о текущем состоянии сопроцессора. Размерность: 16 бит.
    • Управляющий регистр сопроцессора CWR (Control Word Register) — управление режимами работы сопроцессора. Размерность: 16 бит.
    • Регистр слова тегов TWR (Tags Word Register) — контроль за регистрами R0..R7 (например, для определение возможности записи) Размерность: 16 бит.
  • Регистры указателей
    • Указатель данных DPR (Data Point Register). Размерность: 48 бит.
    • Указатель команд IPR (Instruction Point Register). Размерность: 48 бит.

Система команд сопроцессора

Система включает около 80 команд. Их классификация:

  • Команды передачи данных
    • Вещественные данные
    • Целочисленные данные
    • Десятичные данные
    • Загрузка констант (0, 1, число Пи, log2(10), log2(e), lg(2), ln(2))
    • Обмен
    • Условная пересылка (Pentium II/III)
  • Команды сравнения данных
    • Вещественные данные
    • Целочисленные данные
    • Анализ
    • С нулём
    • Условное сравнение (Pentium II/III)
  • Арифметические команды
    • Вещественные данные: сложение, вычитание, умножение, деление
    • Целочисленные данные: сложение, вычитание, умножение, деление
    • Вспомогательные арифметические команды (квадратный корень, модуль, изменение знака, выделение порядка и мантиссы)
  • Трансцендентные команды
    • Тригонометрия: синус, косинус, тангенс, арктангенс
    • Вычисление логарифмов и степеней
  • Команды управления
    • Инициализация сопроцессора
    • Работа со средой
    • Работа со стеком
    • Переключение режимов

См. также

Примечания

  1. Intel 64 and IA-32 Architectures Software Developer’s Manual. Volume 2A and 2B: Instruction Set Reference. Order numbers #253666, #253667
  2. Intel 64 and IA-32 Architectures Software Developer’s Manual. Volume 1: Basic Architecture. Order number #253665
  3. AMD64 Architecture Programmer’s Manual. Volume 1: Application Programming. Publication number #24592
В этой статье не хватает ссылок на источники информации.
Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники.
Эта отметка установлена 13 мая 2011.

Как оперирует числами процессор — Студопедия

В модуль ALU (в последних процессорах их уже несколько) поступают все инструкции и данные, необходимые для целочисленных вычислений; как правило, это один из самых быстрых в плане тактовой частоты модулей процессора. Упрощенно процесс его работы можно представить следующим образом: поступили данные (две цифры — 3 и 4), поступила инструкция (операция умножения). На выходе получили результат — 12. Разрядность процессора (4-бит или 64-бит) не влияет на данную схему. Прежде чем данные попадут в ALU, они должны быть туда загружены из некоего источника: винчестера, RAM или внешней памяти; при этом процессор чаще всего получает их через кэш. Из кэш данные попадают непосредственно в процессор через посредника, роль которого выполняет набор совсем уж небольших блоков для хранения данных, работающих на очень большой скорости и называющихся регистрами.

Как раз оттуда ALU и получает данные, с которыми работает, и для ALU операция формулируется не как «3 * 4», а:

«содержимое регистра А” — (расшифрованный код операции) – “содержимое регистра В» — сохранить результат в один из регистров (может быть, даже в один из использовавшихся в операции)

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

Когда мы говорим о разрядности процессора, то, практически, в первую очередь мы говорим как раз о разрядности этих регистров — могут ли они хранить 8, 16, 32, или 64-бит числа.



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

С числами с плавающей запятой работает отдельный набор инструкций х87, с ними оперируют отдельные вычислительные блоки, сведенные в модуль с общим названием «сопроцессор», а хранятся они и оперирует с ними процессор во внутреннем формате с 80-бит представлением. Ради чисел с плавающей запятой затевать переход на 64 разряда явно не требовалось. Тем более что это направление развивается совершенно автономным образом — SSE, 3DNow и так далее, так что переход х86 с 32-бит на 64 его затрагивает весьма слабо.


Существует, впрочем, и еще один аспект вопроса, а именно — доступ к памяти. Дело в том, что в базовом режиме, так называемом «flat addressing», те же самые регистры общего назначения используются для хранения адресов доступа к памяти. 32 бита дают нам 4.3 миллиарда возможных комбинаций, так что 32-бит процессор может, таким образом, осилить память емкостью 4.3 Гбайт. Адреса ячеек, имеющих номера более этого числа, он попросту не может хранить в своих регистрах.

Очевидно, что здесь польза от 64 бит проявляется наиболее заметно, поскольку объем адресуемого пространства сразу увеличивается до 18 терабайт. Но прямая адресация 4 Гбайт оперативной памяти в настоящее время требуется, в основном, лишь в серверах, хотя через несколько лет, очевидно, до таких объемов доберутся и PC.

В первую очередь выигрыш от перехода на 64-разрядные процессоры получают серверы баз данных, где серьезные базы давно уже переросли объем в 4 Гбайт, а возможность кэшировать их полностью в оперативной памяти слишком заманчива в плане производительности. Производители серверных решений не стали дожидаться перехода: за счет использования различных подходов, 32-бит Xeon позволяет адресовать более 4 Гбайт данных (до 64 Гбайт), хотя, конечно подобные полухакерские решения трудно назвать серьезной платформой под будущее, да и падение производительности при операциях с памятью при этом измеряется в десятках процентов. Впрочем, будущее от Intel — это Itanium, а не Xeon.

Что дает число процессоров в msconfig?

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

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

Все ядра в Windows задействованы по умолчанию

На самом деле операционная система Windows знает о всех ядрах процессора с момента установки на компьютер и использует их по мере необходимости. Убедиться в этом можно запустив диспетчер задач через всем знакомую комбинацию клавиш “Ctrl” + “Alt” + “Del” и перейдя на вкладку “Производительность” (Быстродействие). Для Windows 8.1 и Windows 10 дополнительно нужно нажать на “ЦП”, далее на область с графиком правой кнопкой мыши и в открывшемся меню выбрать “Изменить график” -> “Логические процессоры”.

Переключение вида отображения

Окно будет поделено на количество частей равное количеству ядер (потоков) в вашем процессоре. И для каждого из них будет рисоваться график загруженности. Это значит, что в данный момент они задействованы для выполнения тех или иных задач.

Отображение нагрузки на ядра

Для чего же тогда нужна настройка “Число процессоров”?

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

Расположение настройки

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

Вывод

Число процессоров в msconfig никоим образом не увеличивает скорость работы компьютера и не разблокирует все ядра процессора. В операционной системе Windows они все сразу задействованы по умолчанию. Единственным назначением данной настройки является принудительное отключение ядер (потоков) для какой – то конкретной задачи и цели.

как выбрать и не ошибиться? / Блог компании Galtsystems (ex. Сквадра Груп) / Хабр

В каждом сервере установлена материнская плата, а в каждой материнской плате установлен процессор. Центральное процессорное устройство (ЦПУ) определяет, каким количеством данных сервер может управлять одновременно и как он может обработать все эти данные.

Эта статья будет полезна всем будущим владельцам серверов, которые не знают, сервер с каким процессором выбрать.

Какие основные моменты необходимо рассмотреть при выборе процессора:

  • Цели дальнейшего использования.
  • Количество ядер.
  • Совместимость с другими компонентами.
  • Скорость ЦПУ.
  • Цена.

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

Процессоры для настольных компьютеров

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

Серверные процессоры

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

Чем отличаются серверные процессоры от десктоптных?

  • Высокий контроль качества. Серверные процессоры проходят через все виды тестирований в самых суровых условиях. В качестве аналога можно привести следующий пример: двигатель пассажирского самолета требует более тщательного тестирования, чем двигатель автомобиля. Несомненно, риск неисправности двигателя самолета выше.
  • Надежность. Серверные процессоры отличаются отказоустойчивостью. В критической ситуации серверы могут избежать выключения или перезагрузки (при 2-х процессорной конфигурации). Они рассчитаны на работу нон-стоп 24/7. Десктопные варианты больше предназначены для «бытовой» многозадачности.
  • Наличие самокорректирующей системы. Серверные ЦПУ имеют алгоритм, позволяющий корректировать ошибки памяти, которые могут влиять на стабильность оборудования. Эта технология называется «проверка и исправление ошибок» (ECC).

Теперь перейдем непосредственно к выбору процессора.

Основные критерии выбора процессора

» Ядра
Менее десяти лет назад все процессоры выпускались с одним ядром. Сейчас одноядерные процессоры стали исключением из-за повсеместной распространенности многоядерных процессоров. В последнее время даже софт разрабатывают таким образом, чтобы приложения могли задействовать многоядерную технологию. Существует большое количество вариантов для выбора – начиная от 2-х и заканчивая 22 ядрами.

Когда процессоры запускались на одном ядре, оно полностью отвечало за обработку данных, которые передавались на процессор. Чем больше ядер встроено в ЦПУ, тем больше они способны распределять его задачи. Это делает процессор быстрее и эффективнее. Очень важно понимать, что процессор отвечает только за исполнение задач, как и софт, работающий на нем. Всю основную работу выполняют ядра. Однако стоит учитывать, что если для корректной работы приложений используются 3 ядра из 8, то 5 ядер остаются незадействованными. Чтобы минимизировать затраты, стоит сопоставить системные требования с количеством ядер.

» Кэш

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

» Сокет

Совместимость сокетов – это первоочередная задача при выборе процессора. Сокет является средством связи между материнской платой и ЦПУ. Если вы уже купили материнку, проверьте, что установленный процессор совместим с ее сокетом. И наоборот, отдельно покупая процессоры, проверьте совместимость с материнкой. Это может пригодиться для дальнейшего апргрейда.

» Графический процессор (GPU)

Многие современные процессоры имеют встроенные графические процессоры, которые выполняют расчеты, относящиеся к графике. Если у процессора отсутствует встроенный GPU, сервер все равно сможет отображать графику (если установлена отдельная видеокарта или материнка позволяет запускать видео). Однако для работы софта и приложений, интенсивно нагруженных графикой, ЦПУ со встроенным GPU будет работать намного эффективнее.

» Частота

Частота ЦПУ, измеряемая герцами, это скорость, на которой он работает. Раньше было так: высокая частота = лучшая производительность. Эта формула более не действует. В некоторых случаях ЦПУ, работающий на низкой частоте, может в действительности работать лучше, чем процессор, обладающей высокой частотой. На это влияет архитектура процессора. Наравне с частотой очень важно обращать внимание на число команд процессора, выполняемых за цикл. Хотя частота по-прежнему является важным индикатором быстродействия процессора, теперь это не ключевой момент, влияющий на реальную скорость ЦПУ.

» Величина отвода тепловой мощности (TDP)

Процессоры генерируют тепло. Величина отвода тепловой мощности, назначенная для процессора, объясняет, сколько тепла процессор может выделять. Это напрямую будет влиять на тип охлаждения, необходимого для ЦПУ. Если процессор поставляется без системы охлаждения, или эта система не используется, необходимо продумать систему охлаждения для корректной работы сервера. Перегрев – основная опасность для серверных компонентов.

Какая из спецификаций подойдет для вашей компании?

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

Небольшая компания:

  1. Ядра. Для большинства задач подойдет сервер с 4-х ядерным процессором. Если перед вами стоят более требовательные задачи – необходимо работать с графическим дизайном, выясните, какое количество ядер необходимо для конкретного софта. Если необходимо 8 ядер, то лучше всего инвестировать деньги сразу в сервер на базе 8-ядерных процессоров.
  2. Память. Количество памяти, которое поддерживает сервер, тоже может играть свою роль. Материнская плата и тип операционной системы помогут определиться с необходимым объемом.
  3. Частота. Софт, с которым вы планируете работать, будет влиять на скорость ЦПУ. Например, постоянное использование программы Adobe CS 6 потребует процессор со скорость как минимум 2 Ггц.

Средние компании

  1. Цена. Большинство средних компаний должны придерживаться установленного бюджета, когда дело касается покупки оборудования. Цена относительно производительности процессора может стать ключевым фактором.
  2. Многопоточность. При выборе серверного процессора обязательно обратите внимание на технологию гиперпоточной обработки (Hyper-Threading). Эта технология обеспечивает более эффективное использование ресурсов процессора, позволяя выполнять несколько потоков на каждом ядре и повышает пропускную способность процессоров, улучшая общее быстродействие многопоточных приложений.

Корпоративные заказчики

  1. Ядра. При выборе ЦПУ стоит учитывать количество ядер. Необходимо ориентироваться на технические требования приложений. Например, если установлен 8-и ядерный процессор, но для приложения необходимо только 4 из них, то нет смысла переплачивать. Размер не всегда имеет значение.
  2. Частота. Здесь тоже стоит ориентироваться на софт – некоторым компаниям хватает 2 Ггц, а другим и 4 Ггц мало.
  3. TDP. Проверьте этот показатель перед покупкой процессоров. Тогда вы будете уверенным, что система охлаждения справится с выделением тепла.

Есть ли смысл переплачивать за производительность?

Мы составили сравнительный список процессоров, относительно аналогичных по характеристикам, и указали цены за серверы, на борту которых установлены нижеуказанные модели ЦПУ (цены взяты на Яндекс.Маркет и Сквадра Груп от 23.05.2016):







Процессоры Сквадра ГрупCPU BenchmarkЦена за сервер, ₽Новые процессорыCPU BenchmarkЦена за сервер, ₽
Intel Xeon E5530

(4 Core, 8M Cache, 2.40 GHz)
462118 000Intel Core i5-2300

(4 Core, 6M Cache, up to 3.10 GHz)
528378 000
Intel Xeon E5620

(4 Core, 12M Cache, 2.40 GHz)
490321 800Intel Core i7-870

(4 Core, 8M Cache, 2.93 GHz)
548785 000
Intel Xeon E5645

(6 Core, 12M Cache, 2.40 GHz)
653339 400Intel Xeon E3-1225 v3

(4 Core, 8M Cache, 3.20 GHz)
7005124 300
Intel Xeon X5650

(6 Core, 12M Cache, 2.66 GHz)
760145 400Intel Xeon E5-2620 v2

(6 Core, 15M Cache, 2.10 GHz)
8689195 000
Intel Xeon E5-2670 v1

(8 Core, 20M Cache, 2.60 GHz)
1249777 900Intel Xeon E5-2640 v3

(8 Core, 20M Cache, 2.60 GHz)
14055375 000

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

Заключение

Итак, при выборе процессора определите для себя следующие вещи:

  1. Цель использования сервера.
  2. Технические характеристики приложений, для которых будет предназначен сервер.
  3. Совместимость с другими компонентами (память, ОС и т. д.).
  4. Размер компании.
  5. Цена

как выбрать для разных задач

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

СОДЕРЖАНИЕ СТАТЬИ:

Общее понятие архитектуры процессора ПК

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

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

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

Стоит отметить, что ЦП, выполняющие одинаковую программную модель, могут значительно отличаться друг от друга микроархитектурой – например, устройства от фирм AMD и Intel. Современные чипы имеют идентичную программную архитектуру x86, но абсолютно разную микроархитектуру.

Роль количества ядер, их влияние на производительность

Первоначально ЦП имели только одно ядро. Однако на рубеже XX и XXI веков инженеры пришли к выводу, что стоит увеличить их количество. Это должно было позволить получить более высокую вычислительную мощность, а также позволить обрабатывать несколько задач одновременно.

Но для начала стоит разобраться с главным мифом. Принято считать, что чем больше ядер у процессора, тем больше мощности он будет предлагать. Но на практике все не так просто. Реальное влияние на производительность оказывают и другие факторы – например, тактовая частота, объем кэша, архитектура, количество потоков.

Дополнительные ядра означают, что процессор способен одновременно справляться с большим количеством задач. Однако здесь нельзя забывать об одном: несмотря на популяризацию четырех-, шести- или восьмиядерных процессоров, приложения используют один или два потока. Поэтому количество потоков ядра также важно учитывать.

Например, если первый ЦП имеет 2 ядра 4 потока, а второй 4 ядра 4 потока, то разница в производительности будет небольшая. Однако если сравнить первый чип с 4-ядерным 8-поточным, то в данном случае производительность возрастет на 50 %.

Что такое потоки и на что влияет их количество

Потоки – это виртуальный компонент или код, который разделяет физическое ядро процессора на несколько ядер. Одно ядро имеет до 2 потоков.

Например, если процессор двухъядерный, то он будет иметь 4 потока, а если восьмиядерный – 16 потоков.

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

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

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

Единственный факт, который ограничивает создание потоков, – количество основных потоков, предоставляемых физическим процессором. А их количество зависит от ядер.

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

Рекомендации по выбору процессора

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

Для офиса

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

Частота является еще одним фактором, который следует принимать во внимание. Хотя частота – это не единственное, что определяет скорость, она оказывает существенное влияние. Используемое программное обеспечение будет влиять на скорость. Например, при регулярном использовании Adobe CS 6, лучше всего подойдет процессор со скоростью не менее 2 ГГц.

Для инженерных задач

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

При покупке ЦП для такого компьютера важен многоядерный процессор. В идеале нужно искать такой чип, который предлагает гиперпоточность. Это обеспечит большую вычислительную мощность.

Для работы с графикой

При работе с графикой требования к процессору отличаются. Для обработки 2D графики – подойдут бюджетные варианты, 2 или 4 ядра с тактовой частотой 2,4 ГГц вполне справятся с задачей.

Для работы с 3D графикой лучше всего выбирать 4 или 6-ядерные чипы, с тактовой частотой 3 ГГц и выше, а также с поддержкой многопоточности.

Для игрового ПК

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

Первое, что нужно учитывать – это количество ядер. В дополнение к числу ядер, геймерам также важно учитывать тактовую частоту. Для современных игр потребуется частота 3,8 ГГц или выше.

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

Для стриминга

Выбор ЦП для стриминга зависит от сборки самого ПК.

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

Для профессионального стриминга понадобится ЦП с 6, 8, 16 ядрами и тактовой частотой 4 ГГц и выше. Тут выбор будет завесить от купленной видеокарты и нужного разрешения для стрима.

Как работают языки процессора, ассемблера и программирования (для чайников)

Введение

Вам может быть интересно, как работает ваш компьютер: что происходит, когда вы пишете программу, а затем компилируете ее? Что такое ассемблер и каков основной принцип программирования на нем? Это руководство должно прояснить это для вас, оно не предназначено для обучения программированию на сборке как такового, а скорее дает вам необходимые основы для понимания того, что на самом деле происходит внутри.Он также намеренно упрощает некоторые вещи, чтобы вас не перегружали дополнительной информацией. Однако я предполагаю, что у вас есть некоторые знания в области программирования высокого уровня (C / C ++, Visual Basic, Python, Pascal, Java и многие другие…).

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

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

Как работает процессор (ЦП)?

Возможно, вы знаете, что ЦП (центральный процессор или просто процессор) — это «мозг» компьютера, управляющий всеми другими частями компьютера и выполняющий различные вычисления и операции с данными. Но как этого добиться?

Процессор

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

Сами инструкции тоже в основном числовые: каждой простой операции присваивается собственный уникальный числовой код. Процессор извлекает это число и решает, что делать: например, номер 35 заставит процессор копировать данные из одной ячейки памяти в другую, номер 48 может сказать ему, чтобы он сложил два числа вместе, а номер 12 может сказать ему выполнить простая логическая операция, называемая ИЛИ.

Какие операции и каким номерам назначены, решают инженеры, которые проектируют данный процессор, или, лучше сказать, архитектура процессора: они решают, какие числовые коды будут назначены различным операциям (и, конечно же, они определяют другие аспекты процессора. , но сейчас это не актуально).Этот набор правил называется архитектурой. Таким образом, производители могут создавать различные процессоры, поддерживающие заданную архитектуру: они могут отличаться по скорости, потребляемой мощности и цене, но все они понимают одни и те же коды как одни и те же инструкции.

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

Что такое инструкции и как они используются?

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

Операции, выполняемые инструкциями, обычно очень просты.Только записав последовательность этих простых операций, вы можете заставить процессор выполнять конкретную задачу. Однако написание последовательности числовых кодов довольно утомительно (хотя программирование так делалось давно), поэтому был создан язык программирования ассемблера. Он присваивает кодам операций (числовой код) символ — имя, которое как бы описывает то, что он делает.

Учитывая предыдущие примеры, где номер 35 заставляет процессор перемещать данные из одной ячейки памяти в другую, мы можем присвоить этой инструкции имя MOV , что является сокращением от MOVe.Номер 48, который представляет собой инструкцию, складывающую два числа, получает имя ADD , а 12, выполняющий логическую операцию ИЛИ, получает имя ORL .

Программист записывает последовательность инструкций — простых операций, которые может выполнять процессор, используя эти имена, которые намного легче читать, чем просто числовые коды. Затем он запускает инструмент под названием ассемблер (но часто термин «ассемблер» используется также для языка программирования, хотя технически это означает инструмент), который преобразует эти символы в соответствующие числовые коды, которые могут быть выполнены процессором.

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

Например, если вы хотите переместить данные из местоположения с адресом 1000 в местоположение 1258, вы можете написать:

 МОВ 1258, 1000 

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

Маленький пример

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

 MOV A, 2000
ПЕТЛЯ:
ДОБАВИТЬ A, # 5
JNL A, # 200, ПЕТЛЯ
MOV 2001, A 

Первая инструкция переместит число из ячейки памяти с адресом 2000 в регистр A — это временное место, где процессор хранит числа. Таких регистров может быть много. Вторая строка содержит нечто, называемое меткой: это не инструкция, это просто метка в исходном коде, которую мы можем использовать позже (вы увидите, как это сделать).

В третьей строке находится инструкция ADD , которая складывает два числа.Операнды — это регистр A и номер 5 (знак # перед ним сообщает ассемблеру, что это номер пять, а не число в ячейке памяти с адресом 5). И запомни? Мы сохранили значение из ячейки памяти 2000 в регистре A, поэтому, каким бы ни было значение, эта инструкция добавит к нему число 5.

Следующая инструкция называется условным переходом: процессор проверяет какое-то условие и, в зависимости от результата, выполнит переход или нет. В этом случае условием является то, не больше ли данное число, чем другое ( JNL = Перейти (если) не больше).Сравниваемое число — это число в регистре A с числом 200 (опять же, отметка # означает, что это прямое число, а не число из ячейки памяти с адресом 200). В этом случае число в A меньше 200 (таким образом, не больше 200 — условие истинно), процессор выполнит переход по инструкции, указанной третьим операндом, и здесь появляется наша метка: ассемблер инструмент (транслятор) заменит « LOOP » адресом памяти инструкции сразу после этой метки.

Таким образом, если число меньше, процессор вернется к инструкции ADD и снова прибавит значение 5 к числу A (которое уже больше по сравнению с предыдущим вычислением), а затем вернется к инструкции JNL . Если число по-прежнему меньше 200, оно снова вернется; однако, если он больше, то условие больше не будет выполняться, поэтому переход не происходит и выполняется следующая инструкция. Он перемещает значение из регистра A в ячейку памяти с адресом 2001, в основном сохраняя там полученное число.Важно добавить, что ячейка памяти с адресом 2000 по-прежнему содержит исходное значение, потому что мы создали его копию в регистре A, мы не изменили оригинал.

У этого фрагмента кода нет особой цели; это просто для демонстрации, а также для некоторой гипотетической архитектуры. Реальные программы состоят из сотен, тысяч и даже сотен тысяч инструкций.

Архитектуры и языки сборки

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

Это означает, что у каждого процессора есть свой собственный язык ассемблера, потому что инструкции у него разные.Таким образом, ассемблер (или просто ассемблер, хотя это технически неверно) — это не один язык, это целый набор языков. Все они очень похожи, но различаются тем, какие есть инструкции, каковы операнды и некоторые другие особенности процессора. Однако основной принцип у них тот же (если только это не один из моих экспериментальных процессоров WPU :-)), поэтому, если вы понимаете принцип одного ассемблера для данной архитектуры, изучение других будет легкой задачей.

Итак, важно понимать: ассемблер всегда предназначен для использования с определенной архитектурой.Например, большинство персональных компьютеров используют архитектуру, называемую x86, или, в случае 64-битных систем и приложений, ее расширение x64, поэтому, если вы хотите программировать для этой архитектуры, вы должны использовать язык ассемблера x86. Многие мобильные устройства используют архитектуру под названием ARM, поэтому, если вы запрограммировали эти процессоры на ассемблере, вы должны использовать язык ассемблера ARM. Если вы хотите запрограммировать старую консоль, например Sega Genesis, вы должны использовать язык ассемблера 68000, потому что он использует процессор Motorola 68000 и так далее.Существуют сотни различных архитектур для разных целей.

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

Однако программы, созданные для одной архитектуры, обычно не будут работать на другой, потому что процессор просто другой: разные коды операций, поддерживаемые инструкции и другие функции разные, поэтому машинный код (программа — набор числовых кодов ) для архитектуры x86 было бы тарабарщиной для архитектуры ARM.Это также означает, что когда вы пишете программу на ассемблере для одной архитектуры процессора, она не будет работать на другой: вам нужно будет полностью переписать ее на ассемблер для другой архитектуры.

Потребность в языках программирования и компиляторах высокого уровня

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

Сложность программ

Предположим, вы хотите выполнить более сложное вычисление, например, вы хотите вычислить результат A = 2 + (7 — 3) * 2. Однако процессор не поддерживает ничего подобного, он может только выполнять очень простые операции. Поэтому, если вы хотите писать код на ассемблере, вам нужно разбить этот расчет на простые операции, которые поддерживает процессор.Для математического выражения это делается так же, как если бы вы вычисляли выражение вручную в математическом классе, например: сначала вам нужно вычислить значение в круглых скобках (вычтите 3 из 7), затем умножьте результат на 2 и, наконец, прибавьте его к номеру 2. Результат будет сохранен в регистре A. Таким образом, ассемблерный код будет выглядеть так («;» запускает комментарий — не часть кода, просто замечание о том, что он делает. ):

 ПОД № 3, № 7
МУЛ А, # 2
            
ДОБАВИТЬ # 2, А
             

Конечно, вы редко будете использовать фиксированные числа в вычислениях, вы скорее будете вычислять значения из памяти, поэтому давайте усложним весь процесс следующим изменением уравнения: @ 250 = @ 200 + (@ 201 — @ 202) * @ 203.Здесь @ (число) означает «по адресу» — число, хранящееся в ячейке памяти по данному адресу. Чтобы завершить вычисления, нам нужно загрузить значения из памяти, потому что процессор не позволяет выполнять вычисления с числами по заданным адресам памяти напрямую, однако он предоставляет другой регистр B.

 МОВ Б, 202
МОВ А, 201
ПОД А, В
МОВ Б, 203
MUL A, B
МОВ Б, 200
ДОБАВИТЬ A, B
MOV 250, А 

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

Другая проблема заключается в том, что значения, с которыми вы работаете (вы можете в основном считать их переменными), являются просто числами (адресами), с которыми не совсем легко справиться.Вы можете присвоить адресам некоторые имена, но это немного задержит проблему: вам все равно нужно сказать, что адрес 204 будет известен под именем MYVARIABLE , и если количество переменных увеличится, это быстро станет проблематичным, хотя назначить точное адреса обычно автоматизированы. Не говоря уже о том, что вы можете использовать адрес как определенную переменную только на короткое время, а затем повторно использовать его как другую, но вы также должны убедиться, что оба (или даже больше) использования не будут конфликтовать.

Откуда входит компилятор

Хорошо, вот вопрос: если вы можете разделить выражения и задачи на ряд простых инструкций и если вы можете назначить ячейки памяти для переменных, почему это не может сделать программа? И это именно то, что делает компилятор.Язык программирования определяет, какие операторы вы можете писать и как, и компилятор должен их поддерживать. Итак, вы можете просто написать следующий код (он похож на код C):

 int a, b, c, d, e;
а = 2;
b = 7;
с = 3;
d = 2;
е = а + (Ь - с) * г; 

Когда вы скомпилируете этот код, компилятор проанализирует (проанализирует) этот код и обнаружит, что вам нужны пять переменных. Вам не нужно решать, какие ячейки памяти будут назначены этим переменным: все это делается за вас.Например, компилятор может решить, что содержимое переменной с именем « a » будет храниться в ячейке памяти с адресом 200, « b » в 201 и так далее. Компилятор отслеживает эти назначения, поэтому, где бы вы ни использовали данную переменную, он будет следить за тем, чтобы использовался правильный адрес памяти. На самом деле процесс часто немного сложнее, но принцип остается тем же.

В примере кода есть несколько присвоений значений, начиная с « a = 2; ».Компилятор прочитает это, и в соответствии с правилами языка программирования это означает, что переменной присвоено значение 2. Компилятор знает, какой адрес памяти соответствует переменной с именем « a », поэтому он сгенерирует правильный инструкции для вас: помните, процессор не понимает выражения типа «a = 2;», он может работать только с простыми инструкциями. Но задача компилятора — преобразовать эти высокоуровневые операторы в инструкции, понятные процессору:

 MOV 200, # 2
MOV 201, # 7
MOV 202, # 3
МОВ 203, №2 

Надеюсь, это достаточно просто; каждое присвоение соответствует инструкции процессора (я написал их на языке ассемблера, компилятор, конечно, сгенерирует соответствующие числовые коды для каждой инструкции — машинный код).Однако, когда дело доходит до последнего оператора, который присваивает результат выражения «a + (b — c) * d» переменной « e », это не может быть выполнено с помощью одной инструкции, как вы » видел раньше. Однако все, что вам нужно сделать, это написать это выражение, и компилятор прочитает его и сам произведет разбиение на серию простых инструкций, даже не зная об этом (по крайней мере, до сих пор :-)). Например, он может сгенерировать следующие инструкции:

 МОВ Б, 202
МОВ А, 201
ПОД А, В
МОВ Б, 203
MUL A, B
МОВ Б, 200
ДОБАВИТЬ A, B
MOV 250, А 

Думаю, не нужно объяснять, что гораздо проще написать «e = a + (b — c) * d» вместо серии инструкций, и тот же принцип применим ко всему.Язык программирования высокого уровня позволяет вам выражать действия, которые должны быть выполнены, в более ясной, простой и понятной форме, и компилятор позаботится о преобразовании этого в серию простых инструкций, которые понимает процессор, и обработает все остальные детали. для тебя. Это называется абстракцией и решает проблему сложности программы: вы можете писать и управлять гораздо более сложными программами, потому что вам не нужно беспокоиться обо всех деталях: они позаботятся о вас автоматически.

Может быть важно упомянуть, как обрабатываются некоторые базовые программные конструкции. Например, оператор «, если ». Рассмотрим следующий код C:

 если (a> 2)
    b = 3;
еще
{
    b = 5;
    c = 8;
}
а = 8; 

Процессор не понимает, что такое оператор « if », однако у него есть инструкция условного перехода: он перейдет к другой инструкции, если условие истинно. Таким образом, этот фрагмент будет переведен на следующий ассемблерный код:

 МОВ А, 200
LGR # 2
              
JZ ELSE
              
              
MOV 201, # 3
JMP END
Иначе:
MOV 201, # 5
MOV 202, # 8
КОНЕЦ:
МОВ 201, №8 

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

Потребность в ассемблере в наши дни

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

Это может быть еще более серьезной проблемой при программировании для небольших встроенных устройств с ограниченными ресурсами, когда вы просто не можете позволить себе накладные расходы (больше инструкций, которые действительно необходимы, и неоптимальные способы решения проблем). Другая причина — ограничения компилятора: вы ограничены только тем, что он поддерживает, если вы хотите использовать некоторые функции процессора, для которых компилятор не может генерировать инструкции, например, новые специальные инструкции, вам необходимо напишите их сами.

Знание сборки абсолютно необходимо, если вы хотите проанализировать существующее программное обеспечение, взломать (изменить его поведение) или взломать его. Как вы уже знаете, программа состоит из серии простых инструкций — числовых кодов, которые представляют различные действия. Легко разобрать существующую программу, когда у вас нет ее исходного кода: числовые коды просто заменяются их соответствующими именами, в результате получается код на языке ассемблера, поэтому, если вы хотите анализировать и изменять их, вы должны знать язык ассемблера. .

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

Переносимость

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

Итак, если вы хотите, чтобы ваш код запускался на ПК с архитектурой x86, вы передаете исходные коды компилятору, который генерирует инструкции для x86. Если вы хотите создать двоичный код (машинный код) для мобильного устройства с архитектурой ARM, вы передаете тот же исходный код компилятору ARM, и он сгенерирует инструкции для этой архитектуры без необходимости каких-либо действий.

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

Языки перевода

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

Однако существует нечто, называемое интерпретируемым языком, что значительно упрощает переносимость. Упомяну об этом лишь вкратце, так как эту тему можно развить в большую статью. В интерпретируемом языке программирования исходный код остается как есть, или он компилируется в «универсальный» ассемблерный код (это то, что происходит с Java — полученный универсальный ассемблерный код называется байт-кодом). Если вы хотите запустить такую ​​программу, вам понадобится интерпретатор: это программа в машинном коде — то, что процессор понимает напрямую, который может читать этот универсальный код и транслировать его на лету в инструкции для целевой архитектуры — как программа запущен.

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

Одним из основных недостатков является снижение скорости: например, в случае назначения типа «a = 5» интерпретируемому языку может потребоваться, чтобы процессор выполнял даже несколько десятков инструкций, которые прочитают этот оператор, решат, что оно означает , а затем, наконец, сделайте это, в то время как на скомпилированном языке (в результате получается машинный код) с этой задачей часто справляется одна инструкция.

Заключение

Если вы зашли так далеко: поздравляем! Я надеюсь, что помог раскрыть некоторые секреты работы процессора и его связь как с ассемблером (низкий уровень), так и с программированием высокого уровня.Хотя это не учит вас, как программировать на ассемблере и как взламывать / взламывать / анализировать существующие программы, мы надеемся, что это даст вам необходимые знания, чтобы начать изучать эти вещи и знать, чего ожидать.

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

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

Спасибо за чтение.

.

Как работают компьютеры? Простое введение

Криса Вудфорда. Последнее изменение: 12 апреля 2020 г.

Это был, вероятно, худший прогноз в
история. Еще в 1940-х Томас Уотсон, глава гигантской корпорации IBM, по общему мнению, предсказывал
что миру потребуется не более «примерно пяти компьютеров». Шесть десятилетий спустя и
мировая популяция компьютеров теперь выросла примерно до одного миллиарда машин!

Честно говоря, Ватсон, компьютеры сильно изменились за то время.В 1940-х они были гигантскими
научных и военных гигантов по заказу правительства в
стоимость в миллионы долларов за штуку; сегодня большинство компьютеров даже не
узнаваемы как таковые: они встроены во все, от микроволновых печей до мобильных телефонов и цифровых
радио. Что делает компьютеры достаточно гибкими для работы во всех этих
разная техника? Почему они так феноменально полезны? И как
точно они работают? Рассмотрим подробнее!

Фото: НАСА управляет одними из самых мощных в мире
компьютеры, но это просто супер-увеличенные версии одного
вы используете прямо сейчас.Фото Тома Чиды любезно предоставлено
НАСА.

Что такое компьютер?

Фото: Компьютеры, которые раньше занимали огромную комнату, теперь удобно умещаются на пальце !.

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

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

Как только вы поймете, что компьютеры — это ввод, память, обработка и вывод, весь мусор на вашем столе станет более понятным:

Artwork: компьютер работает, комбинируя ввод, хранение, обработку и вывод. Все основные части компьютерной системы задействованы в одном из этих четырех процессов.

  • Вход : клавиатура и мышь, для
    Например, это просто единицы ввода — способы передачи информации в ваш
    компьютер, который он может обрабатывать.Если вы используете микрофон и программное обеспечение для распознавания голоса, это
    другая форма ввода.
  • Память / хранилище : Ваш компьютер, вероятно, хранит все ваши документы
    и файлы на жестком диске: огромный
    магнитная память. Но небольшие компьютерные устройства, такие как
    цифровые фотоаппараты и мобильные телефоны используют другие виды памяти, такие как карты флэш-памяти.
  • Обработка : процессор вашего компьютера (иногда
    известный как центральный процессор) является
    микрочип закопан глубоко внутри.Он работает невероятно усердно и
    невероятно жарко в процессе. Вот почему на вашем компьютере немного
    вентилятор уносит прочь — чтобы мозг не перегрелся!
  • Выход : Ваш компьютер, вероятно, имеет ЖК-экран
    способна отображать графику с высоким разрешением (очень детализированную),
    а также, возможно, стереодинамики. У вас может быть
    струйный принтер на вашем столе тоже, чтобы сделать
    более постоянная форма выпуска.

Что такое компьютерная программа?

Как вы можете прочитать в нашей длинной статье по истории компьютеров, первая
компьютеры были гигантскими вычислительными машинами, и все, что они когда-либо
это были «решающие цифры»: решать долго, сложно или утомительно
математические задачи.Сегодня компьютеры работают с гораздо большим разнообразием
проблемы — но все они, по сути, вычисления. Все
компьютер делает, помогая вам редактировать фотографию, которую вы сделали
с цифровой камерой для отображения
веб-страница включает в себя управление числами тем или иным способом.

Фото: Калькуляторы и компьютеры очень похожи, потому что оба работают, обрабатывая числа. Однако калькулятор просто вычисляет результаты расчетов; и это все, что он когда-либо делал.Компьютер хранит сложные наборы инструкций, называемых программами, и использует их для выполнения гораздо более интересных задач.

Предположим, вы смотрите на цифровую фотографию, которую вы только что сделали краской или
программа для редактирования фотографий, и вы решаете, что хотите ее зеркальное отображение (в
другими словами, переверните это
слева направо). Вы, наверное, знаете, что фото состоит из
миллионы отдельных пикселей (цветные квадраты), расположенные в виде сетки
шаблон. Компьютер хранит каждый пиксель в виде числа, поэтому
цифровой
фотография действительно похожа на мгновенное упорядоченное упражнение в рисовании
числа! Чтобы перевернуть цифровую фотографию, компьютер просто переворачивает
последовательность чисел, поэтому они идут справа налево, а не слева направо.
право.Или предположим, что вы хотите сделать фотографию ярче. Все вы
имеют
для этого нужно сдвинуть маленький значок «яркость». Затем компьютер работает
через все пиксели, увеличивая значение яркости для каждого из них
скажем, на 10 процентов, чтобы сделать все изображение ярче. Итак, еще раз,
проблема сводится к числам и расчетам.

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

Сегодня большинство пользователей компьютеров полагаются на заранее написанные программы, такие как
Microsoft Word и Excel или загрузите приложения для своих планшетов
и смартфоны, не особо заботясь о том, как они туда попали.
(Приложения, если вы когда-нибудь задумывались, — это просто очень аккуратно упакованный компьютер
программ.) Вряд ли кто-нибудь уже пишет программы,
что очень жаль, потому что это очень весело и очень полезно.
Большинство людей рассматривают свои компьютеры как инструменты, которые помогают им выполнять работу, а не как
сложные электронные машины они должны предварительно программировать.Некоторые скажут, что это тоже хорошо, потому что у большинства из нас есть дела поважнее, чем компьютер.
программирование. Опять же, если мы все полагаемся на компьютерные программы и приложения, кто-то должен
напишите их, и эти навыки необходимы для выживания. К счастью, недавно был
возрождение интереса к компьютерному программированию. «Кодирование»
(неофициальное название программирования, поскольку программы иногда называют «кодом»)
снова преподается в школах с помощью простого в использовании программирования
такие языки, как Scratch.Растет движение любителей, связанных
самостоятельно создавать гаджеты, такие как Raspberry Pi и Arduino.
Клубы кода, где волонтеры обучают детей программированию, возникают по всему миру.

В чем разница между программным и аппаратным обеспечением?

Прелесть компьютера в том, что он может запускать текстовый редактор.
минута, а через пять секунд программа для редактирования фотографий. В других
слова, хотя мы
не думайте об этом так, компьютер можно перепрограммировать как
сколько угодно раз.Вот почему программы еще называют программным обеспечением.
Они «мягкие» в том смысле, что они не фиксированы: их можно
легко меняется. Напротив, компьютерное оборудование —
биты и
части, из которых он сделан (и периферийные устройства,
как мышь и принтер, вы подключаетесь к нему) — в значительной степени исправляется при покупке
это с полки. Оборудование — это то, что делает ваш компьютер мощным;
возможность запускать различное программное обеспечение — вот что делает его гибким. Который
компьютеры могут выполнять так много разных задач, что делает их такими полезными — и именно поэтому миллионы из нас больше не могут жить
без них!

Что такое операционная система?

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

Фото: Типичная архитектура компьютера: компьютер можно представить как серию уровней с аппаратным обеспечением на уровне
внизу — BIOS, соединяющий оборудование с операционной системой, и приложения, которые вы фактически используете (например, текстовые процессоры,
Веб-браузеры и т. Д.), Работающие поверх этого.Каждый из этих уровней относительно независим, поэтому, например, одна и та же операционная система Windows может работать на ноутбуках с другим BIOS, в то время как компьютер под управлением Windows (или другой операционной системы) может запускать любое количество различных приложений.

Это основная идея операционной системы: это основное программное обеспечение компьютера, которое (по сути) контролирует основные операции ввода, вывода, хранения и обработки.
Вы можете думать об операционной системе как об «основе» программного обеспечения на компьютере, на котором построены другие программы (называемые приложениями).Таким образом, текстовый процессор и шахматная игра — это два разных приложения, которые полагаются на операционную систему для выполнения основного ввода, вывода и т. Д. Операционная система полагается на еще более фундаментальную часть программирования, называемую BIOS (базовая система ввода-вывода), которая является связующим звеном между программным обеспечением операционной системы и оборудованием. В отличие от операционной системы, которая одинакова на разных компьютерах, BIOS меняется от машины к машине в зависимости от точной конфигурации оборудования и обычно пишется производителем оборудования.BIOS, строго говоря, не является программным обеспечением: это программа, которая полупостоянно хранится в
одна из основных микросхем компьютера, поэтому она известна как прошивка
(однако обычно он разработан таким образом, чтобы его можно было время от времени обновлять).

У операционных систем есть еще одно большое преимущество. В 1970-х (и в начале 1980-х) практически все компьютеры были до безумия разными. Все они работали по-своему, идиосинкразически, с довольно уникальным оборудованием (разными процессорами, адресами памяти, размерами экрана и всем остальным).Программы, написанные для одной машины (такой как Apple), обычно не запускаются на любой другой машине (такой как IBM) без довольно обширного преобразования. Это было большой проблемой для программистов, потому что им приходилось переписывать все свои программы каждый раз, когда они хотели запустить их на разных машинах. Как операционные системы помогли? Если у вас стандартная операционная система и вы настраиваете ее так, чтобы она работала на любой машине, все, что вам нужно сделать, это написать приложения, которые работают в этой операционной системе. Тогда любое приложение будет работать на любой машине.Операционная система, которая окончательно совершила этот прорыв, была, конечно же, Microsoft Windows, созданная Биллом Гейтсом. (Важно отметить, что существовали и более ранние операционные системы. Вы можете прочитать больше об этой истории в нашей статье об истории компьютеров.)

Что внутри вашего ПК?

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

Фотография: Внутри корпуса типичного ПК показаны четыре ключевые области компонентов, описанные ниже. Фото Армадни, любезно предоставлено
Wikimedia Commons, опубликовано под лицензией Creative Commons.

Внутри типичного ПК все выглядит довольно пугающе и запутанно: печатные платы в виде маленьких «городков» с микросхемами.
для зданий — радужные спутанные провода, идущие между ними, и черт знает что еще. Но работайте над компонентами медленно и логично, и все начинает обретать смысл.Большая часть того, что вы видите, делится на четыре широкие области, которые я выделил зеленым, синим,
красный и оранжевый на этой фотографии.

Блок питания (зеленый)

На основе трансформатора он преобразует домашнее или офисное напряжение питания (скажем, 230/120 вольт переменного тока) в гораздо более низкое постоянное напряжение, необходимое для электронных компонентов (типичное
жесткому диску может потребоваться всего 5–12 В). Обычно есть большой охлаждающий вентилятор снаружи корпуса компьютера рядом с розеткой питания (или гораздо меньший вентилятор на ноутбуке, обычно с одной стороны).В этой машине есть два внешних вентилятора (зеленого и синего цветов) слева, которые охлаждают как блок питания, так и материнскую плату.

Материнская плата (синяя)

Как следует из названия, это мозг компьютера, где и выполняется настоящая работа. Главный процессор (центральный процессор) легко обнаружить, потому что обычно на нем установлен большой вентилятор, который охлаждает его. На этой фотографии процессор находится прямо под черным вентилятором с красным центральным шпинделем.То, что находится на материнской плате, варьируется от машины к машине. Помимо процессора, есть BIOS, микросхемы памяти, слоты расширения для дополнительной памяти, гибкие ленточные соединения с другими печатными платами, соединения IDE (Integrated Drive Electronics) с жесткими дисками и приводами CD / DVD, а также последовательные или параллельные соединения. к таким вещам, как USB-порты и другие порты на корпусе компьютера (часто припаиваются к материнской плате, особенно в ноутбуках).

Прочие печатные платы (красные)

Хотя материнская плата может (теоретически) содержать все микросхемы, необходимые компьютеру, для ПК довольно часто используются еще три отдельные печатные платы: одна для управления сетью, одна для обработки графики и одна для обработки звука.

  • Сетевая карта (также называемая сетевой картой / контроллером, сетевой картой или сетевым адаптером), как следует из названия, соединяет ваш компьютер с другими машинами (или такими вещами, как принтеры) в
    компьютерная сеть
    (обычно это локальная сеть, локальная сеть, дома или в офисе или более широкий Интернет) с использованием системы, называемой Ethernet.
    Старые компьютеры могут иметь отдельную карту беспроводной сети (WLAN) для подключения к Wi-Fi; более новые, как правило, имеют одну сетевую карту, которая поддерживает как Ethernet, так и Wi-Fi.На некоторых компьютерах есть микросхемы, которые обеспечивают работу всей сети на материнской плате.
  • Графическая карта (также называемая видеокартой или адаптером дисплея) — это часть компьютера, которая выполняет все, что связано с дисплеем. Почему этого не делает центральный процессор? На некоторых машинах это может быть, но это замедляет как основную обработку машины, так и графику. Автономные графические карты появились в самом первом ПК IBM PC, который имел автономный адаптер дисплея еще в 1981 году; мощные графические карты в современном стиле для трехмерных полноцветных игр с высоким разрешением, выпущенные в середине 1990-х годов и впервые использованные такими компаниями, как Nvidia и ATI.
  • Звуковая карта — это еще одна автономная печатная плата, основанная на
    цифро-аналоговые и аналого-цифровые преобразователи: он превращает цифровую (числовую) информацию, с которой работает центральный процессор, в аналоговые (постоянно меняющиеся) сигналы, которые могут питать
    колонки; и преобразует аналоговые сигналы, поступающие от микрофона, в цифровые сигналы, понятные процессору. Как и в случае с сетью и графикой, звуковые карты или звуковые чипы могут быть интегрированы в материнскую плату.

Приводы (оранжевые)

ПК обычно имеют один, два или три жестких диска, а также устройство чтения / записи CD / DVD.Хотя на некоторых машинах есть только один жесткий диск и один комбинированный привод CD / DVD, у большинства есть пара пустых слотов расширения для дополнительных приводов.

Производители ПК

обычно проектируют и производят собственные материнские платы, но большинство компонентов, которые они используют, являются стандартными и модульными. Так, например, ваш ПК Lenovo или ноутбук Asus может иметь жесткий диск Toshiba, графическую карту Nvidia, звуковую карту Realtek и т. Д. Даже на материнской плате компоненты могут быть модульными и plug-and-play: «Intel Inside» означает, что у вас под вентилятором установлен процессор Intel.Все это означает, что очень легко заменить или обновить компоненты ПК, когда они изнашиваются или устаревают; вам не нужно выбрасывать всю машину. Если вы заинтересованы в том, чтобы повозиться, в разделе «Как работают компьютеры» ниже есть пара хороших книг, которые проведут вас через этот процесс.

Внешние разъемы («порты»)

Вы можете подключить свой компьютер к периферийным устройствам (внешним устройствам, таким как струйные принтеры, веб-камеры и карты флэш-памяти)
либо с проводным соединением (последовательный или параллельный кабель), либо с беспроводным (обычно Bluetooth или
Вай-фай).Много лет назад компьютеры и периферийные устройства
использовал ошеломляющую коллекцию различных соединителей для связывания
для другого. В наши дни практически все ПК используют
Стандартный способ соединения между собой называется USB (универсальная последовательная шина).
USB предназначен для работы по принципу «подключи и работай»: все, что вы подключаете к компьютеру, работает более или менее
прямо из коробки, хотя вам, возможно, придется подождать, пока ваш компьютер загрузится
драйвер (дополнительное программное обеспечение, которое сообщает ему, как использовать это конкретное оборудование).

Фото: USB-порты на компьютерах очень надежны, но время от времени они ломаются, особенно после многих лет использования.Если у вас есть ноутбук со слотом PCMCIA, вы можете просто вставить карту адаптера USB, как это, чтобы создать два новых порта USB (или добавить еще два порта, если у вас мало).

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

USB обеспечивает гораздо больше возможностей для подключения, чем старые последовательные компьютерные порты.
Он разработан так, что вы можете подключать его разными способами, либо с
по одному периферийному устройству, подключенному к каждому из ваших USB-разъемов или через USB-концентраторы
(где один USB-штекер дает вам доступ к целому ряду USB-разъемов, к которым может быть подключено больше концентраторов и розеток).
Теоретически к одному компьютеру может быть подключено 127 различных USB-устройств.

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *