Количество битов которые одновременно обрабатывают процессор: Центральные устройства ЭВМ | Читать или скачать
О разрядности процессоров
Целью данной статьи является попытка посеять сомнение в голове читателя, уверенного, что он знает о разрядности всё или почти всё. Но сомнение должно быть конструктивным, дабы сподвигнуть на собственное исследование и улучшить понимание.
Термин «разрядность» часто используют при описании вычислительных устройств и систем, понимая под этим число бит, одновременно хранимых, обрабатываемых или передаваемых в другое устройство. Но именно применительно к центральным процессорам (ЦП), как к наиболее сложным представителям вычислительного железа, не делимым на отдельные детали (до тех пор, пока кто-то не придумал, как продать отдельно кэш или умножитель внутри чипа), понятие разрядности оказывается весьма расплывчатым. Продемонстрировать это поможет умозрительный пример.
Представьте себе, что вокруг благодатные 80-е, в мире (всё ещё) десятки производителей ЦП, и вы работаете в одном из них над очередным поколением. Никаких 256-битных SSE8, встроенных GPU и 5-канальных контроллёров памяти на свете пока нет, но у вас уже есть готовый 16-битный процессор (точнее, «16-битный» пишется в технической документации), в котором 16 бит везде и во всём — от всех внешних шин до архитектурного размера обрабатываемых данных. Реальным примером такого ЦП могут быть первые однокорпусные (правда, не однокристальные) ЦП для архитектуры DEC PDP-11. И вот приходит задание руководства — разработать новое, обратно совместимое поколение этого же ЦП, которое будет 32-битным — не уточняя, что понимается под последним. Именно это понимание и предстоит прояснить в первую очередь. Итак, наш главный вопрос: что именно надо удвоить по разрядности в нашем пока насквозь 16-битном ЦП, чтобы получившийся процессор мог называться 32-битным? Чтобы решать задачу было легче, применим два подхода: систематизируем определения и посмотрим на примеры.Систематизируем
Первое, что приходит в голову — разрядность чего именно считать? Обратимся к определению любой информационной системы: её три основных функции — это обработка, хранение и ввод-вывод данных, за которые отвечают, соответственно, процессор(ы), память и периферия. Учитывая, что сложная иерархически самоподобная система состоит из многих компонент, можно утверждать, что такое разделение функций сохраняется и на компонентном уровне. Например, тот же процессор в основном обрабатывает данные, но он также обязан их хранить (для чего у него есть относительно небольшая память) и обмениваться с другими компонентами (для этого есть разные шины и их контроллёры). Поэтому будем функционально разделять разрядности обработки, хранения и обмена информации.
Рискну предположить, что все производители любого программируемого «железа», особенно процессоров, на 90% стараются не для конечных пользователей, а для программистов. Следовательно, с точки зрения производителей процессор должен выполнять нужные команды нужным образом. С другой стороны, детали структуры кристалла (топологические, электрические и физические параметры отдельных транзисторов, вентилей, логических элементов и блоков) могут быть скрыты не только от пользователя, но и от программиста. Выходит, что разрядность надо отличать и по реализации — физическую и архитектурную.
Следует добавить, что программисты тоже бывают разные: большинство пишут прикладные программы на языках высокого уровня с помощью компиляторов (что делает код до некоторой степени платформонезависимым), некоторые пишут драйверы и компоненты ОС (что заставляет более внимательно относиться к учёту реальных возможностей аппаратной части), есть творцы на ассемблере (явно требующем знания целевого процессора), а кто-то пишет сами компиляторы и ассемблеры (аналогично). Поэтому под программистами далее будем понимать именно тех, для кого детали аппаратной реализации важны если не для написания программы вообще, то хотя бы для её оптимизации по скорости — «архитектурная» разрядность чего-либо будет относиться именно к программированию на родном машинном языке процессора или более удобном ассемблере, не залезая при этом в нутро ЦП (это уже вопросы микроархитектуры, которую мы для большего различия и назвали физической реализацией). Описанные нюансы всё равно влияют на всех программистов, т.к. языки высокого уровня почти всегда переводятся компиляторами в машинный код, а компиляторы тоже должен кто-то написать. Исключения в виде интерпретируемых языков тоже не стоят в стороне — сами интерпретаторы тоже создаются с помощью компиляторов.
Осталось рассмотреть, разрядность какой именно информации нам интересна. Что вообще потребляет и генерирует ЦП в информационном смысле? Команды, данные, адреса и сигнально-управляющие коды. О последних речь не идёт — их разрядность жёстко зафиксирована в конкретной аппаратной реализации и в большинстве случаев программно не управляема. Чуть трудней с командами — в семействе архитектур RISC, например, разрядность любого обращения к памяти должна быть равна физической разрядности шины данных процессора, в т.ч. и при считывании кода (кроме некоторых послаблений в современных ARM и PowerPC). Это хорошо для ЦП — нет проблем с невыровненным доступом, все команды имеют одинаковую, либо переменную, но просто вычисляемую длину. Зато плохо для программиста — RISC это усечённый набор команд, которые ещё и занимают больше места, чем при более компактном кодировании (для того же алгоритма нужно больше команд, но и для того же числа команд надо больше байтов). Поэтому именно CISC-парадигма завоевала наибольший подход с её разнообразием и переменной длинной команд, не равной разрядности чего-либо. Разумеется, все современные ЦП внутри — настоящие RISC, но это только физически, а не архитектурно. Остались только два вида информации — данные и адреса. Их и рассмотрим.Собираем
У нас имеется три критерия видов разрядности: функциональный (обработки, хранения и обмена), реализационный (физическая и архитектурная) и типовой (данных и адресов). Итого уже 12 видов этой непонятной штуки. Предположим, что на каждую комбинацию критериев для нашего исходного ЦП мы отвечаем «16-битная» (и физическая разрядность обработки данных, и архитектурная хранения адресов, и все остальные). Теперь посмотрим, какие из этих вопросов обязательно должны давать ответ «32-битная», чтобы получившийся процессор оказался именно таким.
Начнём с архитектурной части. Должен ли ЦП хранить данные и адреса в логическом 32-битном формате, чтобы называться 32-битным? Насчёт данных, очевидно, да, а вот по поводу адресов всё не так просто. Почти все 8-битные (по данным) ЦП имеют возможность хранить 16-битные адреса в парах регистров (иначе им не видать распространённой на этих платформах 16-битной адресации), но от этого их не называют 16-битными. Может быть, если ЦП сможет хранить 32-битные данные, но всего-то 16-битные адреса, его уже можно называть 32-битным?..
На аналогичные вопросы об архитектурных вычислениях над 32-битными данными и адресами, а также программно 32-битном обмене данных с программно 32-битной адресацией ответ может быть таким же — с данными надо, а с адресами не факт.
Intel 486DX2. Где-то здесь притаилась разрядность…
Перейдём на физическую реализацию. Должен ли ЦП хранить данные и адреса в физически 32-битном формате? Оказывается, не обязательно, т.к. для 32-битных операндов можно спарить регистры, чем успешно пользовались ещё 8-битные ЦП, начиная с i8080. А зилоговские 16-битные Z8000 могли даже счетверять регистры, получая 64-битный аргумент (только для данных). Это не так эффективно, т.к. полный объём данных, умещающийся в регистровом файле, не увеличится, но это и не требовалось. Зато всегда есть возможность обратиться и к старшей, и к младшей половине виртуального 32-битного регистра — камень в огороды архитектур IA-32 и MC68k, где можно обращаться только к младшей половине (в IA-32 — ещё и с префиксом, что замедляет выполнение).
Идём далее. Должен ли ЦП обрабатывать данные и адреса 32-битными физическими порциями? Оказывается, и это не требуется, операнды можно обрабатывать половинками в функциональных устройствах 16-битного размера. Стоит вспомнить процессор Motorola MC68000, применявшийся в первых Макинтошах, Амигах, Атари и других популярных машинах — он считался 32-битным, в нём есть 32-битные регистры, но нет ни одного 32-битного ФУ (оно появилось только в 68020). Зато есть целых три 16-битных АЛУ, два из которых умеют спариваться при выполнении 32-битной операции. У i8080 и Z80 8-битные АЛУ выполняли 16-битные операции для вычисления адреса последовательно над его байтами. Позже эта история повторилась с набором SSE и его 128-битными операндами, которые поначалу обрабатывались на 64-битных ФУ.
Наконец, обмен: нужно ли процессору физически принимать и передавать данные 32-битными порциями с 32-битной адресацией? На первый вопрос дали ответ почти все производители ЦП, выпустив чипы с половинной шириной шины: 8 бит для 16-битного i8088, 16 бит для 32-битных MC68000/010 и i80386SX/EX/CX, и даже 8 бит для 32-битного MC68008. С физической разрядностью шины адреса куда веселее. Начнём с того, что для многобайтовых шин данных (т.е. начиная с 16-битной) физическая адресация памяти может происходить по словам или по байтам. В первом случае на шину адреса всегда подаётся адрес слова, а шина данных считывает или записывает нужную его часть — от отдельного байта до слова целиком. Для обозначения разрядности доступа может применяться отдельная шина байт-маски (в архитектуре x86 такой приём начал применяться со времён i386 — по биту на каждый байт шины данных), либо комбинация управляющих сигналов с младшими битами шины адреса, которые в этом режиме не нужны (для 32-биной шины данных адрес слова нацело делится на 4, а потому младшие 2 бита шины адреса всегда равны нулю) — так было до выхода i386. Случай же адресации байтов возможен лишь при динамической подстройке ширины шины и из широко известных ЦП применялся только в MC68020/030. В результате к сегодняшнему дню используется именно адресация слов вместе с байт-маской, поэтому физическая разрядность шины адреса оказывается меньше её логической ширины на число бит, на единицу меньшее разрядности шины данных в байтах. Из чего следует, что 32-битная физическая шина адреса может быть только при 8-битной шине данных, на что ни один архитектор и инженер в здравом уме не пойдёт по очевидным соображениям.
Но это ещё не всё. Зачем нам вообще 32-битная физическая или логическая адресация? Середина-конец 80-х, на рынке только-только появились мегабитные микросхемы памяти, типичный объём памяти для ПК пока что измеряется сотнями килобайт, но чуть позже — мегабайтами. А 32-битная адресация позволит получить доступ к 4 ГБ физического ОЗУ! Да кому вообще такое может понадобиться в ближайшие лет 20 в персоналках?! Неудивительно, что первые популярные «32-битные» ЦП имели совсем не 32 бита логической ширины шины адреса: MC68000 имел 24 (23 физических + 1 для управления разрядами), а MC68008 — и вовсе 20. Intel 386SX (вышедший на 3 года позже оригинального полностью 32-битного i80386), помимо уполовинивания шины данных, сократил и шину адреса до 24 (23 физических) бит, а его встраиваемые версии 386EX/CX имели 26-битную шину. Более того, первые чипсеты, позволявшие оперировать 32-битными адресами, появились лишь в 90-х, а первые материнские платы, имевшие достаточное число слотов памяти, чтобы набрать >4 ГБ модулями максимального на тот момент размера — лишь в 2000-х. Хотя первые ЦП с 64-битной физической шиной адреса (IBM/Motorola PowerPC 620) появились аж в 1994 г.. Выводим
Итак, физически в процессоре вообще ничего не требуется делать 32-битным. Достаточно лишь архитектурно убедить программиста, что ЦП выполняет 32-битные операции одной командой. И хотя она при отсутствии полноценных внутренних ресурсов неизбежно будет декодироваться в цепочки микрокода для управления 16-битными физическими порциями информации и аппаратными блоками — это уже программиста не волнует. Так что же, достаточно переписать прошивку, переделать декодер и схему управления, и вот наш 16-битный процессор сразу стал 32-битным?
Как известно, любую хорошую идею можно довести до абсурда, и тогда она сама себя дискредитирует. Увеличение разрядности ЦП — не исключение. На этом месте архитектурщик сразу должен задаться вопросом — а зачем всё это? Увеличивать разрядность данных хорошо для ускорения работы с ними (часто требуется обрабатывать значения, не умещающиеся в 16 бит), а адресов — для получения возможности оперировать большими объёмами данных (ограничение в 64 КБ для 16-битной адресации, кое-как ослабленное сегментной моделью IA-16, сковывало программистов уже в середине 80-х). Можно, конечно, сделать страничную адресацию с программно переключаемыми банками (могли же 8-битные ЦП адресовать 1 МБ на популярных дешёвых ПК и игровых приставках), но ценой усложнения программ и замедления доступа к памяти. Аналогично — разве имеет смысл делать 32-битность для данных такой, что она почти не ускоряет производительность по сравнению с обработкой 32-битных чисел на 16-битной платформе под управлением программы, а не микрокода? Таким образом мы только упростим программирование, сэкономив на числе команд, но не получим скачок в скорости. Из чего мы приходим к выводу — увеличение разрядности должно реализовываться так, чтобы оно реально привело к качественному (больше памяти) и количественному (быстрее операции) скачку возможностей архитектуры. «Больше памяти» здесь относится именно к качественному развитию, т.к. многие алгоритмы и приложения вообще откажутся работать при недостатке ОЗУ, в то время как даже медленный процессор всё равно рано или поздно программу выполнит. Виртуальная память с дисковой подкачкой бессмысленна при менее чем 32-битной реализации.
Но означает ли всё это, что в ЦП как можно больше ресурсов, и аппаратных, и архитектурных, должны быть 32-битными, чтобы его можно было бы назвать полноценным 32-битным процессором? Совсем нет. Возьмём тот же MC68000 — у него 32-битная архитектура для данных и адресов и 32-битные регистры, но 16-битные АЛУ и внешняя шина данных и 24-битная физическая внешняя адресация. Тем не менее, недостаточная «32-битность» не мешает ему обгонять появившийся на 3 года позже «16-битный» 80286: на популярном в 1980-е бенчмарке Dhrystones MC68000 на 8 МГц набирает 2100 «попугаев», а 286 на 10 МГц — 1900 (также 16-битный i8088 на 4,77 МГц — 300).
Но всё это нам не поможет ответить на вопрос — что же такое разрядность процессора? В момент, когда мы уже было пришли к некоему заключению, на сцене появляется новый герой — тип данных. Всё вышеизложенное имело отношение лишь к целочисленным вычислениям и их аргументам. Но ведь есть ещё и вещественные. Кроме того, пока что мы оперируем скалярными величинами, но есть ещё и векторные. А ведь, по слухам, Intel намерена встроить вещественный сопроцессор прямо внутрь своего нового 80486 (напомню: на дворе у нас, условно — 80-е годы). С учётом того, что внутреннее физическое и архитектурное представление данных (с адресами FPU не работает) 80-битное — как же тогда называть «четвёрку» — «32/80-битным» процессором? Вернёмся обратно в настоящее — как называть Pentium MMX, который откусил 64 бита от каждого 80-битного скалярного вещественного регистра и назвал их целочисленным векторным регистром? А Pentum Pro/II с 256-битной шиной данных между кэшем L2 и ядром? (Ещё ранее MIPS R4000 и его варианты имели внутренний контроллёр L2 с внешней 128-битной шиной до самого кэша.) А как назвать Pentium III с его 128-битными регистрами XMM, хотя в каждом таком векторе могут пока храниться лишь 32-битные компоненты, а обрабатываться лишь парами в 64-битных ФУ, но не четвёрками? А как воспринимать готовящиеся сейчас для новых архитектур (в частности, Intel Larrabee) команды векторной адресации типа Scatter и Gather, где части векторного регистра воспринимаются как адреса, а не данные, и потому адресация тоже может считаться ххх-битной?
Современный спор о переходе с 32-битной на 64-битную платформу повторяет эту историю с дополнениями, ещё более подсаливающими и так разнообразное по вкусу блюдо. Прежде всего, если посмотреть на темпы удвоения разрядности (что бы под ней не понимали) однокристальных ЦП, то окажется, что переход от первых 4-битных к первым 32-битным произошёл всего за 8 лет — c 1971 г. (i4004) по 1979 г. (MC68000 и куда менее известный NS32016). Следующее удвоение до 64 бит потребовало 10 лет — i860 имел 32-битное целое скалярное АЛУ и 32-битные универсальные регистры со спариванием, но 64-битные FPU и целочисленное векторное ФУ, 64-битные внешние шины и, впервые, внутреннюю 128-битную шину ядро-кэш. А пока 64 бита добрались до ПК — прошло ещё лет 15, хотя 64-битный доступ к памяти (через 64-битную же шину данных, но для «32-битного» процессора) появился уже в первых Pentium в 1993 г.. А дело в том, что для целочисленных скалярных вычислений два главных типа операндов — данные и адреса — пока достаточно было иметь лишь 32-битными. Об избыточности 32-битной адресации для 80-90-х гг. уже сказано, но и жёсткая необходимость в 64-битных целочисленных вычислениях, в отличие от 32-битных, также до сих пор не возникала, да и не просматривается и сейчас. Для целых чисел диапазон от –2·109 до 2·109 или от 0 до 4·109 покрывает подавляющее большинство нужд, а редкие моменты 64-битности вполне удовлетворяются дедовским способом — операциями над частями операндов с переносом, что не так уж сильно медленнее и доступно с первых моментов появления 32-битных архитектур. Дополнительной пикантности добавляет тот факт, что 64-битная арифметика над целыми числами в архитектуре x86 появились ещё до AMD64 и EM64T, причём сразу векторная — начиная с набора SSE2 (2001 г.) существуют команды paddq и psubq для сложения и вычитания целых 64-битных компонентов, а команды 32-битного перемножения для любой архитектуры дают 64-битное число (команды деления, соответственно — его принимают; аналогично для многих 16-битных платформ, включая IA-16).
Разрядности некоторых процессоров для ПК
Критерий | Разрядность | |||||||||||
Функциональный | обработки | хранения | обмена | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Реализационный | физич. | архитектурн. | физич. | архитектурн. | физич. | архитектурн. | ||||||
Типовой (D: данных; A: адресов) | D | A | D | A | D | A | D | A | D | A | D | A |
i8080/85, Z80 | 8 | 8 | 8-16 | 16 | 8 | 8 | 8-16 | 16 | 8 | 16 | 8-16 | 16 |
Z8000 | 16 | 16 | 8-64 | 16 | 16 | 16 | 8-64 | 16 | 8-16 | 23 | 8-64 | 23 |
MC68000/010 (MC68008) | 16 | 16 | 8-32 | 32 | 32 | 32 | 8-32 | 32 | 8-16 (8) | 24 (20) | 8-32 | 32 |
MC68020/030 | 32 | 32 | 8-32 | 32 | 32 | 32 | 8-32 | 32 | 8-32 | 32 | 8-32 | 32 |
i8086/186* (i8088/188*) | 16 | 16 | 8-16 | 16 | 16 | 16 | 8-16 | 16 | 8-16 (8) | 20 | 8-16 | 20 |
i80286 | 16 | 16 | 8-16 | 16 | 16 | 16 | 8-16 | 16 | 8-16 | 24 | 8-16 | 24 |
i80386DX | 32 | 32 | 8-32 | 32 | 32 | 32 | 8-32 | 32 | 8-32 | 32 | 8-32 | 32 |
i80386SX (EX/CX) | 32 | 32 | 8-32 | 32 | 32 | 32 | 8-32 | 32 | 8-16 | 24 (26) | 8-32 | 32 |
i860 | 32/64|64 | 32 | 8-64/64|64 | 32 | 32/64/32 | 32 | 8-64/64/64 | 32 | 64 | 64 | 8-64 | 64 |
i80486 | 32/80 | 32 | 8-32/80 | 32 | 32/80 | 32 | 8-32/80 | 32 | 32 | 32 | 8-80 | 32 |
Pentium, K5 (Pentium Pro) | 32/80 | 32 | 8-32/80 | 32 | 32/80 | 32 | 8-32/80 | 32 | 64 | 32 (36) | 8-80 | 32 (51) |
Pentium MMX (Pentium II) | 32/80|64 | 32 | 8-32/80|64 | 32 | 32/80|64 | 32 | 8-32/80|64 | 32 | 64 | 32 (36) | 8-80 | 32 (51) |
K6 (K6-2) | 32/80| 64(/64) | 32 | 8-32/80| 64(/64) | 32 | 32/80| 64(/64) | 32 | 8-32/80| 64(/64) | 32 | 64 | 32 | 8-80 | 32 |
Athlon | 32/80| 64/64 | 32 | 8-32/80| 64/64 | 32 | 32/80| 64/64 | 32 | 8-32/80| 64/64 | 32 | 64 | 36 | 8-80 | 51 |
Athlon XP | 32/80| 64/64 | 32 | 8-32/80| 64/32-128 | 32 | 32/80|64/128 | 32 | 8-32/80| 64/128 | 32 | 64 | 36 | 8-128 | 51 |
Pentium III (Pentium 4/M, Core) | 32/80| 64/64 | 32 | 8-32/80| 64(+128)/32-128 | 32 | 32/80| 64(+128)/128 | 32 | 8-32/80| 64(+128)/128 | 32 | 64 | 36 | 8-128 | 51 |
Pentium 4 D/EE (Athlon 64*) | 64/80| 64/64 | 64 | 8-64/80|64 + 128/32-128 | 64 | 64/80|64 + 128/128 | 64 | 8-64/80|64 + 128/128 | 64 | 64(+16) | 40 | 8-128 | 52 |
Atom | 32-64/80| 64/64-128 | 64 | 8-64/80|64 + 128/32-128 | 64 | 64/80|64 + 128/128 | 64 | 8-64/80|64 + 128/128 | 64 | 64 | 36 | 8-128 | 51 |
Core 2 (i7*) | 64/80| 128/128 | 64 | 8-64/80|64 + 128/32-128 | 64 | 64/80|64 + 128/128 | 64 | 8-64/80|64 + 128/128 | 64 | 64 (192+16) | 40 | 8-128 | 52 |
Athlon II*, Phenom (II)* | 64/80| 128/128 | 64 | 8-64/80|64 + 128/32-128 | 64 | 64/80|64 + 128/128 | 64 | 8-64/80|64 + 128/128 | 64 | 128+16 | 40 (48) | 8-128 | 52 |
* — Мультиплексированная шина данных и адреса (для ЦП с интегрированным контроллёром памяти — только межпроцессорная)
«A/B|C/D» — для данных указана разрядность скалярного целого / вещественного | векторного целого / вещественного доменов
«X+Y» — имеет домены этого вида двух разрядностей
«X-Y» — в зависимости от команды или ФУ принимает все промежуточные значения с целой степенью двойки
Если вы дочитали до этого места, то объявленная цель статьи, скорее всего, уже достигнута, а Идеальное Конечное Точное Определение разрядности так и не найдено. Может быть, его вообще нет, и это даже хорошо. В конце концов, если компьютер это главный инструмент для работы с информацией, то каждая IT-технология это метод улучшения работы компьютера. Разрядность сама по себе ничего не даст в отрыве от всего остального арсенала высоких инфотехнологий. PDA/коммуникаторы, мобильники, нетбуки, медиа-плееры и прочая карманная электроника, а также гигантское количество встроенных контроллёров и бортовых компьютеров отлично работают, увеличивая свою популярность и без всякой 64-битности. Так зачем тогда переходят на большие разрядности? Зачем, например, никому пока не нужная 64-битность в Intel Atom для нетбуков, где 8 ГБ памяти мало того, что никому не нужны, так ещё и за пару часов досуха выжмут батарею, а научные или экономические вычисления (где могут потребоваться 64 целых бита) никто запускать не будет? Один из возможных ответов: «потому что мы можем». Дополнительная пара миллионов транзисторов для удвоения ещё оставшихся 32-битными блоков утонет каплей в море вентилей, уже потраченных на всё остальное в этом же чипе. Галопирующий прогресс микроэлектроники как главного паровоза IT сделал интегральный транзистор таким дешёвым, что теперь лакомый для любого маркетолога шильдик «64 bit» обойдётся потребителю в десяток лишних центов, обеспечивая совсем не бутафорское, а вполне реальное ускорение на 10-50 % в 1-5 % приложений. И если мелкая овчинка стоит почти бесплатной выделки, почему нет?
Основные понятия
Центральный процессор
Эта часть также известен как центральный процессор и CPU, которые, в свою очередь, входят блок управления и арифметики и логики единицы. Ее функциями являются чтение и запись содержимого ячейки памяти, для передачи данных между памятью камеры и специальных регистров, а также декодировать и выполнять инструкции из программы. Процессор серии ячеек памяти, которые используются очень часто, и, таким образом, являются составной частью процессора.
Эти клетки известны названия регистров. Возможно, одного или двух десятков этих регистров. Ом единицу CPU реализует операции, связанные с числовые и символические расчеты.
Как правило, такие подразделения только способность выполнять очень элементарной операции, например, сложения и вычитания двух целые числа, целые числа умножения и деления обработки регистров, битов и сопоставление содержания двух регистров. Персональные компьютеры можно классифицировать в соответствии с так называемым словом размеров, то это, Количество битов, которые процессор может обрабатывать одновременно.
Центральный Память
Это группа клеток, изготовлены с полупроводники, используемые для общих процессов, как исполнения программ и хранения информации по операции. Каждая из этих ячеек может содержать числовое значение, и их требованию возможность направлении. Он заключается в том, что они могут отличить одного от другого с помощью уникального номера или адреса для каждого ячейки. Общее название этих воспоминаний RAM или ОЗУ.
Главным недостатком этого вида памяти является то, что интегральные схемы теряют информацию, сохраненную при поток электричества прерывается. Это было причиной создания воспоминания, информация не была утеряна, когда система выключена. Эти воспоминания получит название Только чтение памяти или ПЗУ.
Для ПК по обработке информации, то необходимо, чтобы эта информация была в специальные клетки, называемые регистрами. Регистры являются группы от 8 и 16 победитель — flops.
Флип — неудавшемуся является устройство, способное хранить двух уровней напряжения, низким один, регулярно 0,5 вольт, и еще одно, обычно от 5 вольт. Низкий уровень энергопотребления в оборотную неудавшемуся интерпретируется как 0, или, и высокий уровень, как и на
Группа из 16 битов называется Слово; Слово можно разбить на группы по 8 бит, называемых бит, и 4 групп битов называются ЗАПРЕЩЕНО.
|
Почему нет 256-битных или 512-битных микропроцессоров?
Думаю об этом. Что именно вы представляете себе «256-битным» процессором? Что делает разрядность процессора на первом месте?
Я думаю, что если никаких дальнейших уточнений не будет сделано, разрядность процессора относится к его ширине ALU. Это ширина двоичного числа, которую он может обрабатывать изначально в одной операции. Следовательно, 32-битный процессор может работать непосредственно со значениями шириной до 32 бит в одной инструкции. Таким образом, ваш 256-битный процессор будет содержать очень большой ALU, способный складывать, вычитать, ORing, ANDing и т. Д., 256-битные числа за одну операцию. Почему ты этого хочешь? Какая проблема делает большой и дорогой ALU достойным и оплачиваемым даже в тех случаях, когда процессор считает только 100 итераций цикла и т. П.?
Дело в том, что вы должны платить за широкий АЛУ, независимо от того, используете ли вы его много или только небольшую часть его возможностей. Чтобы оправдать 256-битный АЛУ, вам нужно найти достаточно важную проблему, которая может действительно выиграть от манипулирования 256-битными словами в одной инструкции. Хотя вы, вероятно, можете придумать несколько примеров, таких проблем недостаточно, чтобы производители почувствовали, что когда-нибудь получат отдачу от значительных инвестиций, необходимых для производства такого чипа. Если есть нишевые, но важные (хорошо финансируемые) проблемы, которые действительно могут выиграть от широкого ALU, то мы увидим очень дорогие процессоры с целевым назначением для этого приложения. Однако их цена помешает широкому использованию за пределами узкого приложения, для которого оно было разработано. Например, Если бы 256 бит сделали возможным использование определенных криптографических приложений для военных, вероятно, возникли бы специализированные 256 битные процессоры стоимостью от 100 до 1000 долларов каждый. Вы бы не положили один из них в тостер, блок питания или даже в машину.
Мне также должно быть ясно, что широкий ALU не только делает ALU более дорогим, но и другие части чипа. АЛУ шириной 256 бит также означает, что должны быть пути данных шириной 256 бит. Одно это заняло бы много кремниевой области. Эти данные должны откуда-то приходить и куда-то уходить, поэтому для эффективного использования широкого ALU необходимы регистры, кэш, другая память и т. Д.
Еще один момент заключается в том, что вы можете сделать любую арифметику ширины на любом процессоре ширины. Вы можете добавить 32-битное слово памяти в другое 32-битное слово памяти на PIC 18 в 8 инструкциях, тогда как вы можете сделать это на той же архитектуре, масштабированной до 32 бит только в 2 инструкциях. Дело в том, что узкий ALU не мешает вам выполнять широкие вычисления, только то, что широкие вычисления займут больше времени. Поэтому вопрос скорости, а не возможностей. Если вы посмотрите на спектр приложений, которым необходимо использовать числа определенной ширины, вы увидите, что очень немногие требуют 256-битных слов. Расходы на ускорение только тех немногих приложений с помощью аппаратного обеспечения, которое не поможет другим, просто не стоят этого и не приносят больших инвестиций в разработку продукта.
Устройства Обработки информации. Процессор.
Устройства Обработки информации. Процессор.
«Мозгом» ПК является процессор, точнее главный процессор (Central Processing Unit, CPU). CPU регулирует, управляет и контролирует рабочий процесс.
Основыне характеристики процессоров.
Производительность CPU характеризуется следующими основными параметрами:
      • Степень интеграции;
      • Внутренняя и внешняя разрядность обрабатываемых данных;
      • Тактовая частота;
      • Память, к которой может адресоваться CPU;
      • Объем установленной кэш-памяти;
      Степень интеграции.
Степень интеграции микросхемы показывает, скольку транзисторов может в ней уместиться. Естевственно чем больше этот показатель, тем болльше производительность у процессора. Обычно измеряется в количестве транизисторов/площадь микросхемы.
      Внутренняя разрядность данных.
Одной из основных характеристик процессора является количество бит, которое он может обрабатывать одновременно. Для простых арифметических команд, выполняющихся внутри процессора, важно, сколько могут обрабатываться одновременно: 16,32 или 64.
      Внешняя разрядность данных.
Процессор управляет системой, обмениваясь данными с кэш-памятью, RAM и другими устройствами по специальным магистралям, называемым шинами. Важнейшими характеристиками являются ее разрядность и тактовая частота, потому что они определяют количество бит информации в секунду, которые теоретически можно передать по шине,- пропускную способность шины.
Тактовая частота современных процессоров значительно превышает тактовую частоту шины, поэтому для повышения производительности необходимо повышение тактовой частоты системной шины.
      Тактовая частота.
Любой современный ПК имеет тактовый генератор (System Clock), который синхронизирует работу различных его компонентов. Минимальный промежуток времени, определяемый тактовым генератором, еще называют циклом. Частота работы тактового генератора FSB измеряется в мегагерцах (миллион циклов в секунду).
Первые ПК имели один тактовый генератор, который с частотой 8 МГц синхронизировал работу процессора, памяти и шины ввода/вывода. С развитием ПК возникла необходимость в использовании нескольких тактовых генераторов. Когда говорят о тактовой частоте системе, тто всегда имеют в виду тактовую частоту системной шиины. Тактовые частоты всех остальных компонентов является кратными частоте системной шине. ТАким образом производительность всей системы в целом зависит от тактовой частоты системной шины.
Увеличение тактовой частоты системной шины обычно дает больший положительный эффект для повышения быстродействия системы, чем увеличение тактовой частоты CPU, т.к. CPU пропускает большое количесвто циклов в ожидании информации от более медленных устройств, одним из которых является системноая шина.
      Адресация памяти.
Процессор находитсяв прямом контакте с оперативной памятью ПК. Данные которые обрабатывает процессор, должны временно располагаться в оперативной памяти и для дальнейшей обработки снова могут быть востребованы из памяти.
Представьте оперативную память как город, в котором каждый дом (ячейка памяти) имеет отдельный адрес. При этом транспортный сервис может целенаправленно отдавать и завозить письма, посылки и т.п. Дорогой является адресная шина .
Адресная шина представляет собой набор проводников, по которым передается информация о местоположении данных в той или иной области памяти.
Ширина адресной шины определяет количество ячеек, к которым может обратиться процессор для чтения или записи. Ширина адресной шины и ширина шины данных не связаны, хотя эти шины работают с одинаковой тактовой частотой.
Как правило, процессоры могут адресовать гораздо больше памяти, чем фактически учстановлено (и может быть установлено) на матеинской плате, что связано с конструктивными и технологическими особенностями производства материнских плат.
Режимы работы процессора.
      Реальный режим.
Реальный режим (Real Mode) соответствует возможностям CPU 8086/8088, позволяя адресовать не более 1 Мбайт памяти.
      Защищенный режим.
Защищенный режим(Protected Mode) появился впервые в процессоре 80286. В этом режиме процессор может адресовать до 16 Мбайт физической и до 1 Гбайт виртуальной памяти. Если физическая память полностью загружена, то данные, не поместившиеся в память, располагаются на винчестере. Таким образом, процессор работает не с реальными, а виртуальными адресами, которые упрвляются с помощью специальных таблиц, чтобы информацию можно было найти или снова записать. Эту памятьназывают еще виртуальной памятью.
Кроме того, в защищенном режиме возможна поддержка мультизадачного режима (Multitasking). При этом процессор может выполнять различные программы в выделенные моменты времени, отведенные каждой из программ.
      Виртуальный режим.
Впервые, начиная с процессора 386, процессоры могут эмулировать работу нескольких процессоров 8086 (максимум 256) и, тем самым, обеспечить многопользовательский режим так, чтобы на одном ПК можно было запустить одновременно даже различные операционные системы.
Устройство компьютера — Школа 52, Владивосток
В 1945 году математик Джон Фон Нейман чётко сформулировал общие принципы функционирования цифровых вычислительных устройств.
Принципы фон Неймана
Цифровое вычислительное устройства должно работать по следующим принципам:
1. Принцип двоичного кодирования.
Согласно этому принципу, вся информация, поступающая в ЭВМ, кодируется с помощью двоичных сигналов.
2. Принцип программного управления.
Из него следует, что программа состоит из набора команд, которые выполняются процессором автоматически друг за другом в определенной последовательности.
3. Принцип однородности памяти:
— программы и данные хранятся в одной и той же памяти, то есть компьютеру всё равно, что содержится в данной ячейке памяти — число, текст или команда;
— над командами выполняются такие же операции, как и над данными;
— команды одной программы могут быть результатом исполнения команд другой программы;
4. Принцип адресации:
— структурно основная память состоит из пронумерованных ячеек, причем процессору в произвольный момент доступна любая ячейка. Двоичные коды команд и данных разделяются на единицы информации, называемые словами, и хранятся в ячейках памяти, а для доступа к ним используются номера соответствующих ячеек — адреса.
— АЛУ в любой момент времени доступна любая ячейка.
Компьютеры, построенные на этих принципах, называются фон-неймановскими.
Цифровое вычислительное устройство должно содержать:
— АЛУ (арифметическо-логическое устройство), которое должно выполнять арифметические и логические операции;
— УУ (устройство управления), которое организует процесс выполнения программ;
В современных компьютерах арифметическо-логическое устройство и устройство управления объединены в центральный процессор;
— ЗУ (запоминающее устройство или память), которое хранит программы и данные;
— ВУ (внешние устройства), которые служат для ввода и вывода информации.
Компьютерная память.
Внешняя память. (Внешние запоминающие устройства — ВЗУ)
Внешняя память предназначена для долговременного и энергонезависимого хранения программ и данных (память, реализованная в виде внешних, относительно материнской платы, устройств с разными принципами хранения информации и типами носителя).
Устройство, которое обеспечивает запись/считывание информации, называется накопителем, или дисководом, а хранится информация на носителях (например, DVD — дисках)
Устройства внешней памяти:
накопители на жестких магнитных дисках (НЖМД), английское название — HDD — Hard Disk Drive)
оптические диски — CD, DVD, Blue-Ray
Flash — память,
Твердотельные накопители (англ. — SSD solid-state drive)
Единицей хранения информации во внешней памяти является файл – последовательность байтов, записанная в устройство внешней памяти и имеющая имя. Обмен информации между оперативной памятью и внешней осуществляется файлами.
Внутренняя память
Оперативная память (ОП) предназначена для временного хранения выполняемых программ и данных, обрабатываемых этими программами. Это энергозависимая память. Физически реализуется в модулях ОЗУ (оперативных запоминающих устройствах) различного типа. При выключении электропитания вся информация в оперативной памяти исчезает.
Занесение информации в память и её извлечение, производится по адресам. Каждый байт ОП имеет свой индивидуальный адрес (порядковый номер).
Адрес – число, которое идентифицирует ячейки памяти (регистры). ОП состоит из большого количества ячеек, в каждой из которых хранится определенный объем информации. ОП непосредственно связана с процессором. Возможности ПК во многом зависят от объёма ОП.
Кеш память — очень быстрая память малого объема служит для увеличения производительности компьютера, согласования работы устройств различной скорости. Это энергозависимая память.
Постоянное запоминающее устройство (ПЗУ) – энергонезависимая память для хранения программ управления работой и тестирования устройств ПК. Важнейшая микросхема ПЗУ – модуль BIOS (Basic Input/Output System – базовая система ввода/вывода), в котором хранятся программы автоматического тестирования устройств после включения компьютера и загрузки ОС в оперативную память. Это неразрушимая память, которая не изменяется при выключении питания.
CMOS (Complementary Metal-Oxide Semiconductor) — память с невысоким быстродействием и минимальным энергопотреблением от батарейки. Используется для хранения информации о конфигурации и составе оборудования компьютера, о режимах его работы. Содержимое изменяется программой, находящейся в BIOS (Basic Input Output System).
Видеопамять — это внутренняя оперативная память, отведённая для хранения данных, которые используются для формирования изображения на экране монитора.
Регистр процессора — блок ячеек памяти, образующий сверхбыструю оперативную память (СОЗУ) внутри процессора; используется самим процессором и большей частью недоступен программисту.
Внутренняя память компьютера
Байты
|
Биты
| |||||||
0
|
0
|
1
|
0
|
1
|
1
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
0
|
1
|
1
|
0
|
1
|
2
|
1
|
0
|
1
|
1
|
0
|
1
|
1
|
0
|
3
|
0
|
0
|
1
|
0
|
1
|
1
|
0
|
0
|
. . . . . . . .
|
Дискретность —
Внутренняя память состоит из частиц – битов
В одном бите памяти хранится один бит информации
Адресуемость
Байт памяти – наименьшая адресуемая часть внутренней памяти ( 1 байт = 8 бит )
Все байты пронумерованы, начиная от 0
Номер байта – адрес байта памяти
Процессор обращается к памяти по адресам
Основные характеристики ПК
Производительность (быстродействие) ПК – возможность компьютера обрабатывать большие объёмы информации. Определяется быстродействием процессора, объёмом ОП и скоростью доступа к ней (современный ПК обрабатывает информацию со скоростью в сотни миллионов операций в секунду).
Производительность (быстродействие) процессора – количество элементарных операций выполняемых за 1 секунду.
Тактовая частота процессора (частота синхронизации) — число тактов процессора в секунду, а такт – промежуток времени (микросекунды) за который выполняется элементарная операция (например сложение). Таким образом Тактовая частота — это число вырабатываемых за секунду импульсов, синхронизирующих работу узлов компьютера. Именно ТЧ определяет быстродействие компьютера. Задается ТЧ специальной микросхемой «генератор тактовой частота», который вырабатывает периодические импульсы. На выполнение процессором каждой операции отводится определенное количество тактов. Частота измеряется в герцах (1/сек). Превышение порога тактовой частоты приводит к возникновению ошибок процессора и др. устройств. Поэтому существуют фиксированные величины тактовых частот для каждого типа процессоров, например: 2,8 ; 3,0 ГГц и тд.
Разрядность процессора – максимальная длина (кол-во разрядов) двоичного кода, который может обрабатываться и передаваться процессором целиком. Разрядность связана с размером специальных ячеек памяти – регистрами. Регистр в 1 байт (8бит) называют восьмиразрядным, в 2байта – 16-разрядным и тд. Высокопроизводительные компьютеры имеют 8-байтовые регистры (64разряда)
Время доступа — Быстродействие модулей ОП, это период времени, необходимый для считывание min порции информации из ячеек памяти или записи в память. Современные модули обладают скоростью доступа свыше 10нс (1нс=10-9с).
Объем памяти (ёмкость) – max объем информации, который может храниться в ней. Скорость обмена информации – скорость записи/считывания на носитель, которая определяется скоростью вращения и перемещения этого носителя в устройстве
Магистрально-модульный принцип построения компьютера.
В основу архитектуры современных персональных компьютеров положен магистрально-модульный принцип. Модульный принцип позволяет потребителю самому комплектовать нужную ему конфигурацию компьютера и производить при необходимости ее модернизацию. Модульная организация компьютера опирается на магистральный (шинный) принцип обмена информацией между устройствами.
Магистраль (системная шина) включает в себя три многоразрядные шины: шину данных, шину адреса и шину управления, которые представляют собой многопроводные линии.
К магистрали подключаются процессор и оперативная память, а также, с помощью специальных согласующих устройств — контроллеров (контроллер клавиатуры, контроллер дисководов, видеоадаптер и т.д.), остальные устройства ввода, вывода и хранения информации. Необходимость использования контроллеров вызвана тем, что функциональные и технические параметры компонентов компьютера могут существенно различаться, например, их быстродействие. Так, процессор может проводить сотни миллионов операций в секунду, тогда как пользователь может вводить с клавиатуры, в лучшем случае 2-3 знака в секунду. Контроллер клавиатуры как раз и обеспечивает согласование скорости ввода информации со скоростью ее обработки.
Шина данных. По этой шине данные передаются между различными устройствами. Например, считанные из оперативной памяти данные могут быть переданы процессору для обработки, а затем полученные данные могут быть отправлены обратно в оперативную память для хранения. Таким образом, данные по шине данных могут передаваться от устройства к устройству в любом направлении. Разрядность шины данных определяется разрядностью процессора, то есть количеством двоичных разрядов, которые могут обрабатываться или передаваться процессором одновременно. Разрядность процессоров постоянно увеличивается по мере развития компьютерной техники.
Шина адреса. Выбор устройства или ячейки памяти, куда пересылаются или откуда считываются данные по шине данных, производит процессор. Каждое устройство или ячейка оперативной памяти имеет свой адрес. Адрес передается по адресной шине, причем сигналы по ней передаются в одном направлении — от процессора к оперативной памяти и устройствам (однонаправленная шина). Разрядность шины адреса определяет объем адресуемой памяти (адресное пространство), то есть количество однобайтовых ячеек оперативной памяти, которые могут иметь уникальные адреса. Количество адресуемых ячеек памяти можно рассчитать по формуле:N = 2I , где I — разрядность шины адреса. Разрядность шины адреса постоянно увеличивалась и в современных персональных компьютерах составляет 36 бит. Таким образом, максимально возможное количество адресуемых ячеек памяти равно: N = 236 = 68719476736.
Шина управления. По шине управления передаются сигналы, определяющие характер обмена информацией по магистрали. Сигналы управления показывают, какую операцию — считывание или запись информации из памяти — нужно производить, синхронизируют обмен информацией между устройствами и так далее.
Для чего нужен процессор в компьютере
Трудно оценивать новую технологию без учёта процессора. Проблема в том, что декодировать то, что делает процессор, довольно сложно, даже если вы технарь.
Процессоры — это мозг компьютера. Они управляют логикой, которая выполняет вычисления и запускает программы на вашем компьютере.
В этой статье мы поговорим о том, что такое процессоры, как они работают, и обсудим основные элементы процессора.
Что такое процессор
Процессор — это часть оборудования, которая интерпретирует инструкции, управляющие компьютером. Процессоры называют мозгом компьютера неспроста: без него компьютеры не могут запускать программы.
Процессоры часто называют ЦП. Технически в компьютере есть более одного процессора, например, графический процессор (GPU), но центральный процессор, возможно, является самым важным из них.
Блоки обработки принимают инструкции из оперативной памяти (RAM) компьютера. Когда эти инструкции получены, ЦП декодирует и обрабатывает действие, а затем выдаёт результат.
Intel и AMD — самые известные компании в индустрии процессоров для настольных, портативных и серверных компьютеров. Intel Core и AMD Ryzen — одни из самых популярных процессоров для настольных ПК. Apple, Nvidia и Qualcomm известны своими процессорами для мобильных устройств.
Где находится процессор
Процессоры расположены на материнской плате компьютера. Они подключаются к так называемому сокету ЦП или слоту ЦП. Обычно рядом с процессором есть рычаг, который используется для обеспечения того, чтобы он оставался прикреплённым к материнской плате.
Что делает процессор процессором
Процессор состоит из четырёх компонентов: ALU, FPU, регистров и кэш-памяти.
Арифметико-логический блок (ALU) выполняет все арифметические и логические операции. Он работает с целыми числами. Модуль с плавающей запятой (FPU) управляет числами с плавающей запятой, которые являются числами, включающими десятичную дробь.
Тогда есть реестр. В регистре хранятся инструкции, полученные от других частей компьютера. Затем он сообщает ALU, какие процессы выполнять, и сохраняет результаты этих операций.
Наконец, процессоры включают в себя память L1, L2 и L3. Этот кэш-память позволяет процессору хранить данные локально, не извлекая их из ОЗУ. Включение этого компонента помогает сделать ЦП более быстрым и эффективным.
Как работает процессор
Процессоры могут поставляться с большим количеством наворотов, чем когда-либо прежде. По своей сути они состоят из одного и того же набора процессов. Эти процессы называются циклом выборки-выполнения. Этот цикл состоит из трёх шагов: выборка; декодировать; и выполнить.
Выборка
Первый шаг в цикле выборка-выполнение — выборка. Он включает в себя получение — или «извлечение» — инструкции. Эта инструкция передаётся из ОЗУ в ЦП.
Когда процессор получает инструкцию, он будет отслеживать ту, над которой работает, используя счётчик программ. Все инструкции, которые он получает, хранятся в регистре команд.
Декодировать
Когда инструкция была выбрана и сохранена в регистре инструкций, ЦП обрабатывает инструкцию, используя свой декодер. Это превращает инструкцию в серию сигналов, которые могут интерпретироваться другими частями ЦП.
Выполнить
В конце этого процесса декодированные инструкции выполняются. Инструкции отправляются другим частям процессора для выполнения. После выполнения этих инструкций они обычно сохраняются в регистре ЦП. Это помогает повысить скорость процессора, поскольку он может запоминать некоторые инструкции, которые он ранее обработал.
Технические характеристики процессора
Хотя все процессоры выполняют одни и те же — инструкции процесса, — спецификации процессора различаются в зависимости от варианта его использования. Давайте обсудим несколько основных характеристик, о которых вам следует знать.
32- и 64-битные процессоры
Есть два основных типа процессоров: 32-битные и 64-битные. Эти числа относятся к тому, сколько бит может быть передано одновременно между разными частями ЦП. Чем выше количество битов, тем быстрее будет процессор.
Тактовая частота
Тактовая частота означает, сколько инструкций процессор может обработать в секунду. Обычно они представлены в гигагерцах (ГГц), и вы часто будете видеть это число в спецификациях процессора. Чем выше тактовая частота, тем быстрее будет работать процессор.
В большинстве случаев сравнивать тактовую частоту необходимо только при оценке процессоров одного поколения. Это потому, что, хотя тактовая частота является фактором, влияющим на скорость процессора, есть и другие компоненты, которые имеют такое же значение.
L2 / L3 кэш
Память L2 и L3 — это место, где ЦП хранит обычно используемые данные. Вместо того, чтобы обращаться к ОЗУ каждый раз, когда ЦП необходимо обработать инструкцию, ЦП может хранить некоторые инструкции, которые часто возникают внутри себя. Кэш работает быстрее, чем ОЗУ, потому что он является частью процессора, чем больше у вас кеша, тем быстрее будет ваш процессор.
Как работают ядра процессора
В старые времена вычислительной техники компьютерный процессор имел бы одно ядро. Это означает, что он мог одновременно выполнять только один набор инструкций. Аппаратные инженеры раздвинули этот предел, и сегодня многоядерные процессоры стали стандартом. Многоядерные процессоры имеют несколько ядер, поэтому они могут выполнять разные инструкции одновременно.
Большинство компьютеров сегодня имеют от двух до четырёх ядер. Вы часто слышите, что эти настройки называются «двухъядерными» и «четырехъядерными» соответственно. Некоторые процессоры имеют до 12 ядер, в зависимости от их назначения. Чем больше ядер у ЦП, тем больше инструкций может интерпретировать процессор.
Многоядерные процессоры — это просто два или более процессора на одном кристалле. Четырехъядерный процессор — это четыре процессора, всё на одном кристалле. Затем они связываются, чтобы они могли работать вместе.
Подведение итогов
Процессоры — неотъемлемая часть компьютера. Он отвечает за обработку данных, которые позволяют запускать программы на вашем компьютере. В последние годы процессоры значительно улучшились.
Внедрение многоядерных процессоров, а также новые инновации, такие как гиперпоточность, позволяют нашим компьютерам работать быстрее и эффективнее.
2. Микропроцессор
как основа персональной информатики, общая схема, принцип функционирования
Микропроцессор — центральное устройство (или
комплекс устройств) ЭВМ (или вычислительной системы), которое выполняет
арифметические и логические операции, заданные программой преобразования
информации, управляет вычислительным процессом и координирует работу устройств
системы (запоминающих, сортировальных, ввода — вывода, подготовки данных и
др.). В вычислительной системе может быть несколько параллельно работающих
процессоров; такие системы называют многопроцессорными. Наличие нескольких
процессоров ускоряет выполнение одной большой или нескольких (в том числе
взаимосвязанных) программ. Основными характеристиками микропроцессора являются
быстродействие и разрядность. Быстродействие — это число выполняемых операций в
секунду. Разрядность характеризует объём информации, который микропроцессор
обрабатывает за одну операцию: 32-разрядный процессор за одну операцию
обрабатывает 32 бит информации, 64-разрядный — 64 бита. Скорость работы
микропроцессора во многом определяет быстродействие компьютера. Он выполняет
всю обработку данных, поступающих в компьютер и хранящихся в его памяти, под
управлением программы, также хранящейся в памяти. Персональные компьютеры
оснащают центральными процессорами различных мощностей. Основные функции
которых обработка данных по заданной программе путем выполнения арифметических
и логических операций и программное управление работой устройств компьютера.
Устройства микропроцессора
Устройство
управления (УУ).
Осуществляет координацию работы всех остальных устройств, выполняет функции
управления устройствами, управляет вычислениями в компьютере.
Арифметико-логическое
устройство (АЛУ).
Так называется устройство для целочисленных операций. Арифметические операции,
такие как сложение, умножение и деление, а также логические операции (OR, AND,
ASL, ROL и др.) обрабатываются при помощи АЛУ. Эти операции составляют
подавляющее большинство программного кода в большинстве программ. Все операции
в АЛУ производятся в регистрах — специально отведенных ячейках АЛУ. В
процессоре может быть несколько АЛУ. Каждое способно исполнять арифметические
или логические операции независимо от других, что позволяет выполнять несколько
операций одновременно. Арифметико-логическое устройство выполняет
арифметические и логические действия. Логические операции делятся на две
простые операции: «Да» и «Нет» («1» и
«0»). Обычно эти два устройства выделяются чисто условно,
конструктивно они не разделены.
AGU
(Address Generation Unit) — устройство генерации адресов. Это устройство не
менее важное, чем АЛУ, т.к. оно отвечает за корректную адресацию при загрузке
или сохранении данных. Абсолютная адресация в программах используется только в
редких исключениях. Как только берутся массивы данных, в программном коде
используется косвенная адресация, заставляющая работать AGU.
Математический
сопроцессор (FPU).
Процессор может содержать несколько математических сопроцессоров. Каждый из них
способен выполнять, по меньшей мере, одну операцию с плавающей точкой
независимо от того, что делают другие АЛУ. Метод конвейерной обработки данных
позволяет одному математическому сопроцессору выполнять несколько операций
одновременно. Сопроцессор поддерживает высокоточные вычисления как
целочисленные, так и с плавающей точкой и, кроме того, содержит набор полезных
констант, ускоряющих вычисления. Сопроцессор работает параллельно с центральным
процессором, обеспечивая, таким образом, высокую производительность. Система
выполняет команды сопроцессора в том порядке, в котором они появляются в
потоке. Математический сопроцессор персонального компьютера IBM PC позволяет
ему выполнять скоростные арифметические и логарифмические операции, а также
тригонометрические функции с высокой точностью.
Дешифратор
инструкций
(команд). Анализирует инструкции в целях выделения операндов и адресов, по
которым размещаются результаты. Затем следует сообщение другому независимому
устройству о том, что необходимо сделать для выполнения инструкции. Дешифратор
допускает выполнение нескольких инструкций одновременно для загрузки всех
исполняющих устройств.
Кэш-память. Особая высокоскоростная память
процессора. Кэш используется в качестве буфера для ускорения обмена данными
между процессором и оперативной памятью, а также для хранения копий инструкций
и данных, которые недавно использовались процессором. Значения из кэш-памяти
извлекаются напрямую, без обращения к основной памяти. При изучении
особенностей работы программ было обнаружено, что они обращаются к тем или иным
областям памяти с различной частотой, а именно: ячейки памяти, к которым
программа обращалась недавно, скорее всего, будут использованы вновь.
Предположим, что микропроцессор способен хранить копии этих инструкций в своей
локальной памяти. В этом случае процессор сможет каждый раз использовать копию
этих инструкций на протяжении всего цикла. Доступ к памяти понадобиться в самом
начале. Для хранения этих инструкций необходим совсем небольшой объём памяти.
Если инструкции в процессор поступают достаточно быстро, то микропроцессор не
будет тратить время на ожидание. Таким образом экономиться время на выполнение
инструкций. Но для самых быстродействующих микропроцессоров этого недостаточно.
Решение данной проблемы заключается в улучшении организации памяти. Память
внутри микропроцессора может работать со скоростью самого процессора.
Кэш
первого уровня (L1 cache). Кэш-память, находящаяся внутри процессора. Она
быстрее всех остальных типов памяти, но меньше по объёму. Хранит совсем недавно
использованную информацию, которая может быть использована при выполнении
коротких программных циклов.
Кэш
второго уровня (L2 cache). Также находится внутри процессора. Информация,
хранящаяся в ней, используется реже, чем информация, хранящаяся в кэш-памяти
первого уровня, но зато по объёму памяти он больше. Также в настоящее время в
процессорах используется кэш третьего уровня.
Основная
память. Намного больше по объёму, чем кэш-память, и значительно менее
быстродействующая.
Многоуровневая
кэш-память позволяет снизить требования наиболее производительных
микропроцессоров к быстродействию основной динамической памяти. Кэш-память, как
известно, может достаточно сильно влиять на производительность процессора в
зависимости от типа исполняемых операций, однако ее увеличение вовсе не
обязательно принесет увеличение общей производительности работы процессора. Все
зависит от того, насколько приложение оптимизировано под данную структуру и
использует кэш, а также от того, помещаются ли различные сегменты программы в
кэш целиком или кусками.
Шина
— это канал
пересылки данных, используемый совместно различными блоками системы. Шина может
представлять собой набор проводящих линий в печатной плате, провода, припаянные
к выводам разъемов, в которые вставляются печатные платы, либо плоский кабель.
Информация передается по шине в виде групп битов. В состав шины для каждого
бита слова может быть предусмотрена отдельная линия (параллельная шина), или
все биты слова могут последовательно во времени использовать одну линию
(последовательная шина). К шине может быть подключено много приемных устройств
— получателей. Обычно данные на шине предназначаются только для одного из них.
Сочетание управляющих и адресных сигналов, определяет для кого именно.
Управляющая логика возбуждает специальные стробирующие сигналы, чтобы указать
получателю, когда ему следует принимать данные. Получатели и отправители могут
быть однонаправленными и двунаправленными. Различают несколько типов шин.
Шина
данных. Служит для
пересылки данных между процессором и памятью или процессором и устройствами
ввода-вывода. Эти данные могут представлять собой как команды микропроцессора,
так и информацию, которую он посылает в порты ввода-вывода или принимает
оттуда.
Шина
адресов.
Используется ЦП для выбора требуемой ячейки памяти или устройства ввода-вывода
путем установки на шине конкретного адреса, соответствующего одной из ячеек
памяти или одного из элементов ввода-вывода, входящих в систему.
Шина
управления. По ней
передаются управляющие сигналы, предназначенные памяти и устройствам
ввода-вывода. Эти сигналы указывают направление передачи данных (в процессор
или из него).
BTB (Branch Target Buffer) — буфер целей ветвления. В
этой таблице находятся все адреса, куда будет или может быть сделан переход.
Процессоры Athlon еще используют таблицу истории ветвлений (BHT — Branch
History Table), которая содержит адреса, по которым уже осуществлялись
ветвления.
Регистры — это внутренняя память процессора.
Представляют собой ряд специализированных дополнительных ячеек памяти, а также
внутренние носители информации микропроцессора. Регистр является устройством
временного хранения данных, числа или команды и используется с целью облегчения
арифметических, логических и пересылочных операций. Над содержимым некоторых
регистров специальные электронные схемы могут выполнять некоторые манипуляции.
Например, «вырезать» отдельные части команды для последующего их
использования или выполнять определенные арифметические операции над числами.
Основным элементом регистра является электронная схема, называемая триггером,
которая способна хранить одну двоичную цифру. Регистр представляет собой
совокупность триггеров, связанных друг с другом определённым образом общей
системой управления. Существует несколько типов регистров, отличающихся видом
выполняемых операций.
Некоторые
важные регистры имеют свои названия, например:
сумматор
— регистр АЛУ, участвующий в выполнении каждой операции.
счетчик
команд — регистр УУ, содержимое которого соответствует адресу очередной
выполняемой команды; служит для автоматической выборки программы из
последовательных ячеек памяти.
регистр
команд — регистр УУ для хранения кода команды на период времени, необходимый
для ее выполнения. Часть его разрядов используется для хранения кода операции,
остальные — для хранения кодов адресов операндов.
Архитектура
микропроцессора –
принцип его внутренней организации, общая структура, конкретная логическая
структура отдельных устройств. Понятие архитектуры микропроцессора включает в
себя систему команд и способы адресации, возможность совмещения выполнения
команд во времени, наличие дополнительных устройств в составе микропроцессора,
принципы и режимы его работы. Выделяют понятия микроархитектуры и
макроархитектуры.
Микроархитектура
микропроцессора -
это аппаратная организация и логическая структура микропроцессора, регистры,
управляющие схемы, арифметико-логические устройства, запоминающие устройства и
связывающие их информационные магистрали.
Макроархитектура
микропроцессора -
это система команд, типы обрабатываемых данных, режимы адресации и принципы
работы микропроцессора.
В
общем случае под архитектурой ЭВМ понимается абстрактное представление машины в
терминах основных функциональных модулей, языка ЭВМ, структуры данных.
В
соответствии с архитектурными особенностями, определяющими свойства системы
команд, различают:
Микропроцессоры с CISC архитектурой — Компьютер со сложной системой
команд. Исторически они первые и включают большое количество команд. Все
микропроцессоры корпораций Intel (Integrated Electronics) и AMD (Advanced Micro
Devices) относятся к категории CISC. Для ускорения работы CISC процессоров
применяется набор дополнительных инструкций (Instruction Set). Естественно
только при условии поддержки данных наборов со стороны приложения. Все
традиционные современные процессоры поддерживают набор инструкций MMX, который
был самым первым (разработан корпорацией Intel еще в 1997 году). MMX
расшифровывается как MultiMedia eXtensions (мультимедийные расширения). Он
представил дополнительные возможности, ориентированные на обработку цифрового
изображения и звука. В основе технологии лежит концепция (микроархитектура)
SIMD (Single Instruction Many Data – «одна команда, много данных»),
когда при помощи одной инструкции одновременно обрабатывается несколько
элементов данных. SSE, SSE2, 3DNow! — дальнейшее развитие этой идеи.
Микропроцессоры Intel Pentium 3 поддерживают SSE, а Pentium 4 и AMD Athlon 64
еще и SSE2 (это относится и к соответствующим микропроцессорам Intel Celeron). Процессоры
AMD Athlon и Duron поддерживают наборы инструкций 3DNow!Professional и MMX, в
Athlon XP была добавлена поддержка SSE (на уровне микрокода ядра).
Микропроцессоры с RISC архитектурой — Компьютер с сокращенной системой команд. Упрощена
система команд и сокращена до такой степени, что каждая инструкция выполняется
за единственный такт. Вследствие этого упростилась структура микропроцессора, и
увеличилось его быстродействие. Все команды работают с операндами и имеют
одинаковый формат. Обращение к памяти выполняется с помощью специальных команд
загрузки регистра и записи. Простота структуры и небольшой набор команд
позволяет реализовать полностью их аппаратное выполнение и эффективный конвейер
при небольшом объёме оборудования. Арифметику RISC — процессоров отличает
высокая степень дробления конвейера. Этот прием позволяет увеличить тактовую
частоту ( значит, и производительность ) компьютера; чем более элементарные
действия выполняются в каждой фазе работы конвейера, тем выше частота его
работы. RISC — процессоры с самого начала ориентированны на реализацию всех
возможностей ускорения арифметических операций, поэтому их конвейеры обладают
значительно более высоким быстродействием, чем в CISC — процессорах. В
результате чего, RISC — процессоры в 2 — 4 раза быстрее имеющих ту же тактовую
частоту CISC — процессоров с обычной системой команд и высоко производительней,
несмотря на больший объем программ, на ( 30 % ). Дейв
Система команд микропроцессора
Команды
передачи данных (перепись), копирующие информацию из одного места в другое.
Арифметические
операции, к которым в основном относят операции сложения и вычитания. Умножение
и деление обычно реализуется с помощью специальных программ.
Логические
операции, позволяющие компьютеру производить анализ получаемой информации.
Простейшими примерами команд рассматриваемой группы могут служить сравнение, а
также известные логические операции и, или, не.
Сдвиги
двоичного кода влево и вправо. В некоторых случаях сдвиги используются для
реализации умножения и деления.
Команды
ввода и вывода информации для обмена с внешними устройствами. В некоторых ЭВМ
внешние устройства являются специальными служебными адресами памяти, поэтому
ввод и вывод осуществляется с помощью команд переписи.
Команды
управления, реализующие нелинейные алгоритмы. Сюда относят условный и
безусловный переходы, а также команды обращения к подпрограмме (переход с
возвратом). Часто к этой группе относят операции по управлению процессором типа
останов или нет операции.
Любая
команда ЭВМ обычно состоит из двух частей – операционной и адресной.
Операционная часть называемая также кодом операции указывает, какое действие
необходимо выполнить с информацией. Операционная часть имеется у любой команды.
Адресная часть описывает, где используемая информация хранится и куда поместить
результат. В некоторых командах управления работой машины адресная часть может
отсутствовать.
Код
операции можно представить себе как некоторый условный номер в общем списке
команд. В основном этот список построен в соответствии с определенными
внутренними закономерностями.
Адресная
часть обладает значительно большим разнообразием. Основу адресной части
составляет операнд. В зависимости от количества возможных операндов команды
могут быть одно- и двухадресные. В двухадресных командах результат записывается
либо в специальный регистр (сумматор), либо вместо одного из операндов.
Способы
адресации данных
Способы
(или методы) адресации не что иное, как способы указания на те или иные ячейки
памяти, с которыми должен манипулировать оператор. Существует много различных
методов адресации. Количество их зависит от типа процессора. Наличие большого
количества способов адресации обеспечивает высокую гибкость в построении
программ и является большим преимуществом системы команд данного типа ЭВМ. Способы
адресации практически одинаковы для всех команд, в которых присутствуют
операнды. Рассмотрим три основные способа адресации данных.
Регистровая
адресация. При этом способе операндом является один из регистров общего
назначения. Число хранится непосредственно в регистре. Записывается как Rn, где
n – номер регистра.
Косвенная
адресация. При этом способе адресации в одном из регистров общего назначения
содержится не само число, с которым нужно работать, а его адрес, то есть номер
ячейки памяти, в котором число находится. Записывается как (Rn), где n – номер
регистра.
Автоинкрементная
адресация. Этот вид адресации несколько сложнее двух предыдущих. Помимо
основного действия (косвенного обращения к ячейке памяти), при использовании
этого метода, происходит еще изменение адреса этого обращения. В данном случае
увеличивается указатель адреса ячейки памяти, к которой мы обращаемся, то есть
содержимое регистра, служащего указателем адреса. Данное увеличение происходит
автоматически, без какой-либо команды. Записывается эта адресация как (Rn)+.
То, что знак + стоит после имени регистра, намекает на порядок выполнения
команды: сначала происходит операция с ячейкой, на которую указывает адрес
помещенный в регистр Rn, а потом уже содержимое регистра увеличивается на 2 (если
оператор работает со словом, то переход к адресу следующего слова), или на 1
(если оператор работает с байтом, переход к адресу следующего байта). Данный
способ адресации применяется для работы с массивами и при использовании стека
(например, при использовании подпрограмм).
Параметры микропроцессора
Параметры определяющие
производительность
1.
Тактовая частота (Частота ядра) (Internal clock) – это количество электрических
импульсов в секунду.
2.
Объем Кэш-памяти (Cache) – Кэш-память быстрая память, используемая процессором
для ускорения операций, требующих обращения к памяти. На общую
производительность влияет размер кэша L2. Чем больше L2, тем дороже процессор,
т.к. память для кэша еще очень дорога.
3.Разрядность
– максимальное количество разрядов двоичного кода, которые могут обрабатываться
или передаваться одновременно (32 или 64 бита обычно)
4.
Быстродействие микpопpоцессоpа — это число элементаpных опеpаций, выполняемых
микpопpоцессоpом в единицу вpемени (опеpации/секунда).
Эксплуатационные параметры
микропроцессора
1.
Напряжение питания микропроцессора – величина питающего напряжения
микропроцессоров зависит от технологического процесса и от частоты ядра. Чем
меньше кристалл и ниже частота, тем меньше напряжение питания. Напряжение
питания современных микропроцессоров от 0,5 В до 3,5 В, чаще всего от 1,2 В до
1,75 В.
2.
Ток ядра – у современных микропроцессоров ток, протекающий через ядро от 1 А до
90 А.
3.
Потребляемая мощность – зависит от величины питающего напряжения и от частоты
ядра. Чем меньше напряжение питания и частота, тем меньше потребляемая
мощность. Мощность современных микропроцессоров от 1Вт до 120 Вт. Чаще всего в
пределах 40-70 Вт.
4.
Максимальная температура нагрева кристалла – максимальная температура кристалла,
при которой возможна стабильная работа микропроцессора. У современных
микропроцессоров она колеблется в пределах от 60˚С до 95˚С.
Физические параметры микропроцессорв
(Форм-фактор)
1.Тип,
размеры корпуса
2.Размеры
кристалла
3.Количество
выводов
4.Форма
расположения выводов
cpu — Сколько байтов обрабатывает 64-битный процессор?
По сути, ваша первая ссылка была неправильной, а ваша вторая ссылка была правильной, но они не давали полной картины.
Вот (я надеюсь) более полная и точная картина. Основы процессора / памяти:
64-битный процессор имеет 64-битную внутреннюю «шину». Это буквально 64 провода, каждый из которых может пропускать высокое или низкое напряжение (1 или 0) в любой момент времени. Это позволяет несколько вещей, в том числе:
1) 64-битные (8 байтов) данные могут «протекать» по шине в любой момент времени.Эти данные «проталкиваются» через шину каждый раз, когда тикают «часы» ЦП. Если вам интересно, «часы» ЦП обычно представляют собой внутренний кристалл, который вибрирует («колеблется»), когда он электрически заряжен. Окулирующий кристалл создает электронную «волну», которая затем трансформируется в жесткую, «переключаемую» форму волны. Это такт процессора, и каждый такт «проталкивает» данные по шине (проще говоря). Например, 64-разрядный ЦП с частотой 1 ГГц может «проталкивать» данные 1 миллиард раз в секунду, и каждый раз он передает 64 бита.32) «адреса» памяти.
ПРИМЕЧАНИЕ. Имейте в виду, что по мере добавления технологий, таких как биты с 3 состояниями, многоядерные процессоры, оптоволокно и т. Д., Эти фундаментальные вычисления усложняются.
ИСТОЧНИК: Бакалавр наук в области вычислительной техники / электротехники от Purdue (IUPUI) в 2010 г. и работал в области данных / информационных технологий / анализа в течение последних 8 лет. Я также являюсь сборщиком / энтузиастом игровых ПК и наркоманом AnadTech / TomsHardawre 🙂
С уважением,
— Джонатан Мэтьюз,
Центральный процессор (ЦП): его компоненты и функции
Унаследованные от более ранних разработок, такие как разностный двигатель Бэббиджа и системы перфокарт мэйнфреймов 1970-х годов, оказывают значительное влияние на сегодняшние компьютерные системы.В моей первой статье из этой исторической серии «История компьютеров и современные компьютеры для системных администраторов» я обсуждал несколько предшественников современного компьютера и перечислял характеристики, которые определяют то, что мы сегодня называем компьютером.
В этой статье я обсуждаю центральный процессор (ЦП), включая его компоненты и функции. Многие темы относятся к первой статье, поэтому обязательно прочтите ее, если вы еще этого не сделали.
Центральный процессор (ЦП)
ЦП в современных компьютерах — это воплощение «мельницы» в разностной машине Бэббиджа.Термин центральный процессор возник еще в глубине компьютерного времени, когда один массивный шкаф содержал схемы, необходимые для интерпретации программных команд машинного уровня и выполнения операций с предоставленными данными. Центральный процессор также выполнил всю обработку любых подключенных периферийных устройств. Периферийные устройства включали принтеры, устройства чтения карт и ранние устройства хранения, такие как барабанные и дисковые накопители. Современные периферийные устройства сами по себе обладают значительной вычислительной мощностью и разгружают некоторые задачи обработки с центрального процессора.Это освобождает ЦП от задач ввода / вывода, так что его мощность применяется к основной текущей задаче.
Ранние компьютеры имели только один ЦП и могли выполнять только одну задачу за раз.
Сегодня мы сохраняем термин CPU, но теперь он относится к пакету процессоров на типичной материнской плате. На рисунке 1 показан стандартный пакет процессора Intel.
Рис. 1. Процессор Intel Core i5 (Джуд МакКрэни через Wikimedia Commons, CC BY-SA 4.0).
Здесь действительно не на что посмотреть, кроме самого процессора.Пакет процессора представляет собой микросхему, содержащую процессор (ы), запечатанный внутри металлического контейнера и установленный на небольшой печатной плате (ПК). Пакет просто вставляется в гнездо ЦП на материнской плате и фиксируется блокирующим рычагом. К процессору присоединяется кулер ЦП. Существует несколько различных физических разъемов с определенным количеством контактов, поэтому выбор правильной упаковки, подходящей для разъема на материнской плате, имеет важное значение, если вы собираете свои собственные компьютеры.
Как работает ЦП
Рассмотрим процессор подробнее.На рисунке 2 представлена концептуальная схема гипотетического ЦП, чтобы вам было легче визуализировать компоненты. ОЗУ и системные часы затенены, потому что они не являются частью ЦП и показаны только для наглядности. Кроме того, не предусмотрены никакие связи между часами ЦП и блоком управления с компонентами ЦП. Достаточно сказать, что сигналы от часов и блока управления являются неотъемлемой частью всех остальных компонентов.
Рисунок 2: Упрощенная концептуальная схема типичного ЦП.
Этот дизайн не выглядит особенно простым, но на самом деле все еще сложнее. Эта цифра достаточна для наших целей, но не слишком сложна.
Арифметико-логический блок
Арифметико-логический блок (ALU) выполняет арифметические и логические функции, которые являются работой компьютера. Регистры A, и B, , , хранят входные данные, а накопитель принимает результат операции.Регистр команд содержит команду, которую ALU должен выполнить.
Например, при сложении двух чисел одно число помещается в регистр A, а другое — в регистр B. ALU выполняет сложение и помещает результат в аккумулятор. Если операция является логической, сравниваемые данные помещаются во входные регистры . Результат сравнения, 1 или 0, помещается в аккумулятор. Независимо от того, является ли это логической или арифметической операцией, содержимое аккумулятора затем помещается в место кэша, зарезервированное программой для результата.
Есть еще один тип операций, выполняемых ALU. Результатом является адрес , в памяти, и он используется для вычисления нового местоположения в памяти, чтобы начать загрузку инструкций. Результат помещается в регистр указателя команд .
Регистр команд и указатель
Указатель инструкции указывает место в памяти, содержащее следующую инструкцию, которая должна быть выполнена ЦП. Когда ЦП завершает выполнение текущей инструкции, следующая инструкция загружается в регистр инструкций из области памяти, на которую указывает указатель инструкции.
После загрузки инструкции в регистр инструкций указатель регистра инструкций увеличивается на один адрес инструкции. Приращение позволяет ему быть готовым к перемещению следующей инструкции в регистр инструкций.
Кэш
ЦП никогда напрямую не обращается к ОЗУ. Современные процессоры имеют один или несколько уровней кеш-памяти . Способность ЦП выполнять вычисления намного быстрее, чем способность ОЗУ передавать данные в ЦП. Причины этого выходят за рамки данной статьи, но я рассмотрю их далее в следующей статье.
Кэш-память быстрее системной ОЗУ и ближе к ЦП, поскольку находится на микросхеме процессора. Кэш обеспечивает хранение данных и инструкции для предотвращения ожидания ЦП данных, которые будут извлечены из ОЗУ. Когда ЦП нужны данные — а программные инструкции также считаются данными — кэш определяет, находятся ли уже данные в постоянном месте, и предоставляет их ЦП.
Если запрошенных данных нет в кэше, они извлекаются из ОЗУ и используют алгоритмы прогнозирования для перемещения дополнительных данных из ОЗУ в кэш.Контроллер кеша анализирует запрошенные данные и пытается предсказать, какие дополнительные данные потребуются из ОЗУ. Он загружает ожидаемые данные в кеш. Сохраняя некоторые данные ближе к ЦП в кэше, который быстрее ОЗУ, ЦП может оставаться занятым и не тратить циклы на ожидание данных.
Наш простой ЦП имеет три уровня кеш-памяти. Уровни 2 и 3 предназначены для прогнозирования того, какие данные и программные инструкции потребуются дальше, перемещения этих данных из ОЗУ и перемещения их как можно ближе к ЦП, чтобы быть готовыми, когда это необходимо.Эти размеры кэша обычно варьируются от 1 МБ до 32 МБ, в зависимости от скорости и предполагаемого использования процессора.
Кэш-память уровня 1 находится ближе всего к ЦП. В нашем процессоре есть два типа кеша L1. L1i — это кэш инструкций, а L1d — кэш данных. Размер кэша уровня 1 обычно составляет от 64 КБ до 512 КБ.
Блок управления памятью
Блок управления памятью (MMU) управляет потоком данных между основной памятью (RAM) и ЦП.Он также обеспечивает защиту памяти, необходимую в многозадачных средах, и преобразование адресов виртуальной памяти в физические адреса.
Тактовая частота ЦП и блок управления
Все компоненты ЦП должны быть синхронизированы для бесперебойной работы. Блок управления выполняет эту функцию со скоростью, определяемой тактовой частотой , и отвечает за управление операциями других блоков с использованием сигналов синхронизации, которые распространяются по всему ЦП.
Оперативная память (RAM)
Хотя оперативная память или оперативная память показана на этой и следующей диаграммах, на самом деле она не является частью ЦП. Его функция — хранить программы и данные, чтобы они были готовы к использованию, когда они понадобятся ЦП.
Как это работает
ЦП
работают в цикле, который управляется блоком управления и синхронизируется часами ЦП. Этот цикл называется командным циклом ЦП и состоит из ряда компонентов выборки / декодирования / выполнения.Команда, которая может содержать статические данные или указатели на переменные данные, выбирается и помещается в регистр команд. Инструкция декодируется, и любые данные помещаются в регистры данных A и B. Команда выполняется с использованием регистров A и B, а результат помещается в аккумулятор. Затем ЦП увеличивает значение указателя инструкции на длину предыдущего и начинает заново.
Базовый цикл команд ЦП выглядит так.
Рисунок 3: Основной цикл команд ЦП.
Жажда скорости
Хотя базовый ЦП работает хорошо, ЦП, работающие в этом простом цикле, можно использовать еще более эффективно. Существует несколько стратегий повышения производительности ЦП, и здесь мы рассмотрим две из них.
Повышение уровня командного цикла
Одной из проблем, с которыми столкнулись первые разработчики ЦП, была трата времени на различные компоненты ЦП. Одной из первых стратегий повышения производительности ЦП было перекрытия частей цикла команд ЦП для более полного использования различных частей ЦП.
Например, когда текущая инструкция была декодирована, следующая выбирается и помещается в регистр инструкций. Как только это произошло, указатель инструкции обновляется адресом памяти следующей инструкции. Использование перекрывающихся командных циклов показано на рисунке 4.
Рисунок 4: Цикл команд ЦП с перекрытием.
Такая конструкция выглядит красиво и гладко, но такие факторы, как ожидание ввода-вывода, могут нарушить поток. Отсутствие нужных данных или инструкций в кэше требует, чтобы MMU нашел нужные и переместил их в ЦП, а это может занять некоторое время.Некоторые инструкции также требуют больше циклов ЦП, чем другие, что мешает плавному перекрытию.
Тем не менее, это мощная стратегия повышения производительности процессора.
Гиперпоточность
Еще одна стратегия повышения производительности ЦП — гиперпоточность . Гиперпоточность заставляет одно ядро процессора работать как два процессора, предоставляя два потока данных и инструкций. Добавление второго указателя команд и регистра команд к нашему гипотетическому процессору, как показано на рисунке 5, заставляет его работать как два процессора, выполняя два отдельных потока команд в течение каждого цикла команд.Кроме того, когда один поток выполнения останавливается в ожидании данных (опять же, инструкции также являются данными), второй поток выполнения продолжает обработку. Каждое ядро, реализующее гиперпоточность, эквивалентно двум процессорам по способности обрабатывать инструкции.
Рисунок 5: Концептуальная схема ЦП с гиперпоточностью.
Помните, что это очень упрощенная схема и объяснение нашего гипотетического процессора. В действительности все гораздо сложнее.
Дополнительная терминология
Я встречал много разной терминологии, связанной с процессорами.Чтобы определить терминологию более подробно, давайте посмотрим на сам ЦП с помощью команды lscpu
.
[root @ hornet ~] # lscpu
Архитектура: x86_64
Операционные режимы ЦП: 32-разрядный, 64-разрядный
Порядок байтов: Little Endian
Размеры адресов: 39 бит физических, 48 виртуальных
ЦП: 12
Он-лайн список ЦП: 0-11
Потоков на ядро: 2
Ядра на сокет: 6
Розетка (и): 1
NUMA узлов: 1
ID поставщика: GenuineIntel
Семейство процессоров: 6
Модель: 158
Название модели: Intel (R) Core (TM) i7-8700 CPU @ 3.20 ГГц
Шаг: 10
Процессор МГц: 4300.003
Максимальная частота процессора: 4600.0000
CPU min MHz: 800.0000
BogoMIPS: 6399,96
Виртуализация: VT-x
Кэш L1d: 192 КБ
Кэш L1i: 192 Кбайт
Кэш L2: 1,5 МБ
Кэш L3: 12 МБ
NUMA node0 ЦП: 0-11
Показанный выше процессор Intel представляет собой корпус, который подключается к единственному разъему на материнской плате.Пакет процессора содержит шесть ядер. Каждое ядро поддерживает гиперпоточность, поэтому каждое может запускать два одновременных потока, всего 12 процессоров.
Мои определения:
- Ядро — Ядро — это наименьшее физическое устройство, способное выполнять задачу обработки. Он содержит один ALU и один или два набора вспомогательных регистров. Второй набор регистров и вспомогательных схем обеспечивает гиперпоточность. Одно или несколько ядер можно объединить в один физический пакет.
- ЦП — логическая аппаратная единица, способная обрабатывать один поток выполнения. Современное использование термина центральный процессор относится к общему количеству потоков, которые пакет процессора может выполнять одновременно. Одноядерный процессор, не поддерживающий гиперпоточность, эквивалентен одному процессору. В этом случае процессор и ядро являются синонимами. Гиперпоточный процессор с одним ядром является функциональным эквивалентом двух ЦП. Гиперпоточный процессор с восемью ядрами является функциональным эквивалентом 16 процессоров.
- Пакет — физический компонент, который содержит одно или несколько ядер, как показано на рисунке 1 выше.
- Процессор — 1) Устройство, которое обрабатывает программные инструкции для управления данными. 2) Часто используется как синоним пакета.
- Socket — иногда используется как еще один синоним пакета, но это более точно относится к физическому сокету на материнской плате, в который вставлен пакет процессора.
Термины socket , processor и package часто используются как синонимы, что может вызвать некоторую путаницу.Как видно из результатов команды lscpu
выше, Intel предоставляет нам свою собственную терминологию, и я считаю ее авторитетным источником. На самом деле мы все используем эти термины по-разному, но пока мы понимаем друг друга в любой момент, это действительно важно.
Обратите внимание, что процессор выше имеет два кэша уровня 1 по 512 КиБ каждый, один для инструкций (L1i) и один для данных (L1d). Кэш уровня 1 находится ближе всего к ЦП, и он ускоряет работу за счет разделения инструкций и данных на этом этапе.Кеши уровня 2 и уровня 3 больше, но инструкции и данные сосуществуют в каждом из них.
Что все это значит?
Хороший вопрос. В те времена, когда появились мэйнфреймы, на каждом компьютере был только один ЦП, и он не мог одновременно запускать более одной программы. На мэйнфрейме может выполняться расчет заработной платы, затем учет запасов, выставление счетов клиентам и т. Д., Но одновременно может работать только одно приложение. Каждая программа должна была заканчиваться до того, как системный оператор мог начать следующую.
Некоторые ранние попытки одновременного запуска нескольких программ основывались на простом подходе и были нацелены на лучшее использование одного процессора. Например, были загружены program1 и program2 , а program1 выполнялись до тех пор, пока не были заблокированы в ожидании выполнения ввода-вывода. В этот момент программа2 работала до тех пор, пока не была заблокирована. Такой подход получил название многопроцессорности и помог полностью использовать драгоценное компьютерное время.
Ранние попытки многозадачности включали очень быстрое переключение контекста выполнения одного ЦП между потоками выполнения нескольких задач.Эта практика не является истинной многозадачностью в нашем понимании, потому что в действительности одновременно обрабатывается только один поток выполнения. Это правильнее называть разделением времени.
Современные компьютеры, от умных часов и планшетов до суперкомпьютеров, поддерживают настоящую многозадачность с использованием нескольких процессоров. Несколько процессоров позволяют компьютерам выполнять множество задач одновременно. Каждый ЦП выполняет свои собственные функции одновременно со всеми другими ЦП. Восьмиядерный процессор с гиперпоточностью (т.е.е., 16 ЦП) могут одновременно выполнять 16 задач.
Заключительные мысли
Мы рассмотрели концептуальный и упрощенный ЦП, чтобы немного узнать о структурах. В этой статье я почти не касался функциональности процессора. Вы можете узнать больше, перейдя по встроенным ссылкам на изученные нами темы.
Помните, что схемы и описания в этой статье носят чисто концептуальный характер и не отражают реальный процессор.
В следующей части этой серии я рассмотрю оперативную память и дисковые накопители как различные типы хранилищ и объясню, почему каждый из них необходим для современных компьютеров.
[Бесплатный онлайн-курс: технический обзор Red Hat Enterprise Linux. ]
Параллельные вычисления позволяют увеличить частоту обработки
Параллельные вычисления — это форма вычислений, в которой два или более процессора используются для решения проблемы или задачи. Методика основана на том принципе, что некоторые задачи могут быть разделены на более мелкие части и решены одновременно.
Парадигма параллельных вычислений стала доминирующей, когда дело доходит до производства процессоров , поэтому важно знать не только текущие приложения этой формы вычислений, но и ее важность в будущем.
Рисунок 1. Последовательные и параллельные вычисления
В прошлом увеличение частоты процессора было основной причиной улучшения производительности компьютера , по крайней мере, до 2004 года. За счет увеличения тактовой частоты процессора время выполнения каждой проблемы сокращается. Однако увеличение частоты отрицательно сказывается на потреблении энергии. Потребляемая мощность процессора определяется следующим уравнением:
Где C, — изменение емкости, В, — напряжение, а f — частота процессора.Увеличивая частоту процессора, вы пропорционально увеличиваете потребление энергии.
В основном по этой причине параллельные вычисления стали доминирующей парадигмой. Об этом свидетельствует тот факт, что большинства компьютеров сегодня (от суперкомпьютеров до персональных компьютеров) являются многоядерными . Даже некоторые смартфонов уже имеют до 8 ядер (процессоров).
Учитывая текущую тенденцию, легко предсказать, что будущие процессоры останутся многоядерными с множеством обрабатывающих элементов, которые никогда не перестанут расти; особенно если учесть, что все более необходимы большие вычислительные мощности.
Рисунок 2 Эволюция микропроцессоров
На изображении выше отчетливо виден поворотный момент, который произошел примерно в 2004 году. На нем также показано, как частота процессора и потребление оставались неизменными в последние годы, в то время как количество элементов обработки продолжает расти.
Существует три основных типа параллелизма:
- Параллелизм на уровне битов : относится к размеру данных, с которыми может работать процессор.Например, процессор с 32-битным размером слова может одновременно выполнять 4 независимых 1-байтовых сложения. Если размер процессора составляет 1 байт, потребуется выполнить 4 операции.
- Параллелизм на уровне команд : команды программы переупорядочиваются и группируются для параллельного выполнения. Современные процессоры включают в себя структуры, известные как конвейеры , , которые позволяют разделить выполнение команд на сегменты. Это позволяет одновременно выполнять разные этапы нескольких инструкций.
- Параллелизм на уровне задач : конкретная проблема может быть разбита на более мелкие задачи и решена одновременно различными элементами процесса (процессорами, потоками и т. Д.).
Наконец, параллельные вычисления являются фундаментальным методом в научных исследованиях , особенно в области моделирования, где выполняются сложные вычисления и операции, требующие большой вычислительной мощности. Он также может использоваться для создания различных моделей (математических, статистических, климатических) и даже для медицинских изображений.
Другими соответствующими примерами могут быть системы реального времени, искусственный интеллект, обработка графики или серверы. В последнем случае многоядерные процессоры идеальны, поскольку они позволяют множеству пользователей одновременно подключаться к одной и той же службе (например, в случае веб-сервера).
В Teldat мы всегда стараемся в полной мере использовать аппаратные функции, доступные в наших устройствах, для обеспечения максимальной производительности в любое время.
Об авторе
Хорхе Ортис
ИТ-инженер.Работает в отделе исследований и разработок Teldat в качестве разработчика программного обеспечения.
, автор — Хорхе Ортис | 14 июля 2020 г. | Корпоративная связь
|
|
|
Посмотрите, как они работают в вашей программе
Как часто вы слышали термин threading применительно к компьютерной программе, но не совсем понимали, что он означает? А как насчет процессов ? Вы, вероятно, понимаете, что поток каким-то образом тесно связан с программой и процессом , но если вы не специалист по информатике, возможно, это ваше понимание.
Знать, что означают эти термины, абсолютно необходимо, если вы программист, но их понимание также может быть полезно для обычного пользователя компьютера. Возможность взглянуть и понять Activity Monitor на Macintosh, Task Manager в Windows или Top на Linux может помочь вам определить, какие программы вызывают проблемы на вашем компьютере, или вам может потребоваться установка больше памяти, чтобы ваша система работала лучше.
Давайте потратим несколько минут, чтобы окунуться в мир компьютерных программ и разобраться, что означают эти термины.Мы упростим и обобщим некоторые идеи, но общие концепции, которые мы рассматриваем, должны помочь прояснить разницу между терминами.
Программы
Прежде всего, вы, вероятно, знаете, что программа — это код, который хранится на вашем компьютере и предназначен для выполнения определенной задачи. Существует много типов программ, включая программы, которые помогают вашему компьютеру работать и являются частью операционной системы, а также другие программы, выполняющие определенную работу. Эти программы, ориентированные на конкретные задачи, также известны как «приложения» и могут включать в себя такие программы, как обработка текста, просмотр веб-страниц или отправка сообщения по электронной почте на другой компьютер.
Пример программного кода C #
Программы обычно хранятся на диске или в энергонезависимой памяти в форме, которая может быть выполнена на вашем компьютере. До этого они создавались с использованием таких языков программирования, как C, Lisp, Pascal или многих других, с использованием инструкций, включающих логику, манипулирование данными и устройствами, повторение и взаимодействие с пользователем. Конечным результатом является текстовый файл кода, который компилируется в двоичную форму (единицы и нули) для запуска на компьютере. Другой тип программы называется «интерпретируемой», и вместо того, чтобы заранее компилироваться для запуска, интерпретируется в исполняемый код во время выполнения.Некоторыми распространенными, обычно интерпретируемыми языками программирования являются Python, PHP, JavaScript и Ruby.
Возможно, вы слышали шутку программиста: «В мире всего 10 типов людей: те, кто понимает двоичное, и те, кто нет».
Конечный результат тот же, но при запуске программы она загружается в память в двоичной форме. ЦП компьютера (центральный процессор) понимает только двоичные инструкции, поэтому программа должна быть в такой форме при запуске.
Двоичный язык — это родной язык компьютеров, потому что электрическая цепь на своем базовом уровне имеет два состояния, включено или выключено, представленные единицей или нулем. В общей системе нумерации, которую мы используем каждый день, с основанием 10, каждая позиция цифры может быть от 0 до 9. В системе счисления 2 (или двоичной) каждая позиция — это либо 0, либо 1. (В будущих сообщениях в блоге мы могли бы охватывают квантовые вычисления, которые выходят за рамки концепции использования только единиц и нулей в вычислениях.)
Десятичное число — основание 10 | Двоичный — База 2 |
---|---|
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 | 1001 |
Как работают процессы
Программа загружена в память компьютера в двоичной форме.Что теперь?
Выполняемой программе требуется нечто большее, чем просто двоичный код, который сообщает компьютеру, что делать. Для работы программе требуется память и различные ресурсы операционной системы. «Процесс» — это то, что мы называем программой, которая была загружена в память вместе со всеми ресурсами, которые ей необходимы для работы. «Операционная система» — это мозг, стоящий за распределением всех этих ресурсов, и поставляется в различных вариантах, таких как macOS, iOS, Microsoft Windows, Linux и Android. ОС выполняет задачу управления ресурсами, необходимыми для превращения вашей программы в работающий процесс.
Некоторые важные ресурсы, необходимые каждому процессу, — это регистры, счетчик программ и стек. «Регистры» — это места хранения данных, которые являются частью процессора компьютера (ЦП). Регистр может содержать инструкцию, адрес хранения или другие данные, необходимые процессу. «Счетчик программ», также называемый «указателем команд», отслеживает, где находится компьютер в своей программной последовательности. «Стек» — это структура данных, которая хранит информацию об активных подпрограммах компьютерной программы и используется как временное пространство для процесса.Он отличается от динамически выделяемой памяти для процесса, который известен как «куча».
Компьютерный процесс
Может быть несколько экземпляров одной программы, и каждый экземпляр этой запущенной программы является процессом. Каждый процесс имеет отдельное адресное пространство памяти, что означает, что процесс выполняется независимо и изолирован от других процессов. Он не может напрямую обращаться к общим данным в других процессах. Переключение с одного процесса на другой требует некоторого времени (относительно) для сохранения и загрузки регистров, карт памяти и других ресурсов.
Эта независимость процессов ценна, потому что операционная система изо всех сил пытается изолировать процессы, чтобы проблема с одним процессом не повредила или не нанесла ущерб другому процессу. Вы, несомненно, сталкивались с ситуацией, когда одно приложение на вашем компьютере зависает или имеет проблему, и вы могли выйти из этой программы, не затрагивая другие.
Как работают потоки
Итак, вы все еще с нами? Наконец-то мы добрались до темы!
Поток — это единица выполнения внутри процесса.У процесса может быть от одного до нескольких потоков.
Процесс против потока
Когда процесс запускается, ему назначаются память и ресурсы. Каждый поток в процессе разделяет эту память и ресурсы. В однопоточных процессах процесс содержит один поток. Процесс и поток — одно и то же, и происходит только одно.
В многопоточных процессах процесс содержит более одного потока, и процесс выполняет несколько задач одновременно (технически иногда это почти одновременно — подробнее об этом читайте в статье « Как насчет параллелизма? и параллелизм? »ниже).
Мы говорили о двух типах памяти, доступной процессу или потоку, стеку и куче. Важно различать эти два типа памяти процесса, потому что каждый поток будет иметь свой собственный стек, но все потоки в процессе будут совместно использовать кучу.
Потоки иногда называют легковесными процессами, потому что у них есть собственный стек, но они могут обращаться к совместно используемым данным. Поскольку потоки совместно используют то же адресное пространство, что и процесс, и другие потоки внутри процесса, эксплуатационные расходы на обмен данными между потоками невысоки, что является преимуществом.Недостатком является то, что проблема с одним потоком в процессе, безусловно, повлияет на другие потоки и жизнеспособность самого процесса.
Потоки против процессов
Итак, на обзор:
- Программа запускается как текстовый файл программного кода,
- Программа компилируется или интерпретируется в двоичной форме,
- Программа загружена в память,
- Программа становится одним или несколькими запущенными процессами.
- Процессы обычно независимы друг от друга,
- Хотя потоки существуют как подмножество процесса.
- Потоки могут взаимодействовать друг с другом легче, чем процессы,
- Но потоки более уязвимы для проблем, вызванных другими потоками в том же процессе.
Процессы и потоки — преимущества и недостатки
Процесс | Резьба |
---|---|
Процессы тяжелые операции | Нитки для легких операций |
Каждый процесс имеет собственное пространство памяти | Потоки используют память процесса, которому они принадлежат |
Обмен данными между процессами медленный, поскольку процессы имеют разные адреса памяти | Межпоточное взаимодействие может быть быстрее, чем межпроцессное взаимодействие, поскольку потоки одного процесса совместно используют память с процессом, которому они принадлежат. |
Переключение контекста между процессами дороже | Переключение контекста между потоками одного процесса дешевле |
Процессы не разделяют память с другими процессами | Потоки разделяют память с другими потоками того же процесса |
А как насчет параллелизма и параллелизма?
Вы можете спросить, могут ли процессы или потоки выполняться одновременно.Ответ: это зависит от обстоятельств. В системе с несколькими процессорами или ядрами ЦП (как это обычно бывает с современными процессорами) несколько процессов или потоков могут выполняться параллельно. Однако на одном процессоре невозможно, чтобы процессы или потоки действительно выполнялись одновременно. В этом случае ЦП совместно используется запущенными процессами или потоками с использованием алгоритма планирования процессов, который делит время ЦП и создает иллюзию параллельного выполнения. Время, отведенное на каждую задачу, называется «временным интервалом».«Переключение между задачами происходит так быстро, что обычно незаметно. Термины параллелизм, (подлинное одновременное выполнение) и параллелизм, (чередование процессов во времени, чтобы создать видимость одновременного выполнения), различают два типа реальной или приблизительной одновременной операции.
Почему следует выбирать процесс вместо потока или поток поверх процесса?
Итак, как программист будет выбирать между процессом и потоком при создании программы, в которой он хочет выполнять несколько задач одновременно? Мы рассмотрели некоторые из вышеперечисленных различий, но давайте рассмотрим реальный пример с программой, которую многие из нас используют, Google Chrome.
Когда компания Google разрабатывала браузер Chrome, им нужно было решить, как решать множество различных задач, для которых одновременно требовались компьютер, связь и сетевые ресурсы. Каждое окно или вкладка браузера взаимодействует с несколькими серверами в Интернете для извлечения текста, программ, графики, аудио, видео и других ресурсов и отображает эти данные для отображения и взаимодействия с пользователем. Кроме того, браузер может открывать множество окон, каждое из которых содержит множество задач.
Google должен был решить, как справиться с этим разделением задач.Они решили запускать каждое окно браузера в Chrome как отдельный процесс, а не как поток или несколько потоков, как это обычно бывает с другими браузерами. Это принесло Google ряд преимуществ. Запуск каждого окна как процесса защищает приложение в целом от ошибок и сбоев в механизме рендеринга и ограничивает доступ из каждого процесса механизма рендеринга для других и к остальной части системы. Изоляция программы JavaScript в процессе не позволяет ей убегать из-за слишком большого количества процессорного времени и памяти и заставлять весь браузер не реагировать.
Google пошел на расчетливый компромисс с дизайном с несколькими процессорами. Запуск нового процесса для каждого окна браузера требует более высоких фиксированных затрат памяти и ресурсов, чем использование потоков. Они сделали ставку на то, что их подход приведет к меньшему раздутию памяти в целом.
Использование процессов вместо потоков также обеспечивает лучшее использование памяти при нехватке памяти. Неактивное окно обрабатывается операционной системой как более низкий приоритет и может быть выгружено на диск, когда память требуется для других процессов.Это помогает сделать видимые для пользователя окна более отзывчивыми. Если бы окна были многопоточными, было бы сложнее разделить используемую и неиспользуемую память так чисто, что приводит к потере памяти и производительности.
На снимке экрана ниже показаны процессы Google Chrome, запущенные на MacBook Air с множеством открытых вкладок. Некоторые процессы Chrome используют изрядное количество процессорного времени и ресурсов, а некоторые — очень мало. Вы можете видеть, что у каждого процесса также есть много запущенных потоков.
Монитор активности или диспетчер задач в вашей системе может быть ценным союзником в точной настройке вашего компьютера или устранении неполадок.Если ваш компьютер работает медленно или программа или окно браузера какое-то время не отвечает, вы можете проверить его состояние с помощью системного монитора. Иногда вы видите процесс, помеченный как «Не отвечаю». Попробуйте выйти из этого процесса и посмотрите, работает ли ваша система лучше. Если приложение требует много памяти, вы можете подумать о выборе другого приложения, которое будет выполнять ту же задачу.
Сделал это так далеко?
Мы надеемся, что это похожее на Tron погружение в увлекательный мир компьютерных программ, процессов и потоков помогло прояснить некоторые вопросы, которые могли у вас возникнуть.
В следующий раз, когда ваш компьютер будет работать медленно или какое-то приложение, вы узнаете свое назначение. Включите системный монитор и загляните под капот, чтобы увидеть, что происходит. Теперь ты главный.
Мы рады услышать от вас
Вы все еще в замешательстве? Есть вопросы? Если да, дайте нам знать в комментариях. И не стесняйтесь предлагать темы для будущих сообщений в блоге.
Дополнение — 18 августа 2017 г.
Я добавил пример ниже, чтобы проиллюстрировать, как процессы или потоки при правильном использовании могут выполнять задачи более эффективно.Компания Backblaze недавно выпустила Backblaze Cloud Backup версии 5.0, которая удваивает количество потоков, доступных для резервного копирования как на Mac, так и на ПК (до 20). При настройках по умолчанию наше клиентское приложение теперь будет автоматически оценивать то, что лучше всего подходит для вашей среды, и соответствующим образом устанавливать количество потоков, но у вас есть ручное управление, чтобы установить потоки на любое количество, которое вы хотите.
На приведенном ниже снимке экрана монитора активности Macintosh показана одна система, выполняющая двадцать потоков для загрузки данных в облако.Это количество потоков не будет оптимальным для всех систем — на самом деле, в некоторых оно может действительно замедлить загрузку. Если вы сомневаетесь, лучше оставить клиента на автоматическом распределении потоков, и пусть он сам решает, что лучше для вашей системы.
Память
Память
Память
Воспоминания содержат один или несколько битов информации:
- Данные (целые, вещественные, текстовые)
- Инструкции ЦП (i.е. Программы для ЭВМ)
- Адреса памяти («указатели» на данные или инструкции)
Содержимое памяти остается неизменным, если оно не перезаписывается новым битовым шаблоном. Для некоторых воспоминаний содержимое «теряется» при выключении питания.
В компьютерах используется много различных типов памяти (полупроводниковая память, магнитные диски и ленты, компакт-диски и т. Д.) Для хранения данных и программ. Каждый тип памяти имеет свои особенности и возможности использования.
Регистровая память
Регистры — это ячейки памяти, расположенные в центральном процессоре (ЦП). Их немного (редко бывает больше 64 регистров) и к тому же небольшой размер, обычно размер регистра меньше 64 бит.
Однако содержимое регистра может быть прочитано или записано очень быстро, часто на порядок быстрее, чем в основной памяти, и на несколько порядков быстрее, чем в дисковой памяти.
Внутри ЦП находятся различные типы регистров. Регистры общего назначения доступны для общего использования программистом. Если из контекста не вытекает иное, хорошо используйте термин «регистр» для ссылки на регистр общего назначения в ЦП. Большинство современных процессоров имеют от 16 до 64 регистров общего назначения. Регистры специального назначения имеют специальное применение: они либо непрограммируемы и являются внутренними для ЦП, либо доступны программисту с помощью специальных инструкций.
Примеры таких регистров включают:
- Регистр счетчика программ / указателя команд (ПК / IP)
- Регистр команд (IR)
- Регистры ввода и вывода ALU
- Регистр кода состояния (статус / флаги)
- Регистр указателя стека (SP)
Хотя размер регистра (размер группы битов регистров) имеет тенденцию меняться в зависимости от типа регистра, размер слова архитектуры часто (но не всегда!) Определяется размером регистров общего назначения.
В отличие от основной памяти и дисковой памяти, регистры адресуются напрямую с помощью конкретных инструкций или путем кодирования номера регистра в компьютерной инструкции. На уровне языка программирования (ассемблера) ЦП регистры обычно задаются специальными идентификаторами (например, R0, R1, R7, SP, PC).
Наконец, содержимое регистра теряется при отключении питания ЦП, поэтому регистры не подходят для хранения долгосрочной информации или информации, которая необходима для сохранения после отключения питания или сбоя.Однако регистры являются самой быстрой памятью, и в случае их использования могут привести к очень быстрому выполнению программ.
Оперативная память (RAM)
Если бы мы суммировали все биты всех регистров в ЦП, общий объем памяти, вероятно, не превысил бы 5000 бит. Большинство вычислительных задач, выполняемых компьютером, требуют гораздо больше памяти. Основная память — это следующая по скорости память в компьютере, и она намного больше по размеру.
Типичные объемы основной памяти для разных типов компьютеров:
Персональный компьютер | 256 МБ |
Файловый сервер | 4 ГБ |
Базовый блок данных | 32 ГБ |
Компьютерные архитектуры также накладывают архитектурные ограничения на максимально допустимую RAM. Это ограничение обычно равно 2 WordSize ячеек памяти.
RAM (оперативная память) — наиболее распространенная форма основной памяти.Оперативная память обычно находится на материнской плате и поэтому обычно находится на расстоянии менее 12 дюймов от процессора. ПЗУ (постоянное запоминающее устройство) похоже на ОЗУ, за исключением того, что его содержимое не может быть перезаписано. Память ПЗУ часто используется для хранения программы загрузки или запуска, которую компьютер выполняет при включении.
Хотя это и медленнее, чем регистровая память, содержимое любого места в ОЗУ все же может быть прочитано или записано очень быстро. Время чтения или записи называется временем доступа и одинаково для всех ячеек ОЗУ.
В отличие от регистровой памяти, ОЗУ используется для хранения как программного кода (инструкций), так и данных (чисел, строк и т. Д.). Работающие программы обычно загружаются в оперативную память с диска до их выполнения центральным процессором.
Места в ОЗУ идентифицируются схемой адресации, например нумерация байтов в ОЗУ начиная с 0. Содержимое ОЗУ теряется при отключении питания.
Дисковая память
Дисковая память используется для хранения программ и данных в течение длительного времени.Содержимое диска НЕ теряется при отключении питания. Емкость диска варьируется от 2 ГБ до более 40 ГБ (40 × 10 9 ). Диски намного медленнее, чем регистровая и основная память, время доступа к данным на диске обычно составляет от 5 до 15 миллисекунд (5 × 10 -3 секунд), хотя диски обычно могут передавать сотни или тысячи байтов за один раз.
Диски могут быть размещены внутри корпуса компьютера или снаружи. Есть также много видов дисковых накопителей, например.g: Магнитные жесткие диски, гибкие диски (замедленное воспроизведение), магнитооптические компакт-диски / диски, DVD-диски.
Расположение дисков идентифицируется специальными схемами адресации диска (например, номерами дорожек и секторов).
Сводка характеристик
Организация основной памяти
Мы можем представить основную память как матрицу битов.Каждая строка представляет ячейку памяти, обычно она равна размеру слова архитектуры, хотя это может быть кратное слово (например, 2xWordsize) или частичное слово (например, половина слова). Для простоты мы предположим, что данные в основной памяти могут быть прочитаны или записаны только одной строкой (ячейкой памяти) за раз.
Для 96-разрядной памяти мы могли бы организовать память как 12 × 8 бит, или 8 × 12 бит, или 6 × 16 бит, или даже 96 × 1 бит или 1 × 96 бит. Каждая строка также имеет адрес натурального числа, который используется для выбора строки:
байтовая адресация
Основная память обычно хранит и вызывает строки, которые имеют многобайтовую длину (например,грамм. 16-битное слово = 2 байта, 32-битное слово = 4 байта). Однако большинство архитектур делают основную память адресуемой по байтам, а не по словам. В таких архитектурах ЦП и / или аппаратное обеспечение основной памяти способно читать / записывать любой отдельный байт. Вот пример основной памяти с 16-битными ячейками памяти. Обратите внимание на четные адреса ячеек памяти (строк).
Порядок байтов
Байты в многобайтовом элементе данных могут быть пронумерованы слева направо (Big-Endian) или справа налево (Little-Endian).В следующем примере ячейки таблицы представляют байты, а номера ячеек указывают адрес этого байта в основной памяти.
В системах с обратным порядком байтов старший байт многобайтового элемента данных имеет наименьший адрес, а младший байт имеет наибольший адрес.
В системах с прямым порядком байтов младший байт многобайтового элемента данных имеет младший адрес, а старший байт имеет самый высокий адрес.Примечание. Строковое значение из N символов рассматривается не как одно большое многобайтовое значение, а как однозначное значение из N, т.е. первый символ строки всегда имеет наименьший адрес, а последний символ — наибольший адрес. Это верно как для прямого, так и для прямого порядка байтов.
Пример: Показать содержимое памяти по адресу слова 24, если это слово содержит число, заданное параметром 122E 5F01H как в схемах с прямым порядком, так и с прямым порядком байтов?
Примечание. По соглашению мы располагаем байты в слове памяти слева направо для прямого порядка байтов и справа налево для обратного порядка байтов.
Пример: Показать содержимое основной памяти из слова с адресом 24, если эти слова содержат текст ДЖИМ СМИТ.
Байты, помеченные знаком? неизвестны. Они могут содержать важные данные, или они могут не заботиться о байтах, интерпретация которых остается на усмотрение программиста.
К сожалению, используемые сегодня компьютерные системы разделены на те, которые имеют прямой порядок байтов, и те, которые имеют прямой порядок байтов.Это приводит к проблемам, когда компьютер с прямым порядком байтов хочет передать данные на компьютер с прямым порядком байтов. Некоторые современные архитектуры (например, PowerPC) позволяют программно переключать порядок байтов в архитектуре.
Выравнивание слов
Хотя основная память обычно организована как строки слов с байтовой адресацией и осуществляется доступ к строке за раз, некоторые архитектуры позволяют ЦП получать доступ к любой группе битов размером со слово независимо от ее байтового адреса.Мы говорим, что доступы, которые начинаются на границе слова памяти, являются выровненными доступами, тогда как доступы, которые не начинаются на границах слова, являются невыровненными доступами.
Для чтения невыровненного слова из ОЗУ требуется
- Чтение соседних слов
- Выбор необходимых байтов из каждого слова
- Объединение этих байтов вместе => МЕДЛЕННО
Написание невыровненного слова еще сложнее и МЕДЛЕННО.По этой причине некоторые архитектуры запрещают доступ к невыровненным словам. например В архитектуре 68000 нельзя обращаться к словам, начиная с нечетного адреса (например, 1, 3, 5, 7 и т. Д.). Некоторые архитектуры распространяют этот принцип на доступ к нескольким словам. например в архитектуре SPARC 64-битные элементы данных должны иметь байтовый адрес, кратный 8.
Интегральные схемы (микросхемы) RAM
До сих пор мы рассматривали логическую организацию основной памяти.Физически микросхемы ОЗУ также могут быть организованы различными способами. Вот 3 метода формирования основной памяти 256×8 бит.
В первом случае основная память построена на одной микросхеме ОЗУ. Во втором мы используем две микросхемы ОЗУ, одна дает нам 4 старших бита, а другая — 4 младших. В третьем мы используем 8 микросхем RAM, каждая микросхема дает нам 1 бит — чтобы прочитать 8-битное слово памяти, нам нужно было бы получить доступ ко всем 8 микросхемам RAM одновременно и объединить биты.
Банки памяти
Основная память обычно больше, чем размер одного чипа RAM. Следовательно, чтобы получить доступ к слову памяти, аппаратное запоминающее устройство должно одновременно прочитать строку в нескольких микросхемах ОЗУ, а затем объединить результаты, возвращаемые каждой микросхемой ОЗУ.
Микросхемы ОЗУ, составляющие систему основной памяти, обычно группируются в банки размером в одно слово памяти:
Пример: дана основная память = 1M × 16 бит (адресуемое слово),
Чипы ОЗУ = 256 КБ × 4 бит
Размер БАНКА = количество микросхем ОЗУ на слово памяти = ширина слова памяти / ширина микросхемы ОЗУ = 16/4 = 4
Для адресации микросхемы RAM требуется 18 бит (поскольку 256K = 2 18
= Длина чипа RAM)
Память 1M × 16 бит с адресной памятью требует 20 бит адреса (поскольку 1M = 2 20 ).
Следовательно, для выбора банка необходимо 2 бита (20-18).
Общее количество чипов RAM = (1M × 16) / (256K × 4) = 16
Общее количество БАНКОВ = Общее количество микросхем RAM / размер БАНКА = 16/4 = 4
Чередующаяся память
Когда память состоит из нескольких банков, некоторые биты адреса выбирают банк, а оставшиеся биты выбирают строку в выбранном банке.
Если биты выбора банка являются младшими значащими битами адреса памяти, результирующая память называется с чередованием младшего разряда, .
Если биты выбора банка являются старшими разрядами адреса памяти, результирующая память называется с чередованием высокого порядка, .
Чередование памяти может дать преимущества в производительности, если одновременно можно читать / записывать более одного банка: —
- Для чередования младшего разряда, если можно прочитать одну и ту же строку в каждом банке
Это преимущество для доступа к последовательным данным, состоящим из нескольких слов, например программным инструкциям или элементам в массиве данных.
- Для чередования высокого порядка, если разные блоки могут независимо получать доступ к разным банкам.
Это преимущество, если ЦП может обращаться к строкам в одном банке, в то время как устройство ввода-вывода (жесткий диск и т. Д.) Может одновременно обращаться к разным строкам в другом банке.
Пример:
Основная память = 1M × 8 бит, микросхемы RAM = 256K × 4 бит.
Для этой памяти нам потребуется 4 × 2 = 8 микросхем ОЗУ.
Для каждой микросхемы требуется 18 бит адреса (т. Е. 2 18 = 256 КБ).
А для 1M × 8 бит требуется 20 бит адреса (т. Е. 2 20 = 1M).
[ Индекс ]
последнее обновление: 2-ноя-04
Ян Харрис
Javanotes 8.1, раздел 1.1 — Цикл выборки и выполнения: машинный язык
Раздел 1.1
Цикл выборки и выполнения: машинный язык
Компьютер — это сложная система, состоящая из множества
разные компоненты. Но в сердце — или, если хотите, в мозгу —
компьютер — это отдельный компонент, который выполняет фактические вычисления. Это
Центральный процессор или ЦП. В современном
настольного компьютера, ЦП представляет собой единую «микросхему» размером порядка одного квадратного дюйма в
размер. Задача ЦП — выполнять программы.
Программа — это просто список однозначных
инструкции, предназначенные для механического выполнения компьютером.Компьютер — это
построен для выполнения инструкций, написанных на очень простом типе
язык, называемый машинным языком. Каждый тип
компьютер имеет собственный машинный язык, и компьютер может напрямую выполнять программу
только если программа написана на этом языке. (Он может выполнять программы, написанные на
другие языки, если они сначала переведены на машинный язык.)
Когда ЦП выполняет программу, эта программа сохраняется в компьютерной
основная память (также называемая ОЗУ или произвольный доступ
объем памяти).В дополнение к программе в памяти также могут храниться данные, которые
используются или обрабатываются программой. Основная память состоит из последовательности
локации. Эти места пронумерованы, а
порядковый номер места называется его адресом.
Адрес позволяет выбрать один
конкретная информация из миллионов, хранящихся в памяти. Когда
ЦП должен получить доступ к программной инструкции или данным в конкретном
местоположение, он отправляет адрес этой информации в качестве сигнала в память;
память отвечает, отправляя обратно значение, содержащееся в указанном
место расположения.ЦП также может хранить информацию в памяти, указав
информация, которая будет храниться, и адрес места, где она должна быть
хранится.
На уровне машинного языка работа ЦП вполне удовлетворительна.
прямолинейно (хотя в деталях очень сложно). ЦП выполняет
программа, которая хранится в виде последовательности инструкций машинного языка в главном
объем памяти. Он делает это путем многократного чтения или извлечения,
инструкция по памяти с последующим выполнением, или
выполнение этой инструкции.Этот процесс — получить
инструкцию, выполнить ее, получить другую инструкцию, выполнить ее и т. д.
навсегда — называется циклом выборки и выполнения.
За одним исключением, которое будет рассмотрено в следующем разделе,
это все, что делает процессор. (В современном
компьютеры. Типичная микросхема обработки в наши дни содержит несколько «ядер» ЦП, что позволяет
это выполнять несколько инструкций одновременно. И доступ к основной памяти ускорен
с помощью «кешей» памяти, к которым можно получить более быстрый доступ, чем к основной памяти, и которые предназначены для хранения
данные и инструкции, которые, скорее всего, скоро понадобятся ЦП.Однако эти осложнения
не меняйте основную операцию.)
ЦП содержит арифметико-логический блок или АЛУ, который является частью
процессор, который выполняет такие операции, как сложение и вычитание. Он также содержит
небольшое количество регистров, которые представляют собой небольшие блоки памяти, способные
удерживая одно число. Типичный ЦП может иметь 16 или 32 регистра общего назначения,
которые содержат значения данных, которые немедленно доступны для обработки, и многие машинные
языковые инструкции относятся к этим регистрам.Например, там может быть инструкция
который берет два числа из двух указанных регистров, складывает эти числа (используя ALU) и сохраняет
результат обратно в реестр. И могут быть инструкции по копированию значения данных из
из основной памяти в регистр или из регистра в основную память.
ЦП также включает регистры специального назначения. Самым важным из них является
счетчик программ или ПК. ЦП использует ПК для
отслеживать, где он находится в выполняемой программе.ПК просто хранит
адрес в памяти следующей инструкции, которую должен выполнить ЦП. В начале
каждого цикла выборки и выполнения ЦП проверяет ПК, чтобы определить, какая инструкция
он должен принести. В течение цикла выборки и выполнения число
в ПК обновляется, чтобы указать инструкцию, которая должна быть выполнена в
следующий цикл. Обычно, но не всегда, это просто инструкция, которая
последовательно следует за текущей инструкцией в программе. Некоторый машинный язык
инструкции изменяют значение, хранящееся в ПК.Это делает возможным
чтобы компьютер «прыгал» из одной точки программы в другую, что
необходим для реализации функций программы, известных как циклы и ветвления.
которые обсуждаются в разделе 1.4.
Компьютер выполняет программы на машинном языке механически, то есть
не понимая их и не думая о них — просто из-за того, как
это физически собрано. Это непростая концепция. Компьютер — это
машина, построенная из миллионов крошечных переключателей, называемых транзисторами,
которые имеют свойство, что они могут быть подключены
вместе таким образом, что выход одного переключателя может переключать другой переключатель
включен или выключен.Когда компьютер вычисляет, эти переключатели включают или выключают друг друга в
шаблон, определяемый как способом их соединения, так и программой
что компьютер выполняет.
Команды машинного языка выражаются двоичными числами. Двоичный
число состоит всего из двух возможных цифр: нуля и единицы. Каждый ноль или
один называется немного. Итак, машина
языковая инструкция — это просто последовательность нулей и единиц. Каждый конкретный
Последовательность кодирует некоторую конкретную инструкцию. Данные, которые компьютер
Manages также кодируется как двоичные числа.В современных компьютерах каждый
ячейка памяти содержит байт, который представляет собой последовательность из восьми
биты. Инструкция на машинном языке или часть данных в целом
состоит из нескольких байтов, хранящихся в последовательных ячейках памяти.
Например, когда ЦП читает инструкцию из памяти, на самом деле он может
читать четыре или восемь байтов из четырех или восьми ячеек памяти; адрес памяти
инструкции — это адрес первого из этих байтов.
Компьютер может работать напрямую
с двоичными числами, потому что переключатели могут легко представлять такие числа: Поверните
переключатель включен, чтобы обозначить единицу; выключите его, чтобы отобразить ноль.Машина
языковые инструкции хранятся в памяти в виде шаблонов включенных или
выключенный. Когда в ЦП загружается инструкция на машинном языке, все это
бывает, что определенные переключатели включаются или выключаются по схеме, которая
кодирует эту инструкцию. ЦП создан, чтобы реагировать на это
паттерн, выполняя кодируемую им инструкцию; он делает это просто из-за
как все остальные переключатели в ЦП соединены вместе.
Итак, вы должны понимать, как работают компьютеры: Основная память
содержит программы и данные на машинном языке.Они закодированы как двоичные числа.
ЦП извлекает инструкции машинного языка из памяти одну за другой и
выполняет их. Каждая инструкция заставляет ЦП выполнять небольшую задачу,
например, сложение двух чисел или перемещение данных в память или из памяти.
Процессор делает все это механически, не задумываясь или
понимание того, что он делает — и поэтому программа, которую он выполняет, должна быть
идеальный, полный во всех деталях и недвусмысленный, потому что процессор может
ничего, кроме как выполнить его точно так, как написано.Вот схематический вид этого
первый этап понимания компьютера:
.