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

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



P.S. В начале видео ошибочно процессором называют северный мост.

Комментарии (25)


  1. dolphin4ik
    17.07.2015 13:00
    +1

    Ясно XOR не ясно


    1. qw1
      17.07.2015 13:14
      +4

      = trueЪ


    1. freetonik Автор
      17.07.2015 13:19

      Не ясно, что именно не ясно.
      Конкретно как работает схема XOR? Или зачем она нужна?


      1. dolphin4ik
        17.07.2015 13:21

        Да ясно в какой-то степени, а в какой-то нет. Вот и написал


  1. kirill89
    17.07.2015 13:22
    +6

    Не хватает объяснения как работает «НЕ» на транзисторах. Показал жене, она спросила — пришлось объяснять :)


  1. Sirion
    17.07.2015 13:34
    +1

    Ещё компьютер может складывать числа в стек.


  1. nckma
    17.07.2015 13:56
    -2

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


    1. Klaster
      17.07.2015 20:15

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


      1. icoz
        18.07.2015 13:19
        +2

        Надо было вместо лампочки использовать светодиод?


  1. AxisPod
    17.07.2015 14:39

    Ну ведь ALU блоки строятся на однотипных вентилях, а не на всей куче OR, AND и т.д., а типа на NAND и всё выводят через них в конечном итоге. А тут как-то сильно упростили.


    1. lorc
      17.07.2015 16:47
      +2

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


      1. icoz
        18.07.2015 13:21

        Правильно. Это тема для следующего уровня погружения.


  1. iDennis
    17.07.2015 15:09

    Можно спать спокойно. Спасибо


  1. Stalker_RED
    17.07.2015 16:59

    Мне показалось, или местами видеоряд рассинхронизирован с голосом?


    1. freetonik Автор
      17.07.2015 17:12

      Есть небольшие расхождения, да.


    1. monah_tuk
      17.07.2015 17:16

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


  1. Mrrl
    17.07.2015 17:54
    +1

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


    1. lorc
      17.07.2015 18:41

      Да, этот сумматор с последовательным переносом. У него линейная сложность относительно количества бит. Есть ещё сумматор с ускоренным переносом, которому надо log2(n) тактов на суммирование.

      Ещё есть хитрый сумматор с сохранением переноса, который может складывать числа за константное время. Но проблема в том, что для вычисления результата нужно всё-таки произвести перенос, что займет тех же log2(2) тактов. Зато он может накапливать сумму от нескольких сложений, а потом единократно произвести вычисление результата. Т.е. по факту его стоит применят только в тех местах, где надо складывать больше двух чисел.


      1. UA3MQJ
        17.07.2015 19:54

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


        1. lorc
          17.07.2015 20:38
          +1

          Да, действительно. Правильно было бы использовать в качестве единицы времени не такты, a gate delays.


        1. valeriyk
          17.07.2015 22:43
          +1

          если уж быть совсем точным, то не асинхронная, а комбинационная


    1. UA3MQJ
      17.07.2015 19:42

      Перенос происходит не за такт, а за определенное время. И все они работают параллельно. Но схеме нужно какое-то время, чтобы она установилась в устойчивое состоятие. Время установки укладывается в период до следующего такта (когда делаешь такие схемы на HDL языке, например, для ПЛИС, то можно рассчитать максимальную частоту работы того же сумматора и понять, успеет ли он за такт).
      Если ничего не путаю, в Z80 складывается за 2 такта, двумя кусками по 4 бита (1).


  1. MrGobus
    17.07.2015 19:52
    +1

    2:50

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

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

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


    1. JC_Piligrim
      18.07.2015 00:08

      Зачем вы разговариваете с копипастой?

      Это же перевод. Ребятам-переводчикам — большое спасибо, что потрудились. Многое понятнее стало. Что касается объяснения двоичной логики — тут да, трэш. Но, может, любознательным гуманитариям так действительно нагляднее?


      1. MrGobus
        18.07.2015 06:11
        -2

        Я вне себя от благородного гнева, вот и с копипастой заговорил =) А переводчикам надо дать ремня, чтобы думали что на хабру выкладывать, а то придется их хвалить за то, что они напереводят то что на заборах пишут.

        А гуманитария надо както так:

        Энергий призрачный полет
        Чей путь к эмиттеру направлен
        Коллектором приостановлен может
        Коль слаб его сигнал