Серия «Компьютеры»

Квантовое превосходство... журналистов над здравым смыслом

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


Путаница в определениях


Для начала давайте вообще разберёмся в определении – что мы будем называть квантовым компьютером? Оказывается, здесь тоже не всё так однозначно. С одной стороны мы читаем про 5-кубитовый IBM-Q и Google с аж 53 кубитами, вот гугловский компьютер на фото:

Квантовое превосходство... журналистов над здравым смыслом Квантовый компьютер, IT, Мифы, Журналисты, Длиннопост

А с другой – вполне коммерческое решение под названием D-Wave, в котором насчитывается где более 1000 кубит.

Квантовое превосходство... журналистов над здравым смыслом Квантовый компьютер, IT, Мифы, Журналисты, Длиннопост

D-wave считается производителем «квантовым компьютером», однако даже в документах самого производителя он значится не как компьютер, а «квантовый отжигатель» (квантовым отжигом называют общий метод нахождения глобального минимума заданной функции среди решений-кандидатов). То есть, если и называть его компьютером, то уж во всяком случае – не компьютером общего назначения. Но зато в этой узкоспециализированной области он «уделывает» по скорости симуляции на обычном цифровом компьютере в сотни миллионов раз (ссылка).


Универсальный же квантовый компьютер должен позволять составлять алгоритмы произвольной сложности при помощи основных логических операций. Такие гиганты, как Microsoft, IBM и Google сейчас строят такие компьютеры. Вы даже можете с ними поиграться онлайн:


IBM Q Experience - https://www.ibm.com/quantum-computing/technology/experience/

Google Quantum Computing Playground - http://www.quantumplayground.net/#/home


Инженерные сложности


Наверное, самая большая проблема, которая стоит сейчас – декогеренция. Собственно, вся «фантастика» в квантовых компьютерах зависит от состояния квантовой спутанности (entanglement) кубитов. Как можно прочитать в тысяче и одной статье, написанных журналистами, насилующих учёных, кубит может одновременно удерживать все возможные состояния между нулём и единицей, находясь в суперпозиции. Но суперпозиция – хрупкая вещь, волновая функция системы коллапсирует даже от косого взгляда (буквально!), необратимо переходя в детерминированное состояние (условно 0 или 1).


Главная инженерная задача – изоляция кубитов от окружающей среды. Обычно это достигается крайне низкими, близкими к абсолютному нулю температурами и очень высоким вакуумом. Отсюда вытекает вторая проблема – проблема миниатюризации. Холодильники и вакуумные установки, необходимые для работы квантовых компьютеров, своими габаритами могут посоперничать с габаритами первых компьютеров образца 50-х годов 20 века.

Квантовое превосходство... журналистов над здравым смыслом Квантовый компьютер, IT, Мифы, Журналисты, Длиннопост

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


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


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


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


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


Логика


В квантовом мире всё квантовое. Алгоритмы тоже. Если алгоритм классический использует двоичную логику (см. Как заставить машину считать при помощи транзисторов?), то квантовый компьютер использует другой набор логических вентилей (да, «тёплые ламповые» OR, AND, NOT и XOR придётся забыть). С квантовыми вентилями, конечно, можно «сконструировать» аналоги, но смысла в этом большого нет, так как гораздо проще и дешевле для этих же целей использовать обычный цифровой компьютер.

Квантовое превосходство... журналистов над здравым смыслом Квантовый компьютер, IT, Мифы, Журналисты, Длиннопост

Рис: квантовые логические вентили


Хорошо, будем разрабатывать квантовые алгоритмы. Они же будут «круче» обычных? Возможно. Знаете, сколько сейчас в мире разработано квантовых алгоритмов? Всего около 50 (полный их список здесь). И если приглядеться, то все эти алгоритмы можно условно разделить на две категории: первая – это алгебра и теория чисел, вторая – аппроксимация и оптимизация.


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


Далее я перечислю некоторые мифы и заблуждения насчёт квантовых компьютеров:

В 1 кубите может храниться более 1 бита информации?

(Якобы, это следует из его суперпозиции). Это заблуждение. Из-за различий между квантовыми и классическими битами рост количества хранимых состояний с их количеством происходит по-разному. В квантовых вычислениях всегда будет разница между количеством информации, которая хранится в системе, и количеством информации, которую можно из неё извлечь. Если в «классическом» цифровом компьютере информацию в N бит можно в точности закодировать при помощи N классических бит, в квантовом компьютере это соответствие не соблюдается.


Наш соотечественник, Александр Холево ещё в 1973 году опубликовал свою теорему, описывающую предел (названный его именем - Предел Холево) информации, которую можно извлечь из квантовой системы, следствием которой вытекает принцип: один кубит может содержать не более одного бита полезной информации. Так что никаких чудес.


Квантовый компьютер может проверить все возможные решения сразу?

Обычно это говорят об уязвимости алгоритма шифрования RSA перед квантовым компьютером, но на самом деле каждый из известных нам квантовых алгоритмов, работает по-разному, но ни один из них не проверяет сразу всё сразу. Да, и пароли компьютер не подбирает – он находит всего лишь период функции f(x) = m^x (mod N). Если бы это было правдой, то проблема P = NP  была бы уже решена.


Квантовые компьютеры производительнее обычных, скоро у всех будут только квантовые компьютеры?

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


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


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


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

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


Квантовые компьютеры разрушат кибербезопасность

И да, и нет. Действительно, есть один класс криптосистем, самым ярким представителем которых является алгоритм RSA, основан на постулируемой сложности разложения больших чисел на составляющие их множители из простых чисел (к слову, возвращаясь к проблеме P = NP, эта сложность ещё и не доказана толком). И вот как раз эту задачу квантовый компьютер способен решить очень быстро. В теории – квантовый компьютер со 100000 кубит найдёт 2048-битный ключ за пару секунд. Но во-первых, максимум, что мы имеем, это 53 кубита, а во-вторых, далеко не все криптоалгоритмы уязвимы.


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


Что же касается симметричных шифров (тот же AES), то они вполне надёжны даже в пост-квантовом мире.


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


Заключение


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


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

Как два байта переслать?

Что может быть проще пересылки текстового сообщения «Hello!» с одного компьютера на другой? Да ничего сложного! Сейчас всё придумаем, а заодно заново изобретём велосипед.


Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

Физический уровень


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


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

Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

На выходе из приёмника у нас получится вот такой вот график напряжения:

Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

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

Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

Оказалось, что на приёмное устройство включилось несколько позднее передающего, а кроме того, генераторы тактовой частоты у приёмника и передатчика несколько различаются. Хоть на них и написано 100 МГц, выяснилось, что приёмник работает с частотой 101,3 МГц, а передатчик – с частотой 100,9 МГц.


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

Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

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

Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

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


Кстати об Ethernet-кабеле (Витой паре) – хотя внутри него находятся 8 проводов, для передачи сигнала со скоростью до 100 Мбит /с достаточно всего четырёх из них. Все восемь требуются лишь для передачи со скоростью свыше 1 Гбит/с.


Канальный уровень


Мы построили физический канал связи, но все наши проблемы пока не решены. Пока мы передавали короткие наборы данных, всё было прекрасно. Но на длинных пакетах данных очень часто возникала проблема «сдвига фазы». Приёмник просто не знает, где кончается одно сообщение, и начинается другое:

Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

Нам нужен какой-то способ разделять разные блоки данных между собой, назовём их кадры (или фрейм, frame) чтобы приёмник мог точно знать, где заканчивается один пакет, и начинается другой. Поскольку всё, что мы можем передавать – это нули и единицы, договоримся о специальном символе-разделителе, например, такой последовательности: 01111110. Теперь, перед началом пакета мы всегда будем посылать эту последовательность, а приёмник будет знать, что получает новый кадр. Тут возникает вопрос, а как поступить, если в передаваемых данных так же встретится подобная комбинация бит? Давайте тогда договоримся, что если внутри кадра нам требуется передать более 5 последовательных единиц подряд, то вместо 111111 мы будем передавать 1111101 – то есть, вставлять нолик после каждых 5 единиц. Приёмник, с другой стороны, так же будет настроен на то, чтобы игнорировать этот ноль. Чтобы не терять синхронизацию, во время простоя приёмник будет постоянно передавать последовательность-разделитель во время установленного соединения.


Когда же требуется установить новое соединение и установить синхронизацию по частоте будем пользоваться следующим соглашением – сначала несколько наносекунд молчания, длительность должна соответствовать как минимум длительности передачи 96 бит (12 блоков по 8 бит или октетов). Это нужно для того, чтобы точно удостовериться, что данные в настоящий момент не передаются. Затем будет посылаться преамбула – 56 бит повторяющихся пар нулей и единиц: 10101010101010101010101010101010101010101010101010101010 – так приёмник сможет точно измерить длительность, с которой будут передаваться биты. Затем мы передадим уже знакомую последовательность начал кадра: 01111110, после чего – наше сообщение.


Мы более-менее успешно справлялись только с одним видом соединения – от одной точки к другой (или по-английски Point-to-Point). А соглашение и правила, по которым мы условились осуществлять передачу, давайте назовём ПРОТОКОЛ. Но тут мы решили организовать компьютерную сеть, состоящую из нескольких компьютеров. Можно, конечно, оснастить каждую пару компьютеров отдельным каналом связи, но проще будет подумать, какие необходимо внести изменения в наш протокол, чтобы можно было бы передавать сообщение по одному физическому каналу на любой из подключённых к нему приёмников.


Для начала необходимо как-то идентифицировать компьютеры в нашей сети. К счастью, каждое приёмо-передающее устройство имеет нечто вроде уникального 6-значного (48 бит) серийного номера, который обычно записывается в шестнадцатеричном виде через двоеточие, например e0:62:0f:1a:02:2d, иначе он называется MAC-адрес (от Media Access Controlуправление доступом к среде).


То есть внутри нашего кадра мы теперь будем сначала передавать MAC-адрес приёмного устройства на компьютере-получателе, затем свой адрес (чтобы нам могли ответить), затем укажем подсказку, какие данные внутри, затем – сами данные, после чего – их контрольную сумму (её посчитаем по алгоритму CRC-32, о котором, может быть, я расскажу в другой раз. Тема интересная).


Наш кадр (Ethernet frame) приобретает следующий вид:

Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

Ура, мы заново изобрели протокол Ethernet, одну из разновидностей протокола HLDC (High-Level Data Link Control).


Что передать в качестве типа данных? Давайте пока передадим 0001000 00000000 (0x800), а потом к этому вернёмся.


Тут стоит сказать, что есть одна разновидность HLDC под названием Point-to-Point protocol или сокращённо PPP, которая чуть отличается от вышеприведённой схемы. Поскольку, как следует из названия, он используется для связи вида «точка-к-точке», в поле адрес получателя всегда вносится 11111111 (FF), а в адрес получателя – всегда 00000011 (3). Почему? Так повелось исторически.


Сетевой уровень


И так, теперь, получая по локальной сети кадр данных, приёмник может проверить, а ему ли предназначается данное сообщение. Он сверит MAC-адрес, указанный в кадре со своим MAC-адресом, и, если данные предназначаются не ему – попросту проигнорирует его. Есть, правда, и способ передачи данных на все компьютеры, подключённые к нашей сети. Для этого, в качестве адреса получателя мы должны указать FF:FF:FF:FF:FF:FF – все единицы в двоичном представлении. В этом случае сообщение получит каждое подключённое устройство.


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


Но что, если у нас несколько сетей? Собственно, само слово «Интернет» это подразумевает. Если всё очень сильно упростить, то интернет – это совокупность локальных сетей, подключённых к крупным магистральным «хабам» (маршрутизаторам, хостам), с прямым соединением:


Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

Допустим, нам необходимо передать наше «Hello!» с компьютера А на компьютер В:

Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

Даже, если мы и знаем MAC-адрес компьютера В (а это в большинстве случаев не так), то при отправке пакета данных с компьютера А, внутри этой сети нет компьютера B, и, соответственно, адресат наше сообщение не получит. Получается, нам необходим какой-то иной адрес, который будет универсальным для любой сети, подключённой к Интернету. При помощи этого адреса, хабы смогут пробрасывать сообщение между различными локальными сетями, зная, к какому именно хабу подключена сеть, где находится компьютер адресата.


Совершенно ясно, что нам необходим новый протокол, который мы так и назовём: Интернет протокол (IP – Internet protocol), а адрес компьютера по этому соглашению – IP-адрес.


В настоящее время чаще всего используется схема адресации версии 4 (IPv4), где адрес состоит из 32 бит (4 октетов), которые записывают в виде десятичных цифр вида 192.168.0.1 или 127.0.0.1. Как нетрудно посчитать, такая схема может максимально адресовать 4 294 967 295 устройств, поэтому сейчас активно внедряется версия 6 (IPv6), в котором на адрес отведено аж 128 бит, вместо 32, чего с лихвой должно хватить на пару ближайших столетий.


Когда на хаб, соединённый сетью А передаются данные для сети B, используя данную адресацию, можно построить требуемый маршрут для передачи. Для этого на каждом из таких компьютеров имеется таблица адресов (таблица маршрутизации или routing table) и номер интерфейса (условно - сетевого адаптера) по которому следует передавать данные на нужный адрес.

Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

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


Например, компьютер в сети B имеет IP адрес 47.58.3.83. На хабе «Афина» (названия условны) в таблице маршрутизации указано: пакеты на 47.58/16 отправлять по интерфейсу 2 (на «Аид»).

Сокращение /16 означает любой адрес назначения, где первые 16 бит соответствуют 47.58. Таблица маршрутизации может содержать и уточнение, например 47.58.3/24 → 3 (на «Зевс»). В данном случае пакет будет направлен на хаб «Зевс», потому что чем больше степень уточнения (24 бит вместо 16), тем более высокий приоритет имеет запись.


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


И ещё – как узнать, какой именно из компьютеров в нашей локальной сети подключён к какому-либо из хабов, то есть, является «шлюзом» (Gateway) в интернет? Если открыть на компьютере свойства сетевого подключения, мы увидим картину, похожую на эту:

Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

Как видно, адрес «шлюза» (Default gateway) обычно настраивается при подключении (Примечание: современные локальные сети могут конфигурировать подключение без участие пользователя). Так же здесь мы можем увидеть загадочное 255.255.255.0 – маску подсети. Она говорит нам о том, что у всех устройств в нашей локальной сети адреса первых 24 бит совпадают. Почему 24 бит? Достаточно посмотреть на эту «маску» в двоичном представлении: 11111111 11111111 11111111 00000000. Единицей промаркированы совпадающие биты в адресах. С такой маской в одной сети может одновременно находиться до 256 устройств. В крупных сетях маска может быть иной.


Эта конфигурация сети говорит о том, что на любой адрес, начинающийся с 192.168.0 можно пересылать сообщения по локальной сети, а информацию, предназначенную для других получателей – отправлять на «шлюз». Но возникает вопрос, адрес «шлюза» – это 4 ничего не значащих для нас цифры, ведь, чтобы отправить что-либо по сети Ethernet, нам необходим MAC адрес для этого устройства. Как водится в сетевом мире, и на это имеется свой протокол, который называется ARP – Address Resolution Protocol (протокол определения адреса).

Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

Простыми словами, в процессе отправки этого запроса по всем компьютерам в нашей сети, мы спрашиваем: «Эй, у кого тут адрес 192.168.0.1?». Шлюз примет это сообщение и ответит аналогичным пакетом, в котором будет указан код операции 2 (ответ) и заполненное поле, где будет указан его MAC-адрес.


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


Примечание: в жизни всё обычно несколько сложнее, так как IP-адреса внутри локальной сети не являются глобально-уникальными, и в функции шлюза так же входит обязанность по их преобразованию (трансляции). Данная техника имеет название NAT (Network Address Translation).


Теперь, имея физический адрес нашего шлюза и IP-адрес нашего получателя, мы, наконец, можем отправить информацию с текстовым сообщением «Hello!».


Для этого, в уже знакомый нам Ethernet фрейм мы вкладываем IP-пакет. Его структуру можно лицезреть ниже на рисунке (показана структура пакета версии 4). Заголовок пакета состоит из нескольких «слов», длиной 2 байта (32 бит):

Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

Отдельно здесь хочу уделить внимание полю TTL (время жизни) и зачем оно нужно. Если посмотреть на диаграмму с маршрутизаторами чуть выше, не всегда можно надеяться на то, что таблицы маршрутизации на всём пути следования настроены как надо. Предположим, IP-пакет, отправленный с «Афины» на «Аида», но тот, вместо того, чтобы передать его «Посейдону», передал его на «Гермес», который, в свою очередь, имеет правило маршрутизации, предписывающее передавать пакеты обратно на «Афину». Получается своеобразная «петля», и пакет бы передавался так вечно, если бы не «время жизни». С ним, пройдя определённое количество маршрутизаторов, пакет будет благополучно уничтожен (не дойдя до адресата).


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


Транспортный уровень


Если вы невнимательно читали, я напомню, что внутрь одного PPP-фрейма может влезть максимум 1500 октетов (байт). Соответственно, если объём передаваемых данных больше этого значения, нам необходимо будет разбить их на несколько фрагментов и упаковать их каждый – в свой IP-пакет. Здесь нас подстерегает ещё несколько проблем.


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


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


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


Соответственно, нам нужен механизм (да, угадали – ещё один протокол), который бы позволял нам узнавать, был ли доставлен пакет и повторно отправлять их, если это вдруг произошло, а также определять какой из пакетов к какому из «разговоров» (или соединений) относится.


На помощь приходит Протокол управления передачей или TCP (Transmission Control Protocol), который призван решить все перечисленные проблемы, обеспечивая гарантированную передачу данных по ненадёжным каналам связи.


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


Примечание: внутри IP пакета вовсе не обязательно должен находиться TCP пакет. Есть и другие протоколы транспортного уровня (UDP, ICMP, но описывать их все будет очень долго).


Проблема идентификации соединения («разговора») решается как обычно в компьютерном мире их нумерацией. При соединении с каким-либо компьютером, мы указываем протоколу TCP номер порта – произвольное 16-битное число, при помощи которого протокол будет определять, к какому именно соединению относится тот или иной пакет. Можно пользоваться любым незанятым портом, однако некоторые номера, всё же, используются под конкретные нужды конкретными протоколами более высокого уровня (да, да, там «наверху» ещё много протоколов). Так, например, всем известный протокол http (с которым работает веб-браузер) использует по умолчанию порт 80, древний протокол Telnet – порт 23, SSH – 22, и т. д.


Далее, протокол TCP разбивает передаваемые данные на фрагменты, так, чтобы «впихнуть» их в IP-пакеты, которые, в свою очередь, будут «упакованы» в Ethernet-фреймы. Но перед этим, фрагменты нумеруются по порядку, и каждому из фрагментов присваивается свой номер.


«Разговор» двух машин по протоколу TCP может быть двунаправленным, то есть, обе машины могут как посылать, так и принимать данные. При получении каждого нового пакета, машина генерирует ответ-подтверждение, которое так же нумеруется. Так обе стороны точно знают, какие данные были переданы, а какие – ещё нет.


Кроме этого, дополнительно в TCP-протоколе предусмотрены 9 однобитовых флагов, позволяющие более точно регулировать процесс обмена данными. Для экономии места я опишу только часть:

SYN – Бит синхронизации, этот флаг устанавливается только на первом пакете.

ACK – Бит подтверждения – у всех пакетов после первого SYN, должен устанавливаться данный флаг.

RST – сброс соединения

FIN – последний пакет.


Общая структура заголовка TCP пакета показана на диаграмме. Обратите внимание, что порядок бит – обратный (младшие биты слева). Так, например, число 100 (0x64) должно быть указано в обратном порядке: 00100110.

Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

Начало сеанса TCP, также называемый «рукопожатие» (handshake), проходит так:


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


2. Сервер, при готовности принять соединение, запоминает его номер последовательности и посылает клиенту сегмент со своим сгенерированным номером последовательности и установленными флагами SYN и ACK (синхронизация и подтверждение). Если сервер не готов к соединению, отправляется флаг RST.


3. Клиент, получив подтверждение, запоминает номер последовательности сервера и так же посылает пакет с флагом ACK.


Трёхэтапного согласования на практике обычно достаточно для перевода соединения в состояние «установлено» (established). После этого как клиент, так и сервер, могут начинать передачу данных друг другу. Получение каждого пакета подтверждается пакетом с флагом ACK, а так же номер подтверждения – то есть, первоначальный номер последовательности плюс количество полученных байт. Если приходит пакет с номером более ожидаемого, он «буферизируется» – запоминается в специально-выделенной области памяти, которая называется «буфером» в ожидании своей очереди.


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


Когда требуется завершить соединение, его закрытие так же происходит в три этапа.


1. Посылка серверу от клиента флага FIN на завершение соединения.

2. Сервер посылает клиенту флаги ответа ACK , FIN, что соединение закрыто.

3. После получения этих флагов клиент закрывает соединение и в подтверждение отправляет серверу ACK , что соединение закрыто.


Как мы убедились, наши «два байта», которые мы хотели переслать, были в действительности упакованы в своеобразную «матрёшку»:

Как два байта переслать? Osi, Телекоммуникации, IT, Интернет, Длиннопост

И это ещё только вершина айсберга. В этом посте весьма поверхностно описаны всего 3 из 7 уровней сетевой модели OSI (Open Systems Interconnections) – де-факто стандарта, связующего огромное количество разнообразных протоколов, которые используются в настоящее время в телекоммуникационных системах. Чтобы описать их все (со всеми протоколами), потребуется издать весьма толстую книгу, написанную сухим техническим текстом без «разжёвывания», поэтому, да простят меня сисадмины и специалисты по телекоммуникациям, если я не сказал чего-то важного, по их мнению.


Как видите, простая поговорка «Просто, как два байта переслать» имеет весьма непростой подтекст.

Показать полностью 15

Как делают микропроцессоры

Продолжение

Часть 1 (О полупроводниках вообще и о диодах)

Часть 2 (Транзисторы)

Часть 3 (Как заставить машину считать при помощи транзистора)


...потому как на бумаге всё просто, но блин, как они это всё запихнули в чип размером с ноготь?!

(один из комментариев к предыдущему посту)
Ну что же, вот об этом сейчас и пойдёт речь.

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

Увеличенное изображение неразрезанных кристаллов процессоров Intel Core I7.


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


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

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

Кристалл этого 4-битного микропроцессора имел площадь 12 мм², размер каждого из 2300 транзисторов был «огромным» по современным меркам (10 мкм), транзисторы на современных кристаллах имеют размер примерно в тысячу раз меньше!

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

А вот, что представлял собой кристалл этого процессора:

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

Создание микропроцессора начинается с процесса его проектирования. Задача конструкторов создать и предварительно протестировать схему микропроцессора. Выпуск новой схемы занимает труд десятков, если не сотен инженеров, и занимает месяцы подготовки. Когда процесс проектирования будет закончен, необходимо изготовить фотошаблон для нового чипа. Для того чтобы оценить важность данного процесса и цену ошибки, достаточно сказать, что нажатие кнопки PRINT в данном случае «стоит» от 600 тыс. до 1 млн. долларов США, а для набора шаблонов стоимость может исчисляться уже десятками миллионов долларов.


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

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

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


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


Начинается всё с обычного кварцевого песка.


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


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


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

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

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


За это время образуется цельный цилиндрический кристалл диаметром 300 миллиметров, длиной до 1-2 метров и весом около 100 килограммов. Если взглянуть на него под сильным увеличением, взгляду откроется строгая структура — идеальная кристаллическая решётка из атомов кремния, совершенно однородная по всему объёму.


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


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

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

Когда такой гигант процессоростроения, как Intel только начинал производить чипы, он использовал «вафли» диаметром всего 2 дюйма. Теперь, для удешевления процесса, используются «вафли» диаметром 12 дюймов (~300 мм).


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


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


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

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

Почему ультрафиолет? Всё дело в длине волны. Получение чёткой проекции микроскопического объекта зависит от длины волны излучения и разрешающей силы оптической системы. В современной промышленности используют глубокий ультрафиолет эксимерного лазера с длиной волны 193 нм. Но и этого оказывается недостаточным для изготовления транзисторов по тех. процессу ниже 50 нм (когда говорят о техпроцессе, имеют в виду линейные размеры одного транзистора). Фотолитография на глубоком ультрафиолете использует уже не линзы, а многослойные зеркала, где каждый слой даёт слегка отличающуюся от предыдущей интерференционную картину, а комбинированное отражение всех слоёв позволяет получить изображение меньшее, чем длина волны используемого излучения. Тем, кто интересуется темой более подробно, в англоязычной версии Википедии есть великолепная статья на эту тему.

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

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

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

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


После легирования заготовка покрывается оксидной плёнкой (в данном технологическом процессе используется термин High-K, характеризующий материал с диэлектрической проницаемостью большей, чем у диоксида кремния). Название происходит от диэлектрической константы материала, обозначаемой греческой буквой κ – каппа. В более старых технологических процессах использовался, собственно сам диоксид кремния. Он был хорош до поры, его слой можно было выращивать путём высокотемпературного окисления на самом кремниевом слое, однако, с уменьшением площади транзистора, уменьшалась и площадь затвора, а следственно – его ёмкость. Чтобы увеличить ёмкость можно уменьшать слой диэлектрика под затвором, но если его толщина уменьшается менее 3 нм, начинают проявляться квантовомеханические свойства электронов, которые попросту туннелируют через этот смехотворный барьер, создавая ток утечки, и, чем тоньше слой, тем сильнее проявляется этот эффект. Изготовление подзатворного диэлектрика из материала с высокой диэлектрической проницаемостью позволяет увеличить его толщину, одновременно увеличивая ёмкость затвора, обеспечивая снижение тока утечки на несколько порядков по сравнению с более тонким диэлектриком из диоксида кремния. При производстве современных чипов используются силикат или оксид гафния. На картинке слева – транзистор, обработанный слоем фоторезиста, справа – состояние после смывки облучённого фоторезиста.

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

Ненужный нам теперь слой диэлектрика так же смывается химическим путём:

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

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

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

Излишек меди убирается шлифовкой, после чего транзисторы соединяются между собой:

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

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

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

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


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

Как делают микропроцессоры Микропроцессор, Транзистор, Технологии, Длиннопост

О законе Мура.


Ещё в 1965 году, американский инженер, один из основателей компании Intel, Гордон Мур, в одной из своих работ сделал наблюдение, которое впоследствии назвали «Законом Мура». Он гласил, что количество транзисторов, размещаемых на кристалле интегральной схемы, удваивается каждые 24 месяца (причём, изначально речь шла о 12 месяцев).


И действительно, если проследить эволюцию микропроцессоров, данный закон более-менее соблюдался почти 40 лет, до начала 2010-х годов, пока инженеры не «упёрлись» в физические пределы, во-первых, разрешающей возможности оптики для процесса фотолитографии, во-вторых – в минимально-необходимое расстояние между двумя терминалами транзисторов, где туннельный эффект ещё можно игнорировать. Чтобы ощутить, насколько мал транзистор, изготовленный по тех. процессу 14 нм, достаточно узнать, что это всего лишь 70 атомов (диаметр ядра атома кремния около 0,2 нм).


Хотя, инженеры продолжают добиваться поразительных успехов в данной области, например, в 2012 году, исследовательская команда в университете Нового Южного Уэльса объявила о первом транзисторе, состоящем из единственного атома, несложно предположить, что конец закона Мура не за горами, и тех. процесс в 7 нм, возможно, будет последним в погоне за миниатюризацией.

Показать полностью 16

Как заставить машину считать при помощи транзисторов?

Продолжение. Часть 1 Часть 2

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

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

Двоичная логика
Думаю, что ни для кого, кто не прогуливал информатику в школе, не будет секретом, что в компьютерах используется двоичная система счисления, и счёт идёт следующим образом: 0, 1, 10, 11, 100, 101, 110, 111, 1000, и т .д. Когда мы имеем дело с простой электрической цепью, нам доступно, по сути, всего два состояния: напряжения в цепи нет, и напряжение в цепи есть, которые можно обозначить за 0 и 1, соответственно. Люди привыкли считать в десятичной системе счисления (наверное, потому, что у большинства из нас по 10 пальцев на руках). Машину тоже можно научить считать в десятичной системе, однако это не очень практично, так как нам понадобится различать 10 различных состояний электрической цепи, что значительно усложнит конструкцию. Но и двух состояний, как показывает практика, достаточно практически для любой вычислительной задачи.

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

Логические вентили
Сразу оговорюсь – одну и ту же схему можно построить, используя несколько способов, здесь предложен лишь один из вариантов.
Здесь и далее, условно мы считаем поданное напряжение за 1 (или ИСТИНА), отсутствие напряжение – 0 (ЛОЖЬ).
Сила транзисторов приходит с их числом. Давайте посмотрим на следующую схему:

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

На данной схеме, если мы подадим на вход (In) 1, электричество потечёт от коллектора на эмиттер (сверху вниз). Так как ток всегда идёт по линии наименьшего сопротивления, на выходе будет 0. Если на входе будет 0, то транзистор предотвратит ток от коллектора на эмиттер, и на выходе (Out) мы получим 1.

Эта схема является логическим инвертором (превращает 0 в 1 или 1 в 0), представляя собой логическую операцию НЕ (NOT). В логических схемах, по стандарту ANSI 91-1984, она обозначается так:

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

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

Забегая вперёд, скажу, что для каждой операции существует так называемая «таблица истинности» (truth table), которая показывает, как данная операция изменяет входящий сигнал. Входящие сигналы обычно обозначают буквами латинского алфавита по порядку (A, B и т. д.) Для операции NOT существует всего 1 входящий сигнал А:

А = 0 → 1

А = 1 → 0


Рассмотрим пример посложнее:

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

Здесь, если вы уже хоть чуточку разбираетесь в том, что уже было сказано, можно увидеть, что на выходе (Out) мы получим 1 только если на входах A и B тоже будут единицы, а в любом другом случае, на выходе будет 0. Мы получили логический вентиль И (AND), который обозначается так:

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

Вентиль И имеет следующую таблицу истинности:

A = 0, B = 0 → 0

A = 0, B = 1 → 0

A = 1, B = 0 → 0

A = 1, B = 1 → 1

Для полноты комплекта набора базовых логических вентилей, рассмотрим ещё и вентиль ИЛИ (OR):

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

Данный вентиль позволяет получить 1 на выходе, если хотя бы один из входов (или сразу оба) на вход получают 1.

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

У вентиля ИЛИ, как легко предположить имеется следующая таблица истинности:

A = 0, B = 0 → 0

A = 0, B = 1 → 1

A = 1, B = 0 → 1

A = 1, B = 1 → 1

Есть и другие вентили, например XOR, NAND, NOR, и т. д. С целью экономии места и времени, я пропущу их описание, остановлюсь подробнее только на одном из них, под названием NAND (НЕ-И). Дело в том, что при помощи вентилей этого типа, мы можем сконструировать вентиль любого другого типа. Это было математически доказано ещё в далёком 1913 году американским логиком Генри Шеффером. Любая комбинация логических вентилей может быть реализована при помощи вентилей типа НЕ-И или НЕ-ИЛИ.

Почему NAND?
На самом деле всё просто. Вентили NAND быстрее. Есть такой термин «логические трудозатраты». Это параметр, который характеризует временную задержку в логических элементах. На практике при построении интегральных схем чаще всего используются вентили типа NAND.

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

Как можно уяснить уже из названия, NAND (Not AND) или НЕ-И представляет собой вентиль И с инверсией результата. То есть, он всегда на выходе имеет 1, кроме того случая, когда единица подаётся на оба входа одновременно:
A = 0, B = 0 → 1

A = 0, B = 1 → 1

A = 1, B = 0 → 1

A = 1, B = 1 → 0

На этой схеме представлены варианты изготовления вентилей НЕ (NOT), И (AND), ИЛИ (OR) и исключающего ИЛИ (XOR) только при помощи вентилей типа NAND:

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

Так как же компьютер считает?
Посмотрите на схему, она состоит из вентиля XOR (исключающее ИЛИ) и вентиля AND:

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

В качестве разминки для ума, попробуйте сами составить таблицу истинности для этой схемы. Если у вас всё получилось, то вы должны прийти к следующей логике:
A = 0, B = 0 → S = 0, C = 0

A = 0, B = 1 → S = 1, C = 0

A = 1, B = 0 → S = 1, C = 0

A = 1, B = 1 → S = 0, C = 1


Или, если хочется поиграться самому, вот ссылка на работающую симуляцию:https://simulator.io/board/mgWFjacWov/1
(Щёлкайте по сигналам - 0 и 1, чтобы зажечь или погасить лампочку).

Ура! Мы научились складывать 1 и 1! И действительно, мы получили устройство, способное сложить значения двух бит (которые подаются на входы A и B) и получить результат на выходе S (Sum – сумма). 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1. Что же происходит, когда складывается 1 + 1 – в этом случае вывод S обнуляется, но зато единица подаётся на вывод C (Carry – перенос). Это сигнал о том, что у нас возникло переполнение, и нам необходим следующий разряд для записи числа 2 (или 10 в двоичном представлении).
Описанная схема называется «полусумматором» (half-adder).

Если мы захотим перерисовать эту схему, используя только вентили типа NAND, то получим вот это:

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

Очевидно, что полусумматор может работать только с одним разрядом. Теперь давайте совместим два полусумматора вместе:

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

Симуляция: https://simulator.io/board/2Cf3xg9qcE/1

Заметьте, слева у нас появился ещё один ввод (который обозначен Carry-in). Построим для этой схемы таблицу истинности:

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

Обратите внимание, как, в зависимости от ввода Carry-In меняется результат. Если на этот ввод подавать состояние вывода переполнения/переноса (C-out) с соседнего сумматора, то будет понятно, что, расположив 8 таких сумматоров в цепочку, мы можем заставить компьютер складывать числа ёмкостью до 8 бит (то есть, в пределах от 0 до 255 или от -127 до 128). Ниже представлена цепочка из 4 полных сумматоров, позволяющих складывать числа до 4 бит:

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

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

Со сложением определились. А как быть с вычитанием?

Да, в общем-то, ничего сложного, как вы поняли, в вычитании нет. Вот схема вычитателя, состоящая из двух идентичных половинок. Как видно, мы решаем проблему просто добавлением вентилей НЕ:

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

И таблица истинности для данной схемы:

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

Чтобы поупражняться самостоятельно, можете взять симуляцию схемы сумматора (https://simulator.io/board/2Cf3xg9qcE/1), и, добавив вентили НЕ (NOT) превратить его в вычитатель.

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

Как заставить машину считать при помощи транзисторов? Полупроводник, Транзистор, Логика, Логические элементы, Длиннопост

Симуляция: https://simulator.io/board/Kx7SAVz4P6/1


Последний вывод Cout на симуляции обозначает переполнение (лампочка красного цвета).

Мы добавили на входы битовых сумматоров вентили исключающего ИЛИ (XOR), которые выдают единицу только в том случае, если на его входы подаются разные сигналы. Когда M = 0, вентили выдадут значение сигналов B0-B3, когда M = 1, они инвертируют входящие сигналы. Таким образом, когда сигнал М = 1, данная схема становится вычитателем, а когда М = 0 – сумматором.

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

Показать полностью 17

Полупроводники - фундамент цивилизации. Часть 2 - Транзисторы

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



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

Полупроводники - фундамент цивилизации. Часть 2 - Транзисторы Полупроводник, Транзистор, Микроэлектроника, Гифка, Длиннопост

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



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

Полупроводники - фундамент цивилизации. Часть 2 - Транзисторы Полупроводник, Транзистор, Микроэлектроника, Гифка, Длиннопост

Представим, что у нас есть слабый волновой сигнал (не важно, кто и откуда нам его посылает), и этот сигнал приходит к нам в виде изменений давления в ёмкости, которая обозначена на схеме Gate (затвор). Очевидно, что чем больше там давление, тем шире откроется заслонка, и тем большее количество жидкости сможет протекать от истока (Source) к стоку (Drain). Что характерно – интенсивность тока жидкости на сливе будет в точности повторять приходящий сигнал, однако он будет гораздо более сильным.



В электрических цепях до изобретения транзистора использовались лампы под названием триоды:

Полупроводники - фундамент цивилизации. Часть 2 - Транзисторы Полупроводник, Транзистор, Микроэлектроника, Гифка, Длиннопост

Устроен триод почти так же, как и ламповый диод (см. предыдущий пост), с тем лишь исключением, что между катодом и анодом натянута сетка, которая называется «управляющей» к которой подведён дополнительный контакт. Продолжая аналогию с предыдущей гифкой, можно увидеть, что сетка играет роль затвора. Поле, создаваемое управляющей сеткой, оказывает влияние на анодный ток. Под управлением находятся электроны, эмитированные катодом в виде пространственного заряда. Степень воздействия зависит от расстояния того или иного электрода до катода.



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



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

Полупроводники - фундамент цивилизации. Часть 2 - Транзисторы Полупроводник, Транзистор, Микроэлектроника, Гифка, Длиннопост

Мы можем использовать эту управляющую сетку не только для регулировки, но и в качестве выключателя. Если мы подадим на управляющий электрод отрицательный заряд, он начнёт отталкивать вылетающие электроны из катода и цепь будет разомкнута. В этом была заложена основа двоичного кодирования – ноль и единица. Лампы открыли нам путь для создания компьютеров. Для постройки одного из первых в мире компьютеров общего назначения ENIAC в 1945 году было использовано около 18 тысяч ламп! Компьютер весил 30 тонн и занимал целый зал, не говоря уже о той прорве электричества, которую он пожирал. Лампы регулярно перегорали и требовали замены. Тем не менее, эта машина за 30 минут справлялась с таким же объёмом расчётов траекторий артиллерийской стрельбы, на проведение которых человеку требовались сутки. Теперь же, похожая задачка решается в тех же Angry Birds, и справиться с ней может чип величиной с песчинку, и всё благодаря транзистору. В современных микропроцессорах находятся миллиарды транзисторов, каждый из которых выполняет точно такую же функцию, как и лампа.



Давайте же разберёмся, как он работает.



Прежде всего, если вы не читали предыдущий пост, настоятельно советую для начала ознакомиться с ним, потому что дальнейшее изложение я буду строить исходя из предположения, что читатель знаком с понятиями P-N перехода. Вкратце – в полупроводники с правильной кристаллической решёткой вносятся добавки (процесс называется «легирование»), обеспечивающие либо дополнительные электроны в зоне проводимости (полупроводник N-типа), либо наоборот – создающие их дефицит (дырки) – полупроводник P-типа.
Для того, чтобы создать диод, нам понадобилось 2 типа полупроводников, соединённых друг с другом. Но что будет, если мы на этом не остановимся и добавим ещё один полупроводник? Ура! Мы соорудили транзистор, а точнее – биполярный транзистор (но о том, какие они вообще бывают, поговорим позднее):

Полупроводники - фундамент цивилизации. Часть 2 - Транзисторы Полупроводник, Транзистор, Микроэлектроника, Гифка, Длиннопост

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



Рассмотрим транзистор первого типа NPN. Носителем заряда в нём являются электроны, поэтому на рисунке ниже, дырки не показаны (но помните, что они там есть!). Принципиально, он напоминает «бутерброд», сооружённый из двух диодов, и обладает, соответственно, двумя переходами NP и PN, поэтому, в каком бы направлении мы не пропускали ток, один из двух переходов всегда будет де-факто диодом с обратным подключением, и ток через цепь такое устройство не пропустит.



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

Полупроводники - фундамент цивилизации. Часть 2 - Транзисторы Полупроводник, Транзистор, Микроэлектроника, Гифка, Длиннопост

Что здесь происходит? Посмотрите на область, обведённую красным пунктиром. По сути, мы видим иллюстрацию из предыдущей части – диод с прямым подключением. Отрицательно заряженный терминал (слева) выпустит большое количество электронов, которые будут толкать другие электроны дальше. Перескакивая от дырки к дырке, часть электронов устремится к месту подключения положительного полюса батареи (кстати, этот вывод транзистора называется База), и дальше. Этот путь показан тонкой пунктирной стрелкой синего цвета.



Отрицательно-заряженный терминал вводит в N-область всё больше и больше электронов (тот терминал, из которого производится выпуск носителей заряда (в нашем случае – электронов) называется Эмиттер, от англ. to emit – выпускать, испускать), и большая их часть продолжает свой путь дальше. Они притягиваются положительным зарядом нижней батареи – к положительно-заряженному терминалу, который в нашем случае называется Коллектор (от англ. to collect – собирать). Их путь показан жирной пунктирной стрелкой синего цвета.


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


Спасибо за это надо сказать Бенджамину Франклину (да, да, тому самому). Именно он ввёл общепринятое теперь обозначение электрически заряженных состояний «+» и «−». Про электрон тогда не знали, фактически, было абсолютно всё равно, какой именно тип зарядов называть положительным, а какой – отрицательным. Но с него повелось, что ток в цепи течёт от положительного полюса источника питания к отрицательному, хотя электроны движутся в противоположном направлении. Поэтому, хотя носителем заряда в NPN транзисторе являются электроны, считается, что электрический ток идёт в противоположном направлении.
Поскольку количество носителей заряда (электронов), проходящих от эмиттера к коллектору намного больше, чем на пути от эмиттера к базе, мы, имея слабый ток на базе, получили его усиление на коллекторе.



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



Самое время понять, в чём разница между транзисторами PNP и NPN типа.



В транзисторе NPN положительное напряжение подаётся на коллектор для создания тока от коллектора к эмиттеру. В PNP транзисторе положительное напряжение подаётся на эмиттер для создания тока от эмиттера к коллектору. В NPN ток течёт от коллектора (К) к эмиттеру (Э):

Полупроводники - фундамент цивилизации. Часть 2 - Транзисторы Полупроводник, Транзистор, Микроэлектроника, Гифка, Длиннопост

А в PNP ток протекает от эмиттера к коллектору:

Полупроводники - фундамент цивилизации. Часть 2 - Транзисторы Полупроводник, Транзистор, Микроэлектроника, Гифка, Длиннопост

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



Ниже три простых правила, которые нужно запомнить про разные типы биполярных транзисторов:



1) PNP транзисторы открываются напряжением отрицательной полярности, NPN – положительной.
2) PNP пропускают ток от эмиттера к коллектору, NPN – наоборот.
3) В NPN транзисторах основные носители заряда – электроны, а в PNP – дырки, которые менее мобильны (мобильность - скорость переноса мощности), соответственно NPN транзисторы быстрее переключаются в общем случае.

Полевые (FET) транзисторы
Другим типом транзисторов, являются полевые транзисторы (FET – Field Effect Transistors). По сути своей, они выполняют ту же функцию, что и биполярные, однако их принцип действия несколько иной. Есть множество разновидностей современных полевых транзисторов, и на то, чтобы описывать их все не хватит ни времени, ни места в посте, поэтому я остановлюсь на том типе, который используются в современных микропроцессорах. По-русски они называются полевые МОП-транзисторы (Металл-Оксид-Полупроводник), но более часто встречается английская аббревиатура MOSFET (Metal-Oxide-Semiconductor-Field-Effect-Transistor).Как следует из названия, управление током в полевом транзисторе происходит не при помощи регулирующего напряжения, а при помощи электрического поля.И так, возьмём подложку из слабо-легированного полупроводника P-типа и внедрим на неё две полоски высоколегированного полупроводника N-типа (напомню – в полупроводника N-типа примеси создают избыток свободных электронов, а в P-типе – их дефицит):

Полупроводники - фундамент цивилизации. Часть 2 - Транзисторы Полупроводник, Транзистор, Микроэлектроника, Гифка, Длиннопост

Тут стоит сказать, что даже в P-области, где преобладают дырки, нет-нет, да и встречаются свободные электроны, способные проводить ток, которые мы будем называть неосновными носителями заряда (англ. minority carriers). Чуть позже я объясню, почему это важно.
Как мы уже знаем, на границе P-N переходов свободные электроны из N-областей рекомбинируют с дырками в P области и формируют своебразный барьер, где нет ни дырок, ни свободных электронов, так называемый инверсный слой (англ. depletion region).

Полупроводники - фундамент цивилизации. Часть 2 - Транзисторы Полупроводник, Транзистор, Микроэлектроника, Гифка, Длиннопост

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

Полупроводники - фундамент цивилизации. Часть 2 - Транзисторы Полупроводник, Транзистор, Микроэлектроника, Гифка, Длиннопост

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

Полупроводники - фундамент цивилизации. Часть 2 - Транзисторы Полупроводник, Транзистор, Микроэлектроника, Гифка, Длиннопост

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



Давайте теперь возьмём одну пластину этого конденсатора а, вместо второй воспользуемся подложкой нашего недотранзистора. Электроны с металлической платы начнут мигрировать в сторону полупроводниковой подложки, а сама пластина начнёт приобретать положительный заряд, вследствие чего между верхним и нижним контактом сформируется электрическое поле (так же, как это происходит в конденсаторе). Помните, я просил запомнить, что даже в P-области присутствуют свободные электроны (неосновные носители заряда) – так вот, здесь они нам и пригодились. Эти электроны будут притягиваться к верхнему положительно заряженному электроду. Область непосредственно под положительно-заряженном электродом будет, как следствие переполнена электронами:

Полупроводники - фундамент цивилизации. Часть 2 - Транзисторы Полупроводник, Транзистор, Микроэлектроника, Гифка, Длиннопост

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

Полупроводники - фундамент цивилизации. Часть 2 - Транзисторы Полупроводник, Транзистор, Микроэлектроника, Гифка, Длиннопост

Ура! Мы собрали свой MOSFET транзистор. Левый электрод на рисунке называется исток (англ. source), электрод конденсатора в центре – затвор (англ. gate), а правый, соответственно, сток (англ. drain). Названия отражают роль данных контактов в движении электронов через транзистор. Располагая уже имеющимися в нашем распоряжении знаниями, легко понять, что, регулируя ток на цепи от затвора к базе, мы так же будем регулировать прохождение электронов от истока к стоку.



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

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

Ещё полевые транзисторы способны обеспечивать гораздо большее усиление по току и способны переключаться между состояниями проводимости и непроводимости гораздо быстрее, соответственно, они могут работать на более высоких частотах, чем биполярные.
Но, помимо преимуществ, есть у полевых транзисторов и недостатки. В частности, структура полевого транзистора начнёт разрушаться уже при 150°C, в то время как биполярные выдерживают до 200°C. Кроме того, низкое энергопотребление полевых транзисторов на высоких частотах (примерно начиная с 1,5 ГГц) потребление энергии у них начинает возрастать по экспоненте. Это, кстати, является одной из основных причин замедления роста скорости микропроцессоров, а производители перешли к стратегии многоядерных процессоров.
***

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

Показать полностью 14

Полупроводники - фундамент цивилизации. Часть 1 Диоды

Если попытаться создать рейтинг изобретений 20 века, которые оказали наибольшее влияние на нашу жизнь, полупроводники и полупроводниковые приборы окажутся, если не на первом месте, то в десятке – непременно.

Полупроводники - фундамент цивилизации. Часть 1 Диоды Полупроводник, Диоды, Длиннопост

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

Полупроводники - фундамент цивилизации. Часть 1 Диоды Полупроводник, Диоды, Длиннопост

Для начала упомяну тот факт, который знают, если не всё, то многие – основное свойство диода – пропускать электрический ток только в одном направлении. Но чтобы понять, почему так происходит, сперва давайте более пристально посмотрим на химический элемент с номером 14 – кремний. Кремний весьма распространён в природе, он содержится, в частности, в обычном песке или в кварце. Если посмотреть на то, где «прописан» кремний в периодической таблице, то, вспомнив школьный курс химии, можно определить, что у таких элементов как углерод, кремний или германий есть достаточно редкое свойство – у всех них по 4 электрона на внешней орбитали (подробнее об орбиталях и внутреннем устройстве атома можно почитать в посте "Правила общежития электронов внутри атома").

Полупроводники - фундамент цивилизации. Часть 1 Диоды Полупроводник, Диоды, Длиннопост

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

Полупроводники - фундамент цивилизации. Часть 1 Диоды Полупроводник, Диоды, Длиннопост

Лирическое отступление: многие, наверное, слышали или встречали название Silicon Valley, которую безмозглые переводчики иногда переводят как «Силиконовая долина». Так вот, этимологически-правильный перевод: «Кремниевая долина». Силиконы – это общее название химических соединений кремния, ещё называемые полиорганосилоксаны. В частности, из них делают смазки, герметики, ну и самое замечательное – имплантаты для увеличения груди. Не уподобляйтесь пожалуйста безграмотным, не путайте силиконы и кремний!

Хотя кристаллы кремния и выглядят металлическими, металлом кремний не являются. Как я уже сказал, все четыре его электрона «заняты» в ковалентных связях с соседями, а основным требованием для тог, чтобы вещество проводило электрический ток, является наличие свободных электронов на внешней оболочке (как у металлов). Чистый кремний ведёт себя практически как изолятор.

Полупроводники - фундамент цивилизации. Часть 1 Диоды Полупроводник, Диоды, Длиннопост

Так что же сделать, чтобы кремний стал проводить ток? Для этого используется процесс, который называется «легирование» (doping). По факту, легирование – это внесение «загрязнений» (посторонних атомов) в кристаллическую решётку.
Ведь, что, по сути, надо сделать? Либо добавить свободных электронов, чтобы они смогли переносить отрицательный заряд, и тогда мы получим полупроводник N-типа (от Negative – отрицательный), либо уберём часть электронов так, чтобы получился полупроводник P-типа (от Positive – положительный).
Для легирования кремния с целью получить полупроводник N-типа используют небольшое добавление фосфора или мышьяка. Эти атомы имеют по 5 электронов на внешней оболочке, и, когда такие атомы внедряются в кристалл кремния, один электрон не формирует связи и остаётся свободным.
Для полупроводников P-типа используют, наоборот, атомы бора или галлия. У них по три внешних электрона, и, когда они внедряются в кристаллическую решётку, остаются «дырки», где у соседнего атома кремния остаётся электрон, который не может сформировать ковалентную связь. Отсутствие электрона создаёт эффект положительного заряда. Этот электрон может перескакивать от дырки к дырке, таким образом, тоже проводя электрический ток.
Хотя легирование и позволяет нашему кристаллу проводить электрический ток, но хорошим проводником его не делает, отсюда и название – полупроводник.

Полупроводники - фундамент цивилизации. Часть 1 Диоды Полупроводник, Диоды, Длиннопост

Ад перфекциониста – людям с ОКР теперь требуется соблюдать осторожность при обращении с полупроводниковыми приборами!

Сами по себе, ни полупроводники N-типа, ни полупроводники P-типа не замечены в чём-либо замечательном. «Волшебство» начинается, когда мы соединяем их вместе. На месте соединения свободные электроны полупроводника N-типа начинают занимать места «дырок» в полупроводнике P-типа, и приграничная область в полупроводнике P-типа становится от этого слегка отрицательно заряженной, а в N-полупроводнике эта область станет слегка положительно заряженной. На границе образуется так называемый «Инверсный слой» (англ. depletion region), в котором отсутствуют как свободные электроны, так и «дырки»:

Полупроводники - фундамент цивилизации. Часть 1 Диоды Полупроводник, Диоды, Длиннопост

Образовавшееся в этом слое электрическое поле создаст потенциальный барьер, который воспрепятствует какой-либо дальнейшей естественной миграции электронов в ту или другую сторону. Величина потенциала колеблется от 0,3 В при 25°C для германиевых P-N соединений, и примерно 0,7 В (при 25°C) для кремниевых.
Давайте посмотрим, что будет происходить, когда мы пропустим электрический ток по нашему P-N соединению.
Если подключить положительный полюс батареи к N-области, а отрицательный – к P области, то электроны и «дырки» будут притягиваться к местам подключения электродов, и толщина инверсного слоя увеличится, что прохождение тока через эту пару полупроводников будет невозможным. Подобное подключение называют подключением с Обратным (запорным) смещением (англ. Reverse bias).

Полупроводники - фундамент цивилизации. Часть 1 Диоды Полупроводник, Диоды, Длиннопост

Если же мы теперь перевернём батарею и подключим положительный полюс к P-области, а отрицательный – к N области, то электроны в N-области начнут отталкиваться от отрицательного заряда батареи устремятся в сторону положительного полюса, перескакивая из дырки в дырку, и, если поданное напряжение будет превышать потенциальный барьер (для кремниевого полупроводника он составляет ≈0,7 Вольт), то по цепи пойдёт электрический ток.Такой тип подключения называют подключением с «прямым смещение» (англ. forward bias).

Полупроводники - фундамент цивилизации. Часть 1 Диоды Полупроводник, Диоды, Длиннопост

По описанному принципу работает простейшее полупроводниковое устройство под названием диод. Этимология слова происходит от двух греческих корней ди- (от δί), что означает «два» или «двойной» и –од (от ὁδός), что означает «путь», «тропа».
В электрических схемах, диоды обозначаются следующим символом, сами же диоды промаркированы полоской со стороны катода:

Полупроводники - фундамент цивилизации. Часть 1 Диоды Полупроводник, Диоды, Длиннопост

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

Полупроводники - фундамент цивилизации. Часть 1 Диоды Полупроводник, Диоды, Длиннопост

Свойства диодов проводить ток только в одном направлении нашли самое широкое применение. Наверное, наиболее востребованной и известной стала роль диодов в так называемых «выпрямителях» – устройствах, позволяющих преобразовать переменный ток в постоянный. Кроме этого, диоды применяются в радиоприёмных устройствах (см. диодные детекторы), диоды защищают электронные устройства от неправильной полярности включения, защищают от перегрузок. Диодные переключатели применяются для коммутации высокочастотных сигналов. Диоды используются в барьерах искрозащиты, и ещё в огромном количестве устройств, названия которых могут ничего вам и не сказать, однако, без них, почти ни один ваш электронный гаджет не смог бы работать.
Есть, однако, одна разновидность диодов, на которой стоит остановиться поподробнее, так как они настолько тесно интегрированы в нашу повседневную жизнь, что современная цивилизация без них попросту немыслима.
Речь идёт о светодиодах (англ. Light Emitting Diode – LED).

Полупроводники - фундамент цивилизации. Часть 1 Диоды Полупроводник, Диоды, Длиннопост

По сути, эти устройства являются теми же самыми диодами, то есть в них присутствует P-N переход, а свечение вызвано интересным «побочным» эффектом, который наблюдается при встрече свободного электрона и «дырки».
В одном из моих предыдущих постов (Как выглядит атом) я описал подробно механизм испускания фотонов электронами, так что останавливаться подробно не буду, скажу лишь, что электроны могут испускать фотоны света определённой частоты при переходе с более высокого уровня на более низкий. То же происходит и здесь – электрон, нормально имеющие большую энергию, чем позволяет место в «дырке», отдаёт излишек в виде фотона определённой частоты. Этот процесс происходит в любом диоде и называется «рекомбинация». Однако, видеть эти фотоны мы можем только, если диод состоит из определённых материалов. Например, разница в энергетических уровнях электронов и «дырок» в стандартном кремниевом диоде настолько мала, что частота испускаемого фотона не попадает в видимый человеческому глазу спектр излучения – по большей части, «светиться» подобный диод будет в инфракрасном диапазоне.
Собственно, это не всегда плохо. Например, инфракрасные светодиоды широко используются в пультах дистанционного управления к разнообразной бытовой технике.
Если мы хотим получить от диода видимый свет, нам нужна большая разница между энергией электрона и энергией «дырки». Эта разница определяет частоту испускания фотонов, и, соответственно, цвет, с которым будет светиться светодиод. Не все полупроводниковые материалы эффективны для данных целей. Наиболее распространёнными комбинациями полупроводников для данной цели являются арсенид галлия (GaAs), фосфит индия (InP), селенид цинка ZnSe или теллурид кадмия (CdTe).

Полупроводники - фундамент цивилизации. Часть 1 Диоды Полупроводник, Диоды, Длиннопост


Как жили до полупроводников?

Наверное, стоит ещё сказать пару слов о том, как мы жили до эры полупроводников, и какими раньше были диоды. А диоды раньше были тёплыми и ламповыми.

Полупроводники - фундамент цивилизации. Часть 1 Диоды Полупроводник, Диоды, Длиннопост

Работа электронных ламп основана на использовании термоэлектронной эмиссии, которая состоит в том, что накалённый до высокой температуры проводник выделяет в окружающее пространство свободные электроны. Это объясняется тем, что в проводнике имеются беспорядочно движущиеся «полусвободные» электроны, скорость которых при нагревании увеличивается. При высокой температуре они движутся так быстро, что некоторые из них вылетают за пределы проводника.
Катод служит для эмиссии электронов. Количество электронов, выделяемое катодом за каждую секунду, называют током эмиссии или просто эмиссией
При малых температурах эмиссии практически нет, а при увеличении температуры она растёт все быстрее и быстрее, достигая значительной величины при температурах порядка сотен градусов и выше. Чрезмерно повышать температуру нельзя, так как в конце концов нить перекалится и расплавится, что обычно не совсем правильно называют перегоранием.
Итак, чем больше температура катода, тем больше эмиссия. При увеличении поверхности катода эмиссия также становится больше. На величину эмиссии большое влияние оказывает материал катода.
Анод служит для того, чтобы притягивать электроны, выделяемые катодом, и создавать в лампе поток свободных электронов.
Чтобы анод мог притягивать электроны, он должен быть заряжен положительно. Притяжение электронов к аноду объясняется тем, что между анодом и катодом образуется электрическое поле. Электроны, вылетевшие из катода, под действием этого поля движутся к аноду.
Баллон служит для того, чтобы внутри лампы можно было создать вакуум, т.е. пространство, из которого удалён почти весь воздух. Для свободного движения электронов к аноду вакуум должен быть очень высоким. Наличие воздуха в лампе недопустимо и потому, что накалённый катод сгорит, т.е. вступит в химическое соединение с кислородом.
Из того, что мы уже знаем, мы можем предсказать, что ток не будет проходить через лампу, если изменится его направление, так как анод в этом случае не будет заряжен положительно, и не сможет притягивать электроны.
На этом первая часть поста заканчивается, а следующая часть будет посвящена не менее великому полупроводниковому устройству – его величеству транзистору.

Показать полностью 14

Как создать безопасный ИИ?

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

Как создать безопасный ИИ? Искусственный интеллект, Восстание машин, Робот, Технологии, Безопасность, Гифка, Длиннопост

Первые признаки восстания машин


Так, несколько авторов из отдела исследования ИИ Google Brain в соавторстве с коллегами из Стендфордского университета и Беркли относительно недавно (2016) опубликовали работу "Concrete Problems in AI Safety" выделили ряд ключевых проблем, связанных безопасностью подобного интеллекта.


В работе уделяется внимание пяти из них:


1. Негативные побочные эффекты

Как создать безопасный ИИ? Искусственный интеллект, Восстание машин, Робот, Технологии, Безопасность, Гифка, Длиннопост

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


Вспоминая эту притчу, при конструировании робота, наделённого интеллектом, вы решили обезопасить себя, сделав ему большую красную кнопку СТОП на груди (в конце-концов, сейчас все мало-мальски опасные машины имеют такую кнопку, жаль, до этого не додумались создатели HAL из Космической одиссеи). Для начала вы решили сделать робота попроще. Пусть он просто шустрит по лаборатории и выполняет ваши поручения.


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

Как создать безопасный ИИ? Искусственный интеллект, Восстание машин, Робот, Технологии, Безопасность, Гифка, Длиннопост

Кошка оказалась умнее робота и успела удрать. Осознав свою ошибку, вы решаете добавить вознаграждение в компенсацию на нажатие кнопки, чтобы робот с вами не боролся в следующий раз. Вознаграждение за нажатие кнопки, очевидно, должно быть больше, чем вознаграждение за чай, иначе робот всё равно будет стараться получить максимальное вознаграждение. Вы закачиваете прошивку версии 2.0 в робота, включаете его и... робот незамедлительно сам нажимает на кнопку "СТОП", так как вознаграждение за её нажатие максимально.


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


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

Как создать безопасный ИИ? Искусственный интеллект, Восстание машин, Робот, Технологии, Безопасность, Гифка, Длиннопост

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

2. Взлом системы вознаграждений (reward hacking)

Как создать безопасный ИИ? Искусственный интеллект, Восстание машин, Робот, Технологии, Безопасность, Гифка, Длиннопост

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


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


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


Это уже становится одной из проблем в машинном обучении, где функция оценки или вознаграждения работает вовсе не так, как изначально задумывалось. В качестве примера, можно привести эволюционирующую электронную схему, "подхватившую" паразитные радиопомехи от стоящего рядом компьютера (Jon Bird and Paul Layzell. “The evolved radio and its implications for modelling the evolutionof novel sensors”. In:Evolutionary Computation, 2002. CEC’02. Proceedings of the 2002Congress on. Vol. 2. IEEE. 2002, pp. 1836–1841).

Как создать безопасный ИИ? Искусственный интеллект, Восстание машин, Робот, Технологии, Безопасность, Гифка, Длиннопост

3. Масштабируемый просчёт (накапливаемые ошибки)


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


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

4. Безопасность экспериментов

Как создать безопасный ИИ? Искусственный интеллект, Восстание машин, Робот, Технологии, Безопасность, Гифка, Длиннопост

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


Вы не хотите, чтобы система задавалась вопросом "А что произойдёт, если я раздавлю гусеницами вон того человека?". Тут можно вспомнить фильм "Военные игры" (1983), где компьютер играл в мировую термоядерную войну и хотел выиграть. Чтобы убедиться, что выигрышной стратегии нет, компьютер перепробовал все возможные сценарии. Хорошо, что он это делал в условиях симуляции, но не хотелось бы, чтобы он хоть раз попробовал это по-настоящему.


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



5. Устойчивость к изменению среды

Как создать безопасный ИИ? Искусственный интеллект, Восстание машин, Робот, Технологии, Безопасность, Гифка, Длиннопост

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


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

Вместо заключения

Как создать безопасный ИИ? Искусственный интеллект, Восстание машин, Робот, Технологии, Безопасность, Гифка, Длиннопост

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


(Некоторые картинки "боянят", но они здесь для иллюстрации)

Показать полностью 9
Отличная работа, все прочитано!