Это может быть неверно в биологии, но в компьютерных науках онтогенез почти полностью повторяет филогению. Исторический обзор компьютерных архитектур с первых компьютеров - отличный способ понять тему компьютерной архитектуры с точки зрения программиста; компьютерные проекты - почти все усовершенствования более ранних проектов.
То есть я рекомендую изучать полностью работающие старые конструкции систем, основанные на теоретических книгах по «компьютерной архитектуре», которые они дают вам по информатике. Чтобы действительно понять дизайн систем, и сделать действительно большую работу при написании программного обеспечения. Интуитивное понимание архитектуры компьютерных систем требует овладения многими понятиями. Я думаю, что если вы начнете возвращаться, когда компьютерные архитектуры будут более управляемыми по размеру и объему, вы, возможно, достигнете цели в написании лучшего кода.
(Между прочим, эта серия книг «Пиши отличный код», о которой упоминал другой парень, выглядит великолепно, и я отредактировал свой вопрос, чтобы удалить любую пропасть, которую я ранее использовал для обучения из книги, потому что она выглядит великолепно! )
Некоторые вещи, которые действительно хорошо учат компьютерной архитектуре:
Мне нравится выбирать машины 1980-х годов в качестве отправных точек для объяснения и демонстрации чего-либо людям, потому что именно тогда я начал использовать компьютеры. Я использовал справочное руководство программиста Commodore 64, чтобы показать людям место для прыжков, где знание программирования и знание компьютерной архитектуры встречаются друг с другом. С такой книгой и, возможно, эмулятором Командора 64, работающим на вашем ПК, чтобы вы могли попробовать что-то новое, вы узнаете, как на самом деле создаются компьютерные системы в классическом воплощении компьютерной архитектуры 1980-х годов. На мой взгляд, один конкретный пример - лучшее место для начала, чем дюжина теоретических моделей, в которых отсутствуют реальные детали, которые заставляют вещи работать. Если вы знаете, что такое регистр, что такое ALU, что такое шина и что такое часы, и какие системы сигнализации используются в старом проекте 1980-х годов, что даст вам основы, которые вам необходимо знать, чтобы понять что-то недавнее, например, «архитектуру песчаных мостов» от Intel. Исторически оглянемся на оригиналы, например, заглянем в архитектуру "фон Неймана" в википедии.
Двигаясь вперед от моего первого пункта на несколько лет; Узнайте об оригинальной архитектуре IBM PC, языке ассемблера 8086 и шине ISA. Исходя из этого и его ограничений, понимание того, что содержит процессор «Intel COre i7», что делают шины PCI и PCI-e и зачем они вам нужны, может развиваться более естественно. В архитектуре ПК сегодня все еще есть «похмелье» от оригинального дизайна IBM PC. Способ, которым первоначальная загрузка (загрузка) программы (операционной системы) происходит на ПК 2011 года, все еще во многом обязан наследию исходного IBM PC и его ПЗУ BIOS и его настроек CMOS на оригинальном ПК.
Используйте и измените предварительно сконфигурированную сборку Linux, которая работает на некоторых встраиваемых устройствах, отличных от ПК, и вы многое узнаете об архитектуре встраиваемых компьютеров, не только о технической архитектуре, но и о том, почему некоторые функции присутствуют. Хороший пример, который доступен дешево TS-7200, который имеет хороший PC-104 (ISA Bus, как в оригинальном ПК). Компьютеры PC-104 (встроенная 16-битная шина ISA, совместимая по выводам с компьютерами эпохи IBM PC / AT 80286) - отличный способ для разработчика, не являющегося платой, построить встроенную систему, поскольку модули могут наращиваться. Хотите дополнительный IO или периферийные устройства? Просто сложите несколько модулей. TS-7200 имеет ядро не-x86 (процессор ARM9), способное работать с прямым или младшим порядком байтов. Если вы еще не столкнулись с «порядком байтов» в процессе обучения архитектуре, это хорошее место, чтобы с ним познакомиться.