Цифровая схема понимание - PullRequest
1 голос
/ 12 января 2010

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

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

Существуют ли какие-либо книги или сайты, рассказывающие о том, как устроены процессоры, и которые дают целостный обзор, и это как-то связано с полезной информацией о цифровой логике?

Имею ли я смысл?

Ответы [ 5 ]

1 голос
/ 12 января 2010

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

Во времена Apple] [и Commodore 64 вы могли поместить значение непосредственно в ячейку памяти, и это напрямую изменило бы пиксель на экране - эти дни давно прошли, они отвлечены от вас ( программист) несколькими уровнями кода, такими как драйверы и операционная система.

Вы можете узнать о такого рода вещах, или ассемблере (которым я большой поклонник), или вентилях AND / NAND на аппаратном уровне, но знание такого рода вещей не поможет вам написать код веб-приложение в ASP.NET MVC или напишите быстрый и грязный скрипт на Python или Powershell.

Существует множество ресурсов, разбросанных по сети, которые дадут вам представление о том, как работает процессор и остальное оборудование, но если вы хотите выйти из строя и пачкаться, я, честно говоря, думаю, что вы должны купить один из этих старых машины с eBay или где-то еще, и изучите его специфический вид ассемблера (я понимаю, что есть также много программируемых контроллеров PIC, которые также могут быть полезны для изучения). Подбор более старой машины устранит программные абстракции и облегчит изучение. Вы учитесь намного лучше, когда получаете мгновенное удовлетворение, например, заставляете спрайты перемещаться по экрану или генерируете звуки, непосредственно переключая динамик (или используя контроллер PIC для управления маленьким роботом). На этих старых машинах схемы для Apple] [материнской платы помещались примерно на лист бумаги формата А2, который был сложен на оборотной стороне одного из руководств Apple, - мне не хотелось бы представлять, как они выглядят в наши дни.

1 голос
/ 12 января 2010

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

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

1 голос
/ 12 января 2010

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

Некоторые из «слоев», которые могут вас заинтересовать:

1 голос
/ 12 января 2010

Да, вы должны прочитать некоторые темы из

Джон Л. Хеннесси и Дэвид А. Паттерсон, «Компьютерная архитектура: количественный подход»

Имеет историю и теорию микропроцессоров (начиная с RISC archs - MIPS), конвейерную обработку, память, хранилище и т. Д.

Дэвид Паттерсон - профессор компьютерных наук на факультете EECS - У. Беркли. http://www.eecs.berkeley.edu/~pattrsn/

Надеюсь, это поможет, вот ссылка

0 голосов
/ 07 февраля 2014

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

Самая низкая Физика твердотельных устройств (Как физически работают транзисторы) Теория цепей (Как транзисторы объединяются для создания логических вентилей) Цифровая логика (как логические элементы объединяются для создания цифровых функций или цифровых структур, то есть мультиплексоров, полных сумматоров и т. Д.) Организация аппаратного обеспечения (как проложен путь данных в ЦП, компонентах машины фон Неймана -> память, процессор, арифметическая логическая единица, выборка / декодирование / выполнение) Микроинструкции (программирование на битовом уровне) Сборка (Программирование со словами, но с прямым указанием регистров и на программирование даже простых вещей) Интерпретированные / скомпилированные языки (языки программирования, которые компилируются или интерпретируются для сборки; операционная система может быть в одном из них) Операционная система (планирование процессов, аппаратные интерфейсы, абстрактные уровни) Языки более высокого уровня (эти виды появляются дважды; это зависит от языка. Java выполняется на очень высоком уровне, но C идет прямо к сборке, а компилятор C, вероятно, написан на C) Пользовательские интерфейсы / приложения / графический интерфейс (последний шаг, чтобы он выглядел красиво)

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

affablyevil.wordpress.com

Я преподаю урок и добавляю онлайн-уроки по мере поступления.

...