Помогите достать документацию с описанием работы ПК на низком уровне. Т.е. "Послать управляющее слово в такой-то порт какого-то устройства" - слишком высоко и абстрактно. Можно с эл. схемами. Может, кто-нибудь знает интересные линки. ЗЫ Гуглить не могу, нервов не хватает. Страницы грузятся в лучшем случае полминуты.
В Books я смотрел, но ничего интересного не нашел. Есть один сайт www.elib.garnet.ru, где это есть, но с некоторого времени оттуда ничего не качается. Хотел уточнить, что я имел ввиду описание того, что делает процессор и как он взаимодействует с периферией вплоть до каждого такта своей работы.
если ниже - то слово "процессор" начинает терять смысл. у меня есть кое-что, но старое и бумажное. какой у тебя конкретно вопрос? тебе просто интересно или нужно скажем реферат писать? "управляющее слово какого-то устройства": ничего здесь высокого, просто внешние (для процессора) устройства имеют программируемую логику работы (большинство - для гибкости). то есть, чтобы его "оживить" после сброса, в нужный его регистр записывают нужный байт, например. это делается программой инициализации, и программист, который пишет эту программу, должен знать схему включения этого устройства и формат упр. слов. самый простой пример - КМОП память (часы в компе) ее ячейки доступны все через один порт. но чтобы выбрать нужную нужно ее адрес записать в другой порт - тоже своего рода упр. слово. процессор - это цифровой циклический автомат. он изменяет свое состояние под влиянием тактовых импульсов. в определенные фазы он выполняет считывание из памяти, запись в память, внутреннюю обработку команд, и есть еще циклы ожидания - холостые. что будет делать процессор в следующем такте определяется его предыдущим состоянием. что он собирается сейчас делать - сигнализируется специальными сигналами на выходе - чтение, запись, обращение к памяти или IO, а также синхронизация внешних устройств. так как устройство управления компом должно знать, что в данный момент подключить к шине данных: память? какую? и т.п., а с другой стороны, чтобы, например, другое устройство не считывало/писало туда же одновременно (чтобы не было конфликта). устройство управления в самом простом случае может быть простым дешифратором. первая фаза в цикле процессора всегда выборка команды, так как процессор должен "знать, что делать дальше". эл. схем процессоров, я, честно говоря, не видел, но не думаю, чтобы они что-либо прояснили. схематические схемы довольно тупы - нарисуй себе квадраты, напиши там "ЦП", "память", "порт клавы" и т.д. и свяжи их тремя шинами - шина данных, адреса и управления, и получишь обобщенную схему любого компьютера. В общем, тема это железячная, но если ты что-то понял из того что я написал, и хочешь уточнения - я могу кое-чего порассказывать, правда, знания у меня немного устаревшие
Как программировать железо на самом низком уровне много где описано, интересует именно работа железа. Вопрос даже не о программировании. Именно то, о чем ты говоришь во второй половине своего поста и интересует и не для реферата. Нужно систематическое описание, конкретных вопросов нет.
Тут наверное у многих дома валяются старые советские книжки по микропроцессорам, архитектуре ЭВМ. Их можно взять в любой библиотеке, можно с них и начинать. Электрические цепи, вентили, триггеры, изучить простейшие микросхемы транзисторной логики, потом перейти, например к изучению схемы с KP580BM80A, шина, порты, кварцевый генератор... Можно стянуть книгу "CODE" Ч.Петцольда, хоть посвящена она больше цифрам, но очень доходчиво поясняется, что они представляют для компьютера, вот цитата "Если соединить транзисторы, как показано на схеме справа, получится вентиль ИЛИ. В вентиле И эмиттер верхнего транзистора соединен с коллектором нижнего", дальше затрагивает работу, различие стареньких Intel 8080 и MC6800. Потом можно тянуть спецификации на конкретный процессор (есть на сайте производителей) Для железячников www.ixbt.com
хорошо! давай попробуем в диалоговом режиме вот примитивная схема примитивного гипотетического пк. после сброса процессор выдает на шину адреса 00 и читает байт из памяти (это значит для этой схемы, что WR и IO - в нулевом состоянии) что-то проясняется? (для этого нужно знать, как работает регистр, озу и пзу). на всякий случай: OE - output enable: разрешение выдачи. CS - chip select: выбор кристалла (микросхемы) IO - активен, когда нужно подключить устр. ввода/вывода (иначе - память) WR - write: запись (иначе - чтение) дешифратор активирует только один выход, соотв. двоичной комбинации на входе. кружок на входе означает инверсию - сигнал воспринимается "наоборот" вот, пока... _2014884607__pc1.gif
Maque Кажется я понял. Мне пришлось в своё время форсированно изучать это. Это азы электротехники, далее азы электроники+схемотехники+булевой алгебры. Лучше с практикой. При анализе внутренней работы не дай бог начинать сразу с новых процов. Хотя бы PIC или самое начало - простые устройства с EEPROM памятью или сама она. Лучшая книга для начинающих - CODE. Читать не пассивно - создавать список схем описанных. Перед дальнейшим чтением каждый день пытаться зарисовать по памяти схемы глядя на название и проверять себя. Лучше конечно имитировать их если под рукой есть электронщик-электрик, который научит проктическим азам - паяльник, мультиметр, осцилограф, рабочие платки и кроватки, травить дорожки т.п.
целиком и полностью согласен. лучший вариант на мой взгляд - это взять старый пк с кр580вм80 или z80 (со схемой, желательно) и прицепить к нему пошаговик (примочка с триггером, останавливающая проц каждый такт или каждый цикл) и тестер - тогда многое тайное становится явным возможно, PIC более актуально - просто еще не пробовал (лежит в списке мечт)
у нас в универе на на лабах была такая штуковина, там еще куча светодиодов к шине адреса и шине данных присобачена. Вводишь программку из 10-20 ассемблерных команд и по тактам ее гоняешь. Для понимания что и как внутри компа - вещь просто суперская.
infern0 Завидую... К несчастью, я не застал то время, когда можно было смотреть за ходом выполнения программы по лампочкам, когда можно было самому встраивать свои собственные команды в проц., узнать где, что, с чем синхронизуется и т.п. Согласен, лучшего метода изучения нет. А именно так и хотелось поизучать. У нас на матфаке, думаю, железок типа z80 нет (хотя когда-то стояли большие машины). Буду искать. Может, у физиков есть. Дядя-электронщик дал кучу старых книг по МП. Кое-что нашел в AoA, у Гука тоже что-то описано. Хорошая книга вышла у BHV, Бойко и др. "Схемотехника эл. схем: микропроцессоры и микроконтроллеры". Спасибо за CODE. shoo Конкретных вопросов пока нет, т.к. я в этом ещё не очень разбираюсь. Забивать же форум тем, что можно найти в литературе, не хочу.
на самом деле это интересно очень кратковременно - работать с компом гораздо интересней, просто приходилось этим заниматься, чтобы запустить самодельные компы, а также всегда хотелось их модернизировать - достать неиспользуемую память и т.п. - тогда это была жизненная необходимость, сейчас - уже нет. для подопытной машины можно взять не только комп, но и АОН, например, а лучше собрать ее самому. это делается очень просто, если найти пустую плату для АОН или компа (только не бери с микроконтроллерами - у них все "внутри" - лучше с процессором). лучше, конечно, Z80 - у него питание только 5 вольт. устанавливаешь там только те микросхемы, которые нужны, лишние дорожки режешь, нужные - проводишь кроссировками (можно взять из витой пары или куска телефонного кабеля). если захочешь вводить команды перключателями, а не из пзу - лучше всего подойдет блочный 8-разрядный переключатель с какой-нибудь старой платы от принтера или подобной или наши ПК-Н, но только через регистр, открывающийся при чтении, чтобы не спалить другие микросхемы. вместо линейки из светодиодов подойдет щуп с одним, но желательно тоже через буферную микросхему, т.к. он - тоже нагрузка. в процессорах Z80 и 8080 регистры статические, поэтому их можно тактировать даже кнопкой, только защититься от дребезга. ну, и напоследок, если ты все-таки найдешь готовый комп, то по таким как Радио-86РК и Специалист я смогу ответить тебе на любой вопрос (Спектрумом не баловался, но он и немного сложнее из-за того, что он цветной) РК вообще самый простой, тк практически полностью на БИС.
Maque Возьми ассемблер например под DOS (MASM,TASM), отладчик,например, Turbo debbuger, простенькую программу, например, чтени-запись в порт. Загрузи программу в отладчик. Выполняй её пошагово и наблюдай за состоянием регистров. Регистры - это статическая память процессора не требующая регенерации. Регистры состоят из триггеров, каждый из которых имеет два устойчивых состояния 1 или 0. Выполняя программу процессор загружает очередную команду во внутренний регистр, после чего декодирует и выполняет элементарные операции по управлению железа. Каждое внешнее устройство подключено к одной системной шине через буфферные схемы и имеет свой адрес, который при обращении к нему (in адрес порта), выставляется на шину адреса. После чего дешифратор подключает устройство (выставляет на конкретном выходе сигнал 0 или 1 в зависимости от логики) к системной шине (говорят, что устройство осуществило захват шины). Эта 1 или 0 сигнализируют буферной схеме, которая в свою очередь, меняет сопротивление выходов с бесконечности на нулевое, после чего биты поступают на системную шину (шину данных). Далее процессор (очередной такт или сразу же), записывает их в регистр ax. Этому процессу может сопутствовать куча дополнительных управляющих сигналов. Весь процесс поделен на такты в соответствии с частотой тактового генератора.
Maque Возьми ассемблер например под DOS (MASM,TASM), отладчик,например, Turbo debbuger, простенькую программу, например, чтени-запись в порт. Загрузи программу в отладчик. Выполняй её пошагово и наблюдай за состоянием регистров. Регистры - это статическая память процессора не требующая регенерации. Регистры состоят из триггеров, каждый из которых имеет два устойчивых состояния 1 или 0. Выполняя программу процессор загружает очередную команду во внутренний регистр, после чего декодирует и выполняет элементарные операции по управлению железа. Каждое внешнее устройство подключено к одной системной шине через буфферные схемы и имеет свой адрес, который при обращении к нему (in адрес порта), выставляется на шину адреса. После чего дешифратор подключает устройство (выставляет на конкретном выходе сигнал 0 или 1 в зависимости от логики) к системной шине (говорят, что устройство осуществило захват шины). Эта 1 или 0 сигнализируют буферной схеме, которая в свою очередь, меняет сопротивление выходов с бесконечности на нулевое, после чего биты поступают на системную шину (шину данных). Далее процессор (очередной такт или сразу же), записывает их в регистр ax. Этому процессу может сопутствовать куча дополнительных управляющих сигналов. Весь процесс поделен на такты в соответствии с частотой тактового генератора.
shoo Я сам не электронщик(уже), учусь на приладной математике классического университета, пишу сейчас на ассемблере, и не собираюсь посвящать жизнь работе с железом (т.е. с паяльником в руках). Я хочу просто погимать как это работает. Да, это интерес, который быстро пройдет, когда я это узнаю. Но сейчас-то я этого не знаю! Сейчас время поджимает (сессия). После неё займусь сборкой. Если будут вопросы, задам.
lis Под Windows и как работает железо?! Этому процессу может сопутствовать куча дополнительных управляющих сигналов Вот эти-то сигналы и нужны!