Сохранен 30
https://2ch.hk/hw/res/661979.html
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Аноним 12/02/15 Чтв 04:46:08 #1 №661979 
14237055683040.jpg
Не знал где спросить, поэтому спрошу тут, если ошибся адресом, то пошлите меня на правильную доску, только не обоссывайте.

Давно мучает вопрос. Я примерно представляю, как устроены магнитофоны, автомобили, как устроена солнечная система, но я не понимаю как устроены компьютеры. Т.е. я понимаю принцип действия программирования, но как взаимодействует оно с железом. Покажите мне книгу(и), где по хардкору бы объяснялось устройство и принцип работы компьютеров. Как работают процессоры и оперативная память, например,потому что принцип работы жесткого диска понятен. Именно принцип действия, теоретическая часть, физическое обоснование. И как програмная часть взаимодействует с хардверной.

Пик самхау релейтед
Аноним 12/02/15 Чтв 10:41:25 #2 №662035 
Таненбаум — архитектура компьютера.
Аноним 12/02/15 Чтв 22:35:39 #3 №662495 
>>661979
Считай, что тебе повезло. Я - тот самый анон, который знает о компьютерах почти все.
Область эта обширная, т.к. современный компьютер - это не кусок железа из 30-х, это сложный программно-аппаратный комплекс, и чтобы понять как он функционирует, нужно получить представление о многих вещах.
По порядку:
1. о бинарном счислении. Инфы немного, т.к. понятие простое, гугли, или ищи в разделах математики. Для практики стоит хотя бы пару десятичных чисел перевести в двоичные, и обратно, вручную, а лучше - в уме, пользуясь степенной формулой.
2. о логике и логических операциях. Тоже самое - все просто, инфы мало, разберешься за полчаса.
3. о логических схемах. Эта часть входит в основы электроники. По сути главная задача - познакомится с электронными компонентами, реализующими логические операции. Это и есть те самые кирпичики, и которых строится почти любой современный компьютер.
4. о низкоуровневом программировании, ассемблере. Достаточно просто взглянуть на пару уроков, и взглянуть на таблицу операций любого кристалла - будь то avr(130+ команд), msp430(20+ команд) или x86.
5. о высокоуровневом программировании и его связи с низкоуровневым. Источники инфы - документация на любой ЯВУ(язык высокого уровня), например бейсик, паскаль или си (без плюсов). Главная задача - понять как транслируются команды ЯВУ в ассемблер, в общих чертах понять как работают конпеляторы (обычная табличная подстановка, например).
6. опционально - копнуть forth и java. Даст понятие работы ВМ и портируемости кода, углубит знание конпеляторов.
7. о функциональном устройстве ОС. Каковы функции ОС, и как они их реализуют, понятие HAL, ядра, драйверов, и прикладных программ. Оче годный источник - миникс, но не для новичка. Для новичка хватит блоксхем.
8. это уже уровень программистов - алгоритмы, язык блок-схем. Любую программу можно нарисовать на бумаге, и перевести на любой ЯП.

Если просто, своими словами: программист придумывает алгоритм (п.8), пишет его на ЯВУ(п.5,6), далее конпелятор превращает ЯВУ-код в ассемблер, который напрямую управляет логическими схемами, которые уже шатают электричество в кристаллах и транзисторы.

Главное понять, что от уровня транзисторов, и выше, все - абстрактное, т.е. существует только в наших головах. И логические элементы (логические операции), и конпеляторы, и разные части ОС, и программы, и сами ОС. Теоретически количество слоев абстракций можно увеличивать бесконечно (что сейчас и происходит - сначала были реле и их ручная коммутация, потом придумали перфокарты, потом асм, потом ЯВУ и конпеляторы, потом додумались до HAL (hal, opengl, directx, forth, java), сейчас активно усугубляют - программы работают в ВМ, которые работают в ОС, которые работают в других ВМ, которые работают в третьих ВМ, которые работают в кластере, который состоит из кучи ВМ, которые уже работают на реальном железе (которое тоже отделено от логических схем слоем микрокода и разных оптимизаторов).

Из книжек для новичка могу посоветовать разве что "Ч.Петцольд - Код. Тайный язык информатики.pdf"
Аноним 19/02/15 Чтв 19:04:13 #4 №666635 
>>661979
не стоит вскрывать эту тему.
то что ты не можешь онять принцы работы комьютеров, как и 99процентов людей, говорит о том что это не человеская технология. слышал про зону 51 и про сбитый нло? вот какраз эра современных компьютеров началась с того момента. Совпадение? Не думаю
Аноним 19/02/15 Чтв 19:47:35 #5 №666674 
>>666635
Аж 4 шестерки в номере. Вельзевул, изыди!
Аноним 19/02/15 Чтв 20:14:01 #6 №666700 
>>662495
Этот анон разумно объясняет. Можете доверять его посту.
мимо бакалавр информационных технологий
Аноним 19/02/15 Чтв 20:17:36 #7 №666705 
14243662567240.jpg
Рекомендую Виталия Леонтьева и его Новейшую энциклопедию персонального компьютера. Вторая часть представляет собой руководство для домохозяек по сперме, убунте и ведру, а вот первая -- как раз-таки годное доходчивое объяснение того, как работает и взаимодействует друг с другом железо и как программы заставляют его вытворять разные весёлые штуки. Если, конечно, эффективные менеджеры не почикали эту часть в свежих изданиях.
Аноним 19/02/15 Чтв 20:39:17 #8 №666727 
>>662495
>>666700
ОК, можете вкратце объяснить каким образом процессор производит операции. Насколько я представляю, вся кибернетика основана на полупроводниках. Микропроцессоры основаны на проводимости тоже. Каким образом это работает? Как процессоры совершают операции (выполняют программы? И как это связано с бинарным счислением?
Насколько я понимаю бинарное счисление - это просто два типа электрических импульсов?
Алсо, каким образом оперативная память и флэш драйвы сохраняют двоичную информацию?
>Главное понять, что от уровня транзисторов, и выше, все - абстрактное, т.е. существует только в наших головах.
Т.е. как я это понимаю: есть программа вычисления, закодировання на харде в бинарном виде. Ее что-то там считывает и процессор выполняет это вычисление каким-то удивительным образом (каким, как это выглядит физически? бинарный код проходит через транзисторы?). Результат он записывает в оперативную память. Это и есть основа всей работы компуктера?
Я, видимо, могу неправильно задавать вопросы, поправьте, если что не так.
Аноним 19/02/15 Чтв 22:54:56 #9 №666836 
>>666727
>можете вкратце объяснить каким образом процессор производит операции
Нет, не можем. Современные процессоры по сложности не уступают огромным заводам. А скорее всего - намного превосходят их. Даже я до конца не знаю всех тонкостей, что там у них внутри творится. Но для погроммиста это и не нужно - погроммисты ЯВУ часто даже про ОС понятия не имеют, про железо - тем более.
Погроммисты асма имеют дело с более низкоуровневыми абстракциями, т.е. знают про ОС, и поверхностно - про железо.
Подробно про железо знают разве что инженеры микроэлектроники, и то наверное там все поделено на узкие специализации - слишком огромен обьем знаний.
Так что не мечтай.

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

Реально полезно из всего этого обьема инфы только три вещи: как работает конпелятор, конвеер с обвязкой, и кэши.
Инфа о конвеере позволяет понять, что такое реальная загрузка железа, что такое внеочередное исполнение операций, что такое переименование регистров, и что такое зависимости по операндам. Конкретно все это приводит к одному выводу: проц сам распараллеливает все, что помещается в кеш, и не имеет зависимостей. Зависимые операции сами выделяются в цепочки.
Это знание позволяет выстраивать код так, чтобы оптимальнее загружать железо.
Инфа о кэшах - позволяет понять как работает память, в том числе подкачка. Это позволяет оптимальнее выстраивать код и данные, так, чтобы они заранее оказывались в кешах, и время на подгрузку почти не тратилось.
Инфа о конпеляторах позволяет даже без конпеляции оценить, в какой примерно код будет сконпелировано то или иное выражение, и соответственно писать код ЯВУ так, чтобы после конпеляции он превращался в оптимальный код ассемблера. Да, некоторые конпеляторы достаточно умны, но грамотный человек все-равно умнее. А неграмотный - только вставляет палки в колеса конпелятору.
Но все это - штако, т.к. реально используется почти никогда. Ну разве ты спецом не кодишь на асме, или если уперся в узкое место, и обойти его не выходит - тогда эта магия позволит найти дополнительные, скрытые обходные пути. В остальном же - работает правило 20/80: пиши быстро и просто, оптимизируй мало и только по крайней необходимости.

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

>Каким образом это работает?
Магия :)
Реально все это просто реализует исполнение логических операторов. Там есть еще и всякие оптимизаторы, и аппаратные ускорители для всякой хрени - но тебе это не важно. Главное - погугли что такое логические операции. А лучше просто почитай "Ч.Петцольд - Код. Тайный язык информатики.pdf"

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

>Алсо, каким образом оперативная память и флэш драйвы сохраняют двоичную информацию?
Оперативная память - просто конденсаторы, они либо заряжены, либо нет. Флешки - более сложные устройства, по сути тоже конденсаторы, но каждая ячейка хранит по 4, 8, 16 или больше состояний, т.е. хранит сразу много бит.
Конденсатор - это как коробка, в которой хранится электричество. Ее можно опустошить, можно положить туда чуть-чуть электричества, можно - много. В оперативке кладут чуть-чуть, во флешках кладут много, из-за этого они хранят много информации, но быстро деградируют - там свои тонкости, захочешь - нагуглишь.

>Т.е. как я это понимаю: есть программа вычисления, закодировання на харде в бинарном виде. Ее что-то там считывает и процессор выполняет это вычисление каким-то удивительным образом (каким, как это выглядит физически? бинарный код проходит через транзисторы?). Результат он записывает в оперативную память. Это и есть основа всей работы компуктера?
Если просто - примерно так и происходит. Программа при старте считывается с харда в оперативку, оттуда - в кеши проца, а там уже декодируется, попадает на конвеер и исполняется. Результат по обратной цепочке попадает в оперативку, а оттуда, если надо - на диск, или в сеть, или еще куда-либо. Но все завязано на оперативку, все проходит через нее. Поэтому лучше всего поднимает скорость увеличение оперативки (но до какого-то предела, далее начинают играть другие факторы - скорость диска, сети, процессора, видеокарты).
>Я, видимо, могу неправильно задавать вопросы, поправьте, если что не так.
Просто прочитай книжку "Ч.Петцольд - Код. Тайный язык информатики.pdf", 90% вопросов отпадут сами собой.
Аноним 19/02/15 Чтв 22:58:10 #10 №666840 
>>666705
>2015
>этот уёбищный дизайн
>рашка невер чейндж
Аноним 19/02/15 Чтв 23:42:17 #11 №666868 
>>666840
Может пора уже прекратить оценивать книги по дизайну обложки? Их еще открывать и читать можно. Попробуй.
Аноним 19/02/15 Чтв 23:44:06 #12 №666871 
>>666727
в кратце у проца есть несколько регистров. самый клевый из них тот в котором находится адрес следущей команды. и проц просто исполняет команду и увеличивает счетчик. бывают команды перехода. они в этот счетчик пишут что то свое. предполагается что по этому новому адресу в памяти есть что то что можно выполнить. команд много. основные - 3 + - *. далее еще несколько для организации работы проца. и еще куча расширенных и специальных. в проце есть блоки. например сложения. каждой команде сооветствует либо сам блок либо один из его режимов. либо режим самого проца. команда и данные по проводам записываются в регистры- запоминающие ячейки проца. команда из регистра команд включает блок ей соответствующий. этот блок по проводам получает ноли и единицы из регистров в которых лежат данные - делает свою работу и кладет результат опять же в регистры. и смотрит что находится в клевом регистре адреса следующей команд.
Аноним 19/02/15 Чтв 23:54:19 #13 №666879 
>>666871
алсо адрес следущей команды - номер ячейки оперативной памяти. когда ты запускаешь программу то она либо целиком либо частями копируется в оперативную память. всякие нужные штуки инициализируются и заполняются. потом операционка тацует с бубном и у себя в недрах складирует адрес в оперативке где начинается наша программа. и поом в удобный момент времени операционка просто записывает в регистр следуших команд процессора тот адрес с которого начинается программа. потом останавливает выполнение после некоторого времени, сохраняет данные в оперативке и подсовывает в счетчик что то другое что посчитает нужным. и так далее.
Аноним 20/02/15 Птн 02:16:58 #14 №666897 
http://www.youtube.com/watch?v=cNN_tTXABUA
Однажды анон кинул линк на это и я наконец понял, что конкретно не буду понимать. Сраный поток единиц и нулей, охуеть просто.
Еще, что простейший элемент-это транзистор с конденсатором и всё это в триггеры складывается и по нарастающей.
и пока ты всё это читаешь, озу постоянно перезаписывает информацию с охуевшей частотой, потому что если не будет, то проебет все полимеры.
шайтан машина, теперь ещё и в каждом кармане.
Аноним 20/02/15 Птн 13:14:13 #15 №667008 
Да ты заебал впаривать про код и прочую хуйню. Ты мне объясни, блядь, на материальном уровне, как код исполняется. Вот есть 8 бит говноконтроллер, я ему в память команд загоняю
[code]mov @R0, #0[/code]

Что происходит при этом на физическом уровне? Как он "понимает" эту команду?
С понятиями конденсаторов, транзисторов, трниггеров и прочей хуиты знаком. А так же с бинарностью, принципом работы п/п и прочей железной хуитой. Но программную часть с железом состыковать у себя в голове никак не могу, ну не понимаю я как буковки(да, которые становятся 0 и 1 в разных комбинациях) могут пониматься кремнием с железячками.
не ОП
Аноним 20/02/15 Птн 13:48:13 #16 №667023 
>>667008
Хоть и не могу согласиться с эмоциональностью изложения данного анона, но именно это я и хочу понять. Где тот ключик, который соединяет эту абстракцию, в виде кода, с грубой материей.
ОП
Аноним 20/02/15 Птн 13:58:35 #17 №667031 
Блять тупые штоле?
Даже я понял.
ДА/НЕТ в вариациях.
Мимо тупорылая деревенщина
Аноним 20/02/15 Птн 14:36:38 #18 №667053 
>>667008>>667023
ну есть такая вещь в схемотехнике - регистр. Подаешь на вход 1 и на выходе, благодаря обратной связи защелкнется (останется пока подается питание), скажем, 1. Это D триггер. Есть еще дохуя разных. Таким образом процессор может записать число 1001 - используя четыре регистра. В самом процике их называют, например, 4 разрядный регистр. Или 32 разрядный регистр, или просто регистр. Он состоит из них чуть менее, чем на половину.
У процессора пиздос как много разных схем (физических, на транзисторах), они разделены на блоки разные. Один из блоков содержит кучу схем для расшифровки команд, которые он считал из памяти. Это происходит в несколько тактов. Он по первым битам уже поймет, что за команда и во втором такте уже может начать действовать, а могут понадобиться третий такт и т.д. зависит от команды. Сопоставление того, что ему делать с командами схемотехнически называется микрокодом.

Команды процессора записываются программистами на компе мнемонически, например, YOBA 23h. Компилятор потом это скомпилирует в 31 23, в оперативную память запишется в виде 00110001 00100011 физически. Вообще, когда ты на клавиатуре нажимаешь кнопку 2 это тоже для компьютера, как бы, лишь, 00110010, это тебе на монитор через видеокарту высрут уже пережеванные 32, или 2 в соответсвии с таблицей там очередной операционки. Нарвавшись из памяти на эту последовательность по указанию регистра счетчика команда, благодаря тому самому блоку расшифровки команды, проц поймет, что тут написана команда YOBA и он знает (за счет микрокода) что в следующей ячейке для YOBA записан адрес, он его считает в следующем такте и передаст управлением в следующий блок в нужную его часть (например суммирование). Это все схемотехнически сделано.

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

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

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

мимопроходил, не знаю ответил на че-нить или нет, т.к. тред прочел погоризонтали и ответ писал так же.
Аноним 20/02/15 Птн 15:06:20 #19 №667073 
14244339800670.jpg
>>667008
Оче просто. Твоя команда путем табличной подстановки конпелируется в бинарный байт, т.е. во сколько-то нулей и единичек. Эти нули и единички поступают в блок команд и дешифруются. На десктопных процах - разбиваются на микрооперации, которые затем исполняются. На 8-ми битках - исполняются непосредственно.
Исполнение происходит так: каждый бит в команде сравнивается со списком команд, и выбирается соответствующее состояние кристалла. Сравнение происходит в дешифраторе - специальном устройстве из кучи логических элементов, работающих примерно по такому принципу: если 1-1 и 2-й биты команды равны единице, значит это операция сложения - выдаем единицу на тот выход дешифратора, который переключает АЛУ в режим сложения, если 7-й и 8-й биты команды равны единице - значит подключаем один из входов АЛУ и регистру R0, а второй - к нулю, соответственно выдаем единицы на те входы дешифратора, которые подключают АЛУ к соответствующим регистрам.
Т.е. бинарная маска команды через дешифратор фактически перекоммутирует схемы процессора.

Простейший дешифратор можешь посмотреть на пике. Это дешифратор на один выход. В процессоре выходов для переключения схем много, поэтому на каждый выход приходится по одному или несколько дешифраторов. Иногда один дешифратор переключает сразу несколько выходов.
Короче говоря дешифратор - это железная таблица команд процессора, а по сути - просто набор цепочек логических операторов, каждая из которых выдает единицу только при строго определенной последовательности бит в команде.
Аноним 20/02/15 Птн 20:41:38 #20 №667279 
>>667073
О боги, наконец-то! Как я мог это раньше пропустить? Теперь осталось разобраться как плиски программируются(те, что один раз и навсегда) и будет вообще круто…
Аноним 20/02/15 Птн 20:59:52 #21 №667297 
>>667279
это чо, сарказм какой-то?
Аноним 20/02/15 Птн 22:52:37 #22 №667398 
Чтобы понять как работает компьютер, можно купить за 2 кило сахара 486ой комп, поставить DOS, assembler, и написать на ассемблере тетрис или еще более простую игру. Хотя можно и на голом Си.

Как вариант - разобраться, как к микроконтроллеру AVR подключить левую периферию под которую нет готовых либ. И никаких ардуин.
Аноним 20/02/15 Птн 23:22:01 #23 №667415 
>>667279
Также и программируются: есть набор шин, есть набор логических блоков, есть набор специальных блоков (тактовые генераторы, ацп и прочее), каждый блок через специальные коммутаторы подключается к той или иной шине.
Состоянием коммутаторов управляет прошивка - такая же последовательность бит, как и команда в процессоре. Т.е. по сути прошивка - просто описание состояний всех коммутаторов.
Прошивка генерируется в специальных CAD-программах, в которых ты набрасываешь схему будущего девайса. В этих программах даже можно посмотреть топологию плиски в выбранной конфигурации, т.к. какой блок куда будет подключен в реале - можно наглядно посмотреть какая площадь кристалла использована, или там посчитать наводки в той или иной конфигурации линий, например нет ли петель или еще какой хрени.
Есть и иной подход - просто описывают конфигурацию схемы на ЯВУ, верилог например, а конпелятор сам превращает описание схемы в конкретную прошивку конкретного кристалла. В любом случае прошивку всегда можно загрузить в симулятор (ту самую CAD-программу) и посмотреть на схему плиски, какой она будет в реале.

Одноразовые плиски от многоразовых отличаются памятью прошивки - где-то флеш, где-то УФ-стираемая, где-то пережигаемые током перемычки.
Аноним 20/02/15 Птн 23:47:45 #24 №667437 
14244652658870.png
Какой еще конпелятор, блять, ты заебал уже, мультИметр ебаный
Аноним 21/02/15 Суб 00:12:57 #25 №667462 
>>667437
Ну, конпЕлятор. Он конпЕлирует.
Аноним 21/02/15 Суб 00:20:29 #26 №667469 
Кстати, разбирал тут недавно код джава-машины. Так там - наш родной форт! Те же dup'ы.
Аноним 21/02/15 Суб 02:01:00 #27 №667496 
> Именно принцип действия, теоретическая часть, физическое обоснование.

Это никого не ебет. Программа это абстракция, которую можно крутить на любом физическом принципе.

Если взять процессор из обычного ПЕКА, то это просто электрическая цепь из дохуя транзисторов. Как работает транзистор, можно почитать в педивикии. Это и будет физическим обоснованием.
Аноним 21/02/15 Суб 15:49:35 #28 №667794 
>>667415
Ну это ясно-понятно, я как раз про пережигаемые перемычки говорил.
Аноним 21/02/15 Суб 16:34:16 #29 №667823 
14245256565630.jpg
>>667794
http://www.life-prog.ru/1_20350_tipi-klasterov.html
Аноним 22/02/15 Вск 14:36:55 #30 №668385 
Можешь кроме уже не раз рекомендованного Петцольда почитать еще и очевидного Танненбаума, "Архитектура компьютера"
comments powered by Disqus

Отзывы и предложения