Книга 1 Информатика: введение в предмет Принципы работы компьютера и его устройство Введение в программирование - shikardos.ru o_O
Главная
Поиск по ключевым словам:
страница 1страница 2
Похожие работы
Книга 1 Информатика: введение в предмет Принципы работы компьютера и его устройство - страница №2/2

Глава 1. Принципы работы компьютера и его устройство
1.1. Электрические переключательные схемы
Образно говоря, внутренность компьютера можно сравнить с человеческим организмом. Если считать, что кровь — это электрический ток, а сосуды — проводники тока, то существенная разница между системой кровеносных сосудов и микросхемами компьютера в том, что с помощью электрического тока в компьютере кодируется информация. Компьютер управляем за счет того, что в каждый момент времени четко определено, по каким из проводников-«сосудов» пойдет электрический ток-«кровь». Во время работы компьютера каждый из проводников постоянно получает приказы: пропускать через себя ток или не пропускать. (С кровью это, пожалуй, не пройдет. Правда, говорят, что некоторые йоги могут останавливать работу сердца.)

Рассмотрим таблицу:





Порядковый номер

Проводка

приказ току

1

2

3



7



идти

не идти

идти



идти


Закодируем нашу таблицу, следуя следующим правилам:




  1. В первом столбце у нас будут порядковые номера проводков, записанные в двоичной системе счисления;




  1. Во втором столбце будут записаны приказы-команды току: идти — 1, не идти — 0.

Наша таблица примет следующий вид:




Порядковый номер

Проводка

приказ току

001

010

011



111



1

0

1



1



Соединим проводки друг с другом следующим образом (стрелочками обозначается

направление электрического тока):




или

схема 1 схема 2
В местах соединения поставим специальные устройства 3-х видов:

,  (применяются в схеме 1) и


(применяются в схеме 2).
То есть соединения могут быть

такими: такими: или такими:
Сами устройства, соединяющие проводки, влияют на электрический ток, проходящий по проводкам, следующим образом (цифра 1 написанная над проводком, значит, что ток по нему идет, 0 — не идет):
если на один из «входящих» проводков

подается напряжение, а на другой — нет,

то в «выходящем» проводке тока не будет.

Вообще, возможны следующие варианты соединений (прокомментируйте их, пожалуйста, сами):





Представьте теперь, что нам нужно заставить компьютер сложить два числа. Попытаемся это сделать с помощью проводков и соединений, пропускающих электрический ток по описанным выше законам. Пусть, например, нам нужно сложить 7 и 2. Сразу можно сказать, что 7+2=9, но компьютер нас не поймет. Поэтому:




  1. Запишем числа 7 и 2 в двоичном виде: 710=1112 (1112 означает, что число 111 записано в двоичной форме — нужно отличать от ста одиннадцати), 210=0102.

  2. Cложим:


— мы двоичные числа складываем так же, как десятичные —



поразрядно — складываем цифры в соответствующих разрядах, а если в сумме получается больше, чем 9, то десят-ки переносятся и добавляются к сумме цифр следующего разряда. В отличие от десятичных чисел, при сложении двоичных разряды переполняются чаще: 1+1=0, плюс единица добавляется в следующий разряд. 1+0=0+1=1 — здесь ничего не переносится в следующий разряд.
Упражнение. Сложите 124 и 234 в двоичной и десятичной системе счисления. Сравните полученные результаты.


  1. Закодируем наши числа: 1 — электрический ток идет по проводкам, 0 — не идет. Попробуем из проводков и соединений сделать такую схему, чтобы на 8 проводков подавалось напряжение, соответствуя нашим слагаемым (цифры числа 11 взяты в рамочки — , цифры числа 10 обведены «кружочком» — , цифры результата

сложения 11 и 101 обведем треугольниками ):







1 1 1 0 1 0







1 0 0 1


  1. П
    в итоге получаем:
    оробуем сложить числа с меньшим количеством разрядов: 11+10. Производить действия будем поразрядно, так, как мы складывали "столбиком". То есть, начиная слева направо:




  • 1+0=1, переноса в следующий разряд нет,

  • 1+1=0 и 1 переносим в следующий разряд;

На следующей схеме сплошной линией обозначены проводки, по которым идет ток (соответствующий цифре 1 на «входе»-начале проводка); пунктиром показаны проводки, по которым ток не идет (то есть на «вход» сигнал не подается — там стоит цифра 0).
Упражнение. Разберитесь, пожалуйста, как работает наша схема, и дополните ее так, чтобы получилось сложение 111+010=1001.




1 1








1 переносим

в следующий

разряд
1 0



переноса в следующий разряд нет

   

   


= 1 0 1




Упражнение. Нарисуйте соединения проводков, соответствующие произведению .   Указание: сведите умножение к сложению — воспользуйтесь тем, что .
1.2. Факты из истории:

механические, релейные, электронно-цифровые компьютеры, булева алгебра
В 1822 г. англичанин Чарлз Бэббидж опубликовал научную статью с описанием машины, способной рассчитывать и печатать большие математические таблицы. В том же году он построил пробную модель своей Разностной машины, состоящей из шестеренок и валиков, вращаемых вручную при помощи специального рычага. В 1833 г. Бэббидж пришел к идее создания еще более мощной машины. Аналитическая машина Бэббиджа должна была не просто решать математические задачи одного определенного типа, а выполнять разнооб-разные вычислительные операции в соответствии с инструкциями, задаваемыми оператором.

Но, из-за отсутствия средств, Бэббидж не смог воплотить свои гениальные идеи. Аналитическая машина так и не была построена… Но вклад Бэббиджа в создание компьютера был весомым. Хоть аналитическая машина и не была построена (отсутствие денежных средств, хороших механиков,…), ее изобретателя, по праву, можно назвать изобретателем первого компьютера. Ученица же Чарлза Бэббиджа, дочь лорда Байрона, леди Ада Лавлейс, считается первым программистом.

В первой половине XVII века немецкий ученый Готфрид Вильгельм Лейбниц заложил основы общего метода, который позволяет свести мысль человека  (любого вида и на любую тему) к точным формальным высказываниям, перевести ее на язык математики. Вдохновленный старинной рукописью-комментарием к известной китайской «Книге перемен», в которой делалась попытка описать Вселенную с помощью противоположностей (тьма — свет, тепло — холод, инь и янь — мужское и женское начала), ученый терпеливо исследовал бесконечные комбинации нулей и единиц. Тем самым он заложил основы универсального логического языка — современной двоичной системы счисления (системой счисления или нумерацией называют совокупность правил, служащих для наименования и обозначения чисел).

Спустя более ста лет после смерти великого немецкого ученого английский математик Джордж Буль подхватил его идеи и изобрел логическую систему, названную в его честь булевой алгеброй. Трех основных операций булевой алгебры — И, ИЛИ, НЕ (в наших


схемах с проводками им соответствуют , , ) — достаточно для того, чтобы произ-водить сложение, вычитание, умножение, сравнение символов и чисел. Логические действия оперируют лишь с двумя понятиями — «истина» или «ложь» (нуль или единица).

Американский логик Чарльз Сандерс Пирс осознал, что булева алгебра хорошо подходит для описания электрических переключательных схем: подобно тому, как утверждение может быть истинным либо ложным, ток в цепи может либо протекать, либо отсутствовать; влияние же электрических переключателей на ток сходно с логическими действиями (И, ИЛИ, НЕ), производимыми над истинными и ложными утверждениями.


Операции логики действуют так:

  • утверждение НЕ(истинное) становится ложным,

  • (истина) ИЛИ (ложь) = истина, (ложь) ИЛИ (истина) = истина,

(истина) ИЛИ (истина) = истина, (ложь) ИЛИ (ложь) = ложь;

  • (истина) И (ложь) = ложь, (ложь) И (истина) = ложь,

(ложь) И (ложь) = ложь, (истина) И (истина) = истина

  • все то же, что происходило в наших схемах, если заменить истину на единицу, ложь на


ноль, И на , ИЛИ на , НЕ на ).

В конце 30-х гг. немец Конрад Цузе завершил постройку машины, которая занимала площадь около 4 м2 и представляла собой сплетение проводов и реле — переключателей тока. Машина имела клавиатуру, с которой в нее вводились условия задач, результат же высвечивался на панели со множеством маленьких лампочек. Чтобы изменить программу, необходимо было по строгой схеме (еще более громоздкой, чем приведенная выше схема сложения 7 и 2) переставить огромное количество кабелей и изменить положение большого количества переключателей.

Первая универсальная электронная цифровая машина "ЭНИАК" (ENIAC — аббревиатура от Electronic Numerical Integrator and Computer  — электронный цифровой интегратор и вычислитель) состояла большей частью из гибких кабелей, которые программист с помощью штекеров вставлял в нужные разъемы. Роль же наших соединений , , играли механические переключатели. Вычисления по заданной программе (определенное положение кабелей и состояния переключателей) проводились достаточно быстро. А вот программы приходилось буквально «впаивать» в сложные электронные схемы машины, а также подсоединять и разнимать сотни контактов. ЭНИАК обладал памятью — запоминал и хранил числа, хотя хранить программы он пока не умел.
Мы коротко осветили основные вехи истории устройства компьютера до середины XX века. О современных компьютерах поговорим в другой раз. Но абсолютно неважно, на каких материальных или логических элементах построен компьютер. Он может быть чисто механическим, как у Бэббиджа, вместо магнитной памяти можно использовать перфокарты (вспомните станок Жаккара). Компьютер может базироваться на электро-магнитных реле, как это было у Цузе, или на электронных лампах, как ЭНИАК, а может — на полупроводниках. В перспективе — производство квантовых компьютеров… Самое главное — это программный принцип управления, хранение в памяти и данных, и программы (набора команд), а также (мы забегаем немного вперед) некоторые принципы программирования, такие как, например, наличие библиотек стандартных подпрограмм (из них возникли все современные системы математического обеспечения).

Каждый алгоритм может быть реализован и в виде программы, и в виде специального электронного устройства. В первом случае эта реализация будет программной, во втором случае — аппаратной. Никакой принципиальной разницы здесь нет.



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

Работая над планами работы над машиной "ЭДВАК" (следующим за универсальным компьютером "ЭНИАК") фон Нейман представил прекрасное описание не только самой машины, но и ее логических свойств.

Чтобы компьютер был и эффективным, и универсальным инструментом, по Дж. фон Нейману, он должен включать:


  • арифметико-логическое устройство (АЛУ), осуществляющее непосредственную обработку данных: сложение, умножение чисел, перенос информации из одного места памяти в другое и проч. (впоследствии часть функций взял на себя процессор, за АЛУ остались арифметические операции и сравнение чисел);

  • центральное устройство управления, "дирижирующее операциями";

  • устройство ввода-вывода информации;

  • запоминающее устройство, или память.

Рассмотрим подробнее перечисленные принципы и устройства.


1.4. Принцип хранения данных и программ в памяти компьютера
О
бразно представим память компьютера в виде рядов ящичков, в каждом из которых хранится какое-то количество единиц информации (битов) — нулей или единиц. Все ряды пронумерованы. Ряд, состоящий из 8 ящичков назовем ячейкой памяти, номер ряда — ее адресом. Схематично это можно изобразить так (слева от ячеек памяти записаны их адреса):
В каждую такую строку-ячейку можно записать число от 0=000000002 (индекс обозначает, если помните, что число записано в двоичной системе счисления) до 255=28-1=111111112 (111111112=(((2+1)2+1)2+1)2…+1)2=211+210+29+28+27+26+25+24+23+22+21+20) — один байт информации.

Данные в памяти компьютера хранятся в виде последовательностей нулей и единиц. А где какие данные находятся, определяется по адресу.

Теперь немного о том, как хранится в памяти программа. Каждая команда компьютеру что-то сделать кодируется некоторой последовательностью нулей и единиц и помещается, как и число, в одной ячейке памяти. Программа состоит из последовательности команд, которые сначала записываются в память, а затем, по мере выполнения программы, извлекаются.

Простейшая команда имеет такой вид: *** *** *** ***, где вместо * стоит, в зависимости от ситуации, либо 0, либо 1. Первые три цифры являются кодом действия, который должен совершить компьютер над данными, а все остальное — адреса ячеек памяти, откуда эти данные берутся (4–9 цифры команды) и куда помещаются (10–12 цифры). Другими словами, команду можно записать в виде K aaa3, где К — код команды, a1, a2, a3 — адреса ячеек памяти (и адреса, и команда — двоичные числа). То есть команда имеет вид: код команды + адрес_1 + адрес_2 + адрес_3.


Договоримся о следующей кодировке команд:

  • 000 a1 a2 a3 — приказ компьютеру переписать содержимое ячейки памяти с адресом a1 в ячейку с адресом a3 (при этом то число, что было в ячейке с адресом a3 до этой операции, сотрется; на выполнение этой команды содержимое ячейки с адресом a2 не влияет — она нужна лишь для порядка;

  • 001 a1 a2 a3  — сложить число, содержащееся в ячейке с адресом a1, с числом из ячейки с адресом a2 и поместить результат сложения в ячейку с адресом a3.

  • 011 a1 a2 a3 — найти модуль разности чисел из ячеек с адресами a1 и a2 и поместить его в ячейку с адресом a3.

  • 101 a1 a2 a3 — перемножить числа из ячеек с адресами a1 и a2 и поместить результат в ячейку с адресом a3.

  • 111 a1 a2 a3 — остановиться и напечатать содержимое ячеек с адресами a1 a2 a3.

К
оманда 011 010 011 101 изменит содержимое памяти ячеек нашей таблицы:


— число 00100000 из ячейки с адресом 010 вычтется из числа 00110010, записанного в ячейке 011, результат (00010010) будет занесен в ячейку с адресом 101, причем число 00001000, находившееся по адресу 101, сотрется.


Упражнение. Как изменит содержимое памяти ячеек последовательность команд:
001 010 011 101

000 101 000 110

101 110 001 010

101 010 010 100

111 100 110 010?
Что будет результатом выполнения этой мини-программы? Что будет в результате повторного выполнения этой программы?
Замечания

  • Если мини-программу, написанную в этом упражнении, выполнить с другими исходными данными (другими значениями чисел, записанных в ячейках с адресами 010, 011, 001 — именно эти значения влияют на результаты операций), то и результаты будут другими. В этом заключается универсальность программы.

  • Представьте, что ячеек памяти не восемь, и команд не 4, а намного больше. Очень трудно писать программы, в которых так много различных комбинаций нулей и единиц — ведь все их нужно помнить (либо постоянно смотреть в соответствующие таблицы-словари). Эту работу решили переложить на плечи компьютера — написать программу, которая бы являлась «переводчиком» и переводила бы команды, понятные программисту, в нули и единицы, понятные компьютеру. Так код 001 команды сложения заменили словом SUM (по-английски sum — сумма). Адреса же ячеек заменили названиями — буквами и цифрами: a, b, f, a1,… и сделали так, что программистам не нужно следить за тем, в какой именно ячейке памяти компьютер разместит данные. Программисты могут быть уверены, что если они написали в программе SUM a b c, то результат a+b они всегда смогут извлечь (распечатать, разделить на 2 и т.п.), обратившись к c и не держать при этом в голове последовательности 0 и 1 — реальные адреса ячеек и коды команд. (Правда, в истории программирования был период, когда квалификация программиста зависела от способности запоминать разнообразные последовательности 0 и 1.)


1.5. Память компьютера
Вернемся к первым универсальным компьютерам. Поскольку "ЭНИАК" не мог запоминать программы, и каждое мало-мальски серьезное изменение в программе занимало от двух часов до нескольких дней, на универсальность, в полном смысле слова, этот компьютер претендовать не мог. "ЭДВАК" в этом смысле был более гибким: программа не «впаивалась» в схемы аппаратуры, а записывалась электронным способом в специальных устройствах — заполненных ртутью трубках, называемых линиями задержки. Кристаллы, помещенные в трубку, генерировали импульсы, которые, распространяясь по трубке, сохраняли информацию, как ущелье «хранит» эхо.

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

В 1970 году фирма «Интел» изготовила первую интегральную схему памяти, способную хранить целый килобайт (1024 бита) информации. Интегральная схема размером меньше половины квадратного сантиметра заменяла 1024 сердечника, занимавших площадь около 0,5 м2.

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



В компьютере существует много различных микросхем1 для компьютера, которые выполняют различные функции (управление, память,…),


1 Cлово "микросхема" образовано словом "схема" и универсальной приставкой micro-, обозначающей одну миллионную. Так, например, один микрон — одна миллионная доля метра, а толщина тетрадного листа составляет около 100 микрон.

<< предыдущая страница