Шина agp 1

Порт AGP є 32-розрядну шину з тактовою частотою 66 МГц, велика частина сигналів запозичена з шини PCI. Однак на відміну від PCI, порт AGP є двоточковий інтерфейс, який з'єднує графічний адаптер з пам'яттю і системною шиною процесора безпосередньо логікою і каналами даних чіпсета системної плати, що не перетинаючись з «вузьким місцем» - шиною PCI. Спочатку планувався перехід на тактову частоту 100 МГц, але і в специфікації AGP 2.0, і в пропонованому варіанті AGP8X фігурує лише одна частота - 66,6 МГц (нинішній межа і для шини PCI). «Прискорення» порту забезпечується наступними факторами:

  • конвеєризацією звернень до пам'яті;
  • подвоєною (2х) або учетверенной (4х) частотою передачі

даних (щодо тактової частоти порту);

Ідею конвейеризации звернень до пам'яті ілюструє рис. 6.11, де сравні¬ваются звернення до пам'яті PCI і AGP. У PCI під час реакції пам'яті на запит шина простоює (але не вільна). Конвеєрний доступ AGP дозволяє в цей час передавати такі запити, а потім отримати потік відповідей.

Мал. 30. Цикли звернення до пам'яті PCI і AGP

Подвоєння і учетверение частоти передачі даних забезпечує при частоті 66 МГц пропускну здатність до 533 (2х) і 1066 Мбайт / с (4х), що для 32-біт¬ной шини дещо несподівано. У цих режимах блоки даних передаються як по фронту, так і по спаду стробирующего сигналу (як в ATA Ultra DMA). Режими 2х і 4х можуть використовуватися, лише якщо їх підтримують і графічний адаптер, і системна плата.

Порт AGP призначений тільки для інтелектуального графічного адаптера, має SD-прискорювач (для стислості тут цей адаптер будемо називати просто прискорювачем). Системна логіка порту AGP відрізняється складним контролером пам'яті, який виконує глибоку буферизацию і високопродуктивне обслуговування запитів AGP (від адаптера) і інших своїх клієнтів - центрального процесора (одного або декількох) і шини PCI. AGP може реалізувати всю пропускну здатність 64-бітної системи пам'яті комп'ютера на процесорах Pentium і вище. При цьому можливі конкуруючі звернення до пам'яті як з боку процесора, так і з боку мостів шин PCI. Фірма Intel ввела підтримку AGP в чіпсети для процесорів Р6, проте немає «протипоказань» для застосування AGP і з Pentium.

Відзначимо, що багато переваг AGP носять потенційний характер і можуть бути реалізовані лише за підтримки апаратних засобів графічного адап¬тера і ПО. Графічний адаптер з інтерфейсом AGP може реально вести себе по-різному:

· Не задіяти конвейеризацию, а використовувати тільки

швидкий запис PCI (Fast Write);

· Не працювати з текстурами, розташованими в системній

пам'яті, але використовувати більш швидкий обмін даними між пам'яттю і локальним буфером;

· Використовувати оптимальний розподіл текстур між

локальної і системної пам'яттю, уникаючи конфліктів із зверненнями до пам'яті від процесора.

Порт AGP містить практично повний набір сигналів шини PCI і додаткові сигнали AGP. Пристрій, що підключається до порту AGP, може призначатися як виключно для операцій AGP, так і бути комбінацією AGP + PCI. Пристрій обов'язково має виконувати функції ведучого пристрою AGP (інакше порт AGP для нього втрачає сенс) і функції веденого пристрою PCI з усіма його атрибутами (конфігураційними регістрами і т. П.); додатково воно може бути і провідним пристроєм PCI. Для транзакцій в режимі AGP йому доступно тільки системне ОЗУ. У режимі PCI звернення можливі як до простору пам'яті, так і до простору введення-виведення і конфігураційному простору.

Концепцію конвеєра AGP ілюструє рис. 6.12. Порт AGP може перебувати в одному з чотирьох станів:

· DATA - передача даних конвейерізірованних

· AGP - постановка в чергу команди AGP;

· PCI - виконання транзакції в режимі PCI.

Мал. 31. Конвеєр AGP

· Використовується власний набір команд.

· Довжина транзакції явно вказується в запиті.

· Конвеєрні запити не гарантують когерентність

пам'яті і кеша. Для операцій, що вимагають когерентності, повинні використовуватися транзакції PCI.

Можливі два способи подачі команд AGP (постановки запитів в чергу), з яких в поточному конфігурації вибирається один, причому зміна способу «на ходу» не допускається:

· Запити вводяться по шині AD [31: 0] і С / ВЕ [3: 0] за допомогою

сигналу PIPE #, по кожному фронту CLK ведучий пристрій передає чергове подвійне слово запиту разом з кодом команди.

· Команди подаються через позасмугових (sideband) лінії

· 0000 (Read) - читання з пам'яті (п + 1) учетверенное слів

· 0001 (HP Read) - читання з високим пріоритетом;

· 0100 (Write) - запис в пам'ять;

· 0101 (HP Write) - запис з високим пріоритетом;

· 1000 (Long Read) - «довге» читання (п + 1) х4

учетверенное слів (до 256 байт даних);

· Тисячу один (HP Long Read) - «довге» читання з високим

• 1010 (Flush) - очищення, вивантаження даних всіх попередніх

· 1100 (Fence) - установка «огорож», що дозволяють

низькопріоритетним потоку записів не пропускати читання;

При внеполосной подачі команд по шині SBA [7: 0] передаються 16-бітові посилки чотирьох типів. Кожна посилка передається за два прийоми, по фронту і спаду синхросигналу. Тип посилки кодується старшими бітами:

· Тип 1: ОААА АААА АААА ALLL - поле довжини (LLL) і

· Тип 2: 10СС CCRA АААА АААА - код команди (сссс) і

· Тип 4: 1110 Отримати АААА АААА АААА - додаткові старші

· В режимі 1х кожна частина передається по фронту CLK;

· В режимі 2х для SBA використовується окремий стрибає

SB_STB, за його спаду пе¬редается старша частина, а щодо подальшого фронту - молодша. Частота цього стрибає (але не фаза) збігається з CLK, так що чергова команда може вводитися в кожному такті CLK.

· В режимі 4х використовується ще і додатковий

(Інверсний) стрибає SB_STB # .Старшая частина фіксується по спаду SB_STB, а молодша - щодо подальшого спаду SB_STB #. Частота стробов в два рази вище, ніж CLK, так що в кожному такті CLK може вводитися пара команд.

Звичайно, повний цикл введення команд (з посилками всіх чотирьох типів) з урахуванням посилки NOP виявляється більше - 10, 5 і 2,5 тактів частоти CLK для режимів 1х, 2х і 4х відповідно.

· 000 - провідному пристрою будуть передаватися дані

низькопріоритетного запиту читання, раніше поставленого в чергу (або виконується очищення);

· 001 - провідному пристрою будуть передаватися дані

високопріоритетного запиту читання;

· 010 - провідне пристрій повинен буде надавати

дані нізкопріорі¬тетного запиту записи;

· 011 - провідне пристрій повинен буде надавати

дані високопріоритетного запиту записи;

· 111 - провідному пристрою дозволяється поставити в

чергу команду AGP (сигналом Р1РЕ #) або почати транзакцію PCI (сигналом FRAME *).

Прискорювач дізнається лише тип і пріоритет команди, результати якої підуть в даній транзакції. Яку саме команду з черги відпрацьовує порт, прискорювач визначає сам, так як саме він ставив їх у чергу (йому відомий порядок). Ніяких тегів транзакцій (як, наприклад, в системній шині процесорів Р6) в інтерфейсі AGP немає. Є тільки 4 незалежних черзі для кожного типу команд (читання низькопріоритетне, читання високопріоритетних, запис фонової, запис високопріоритетних). Фази виконання команд різних черг можуть чергуватися довільним чином; порт має право виконувати їх в порядку, оптимальному з точки зору продуктивності. Реальний порядок виконання команд (читання і запису пам'яті) теж може змінюватися. Однак для кожної черги порядок виконання завжди збігається з порядком подачі команд (про це знають і прискорювач, і порт).

Запити AGP з високим пріоритетом для арбітра системної логіки є більш пріоритетними, ніж запити від центрального процесора і провідних пристроїв шини PCI. Запити AGP з низьким пріоритетом для арбітра мають пріоритет нижче, ніж від процесора, але вище, ніж від інших провідних пристроїв. Хоча прийнятий протокол ніяк явно не обмежує глибину черг, специфікація AGP формально її обмежує до 256 запитів. На етапі конфігурування пристрою система PnP встановлює реальне обмеження (в конфігураційному регістрі прискорювача) відповідно до його можливостями і можливостями системної плати. Програми, що працюють з прискорювачем (виконувані і локальним, і центральним процесорами), не повинні допускати перевищення числа необслужених команд в черзі (у них для цього є вся необхідна інформація). При передачі даних AGP керуючі сигнали, запозичені від PCI, іме¬ют майже таке ж призначення, що і в PCI. Передача даних AGP в режимі 1х дуже схожа на цикли PCI, але трохи спрощено процедуру квітірованія (оскільки це виділений порт і обмін виконується тільки з швидким контролером системної пам'яті). У режимах 2х і 4х є специфіка стробирования:

· В режимі 1х дані (4 байта на AD [31: 0]) фіксуються

одержувачем по позитивному перепаду кожного такту CLK, що забезпечує пікову пропускну здатність 66,6 х 4 = 266 Мбайт / с.

· В режимі 2х використовуються строби даних AD_STBO і

AD_STB 1 для ліній AD [0:15] і AD [16:31] відповідно. Строби формуються джерелом даних, приймач фіксує дані і по спаду, і по фронту стрибає. Частота стробов збігається з частотою CLK, що і забезпечує пікову пропускну здатність 66,6 х 2 х 4 = 533 Мбайт / с.

· В режимі 4х використовуються ще й додаткові

(Інверсні) строби AD_STBO # і AD_STB1 #. Дані фіксуються по спадів і прямих, і інверсних стробов. Частота стробов в два рази вище, ніж CLK, що і забезпечує пікову пропускну здатність 66,6 х 2 х 2 х 4 = тисяча шістьдесят шість Мбайт / с.

Порт AGP повинен відслідковувати стан готовності буферів прискорювача до здійснення або отримання даних транзакцій, поставлених в чергу. Сигналом RBF # (Read Buffer Full) прискорювач може інформувати порт про неготовність до прийому даних фонових транзакцій читання (до прийому високопріоритетних він повинен бути завжди готовий). Сигналом WBF # (Write Buffer Full) він інформує про нездатність прийняти першу порцію даних швидкого запису (Fast Write, FW).

Конфігурація пристроїв з інтерфейсом AGP виконується так само, як і звичайних пристроїв PCI, - через звернення до регістрів конфігураційного простору. При цьому AGP-пристрою не вимагають зовнішньої лінії IDSEL - у них внутрішній сигнал дозволу доступу до конфігураційним регістрів з'єднаний з лінією AD16, так що звернення до конфігураційним регістрів AGP забезпечується при AD16 = 1.

· Біти [31:24] - RQ, допустимий сумарний число

запитів, які перебувають у чергах: 0 - 1 команда, 255 - 256 команд;

· Біти [23:10] - резерв (0);

· Біт 9 - SB A, підтримка внеполосной подачі команд;

· Біти [8: 6] - резерв (0);

· Біт 4 - FW, підтримка швидкого запису;

· Біти 3 - резерв (0);

· Біти [2: 0] - RATE, підтримувані режими обміну по AD і SBA: біт 0 - 1х, біт 1 - 2х, біт 2 - 4х.

· Біти [31:24] - RQ_DEPTH, глибина черги команд;

· Біти [23:10] - резерв (0);

· Біт 9 - 5BA_ENABLE, установка внеполосной подачі

· Біт 8 - AGP_ENABLE, дозвіл операцій AGP;

· Біти [7: 6] - резерв (0);

· Біт 4 - FW_Enable, дозвіл швидкого запису;

· Біти 3 - резерв (0);

· Біти [2: 0] - DATA_RATE, установка режиму обміну:

· Біт 0 - 1х, біт 1 - 2х, біт 2 - 4х (повинен бути

встановлено лише один біт).