|
Как железо "понимает" программу?, очень детский вопрос |
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 32)
|
Sep 6 2009, 15:29
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(toweroff @ Sep 6 2009, 18:17)  копните сначала в сторону "цифровой автомат", птицу (ПТЦА - прикладная теория цифровых автоматов). Также схемотехника - стандартная логика, регистры, мультиплексоры, счетчики, АЛУ (арифметико-логическре устройство) и т.д.
Тогда уже будет более-менее понятно, откуда берутся машинные циклы и сама методика выборки, дешифрации и обработки команды... А существует ли простой и ясный ответ на мой вроде бы простой вопрос? Имеется ввиду, ответ без привлечения всей теории цифровых систем. Цитата(DpInRock @ Sep 6 2009, 18:19)  коды придумывает изготовитель микропроцессоров. От фонаря. Хотя вид кода и выглядит произвольным для человека но ведь процессор знает какой код что означает. Вот откуда он это знает?
Сообщение отредактировал Vagant - Sep 6 2009, 15:21
|
|
|
|
|
Sep 6 2009, 15:49
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(DpInRock @ Sep 6 2009, 18:44)  Вы чего это? Процессор - просто проигрыватель кодов. Откуда DVD player знает как надо киану ривза показывать? Имелись ввиду коды команд процессора - их то он знает. А данные, конечно, разные могут быть.
Сообщение отредактировал Vagant - Sep 6 2009, 15:52
|
|
|
|
|
Sep 6 2009, 15:56
|

Профессионал
    
Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486

|
Цитата(Vagant @ Sep 6 2009, 21:34)  add R2 R1
преобразуется в последовательность кодов которые микропроцессор исполняет. Но мне тогда непонятно откуда берутся эти коды и как микропроцессор их понимает? Нет процесср не поймет "add R2 R1" , он понимает только код (8 или16 разрядов в засимости от проц.) Существуют программы именуемые ассемблерами или компиляторами, которые из "add R2 R1" делают код понятный процессору , чтобы выполнить именно эту операцию. Для лучшего понимания почитайте например Хоровиц "энд" Хилл или Титце "энд"Шенк, они гуляют в нете в эл. виде
--------------------
И на камнях растут деревья!
|
|
|
|
|
Sep 6 2009, 16:09
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(domowoj @ Sep 6 2009, 18:56)  Нет процесср не поймет "add R2 R1" , он понимает только код (8 или16 разрядов в засимости от проц.) Так вот я и стараюсь разобраться как процессор понимает коды своих команд. (После компиляции файла на языке Си или Ассемблер создаётся файл с машинными кодами, это понятно.) А вот почему, например, одно 8-ми (или 16-ричное) число является кодом процессора а другое нет? P.S. Спасибо, Хоровиц у меня есть - буду читать.
Сообщение отредактировал Vagant - Sep 6 2009, 16:18
|
|
|
|
|
Sep 6 2009, 16:23
|

Гуру
     
Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515

|
Производитель процессоров сказал - код такой-то - такая команда, сякой-то - сякая. А код эдакий - вобще не команда, а отстой. Запрещаю!!! А производители компиляторов уже подстраиваются под конкретного производителя процессоров.
Ну, и программу процессор никак не понимает. Он видит из нее исключительно кусочки по одной команде. И ему глубоко наплевать на остальное. И если вместо настоящиъх кодов ему подсунуть фигню, он все равно будет чего-то делать. В смысле, фигню. Процессор никогда не стоит без дела. Всегда извлекает команды и выполняет. (Есть особые случаи, когда он ничего не делает, но это - особые случаи).
И когда память команд заканчивается, он продолжает засасывать команды из воздуха.
Сообщение отредактировал DpInRock - Sep 6 2009, 16:35
--------------------
On the road again (Canned Heat)
|
|
|
|
|
Sep 6 2009, 16:34
|
Гуру
     
Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802

|
Цитата(Vagant @ Sep 6 2009, 19:09)  А вот почему, например, одно 8-ми (или 16-ричное) число является кодом процессора а другое нет?
P.S. Спасибо, Хоровиц у меня есть - буду читать. Поищите древнюю книгу Б.Соучека. Микропроцессор по молекулам разжеван. Основу процессора составляет жесткая комбинационная схема с регистром команд на входе. Команда тактовым импульсом защелкивается в регистре и схема выдает все необходимые сигналы на коммутаторы, подключая к арифметическому устройству нужные регистры. В следующем такте результат с выхода АЛУ защелкивается в выходном регистре (аккумуляторе), а во входном - следующая команда. Поле команды разбивается изготовителем на определенные зоны для описания адресов операндов и, собственно, самой процедуры, которую нужно выполнить. В принципе, формат команды может быть задан произвольным, но под него нужна более сложная в проектировании комбинационная схема. Как отличаются числа от команд? Обычно, первое слово - команда. В нем, при необходимости и указывают будут ли последующие слова числами или командами и сколько их будет, если команда сложная, из нескольких слов. Все это "расшивается" (дешифруется) все в той же комбинационной схеме при расшифровке поля команды. Структура команд, полей адресов и данных у разных процессоров крайне разнообразна. Тут можно только самые общие принципы очертить.
|
|
|
|
|
Sep 6 2009, 16:34
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(DpInRock @ Sep 6 2009, 19:23)  Производитель процессоров сказал - код такой-то - такая команда, сякой-то - сякая. А код эдакий - вобще не команда, а отстой. Запрещаю!!! А производители компиляторов уже подстраиваются под конкретного производителя процессоров. Понятно. А выполнение кода команды происходит в процессоре на логическом и/или физическом уровне?
|
|
|
|
|
Sep 6 2009, 17:16
|
Местный
  
Группа: Свой
Сообщений: 342
Регистрация: 21-06-04
Пользователь №: 85

|
Цитата(Vagant @ Sep 6 2009, 20:34)  Понятно. А выполнение кода команды происходит в процессоре на логическом и/или физическом уровне? На физическом уровне все устройства в процессоре работают с двумя уровнями напряжения 0 и 3V. Если процессору подается на 8 разрядную шину 8 разных уровней напряжения,он смотрит какие из них 0V, какие 3V. И в ответ выполняет работу в соответствии с полученной информацией. И точно также выставляет на своих выводах уровни 0V и 3V в зависимости от того, какой результат его вычислений. 0V считается логическим нулем, 3V считается логической единицей.Но процессор этого не знает. Нули и единицы это для людей. Процессор работает только с напряжениями.
|
|
|
|
|
Sep 6 2009, 18:01
|
Cундук
    
Группа: Участник
Сообщений: 1 478
Регистрация: 13-11-06
Из: Ростов-на-Дону
Пользователь №: 22 269

|
Цитата(Vagant @ Sep 6 2009, 20:34)  Понятно. А выполнение кода команды происходит в процессоре на логическом и/или физическом уровне? Простите, а Вы цифровую схемотехнику где-нибудь проходили? Чтобы разобраться с вопросом, надо знать, что такое сумматор, арифметико-логическое устройство, устройство управления, микропрограмма. Дело в том, что любой алгоритм, изложенный формально, неважно на чем, можно представить двояко: 1. В виде параллельно-последовательной схемы. 2. В виде последовательности команд (операторов). Что в настоящее время и происходит. Люди, умеющие писать программы на С, выбирают микроконтроллеры, а те, кто изучил тот же С, но несколько модифицированный, занимаются FPGA, CPLD и прочей твердотельной гадостью.
|
|
|
|
|
Sep 6 2009, 18:44
|
Частый гость
 
Группа: Участник
Сообщений: 80
Регистрация: 3-07-09
Пользователь №: 50 897

|
Цитата(DpInRock @ Sep 6 2009, 18:19)  коды придумывает изготовитель микропроцессоров. От фонаря. Я бы не сказал что от фонаря. Когда я писал свой синтезируемый процессор, я выбирал далеко не от фонаря.
|
|
|
|
|
Sep 6 2009, 18:49
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Microwatt @ Sep 6 2009, 19:34)  Поищите древнюю книгу Б.Соучека. Микропроцессор по молекулам разжеван. Основу процессора составляет жесткая комбинационная схема с регистром команд на входе. А вот ни фига и Ваш Соучек врет. Меня учили так, что альтернативой жесткой комбинационной схеме является микропрограммный автомат. Ну "микро" должно же что-то значить?!
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Sep 6 2009, 19:03
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760

|
Цитата(toweroff @ Sep 6 2009, 19:17)  копните сначала в сторону "цифровой автомат", птицу (ПТЦА - прикладная теория цифровых автоматов). Также схемотехника - стандартная логика, регистры, мультиплексоры, счетчики, АЛУ (арифметико-логическре устройство) и т.д. Тогда уже будет более-менее понятно, откуда берутся машинные циклы и сама методика выборки, дешифрации и обработки команды... Как-то раз болтал с одним человеком. Он тогда учился в строительной академии. Как-то неожиданно разговор перешел в область электроники. Тут он и говорит:"Я знаю полностью, как устроен микропроцессор" (речь завели об обычной ПЭВМ, соответственно это он о пентиуме вел речь). Я решил пошутить, и сказал:"Сможешь мне нарисовать его схему на транзисторах?". Он посмотрел на меня удивленно и ответил: "Там нет транзисторов...". Может человеку лучше начать с этого? Ну или начать с книги по цифровой электронике, где в начале объясняется работа транзисторов в ключевом режиме? Тогда по крайней мере у него прояснится вопрос с "логическими уровнями" и "электрическими уровнями"... И потом можно будет перейти к стандартной логике, регистрам и т.д. И в завершении копнуть в сторону цифровых автоматов (хотя необходимый объем обычно в учебнике по цифровой электронике имеется и специальную литературу читать не придется).
|
|
|
|
|
Sep 6 2009, 19:15
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(Dog Pawlowa @ Sep 6 2009, 21:49)  А вот ни фига и Ваш Соучек врет. Меня учили так, что альтернативой жесткой комбинационной схеме является микропрограммный автомат. Ну "микро" должно же что-то значить?!  Наверное то что они более гибкие (в том смысле что реализуют больше функций чем жёсткая логика) хотя и помедленнее работают.
Сообщение отредактировал Vagant - Sep 6 2009, 19:38
|
|
|
|
|
Sep 6 2009, 22:26
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(Student Pupkin @ Sep 6 2009, 23:03)  Как-то раз болтал с одним человеком. Он тогда учился в строительной академии. Как-то неожиданно разговор перешел в область электроники. Тут он и говорит:"Я знаю полностью, как устроен микропроцессор" (речь завели об обычной ПЭВМ, соответственно это он о пентиуме вел речь). Я решил пошутить, и сказал:"Сможешь мне нарисовать его схему на транзисторах?". Он посмотрел на меня удивленно и ответил: "Там нет транзисторов...". Может человеку лучше начать с этого? Ну или начать с книги по цифровой электронике, где в начале объясняется работа транзисторов в ключевом режиме? Тогда по крайней мере у него прояснится вопрос с "логическими уровнями" и "электрическими уровнями"... И потом можно будет перейти к стандартной логике, регистрам и т.д. И в завершении копнуть в сторону цифровых автоматов (хотя необходимый объем обычно в учебнике по цифровой электронике имеется и специальную литературу читать не придется).  согласен. Тогда человеку нужно почитать вот это - Е.П.Угрюмов "Цифровая схемотехника". Толковая книжка, много аспектов охвачено. Для того, чтобы нарисовать для себя начальную картину цифрового мира - более чем. Кстати, и разжевано толково Цитата(Vagant @ Sep 6 2009, 23:15)  Наверное то что они более гибкие (в том смысле что реализуют больше функций чем жёсткая логика) хотя и помедленнее работают. ну так поэтому и есть процессоры, у которых команд как грязи, но и машинный цикл длится кучу тактов ( CISC), а есть с УСЕЧЕННЫМ набором команд, но и выполняются они за 1-2-3 такта максимум ( RISC). И это не считая всяких конвейеров и иже с ними всяких оптимизаций Цитата(Vagant @ Sep 6 2009, 19:29)  А существует ли простой и ясный ответ на мой вроде бы простой вопрос? Имеется ввиду, ответ без привлечения всей теории цифровых систем. ну знаете... это примерно как рассказать об устройстве "винтопрул" - все ж очень даже просто. Винт вертится, вот он и ПРЕТ
|
|
|
|
|
Sep 6 2009, 22:56
|
Гуру
     
Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802

|
Цитата(Dog Pawlowa @ Sep 6 2009, 21:49)  А вот ни фига и Ваш Соучек врет. Меня учили так, что альтернативой жесткой комбинационной схеме является микропрограммный автомат. Ну "микро" должно же что-то значить?!  Та то Вам не все секреты в бурсе рассказывали. В войну синус доходил до семи! Далеко не все процессоры строят по микропрограммной архитектуре. Эта архитектура громоздка и медленно работающая, хотя позволяет реализовать очень большое количество и очень сложных команд. Практически все микроконтроллеры сегодня строят по одноцикловой схеме (RISC). Команд мало, но все выполняются быстро и практически за одно время. Микропрограммника, как такового, в них нет, есть одна большая жесткая логика дешифратора команд. Для понимания вычислительной техники, мне кажется, лучше начать знакомство с вопросом именно с таких процессоров. Хотя, стартеру по-моему, надо для начала с 2И-НЕ разобраться и построить самому на них пару схем вроде десятичного или семисегментного дешифратора.
|
|
|
|
|
Sep 7 2009, 04:42
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(Vagant @ Sep 6 2009, 18:34)  add R2 R1 преобразуется в последовательность кодов которые микропроцессор исполняет. Но мне тогда непонятно откуда берутся эти коды и как микропроцессор их понимает? коды берутся из памяти, в которую их предварительно кто-то положил (вы, например, или начальный загрузчик) Как процессор "понимает" команды? да никак он их не понимает. Это тупой автомат. Как автомобиль "понимает", что при надавливании на педаль газа нужно пошире приоткрыть форсунки, поменять угол опережения и ещё чего-то по мелочи? Когда я впервые узнал, как работает процессор 580ВМ80, я был разочарован... Сначала тоже казалось всё так сказочно - прямо чуть ли не искуственный интеллект на ладони. А оказалось - тупейшее устройство из нескольких тысяч транзисторов
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Sep 7 2009, 05:31
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(toweroff @ Sep 7 2009, 01:26)  ну знаете... это примерно как рассказать об устройстве "винтопрул" - все ж очень даже просто. Винт вертится, вот он и ПРЕТ  Да вот.  Русский язык настолько богат что любые самые сложные вещи можно обьяснять на разных уровнях - от тов Шарикова до профессора МГУ по кафедре орнитологии - и им будет понятно. Цитата(iosifk @ Sep 7 2009, 07:47)  Предлагаю посмотреть у меня на сайте цикл статей "Микропроцессор своими руками"... Думаю, что после прочтения тему можно будет закрыть... Удачи! Спасибо читаю, интересно (хотя сразу видно что CV написано скорее на Runglish чем на English).
Сообщение отредактировал Vagant - Sep 7 2009, 05:47
|
|
|
|
|
Sep 7 2009, 06:16
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(MrYuran @ Sep 7 2009, 07:42)  коды берутся из памяти, в которую их предварительно кто-то положил (вы, например, или начальный загрузчик) Как процессор "понимает" команды? да никак он их не понимает. Это тупой автомат. Как автомобиль "понимает", что при надавливании на педаль газа нужно пошире приоткрыть форсунки, поменять угол опережения и ещё чего-то по мелочи?
Когда я впервые узнал, как работает процессор 580ВМ80, я был разочарован... Сначала тоже казалось всё так сказочно - прямо чуть ли не искуственный интеллект на ладони. А оказалось - тупейшее устройство из нескольких тысяч транзисторов Тут вся идея наверное в том как из простых вещей создать что-то сложное и как им управлять. Из 3-5 видов логических элементов построены почти все цифровые системы. А в музыке, например, только 7 основных нот а какое разнообразие жанров, стилей и музыкальных направлений существует. В биохимии, например, только из менее чем пары десятков аминокислот природа создала сотни тысяч разных белков, которые и есть жизнь.
Сообщение отредактировал Vagant - Sep 7 2009, 06:24
|
|
|
|
|
Sep 7 2009, 13:08
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(Microwatt @ Sep 7 2009, 15:22)  Да что вы микропрограммник растолковываете? Полная каша в голове у вопрошающего будет. Ему бы понять как простой потенциальный шифратор-дешифратор на И-НЕ работает. Ничего страшного. Каша будет но пройдёт.  Я этот тред потом скопирую себе в отдельный файл и буду по книжкам разбираться а файл почитывать время от времени. Так что все мнения пригодятся. P.S. Есть такая вещь - кривая обучения (как на картинке). Сначала "каша", а потом (с увеличением числа попыток) - подьём.
Сообщение отредактировал Vagant - Sep 7 2009, 13:13
Эскизы прикрепленных изображений
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|