История развития вычислительной техники

Автор работы: Пользователь скрыл имя, 20 Января 2012 в 23:42, курсовая работа

Описание

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

Работа состоит из  1 файл

История развития вычислительной техники.doc

— 309.00 Кб (Скачать документ)

История развития вычислительной техники 

Пальцы, камешки и счёты.

 

  Развитие  вычислительной "техники" шло  паралельно с развитием понятия  числа. Исторически первым был  пальцевый счёт - для небольшого  числа предметов. Даже счёт  на пальцах стал возможен после  того, как сформировалась абстракция  числа - когда люди осознвли, что два дерева и две овцы имеют общее ,их число - два.  
  Возникновение "следующего поколения" - абак, русские и китайские счёты, стало возможным после изобретения позиционной системы счисления (до этого были непозиционные системы, например римская, иероглифическая, древнеславянская, алфавитная и т.д.)  
  Позиционная десятичная система с нулём впервые появилась около 500 г. н.э. в Индии. Разработка алгоритмов сложения чисел позволила сконструировать первые механические устройства для сложения многозначных чисел - счёты и т.п. Развитие механики способствовало созданию новых механизмов, в том числе - счётных устройств. Начало таким устройствам положил французский математик Блез Паскаль, который в середине 17го века изобрёл и построил счётную машину.  
  Механические вычислительные машины стали быстро совершенствоваться с появлением в начале 18го века зубчатых шестерёнок и реек. В конце 19го века появился арифмометр.  
  Большая заслуга в его создании принадлежит русскому инженеру Однеру - основной частью арифмометра было "Колесо Однера", использовавшееся во всех поздних конструкциях арифмометра. Одновременно шло развитие логических основ вычислительных устройств.  
  Англичанин Чарльз Беббидж в середине 19го века создал в теории "ананлитическую машину", способную производить серию арифметических действий в определённой последовательности. Он ввёл(говоря современным языком) понятия данных, команд, цикла, ветвления. Но реализовать до конца свои замыслы Бэббидж не смог - небыло ещё технических возможностей.  
  Только в 20 веке с появлением электромеханических реле стало возможным реализовать эти идеи. Ввод данных осуществлялся с помощью перфокарт, изобретённых в конце 19 века американцем Германом Холлеритом, действия с числами выполнялись логическими схемами, идеи которых были заложены английским математиком Джоном Булем.  
  Вторая мировая война ускорила развитие электронной техники. Появились первые электронные лампы, логические схемы, усилители, тригеры и т.д. Технически возможным стало создание электронных вычислительных машин (ЭВМ).  
  Считается, что первая ЭВМ, выполнявшая вычисления с помощью электронных устройств появилась в США в 1946 году. В том же году появилась научная статья трёх американских математиков - фон-Неймона, Голдстайна и Бернса, в которой были изложены основныепринципы построения универсальной ЭВМ, которые позднее получили название принципов фон-Неймона.  
  Первая советская вычислительная машина была построена в Киеве под руководством академика Лебедева 1951-52 гг. Она называлась МЭСМ - малая электронно-счётная машина. Несколько позже была создана БЭСМ - большая электронно-счётная машина. Для того времени это была уникальная машина. Она занимала большой зал, для своего обслуживания требовала множество людей: инженеров, операторов, программистов.  
  Кроме БЭСМ, ставшей родоночальницей целой серии машин (БЭСМ-2, 4, 6), появились серии М (м-20, 220, 222), Минск (Минск 2, 22, 32), Урал (Урал 2, 4). Позже их вытеснили машины серии ЕС, которые во многом были скопированы с американской техники фирмы IBM (в то время она выпускала БЭСМ). Стали появляться и небольшие машины, Мир, Электроника.  
  Наконец, в 80х годах появились мини- и микрокомпьютеры - прообразы современных персональных ЭВМ.  
  Лавинообразный рост производства и использования персональных ЭВМ мы наблюдаем сейчас. Можно считать, что всё развитие ЭВМ уложилось в последние 50 лет - очень небольшой в сущности период.

Принципы  фон-Неймана 

 Любая ЭВМ  имеет два главных устройства - основную память и процессор (арифметико-логическое устройство для обработки данных). К ним добавляются устройства ввода-вывода для общения с машиной.  
  Несмотря на многообразие типов существующих в настоящее время ЭВМ, в основу их заложены общие принципы - принципы фон-Неймана.

1) Принцип произвольного  доступа к основной  памяти.

 

  Структурно, основная память состоит из  одинаковых элементов (ячеек).  
  Процессору в любой момент времени доступна любая ячейка для чтения или записи информации, причём время поиска ячейки одно и то-же для любой из них.  
  Чтобы обеспечить доступ к ячейкам памяти, каждая из них имеет свой номер - число от 0 до N-1. Этот номер называется адресом ячейки. Общее число ячеек (N), называют объёмом основной памяти.  
  Максимальное число одновременно адресуемых ячеек зависит от технических параметров компьютера.Для современных компьютеров, стандарт - 16-бит(реальный) режим: 1МБайт, из которых доступно пользователю 640 кБайт основной памяти, 32-бит(защищённый) режим: 4ГБайт одновременно загруженных данных.

2) Принцип хранимой  программы.

 

  Программа  решения задачи хранится в  основной памяти наряду с обрабатываемыми  данными. Достаточно сменить программу  и данные и ЭВМ будет решать  любую другую задачу. В этом состоит третий принцип:

3) Принцип универсальности.

 

  Универсальность  ЭВМ - отличает её от специальных  счётных устройств, предназначенных  для решения одного типа задач.  
  Информация, находящаяся в основной памяти, не имеет признаков принадлежности к определённому типу, т.е. по содержимому ячейки ЭВМ, вообще говоря, нельзя установить, что в ней хранится. Это означает, что команды могут рассматриваться как данные, соответственно над ними можно производить какие-то действия. На самом деле так и происходит при выполнении программы на машинном уровне.  
  Кроме того, сама программа может быть результатом работы другой программы. На этом основаны методы трансляции с языка программирования высокого уровня.

Представление информации в ЭВМ. 
Системы счисления. 

 

  В большинстве  ЭВМ информация представляется  в двоичном виде(Существуют так-же  двоично-десятичные и троичные  ЭВМ). Это обусловлено, в основном, техническими особенностями - простой  реализации электронного устройства  с двумя(а не с десятью) устойчивыми  состояниями: есть сигнал - нет сигнала. Эти два состояния обозначаются символами 0 и 1.Каждый двоичный символ несёт 1 бит информации.  
  Любая информация в ЭВМ представляется последовательностью двоичных символов. Каждому символу внешнего алфавита(т.е. алфавита пользователя). каждой команде или элементу данных сопоставляется своя последовательность символов. Способ кодирования для нас сейча сне имеет значения, те более длина кода.  
  С помощью последовательности из 4 нулей и единиц можно закодировать 24=16 символов. Увеличив длину последовательности до 8 символов ожно получить 28=256. Этого вполне достаточно для кодирования символов внешнего алфавита(цифры, строчные и прописные буквы, специальные знаки и т.д.)  
  Поэтому размер ячейки в ЭВМ у современных машин равен восьми двоичным символам(разрядам). Единица информации, содержащая 8 двоичных символов называется байтом. Т.е. 1 байт = 8 бит. Это наименьшая адресуемая часть памяти машины. Однако многие данные и команды требуют больше места(в командах кроме кода операции нужны и адреса ячеек). Поэтому выделяют машинное слово, которое на разных ЭВМ может состоять из двух или четырех байт.

Кодирование текстовых данных

 

  Каждый символ  занимает 1 байт. Для кодирования  могут использоваться различные  стандарты. На IBM-совместимых ЭВМ - это ASCII (American Standart Code for Information Interchange - американский стандартный код для обмена информацией), на наших - КОИ-7, КОИ-8 (Коды для Обена Информацией, 7 и 8 битные).  
  ASCII - 7-разрядный код, т.е. стандарт задаёт тольк 128 символов. Восьмой бит используется для расширения таблицы (есть много разных вариантов), куда включают символы Кириллицы, псевдографику, математические символы и прочее.  
  Обычно код символа записывают не в двоичной, а в шестнадцатиричной системе счисления. При этом каждая четвёрка двоичных символов образует один шестнадцатиричный.

 
  Пример: цифре 5 соответствует  
 
 
латинское A соответствует

Дать Алгоритмы  перевода 10 -> 2 и т.д. 
 
  В 16-ричной системесчисления 16 циф. От 0 до 9 берутся из десятичной, остальные обозначаются латинскими буквами A(10), B(11), C(12), D(13), E(14), F(15).  
  Так что AC16 = (10)*16+12=17210

Кодирование целых чисел

 

  Кодиовать  числа можно "посимвольно", но это очень расточительно  (1 символ = 1 байт!).  
В принципе, для цифры достаточно 4 бит:  
 0 <=> 0000, 1 <=> 0001, 2 <=> 0010, ..., 9 <=> 1001. (Так называемое двоично-десятичное кодирование). Такое представление применяется в ряде случаев при обработке экономичесой информации (в языке КОБОЛ в частности). - Это кодирование не эффективно по памяти, поэтому в большинстве случаев используют двоичное кодирование.  
 Использование двоичной системы требует перевода вводимых чисел из 10-ной в двоичную при вводе и из двоичной в десятичную при выводе данных.  
 Это снижает эффективность, если необходимо вводить и выводить большие массивы информации при небольшом времени их обработки (как в экономических задачах).  
 Для представления дробных чисел существуют два варианта - с фиксированной и плавающей запятой.  
Для целых чисел используется первый вариант (точка фиксирована после целой части), для вещественных - второй вариант.

Кодирование вещественных чисел

 

 Максимальная  величина целого числа зависит от того, сколько места ему разрешено занять - байт, два байта или больше.  
Диапазон целого без знака:  
      от 0 до 2n-1, где n - общее число разрядов.  
т.е. от 0 до 255 (1 байт)  
       от 0 до 65535 (2 байта)  
 Обычно один разряд выделяется для знака числа, поэтому диапазон изменяется.  
Знаковое целое:  
 от -128 до 127 (1 байт)  
 от -32768 до 32767 (2 байта)  
 Т.к. диапазон целых чисел сравнительно небольшой (хотя в некоторых языках есть и длинное целое), для расчётов используются вещественные числа, которые кодируются в форме с плавающей запятой.  
 В этом случае число представляется в виде ±M*2±p.  
В машинном слове фиксируется расположение всех элементов: мантиссы (±M - целое со знаком) и порядка (±p - целое со знаком).  
  При выполнении операций учитывается, в каком виде представлены числа. Операции над целыми числами реализуются аппаратно, а над вещественными - программно. Для ускорения вычислений используется математический сопроцессор (дополнительно к основному процесоору), который выполняет арифметические операции с вещественными числами аппаратно.  
 Диапазон представления числа с плавающей запятой намного больше, чем целого. Обычно вещественному числу выделяется 4 байта (32 бита).  
Тогда диапазон чисел - от -3,4*1038 до 3,4*1038  
Это не значит, что можно представить любое число из этого диапазона. Фактически представимой оказывается дискретная последовательность чисел. Шаг дискретизации зависит от количества знаков мантиссы.  
       
 Например после 0 следует число ~3,4*10-38, внутри вещественных чисел нет. Из формы представления возникают следующие эффекты:

  1. Ошибка округления. => вычислительные алгоритмы не должны допускать роста погрешности вычислений из-за ошибок округления.
  2. Потеря значимости: число стало таким маленьким, что не может быть представлено в ЭВМ - оно превращается в "машинный ноль".
  3. Переполнение (эффект, обратный потере значимости): число слишком велико.
 

 Ошибки  округления  
 Что почучится, если к миллиону прибавить одну миллионную?  
 1 000 000.000 001 - 13 знаков, в мантиссу не поместится, следовательно, миллион не изменится - вроде бы естественно. А если к миллиону прибавить модну миллионную милион раз? В математике - 1 000 001, в ЭВМ останется тот-же миллион.  
 А если складывать в другую сторону: сначала миллионные доли - получим 1, потом уже прибавим 1 000 000 - получится правильно!  
 Следовательно коммутативность сложения в ЭВМ нарушается! (от перемены мест слагаемых, сумма изменяется!!)  
 Правило: При большом числе слагаемых сумммрование начинаем с наименьших. 
 
 Потеря значимости и переполнение  
 При вычитании двух близких чисел может получиться "машинный ноль". Что может сделать невозможным последующие вычисления.  
 Пример: Для вычисления производной f(X) в т. Xo нужно вычислить

    lim f(X)-f(Xo) 
X-Xo
при X -> Xo

 
 Сначала всё хороше, потом приходится делить друг на друга маленькие значения - начинает растипогрешность, процесс  разбалтывается и наконец X-Xo - превращается в машинный ноль. Если числитель при этом не ноль, то теоретически получается бесконечность - переполнение.  
 Переполнение может получиться и при вычислении по формулам типа  
       
 где n - большое. Если сначала вычислять сумму, а потом умножать - переполнение. В этом случае используют формулу в преобразованном виде  
       
 Уменьшая каждое слагаемое, мы избавляемся от переполнения. Но это значит, что нарушается дистрибутивный закон L(a+b)=La+Lb.  
 Задание: Придумайте пример нарушения ассоциативного закона (a+b)+c=a+(b+c). 
 
 Как правило, диапазона и точности ЭВМ хватает с избытком, за исключением случаев, когда при вычислениях необходимо получить результат с точностью, близкой или большей того, что даёт ЭВМ  
(не 10-3, а 10-6 при машинной точности 10-7). Выход - использовать типы данных двойной точности (при этом увеличивается и диапазон). Такие типы есть в большинстве языков, (Fortran, Pascal, C).  
 Представление команд  
 Машинные команды представляются в двоичном виде и состоят из двух основных полей - поля операции и поля адреса. В поле операции указывается двоичный код команды, в поле адреса - номера ячеек, над которыми должнабыть выполнена операция.Операции выполняет процессор (АЛУ)  
 Команды могут быть одноадресными, двухадресными, трехадресными. Большинство арифметических опрераций используют регистры процессора и могут не содержать адресов ячеек. По этому в принципе можно обойтись одноадресными командами.  
 Пример:  
    а) перслать число из ячейки A1 в регистр прочессора  
    б) сложить содержимое регистра с содержимым A2  
    в) переслать результат в ячейку A3  
 Если результат участвует в следующей операции , то пункт в) можно не выполнять, а вычислять дальше  
 Машинные команды записываются набором нулей и единиц, что очень неудобно для восприятия. Использование восьмиричной и 16-ричной только облегчило но не решило проблему. Только создание языка ассемблера стало существенным шагом вперёд. В ассемблере каждая машинная команда получила буквенное обозначение, легкое для запомнинания.  
 Пример: (для x86-процессоров)  
     регистры: AX, BX, CX, DX (регистры общего назначения) и другие...  
     MOV - пересылка данных MOV AX,BX (AX:=BX)  
     Вместо адресов так-же используются символические имена  
     MOV AX,IDENT (AX:=IDENTR)  
 Конкретный адрес переменная получит при ассемблировании программы.

Информация о работе История развития вычислительной техники