Общая шина данных архитектура

Шина – набор проводников, объединенных едиными функциями. В структуре с общей шиной все устройства ВМ подключаются к системной шине (магистрали). Все устройства ввода-вывода (УВВ) имеют встроенную небольшую микросхему – контроллер, управляющий операциями обмена данными.

Рис. 1.3. Архитектура на основе общей шины

— простота изменения конфигурации.

— единственная шина для разнообразных потоков данных, сильно отличающихся по скорости (например, процессор-память и процессор-принтер);

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

Архитектура с иерархией шин

В структуре с иерархией шин помимо системной шины (между процессором и памятью) существует ряд дополнительных шин. Каждая шина имеет свою пропускную способность, достаточную для устройств, которые она связывает. Контролирует взаимодействие всех устройств в такой архитектуре чипсет (chipset – набор микросхем).

Рис. 1.4. Архитектура с иерархией шин

Структуры вычислительных систем

ВС с общей памятью

В такой структуре все процессоры используют для хранения и обмена данными общую память.

Рис. 1.5. Структура вычислительной системы с общей памятью

Распределенная ВС

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

Рис. 1.6. Структура распределенной вычислительной системы

Видео:03. Основы устройства компьютера. Память и шина. [Универсальный программист]Скачать

03. Основы устройства компьютера. Память и шина. [Универсальный программист]

Архитектура ЭВМ с общей шиной

Эта архитектура была разработана, когда появилась необходимость в массовом производстве относительно простых компьютеров (их тогда называли мини- и микро- ЭВМ [11]). Основой архитектуры этого класса ЭВМ была, как можно легко догадаться из названия, общая шина. В первом приближении общую шину можно представить себе как набор электрических проводов (линий), снабженных некоторыми электронными схемами. В современных ЭВМ число линий в такой шине обычно порядка сотни. Все устройства компьютера в архитектуре с общей шиной соединяются между собой посредством подключения к такому общему для них набору электрических проводов – шине. На рис. 15.2 показана схема соединения устройств компьютера с помощью общей шины.

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

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

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

После захвата шины ведущее устройство определяет, готово ли ведомое устройство для обмена данными. Для этого ведущее устройство посылает ведомому устройству специальный сигнал, или же читает из порта ведомого устройства его флаг готовности. Определив готовность ведомого устройства, ведущее устройство начинает обмен данными. Каждая порция данных (в простейшем случае это один байт или одно слово) снабжается номером порта устройства-получателя.

Читайте также: Ханкук 185 75 16с шины шипованные

Окончив обмен данными, ведущее устройство производит освобождение шины. На этом операция обмена данными между двумя устройствами по общей шине считается завершённой. Разумеется, арбитр следит, чтобы ни одно из устройств не захватывало шину на длительное время (например, устройство может сломаться, и оно поэтому «забудет» освободить шину).

Рассмотрим теперь, как видит общую шину программист. Как уже было сказано, у каждого периферийного устройства обязательно есть один или несколько портов с закреплёнными за этим устройством номерами. Программист может обмениваться с портами байтами или словами (в зависимости от вида порта). Для записи в некоторый порт используется команда

out op1,op2

Здесь операнд op1 определяет номер нужного порта и может иметь формат i8 (если номер порта небольшой и известен заранее) или быть регистром dx (если номер большой или становится известным только в процессе счёта программы). Второй операнд op2 должен задаваться регистрами al (если производится обмен байтом) или ax (если производится обмен словом).

Для чтения данных из порта служит команда

Здесь уже второй операнд op2 определяет номер нужного порта и может иметь, как и в предыдущей команде, формат i8 или быть регистром dx. Первый операнд op1 должен задаваться регистрами al (если производится обмен байтом) или ax (если производится обмен словом). Далее мы рассмотрим небольшой пример использования этих команд.

Рассмотрим теперь общую архитектуру связи центрального процессора и периферийных устройств с точки зрения пользователей разного уровня.

· Конечный пользователь. Пользователь-непрограммист бухгалтер Иванов уверен, что в ком­пьютере есть команда «Распечатать ведомость», так как именно это происходит каждый раз, когда он нажимает на кнопку меню «Печать ведомости».

· Прикладной программист. Программист Петров, который написал бухгалтерскую программу на языке Паскаль, только улыбнётся наивности Иванова. Уж он то точно знает, что даже для того, чтобы вывести только один, например, символ ‘A’, надо написать оператор стандартной процедуры Write(‘A’) . Правда Петрову известно, что на самом деле его программа сначала переводится (транслируется) на машинный язык, поэтому он из любопытства поинтересовался у программиста на Ассемблере Сидорова, что тот напишет, чтобы вывести символ ‘A’. Сидоров ответил, что обычно для этой цели он пишет предложение Ассемблера outch ‘A’ . Разница между этими двумя способами вывода символа показалась Петрову несущественной, например он читал о том, что, например, в языке С для этой же цели надо вызвать библиотечную функцию printf(«%c»,’A’); .[88]

· Программист на Ассемблере. Сидоров, однако, знает, что предложение outch ‘A’ является не командой машины, а макрокомандой, на её место макропроцессор подставит макрорасширение, например, такого вида

Вот этот, как говорят, системный вызов и будет, с точки зрения Сидорова, выводить символ ‘A’ на стандартное устройство вывода.

· Системный программист. Системный программист (раньше иногда говорили системный ана­литик) Антонов, однако снисходительно пояснит Сидорову, что системный вызов – это просто переход на служебную процедуру-обработчик прерывания с номером 21h. А уж эта процедура и произведёт на самом деле вывод символа, используя, в частности, специальные команды обмена с внешними устройствами in и out.

· Инженер-электронщик. Инженер Попов, внимательно прослушав разговор пользователей, скажет, что всё это неверно. На самом деле центральный процессор выводит символ на экран или печатающее устройство путём сложной последовательности действий, которая включает в себя такие операции с общей шиной, как запрос, захват, передача данных и освобождение этой шины. И только после этого символ, наконец, прибывает по назначению.

Как Вы догадываетесь, нельзя сказать, кто же из этих людей прав, и бессмысленно спрашивать, как всё происходит «на самом деле». Каждый из них прав со своего уровня видения архитектуры компьютера. И, как мы уже говорили, опускаться на более низкий уровень рассмотрения архитектуры следует только тогда, когда это абсолютно необходимо для дела.

Читайте также: Грязевые шины для мотоцикла

Разберём теперь простой пример реализации операции ввода/вывода на уровне системного программиста. Оставим в стороне пользователя-непрограммиста (он нам сейчас неинтересен) и рассмотрим, например, операцию позицирования курсора на экране компьютера в позицию (X,Y).

Для прикладного программиста, как Вы знаете, для этой цели надо выполнить, например, оператор стандартный процедуры Турбо-Паскаля GotoXY(X,Y) . Для программиста на Ассемблере позицирование курсора можно выполнить с использованием такого системного вызова:

Как видим, параметры позицирования X и Y передаются в регистрах dl и dh. Системный вызов int 10h может выполнять различные операции с экраном компьютера, в зависимости от своих параметров, передаваемых ему на регистрах. Рассмотрим (в сильно упрощённом виде) тот фрагмент процедуры-обработчика системного вызова, который выполняет запрос на позицирование курсора.[89]

Во-первых, нам необходимо понять, а как вообще дисплей (точнее, электронная схема – контроллер дисплея) «знает», куда необходимо в каждый момент времени поставить курсор. Оказывается, что у контроллера дисплея, как, впрочем, и у любого другого периферийного устройства, есть свои регистры. Нас будут интересовать регистры дисплея с номерами 14 и 15 (обозначим их R14 и R15), каждый из них имеет размер 8 бит, но их совокупность может хранить длинное целое число, как показано ниже

Далее, дисплей «считает»,[90] что его экран имеет не 25 строк и 80 столбцов, как думают программисты, а 25*80 знакомест, в каждое из которых можно вывести один символ и поставить курсор. Знакоместа в первой строке экрана нумеруются не от 1 до 80, а от 0 до 79, во второй – от 80 до 159 и т.д. Другими словами, все позиции экрана расмматриваются как одномерный массив. Так вот, чтобы курсор переместился в нужную нам позицию (X,Y) в пару регистров необходимо записать число

Следовательно, сначала прецедуре-обработчику прерывания необходимо вычислить это число, используя параметры X и Y из системного вызова:

mul dh; ax:=80*(Y-1)

adc ah,0; ax:=80*(Y-1)+(X-1)

mov bx,ax; Спасём на bx

Теперь необходимо переслать содержимое регистров bl и bh соответственно в регистры R15 и R14 дисплея. Для этого мы будем использовать два порта дисплея (в каждый можно записывать для передачи дисплею операнд размером в байт). Порт с шестнадцатеричным номером 3D4h позволяет выбрать номер регистра дисплея, в который будет производиться очередная запись данных. Для этого в этот порт необходимо записать номер соответствующего регистра (у нас это номера 15 и 14). После выбора номера регистра запись в него нового значения производится посредством посылки байта в «транспортировочный» порт дисплея с номером 3D5h. В итоге получается следующий фрагмент программы:

mov dx,3D4h; Порт выбора регистра

out dx,al; Выбираем R15

inc dx; Порт записи в регистр

mov al,bl; младший байт BX

out dx,al; Запись в R15

dec dx; Порт выбора регистра

out dx,al; Выбираем R14

inc dx; Порт записи в регистр

mov al,bh; старший байт BX

out dx,al; Запись в R14

Вот теперь курсор будет установлен в нужное место экрана, и можно возвращаться на команду, следующую за системным вызовом int 10h . Разумеется, наш алгоритм весьма примитивен. На­пример, после записи в 15-й регистр дисплея и до записи в 14-й регистр курсор прыгнет в непредсказуемое место экрана, так что по-хорошему надо было бы на время работы нашего фрагмента заблокировать для контроллера чтение данных из регистров дисплея. Это, разумеется, делается записью некоторого значения в определённый управляющий регистр дисплея, для чего понадобятся и другие команды in и out. Кроме того, хорошо бы предварительно убедиться, что дисплей вообще включён и работает в нужном нам режиме, для чего потребуется, например, считать некоторые флаги состояния дисплея .

Надеюсь, что этот простенький фрагмент реализации системного вызова не отобьёт у Вас охоту быть системным программистом и заниматься написанием драйверов внешних устройств J.

Видео:Как работает компьютер? Шины адреса, управления и данных. Дешифрация. Взгляд изнутри!Скачать

Как работает компьютер? Шины адреса, управления и данных. Дешифрация. Взгляд изнутри!

Архитектура микропроцессорных систем. Архитектура с общей шиной данных и команд. Архитектура с разделенными шинами данных и команд

Дата добавления: 2015-08-06 ; просмотров: 2265 ; Нарушение авторских прав

Читайте также: В каких городах россии производят шины

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

Общая шина данных архитектура

Рис, 1.15.Архитектура с общей шиной данных и команд.

Но существует также и альтернативный тип архитектуры микропроцессорной системы — это архитектура с раздельными шинами данных и команд (двухшинная, или гарвардская, архитектура). Эта архитектура предполагает наличие в системе отдельной памяти для данных и отдельной памяти для команд (рис. 1.16). Обмен процессора с каждым из двух типов памяти происходит по своей шине.

Архитектура с общей шиной распространена гораздо больше, она применяется, например, в персональных компьютерах и в сложных микрокомпьютерах. Архитектура с раздельными шинами применяется в основном в однокристальных микроконтроллерах.

Рассмотрим некоторые достоинства и недостатки обоих архитектурных решений.

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

команд позволяет гибко распределять ее объем между кодами данных и команд. Например, в некоторых случаях нужна большая и сложная программа, а данных в памяти надо хранить не слишком много. В других случаях, наоборот, программа требуется простая, но необходимы большие объемы хранимых данных. Перераспределение памяти не вызывает никаких проблем, главное — чтобы программа и данные вместе помещались в памяти системы. Как правило, в системах с такой архитектурой память бывает довольно большого объема (до десятков и сотен мегабайт). Это позволяет решать самые сложные задачи.

Общая шина данных архитектура

Рис. 1.16. Архитектура с раздельными шинами данных и команд.

Архитектура с раздельными шинами данных и команд сложнее, она заставляет процессор работать одновременно с двумя потоками кодов, обслуживать обмен по двум шинам одновременно. Программа может размещаться только в памяти команд, данные — только в памяти данных. Такая узкая специализация ограничивает круг задач, решаемых системой, так как не дает возможности гибкого перераспределения памяти. Память данных и память команд в этом случае имеют не слишком большой объем, поэтому применение систем с данной архитектурой ограничивается обычно не слишком сложными задачами.

В чем же преимущество архитектуры с двумя шинами (гарвардской)? В первую очередь, в быстродействии.

Дело в том, что при единственной шине команд и данных процессор вынужден по одной этой шине принимать данные (из памяти или устройства ввода/вывода) и передавать данные (в память или в устройство ввода/ вывода), а также читать команды из памяти. Естественно, одновременно эти пересылки кодов по магистрали происходить не могут, они должны

производиться по очереди. Современные процессоры способны совместить во времени выполнение команд и проведение циклов обмена по системной шине. Использование конвейерных технологий и быстрой кэшпамяти позволяет им ускорить процесс взаимодействия со сравнительно медленной системной памятью. Повышение тактовой частоты и совершенствование структуры процессоров дают возможность сократить время выполнения команд. Но дальнейшее увеличение быстродействия системы возможно только при совмещении пересылки данных и чтения команд, ТО есть при переходе к архитектуре с двумя шинами.

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

Проще всего преимущества двухшинной архитектуры реализуются внутри одной микросхемы. В этом случае можно также существенно уменьшить влияние недостатков этой архитектуры. Поэтому основное ее применение — в микроконтроллерах, от которых не требуется решения слишком сложных задач, но зато необходимо максимальное быстродействие при заданной тактовой частоте.

  • Свежие записи
    • Нужно ли менять пружины при замене амортизаторов
    • Скрипят амортизаторы на машине что делать
    • Из чего состоит стойка амортизатора передняя
    • Чем стянуть пружину амортизатора без стяжек
    • Для чего нужны амортизаторы в автомобиле


    🎦 Видео

    СПРОСИ ЭКСПЕРТА: Выпуск 1. Чем отличается шина данных от ETL?Скачать

    СПРОСИ ЭКСПЕРТА: Выпуск 1. Чем отличается шина данных от ETL?

    Различия SOA и микросервисной архитектуры за 9 минутСкачать

    Различия SOA и микросервисной архитектуры за 9 минут

    Шины данных и интеграции | ESB шина данных | Интеграция 1С ERPСкачать

    Шины данных и интеграции | ESB шина данных | Интеграция 1С ERP

    Шины - ключевой элемент качественной архитектуры | Андрей ПутинСкачать

    Шины - ключевой элемент качественной архитектуры | Андрей Путин

    Виды топологий локальных сетей | Звезда, кольцо, шинаСкачать

    Виды топологий локальных сетей | Звезда, кольцо, шина

    Введение в архитектуру компьютеровСкачать

    Введение в архитектуру компьютеров

    Плюсы и минусы сервисной шины данных I Enterprise service bus (ESB) I kt.teamСкачать

    Плюсы и минусы сервисной шины данных I Enterprise service bus (ESB) I kt.team

    Системная шина процессораСкачать

    Системная шина процессора

    Интеграционные шиныСкачать

    Интеграционные шины

    Архитектура данных как главная ценность информационных технологий. Важно и сложно.Скачать

    Архитектура данных как главная ценность информационных технологий. Важно и сложно.

    Шина ДанныхСкачать

    Шина Данных

    [Smart4] [A.Basak] Архитектура гибридного мобильного приложения: Шина данныхСкачать

    [Smart4] [A.Basak] Архитектура гибридного мобильного приложения: Шина данных

    Архитектура шины DATAREON ESBСкачать

    Архитектура шины DATAREON ESB

    Топологии сетей | Курс "Компьютерные сети"Скачать

    Топологии сетей | Курс "Компьютерные сети"

    Трехшинная архитектура ЭВМСкачать

    Трехшинная архитектура ЭВМ

    Шины VS брокеры сообщений | KT.Team | Андрей ПутинСкачать

    Шины VS брокеры сообщений | KT.Team | Андрей Путин

    лекция 417 Чтение и запись данных на общую шинуСкачать

    лекция 417 Чтение и запись данных на общую шину
Поделиться или сохранить к себе:
Технарь знаток