Визначення форматів трансляції для функцій адаптера під час виконання

 

ПОПЕРЕДНІЙ РІВЕНЬ ТЕХНІКИ

Це винахід відноситься, в цілому, до доступу до системної пам'яті в обчислювальному середовищі, і зокрема - до полегшення надання адреси, використовуваного при доступі до системної пам'яті.

Системна пам'ять доступна для запитів читання і запису. Ці запити можуть виходити від різних компонентів обчислювальної середовища, включаючи центральні процесори, а також адаптери. Кожен запит містить адресу, який повинен використовуватися для доступу до системної пам'яті. Проте у деяких випадках ця адреса не має однозначного співвідношення з фізичним місцем розташування в системній пам'яті. Отже, виконується трансляція адреси.

Трансляція адреси використовується, щоб транслювати адресу, який надано в одній формі, прямо непридатною для доступу до системної пам'яті, в іншу форму, яка використовується для доступу до фізичного розташування в системній пам'яті. Наприклад, віртуальний адреса, включається в запит, наданий центральним процесором, транслюється в дійсний або абсолютний адресу в системній пам'яті. В якості додаткового прикладу, адреса взаємозв'язку периферійних компонентів (PCI), наданий за�1, опублікована 14 червня 2007 (під авторством Biran та ін), "Memory Operations in a Virtualized System," Віртуальна пам'ять виділяється і зв'язується з примірником операційної системи. Віртуальна пам'ять транслюється в один чи більше дійсних адрес, причому один чи більше дійсних адрес не вимагають подальшої трансляції. Адаптер вводу-виводу робиться видимим одному або більш дійсним адресами. Примірнику операційної системи надаються один чи більше дійсних адрес для здійснення доступу до віртуальної пам'яті, пов'язаної з примірником операційної системи. Захист і трансляція адреси може виконуватися адаптером вводу-виводу або примірником операційної системи.

У публікації США No. 2008/0091915 А1, опублікованій 17 квітня 2008 (під авторством Moerti та ін), "Apparatus and Method for Communicating With a Memory Registration Enabled Adapter Using Cached Address Translations", надаються пристрій і спосіб для зв'язку з адаптером з можливістю реєстрації пам'яті, таким як канальний адаптер хоста InfiniBand™. З допомогою пристрою і способу служби драйверів пристроїв можуть запускатися драйвером пристрою для ініціалізації записів трансляції адреси в структурі даних трансляції адреси кореневого комплексу. Адреса структури даних �ам драйвера пристрою. Служби драйвера пристрою можуть створювати записи, структури даних трансляції адреси в структурі даних трансляції адреси, пов'язаної з кореневим комплексом, і запису трансляції адреси реєстрації пам'яті (MR) в структурі даних трансляції адреси MR адаптера. Структура даних трансляції адреси MR потім може використовуватися операціями вводу-виводу, щоб обходити структуру даних трансляції адреси, пов'язану з кореневим комплексом.

Патент США №7493425, виданий 17 лютого 2009 (ім'я Arndt та ін), "Method, System and Program Product for Differentiating Between Virtual Hosts on Bus Transactions and Associating Allowable Memory Access for an Input/Output Adapter that Supports Virtualization", описує спосіб, систему і комп'ютерний програмний продукт, який дозволяє образу системи в рамках віртуального сервера з безлічі системних образів зберігати ізольованість від інших системних образів, одночасно прямо відкриваючи частину своєї пов'язаної системної пам'яті, або всю системну пам'ять, розділеному адаптера PCI без необхідності аналізу та перевірки кожної операції вводу-виводу компонентом, яким дається доручення менеджером LPAR.

КОРОТКИЙ ВИКЛАД СУТІ ВИНАХОДУ

Недоліки наявного рівня техніки долаються, і додаткові переваги обеспечидукта для полегшення доступу до пам'яті.

КОРОТКИЙ ОПИС КРЕСЛЕНЬ

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

ФІГ.1 являє собою зображення одного варіанту здійснення обчислювальної середовища, яка повинна включати і використовувати одну або більше особливостей цього винаходу;

ФІГ.2 являє собою зображення одного варіанту здійснення додаткових подробиць про системної пам'яті і концентраторі вводу-виводу, представлених на фіг.1, згідно з однією особливістю цього винаходу;

ФІГ.3А являє собою зображення одного варіанту здійснення огляду логічної схеми для реєстрації адресного простору DMA (прямого доступу до пам'яті) для адаптера, згідно з однією особливістю цього винаходу;

ФІГ.3Б являє собою зображення одного прикладу логічної схеми для вибору формату трансляції, згідно з однією особливістю цього изобретени�іі адресного простору DMA для адаптера, згідно з однією особливістю цього винаходу;

ФІГ.4 являє собою зображення одного варіанту здійснення логічної схеми для обробки операції DMA, згідно з однією особливістю цього винаходу;

ФІГ.5А являє собою зображення одного прикладу рівнів трансляції, що застосовуються, коли весь адреса використовується для індексації в таблиці трансляції адрес, щоб транслювати адресу і здійснювати доступ до сторінки;

ФІГ.5Б являє собою зображення одного прикладу рівнів трансляції, що застосовуються, коли частина адреси ігнорується при індексації в таблиці трансляції адрес, відповідно з однією особливістю цього винаходу;

ФІГ.5В являє собою зображення прикладів різних CPU DAT-сумісних форматів, використовуваних у відповідності з однієї або більше особливостями цього винаходу;

ФІГ.5Г являє собою зображення прикладів різних форматів трансляції розширеного адреси введення-виведення, що використовуються у відповідності з однієї або більше особливостями цього винаходу;

ФІГ.6А - один з варіантів здійснення команди Modify PCI Function Controls, використовується згідно з однією з особливостей настоящегллюстрированной на ФІГ.6А згідно з однією з особливостей цього винаходу;

ФІГ.6В являє собою зображення одного варіанта здійснення іншого поля, використовуваного командою Modify PCI Function Controls, представленої на ФІГ.6А, згідно з однією особливістю цього винаходу;

ФІГ.6Г являє собою зображення одного варіанту здійснення вмісту блоку інформації про функції (FIB) згідно з однією особливістю цього винаходу;

ФІГ.7 - один з варіантів здійснення загального уявлення логіки команди Modify PCI Function Controls згідно з однією з особливостей цього винаходу;

ФІГ.8 являє собою зображення одного варіанту здійснення логічної схеми, пов'язаної з операцією реєстрації параметрів трансляції адрес вводу-виводу, яка може визначатися командою Modify PCI Function Controls, згідно з однією особливістю цього винаходу;

ФІГ.9 являє собою зображення одного варіанту здійснення логічної схеми, пов'язаної з операцією скасування реєстрації параметрів трансляції адрес вводу-виводу, яка може визначатися командою Modify PCI Function Controls, згідно з однією особливістю цього винаходу;

ФІГ.10 ілюструє один варіант здійснення комп'ютерного програмного ет один варіант здійснення хост-комп'ютерної системи, у якій міститься використовується одна або кілька особливостей цього винаходу;

ФІГ.12 ілюструє додатковий приклад комп'ютерної системи, в якій міститься використовується одна або кілька особливостей цього винаходу;

ФІГ.13 ілюструє інший приклад комп'ютерної системи, що містить комп'ютерну мережу, в якій міститься використовується одна або кілька особливостей цього винаходу;

ФІГ.14 ілюструє один варіант здійснення різних елементів комп'ютерної системи, в якій міститься використовується одна або кілька особливостей цього винаходу;

ФІГ.15А ілюструє один варіант здійснення виконавчого пристрої комп'ютерної системи по ФІГ.14, в якій міститься використовується одна або кілька особливостей цього винаходу;

ФІГ.15Б ілюструє один варіант здійснення пристрою переходу комп'ютерної системи по ФІГ.14, в якому міститься і використовується одна або кілька особливостей цього винаходу;

ФІГ.15В ілюструє один варіант здійснення пристрій завантаження/збереження комп'ютерної системи по ФІГ.14, в якій міститься використовується одна або кілька�ост-комп'ютерної системи, у якій міститься використовується одна або кілька особливостей цього винаходу.

ДЕТАЛЬНИЙ ОПИС

Згідно з однією особливістю цього винаходу надається функціональна можливість для полегшення доступу до пам'яті шляхом здійснення визначення під час виконання (наприклад, під час трансляції адреси) того, який формат трансляції був попередньо зареєстрований для використання при наданні адреси, використовуваного при прямому доступі до пам'яті. В одному прикладі початковий адресу надається функцією адаптера (званий в даному документі адреси введення-виводу), і формат трансляції, зареєстрований для функції, використовується, щоб на підставі спочатку представленого адреси надавати адресу, який використовується при доступі до системної пам'яті. Формат трансляції може вказувати, наприклад, тип таблиць(-и) трансляції, який повинен використовуватися, що ніякі таблиці трансляції не повинні вилучатись або що трансляція може бути обійдена.

Далі буде описано один із варіантів здійснення обчислювальної середовища, в якій міститься використовується одна або кілька особливостей цього изобретеrnational Business Machines Corporation. Основою сервера System z®є z/Architecture®пропонована International Business Machines Corporation. Подробиці, що стосуються z/Architecture®описані в публікації IBM®під назвою "z/Architecture-Principles of Operation", публікація IBM № SA22-7832-07 (лютий 2009 р.). IBM®, System z®і z/Architecture®є зареєстрованими товарними знаками International Business Machines Corporation (Армонк, штат Нью-Йорк, США). Інші назви, що використовуються в заявці, можуть бути зареєстрованими товарними знаками, товарними знаками чи назвами продуктів International Business Machines Corporation або інших компаній.

В одному з прикладів обчислювальна середа 100 містить один або декілька центральних процесорів (ЦП) 102, пов'язаних з системною пам'яттю 104 (інакше званої основною пам'яттю) за допомогою контролера 106 пам'яті. Для доступу до системної пам'яті 104 центральний процесор 102 видає запит на читання або запис, в якому міститься адреса, що використовується для доступу до системної пам'яті. Оскільки адресу, що міститься у запиті, зазвичай не може безпосередньо використовуватися для доступу до системної пам'яті, він транслюється на адресу, який може безпосередньо використовуватися для доступу до системної пам'яті. Адреса транслюється посредствсолютний адресу з використанням, наприклад, динамічної трансляції адрес (DAT).

Запит, включаючи транслированний адресу, приймається контролером 106 пам'яті. В одному з прикладів контролер 106 пам'яті складається з апаратного забезпечення та використовується для арбітражу при доступі до системної пам'яті і для забезпечення несуперечності пам'яті. Цей арбітраж здійснюється стосовно запитів, що приймаються від ЦП 102, а також запитах, що приймаються від одного або декількох адаптерів 110. Подібно центральних процесорів адаптери видають в системну пам'ять 104 запити на отримання доступу до системної пам'яті.

В одному з прикладів адаптером 110 є адаптер шини межсоединения периферійних компонентів (PCI) або адаптер на основі PCI Express (PCIe), що містить одну або кілька функцій PCI. Функція PCI подає запит, який вимагає доступ до системної пам'яті. Запит направляється на концентратор 112 вводу-виводу (наприклад, концентратор PCI) через один або більше комутаторів 114 (наприклад, комутаторів PCI). В одному з прикладів концентратор вводу-виводу складається з апаратного забезпечення, що включає один або кілька кінцевих автоматів.

Як використовується в даному документі, термін "адаптер" включає будь-тип адаптера (наприклад, адапт�інший тип адаптери вводу-виводу, тощо) В одному з варіантів здійснення адаптер містить одну функцію. Тим не менш, в інших варіантах здійснення адаптер може містити безліч функцій адаптера. В залежності від того, чи містить адаптер одну функцію або безліч функцій, застосовується одна або кілька особливостей цього винаходу. Крім того, у прикладах, представлених в даному документі, адаптер використовується взаємозамінно з функцією адаптера (наприклад, функцією PCI), якщо не зазначено інше.

Концентратор введення-виведення містить, наприклад, кореневої комплекс 116, який приймає запит від комутатора. Запит містить адресу вводу/виводу, який може бути потрібно транслювати, і тому кореневої комплекс надає на адресу блок 118 захисту та адреси трансляції. Цей блок, наприклад, являє собою апаратний блок, використовуваний для трансляції, при необхідності, адреси введення-виводу на адресу, прямо використовується для доступу до системної пам'яті 104, як більш докладно описано нижче.

Запит, ініційований на адаптері, що включає адреса (транслированний або початковий адресу, якщо трансляція не потрібна), надається на контролер 106 пам'яті за допомогою, наприклад, шини 120 введення/виведення-пам'ять. Контрол�альнейшие подробиці щодо системної пам'яті і концентратора вводу-виводу описуються з посиланням на фіг.2. У цьому варіанті здійснення контролер пам'яті не показаний. Однак концентратор вводу-виводу може бути з'єднаний з системною пам'яттю прямо або через контролер пам'яті. В одному прикладі системна пам'ять 104 включає одне або більше адресних просторів 200. Адресний простір - це конкретна частину системної пам'яті, яка була призначена для конкретного компонента обчислювальної середовища, такий як конкретний адаптер. В одному прикладі адресний простір доступно допомогою прямого доступу до пам'яті (DMA), ініційованого адаптером, і тому адресний простір у прикладах, наведених у цьому документі, називається адресним простором DMA. Однак в інших прикладах для доступу до адресного простору прямий доступ до пам'яті не використовується.

Крім того, в одному прикладі системна пам'ять 104 містить таблиці 202 трансляції адреси, використовувані для трансляції адреси з адреси, який прямо не використовується для доступу до системної пам'яті, адреса, яка використовується прямо. В одному варіанті здійснення є одна або більше таблиць трансляції адреси, приписаних до адресного простору DMA, і ці одна або більше таблиць трансляції адреси налаштовані на підставі, наприклад, розміру язальниці (або іншого блоку пам'яті), до якої необхідно здійснювати доступ.

В одному прикладі є ієрархія таблиць трансляції адреси. Наприклад, як показано на ФІГ.2, є таблиця 202а першого рівня (наприклад, таблиця сегментів), на яку вказує вказівник 218 IOAT (описаний нижче), і друга таблиця 202b більш низького рівня (наприклад, таблиця сторінок), на яку вказує запис 206а таблиці першого рівня. Один або більше бітів отриманого адреси 204 використовуються для індексації в таблиці 202а, щоб визначати положення конкретної запису 206а, яка вказує конкретну таблицю 202b більш низького рівня. Потім один або більше інших бітів адреси 204 використовуються для визначення положення конкретної запису 206b в цій таблиці. У цьому прикладі ця запис надає адреса, що використовується для визначення положення вірною сторінки, а додаткові біти в адресі 204 використовуються для визначення конкретного положення 208 на сторінці для виконання передачі даних. Тобто, адреса в запису 206b і вибрані біти отриманого адреси 204 PCI використовуються, щоб надавати адресу, прямо використовується для доступу до системної пам'яті. Наприклад, використовується адреса утворюється з'єднання старших бітів адреси запису 206b (наприклад, б�сторінки).

В одному прикладі адресний простір DMA конкретного адаптера призначає операційна система. Це призначення виконується за допомогою процесу реєстрації, який викликає ініціалізацію (наприклад, за допомогою надійного програмного забезпечення) запису 210 таблиці пристроїв для цього адаптера. Ця запис таблиці пристроїв знаходиться в таблиці 211 пристроїв, розташованої в концентраторі 112 вводу-виводу. Наприклад, таблиця 211 пристроїв знаходиться в блоці захисту і трансляції адреси концентратора вводу-виводу.

В одному прикладі запис (DTE) 210 таблиці пристроїв містить ряд полів на кшталт наступних:

формат 212: Це поле містить безліч бітів для вказівки різної інформації, включаючи, наприклад, формат трансляції адреси таблиці верхнього рівня таблиць трансляції адреси. CPU DAT-сумісний, розширеного адреси введення-виводу, обхідний, без вилучення, і т. п. Форм;

Розмір 213 сторінок: Це поле вказує розмір сторінки (або іншого блоку пам'яті), до якого має здійснюватися доступ;

базовий адресу 214 PCI і обмеження 216 PCI: Ці значення надають діапазон, використовуваний для визначення адресного простору DMA і перевірки допустимості отриманого адреси (наприклад, адреси PCI)�еса найвищого рівня, використовується для адресного простору DMA.

В інших варіантах здійснення в DTE може міститися більше, менше інформації або інша інформація.

В одному варіанті здійснення запис таблиці пристроїв, яка повинна використовуватися в конкретній трансляції, визначається з допомогою ідентифікатора (RID) реквестора, розташованого в запиті, який подається функцією 220 PCI, пов'язаної з адаптером (і/або частиною адреси). ID реквестора (наприклад, 16-бітове значення, що визначає, наприклад, номер шини, номер пристрою і номера функції) включається в запит, адресу вводу-виводу (наприклад, 64-бітний адресу PCIe), який повинен використовуватися для доступу до системної пам'яті. Запит, включаючи RID та адресу вводу-виводу, надається, наприклад, на асоціативну пам'ять (САМ) 230 допомогою, наприклад, комутатора 114, який використовується для надання індексного значення. Наприклад, САМ міститься безліч записів, кожна з яких відповідає індексу в таблиці пристроїв. Кожна запис в САМ містить значення RID. Якщо, наприклад, прийнятий RID відповідає значенню, що міститься в запису САМ, для визначення місцезнаходження запису в таблиці пристроїв використовується відповідний індекс з т�ження запису 210 таблиці пристроїв. Якщо відповідності немає, отриманий пакет відхиляється без здійснення доступу до системної пам'яті. (В інших варіантах здійснення САМ або інший пошук не потрібно, і RID використовується в якості індексу).

Після цього, поля запису таблиці пристроїв використовуються, щоб переконуватися в допустимості адреси та налаштування таблиць трансляції адреси. Наприклад, вступник в запиті адреса перевіряється апаратним забезпеченням концентратора вводу-виводу (наприклад, блоком захисту і трансляції адреси), щоб переконатися, що він знаходиться в межах, визначених базовою адресою 214 PCI і обмеженням 216 PCI, зберігаються в запису таблиці пристроїв, визначеної з допомогою RID запиту, надала адресу. Це гарантує, що адреса знаходиться в межах раніше зареєстрованого діапазону, для якого таблиці трансляції адреси налаштовані правильно.

В одному варіанті здійснення, щоб отримати адресу системної пам'яті (тобто адресу, прямо використовується для доступу до системної пам'яті), спочатку виконується процес реєстрації. Цей процес реєстрації реєструє конкретний адресний простір і, таким чином, пов'язані таблиці трансляції адрес, з конкретним реквестором, таким як конкреращаясь до фіг.3А, спочатку на етапі 300 операційна система, виконувана в одному з центральних процесорів, з'єднаних з системною пам'яттю, визначає розмір і місце розташування адресного простору, до якого повинен здійснювати доступ адаптер. В одному прикладі розмір адресного простору визначається базовою адресою PCI і обмеженням PCI, встановленими операційною системою. Операційна система визначає основу і обмеження з допомогою одного або більше критеріїв. Наприклад, якщо операційна система хоче, щоб адреси PCI прямо відображалися на віртуальні адреси ЦП, то база та обмеження встановлюються таким чином. У ще одному прикладі, якщо бажаним є додаткове ізолювання між адаптерами та/або образами операційної системи, що використовуються адреси вибираються так, щоб надавати ненакладивающиеся і окремі адресні простору. Розташування також визначається операційною системою і ґрунтується, наприклад, на характеристики адаптера.

Далі, як частина процесу реєстрації, на етапі 302 здійснюється визначення, який формат трансляції адреси повинен бути зареєстрований для функції адаптера. Тобто, здійснюється визначення, який формат до� доступ до системної пам'яті.

Згідно з однією особливістю цього винаходу, доступно безліч форматів трансляції адреси, і з цього безлічі форматів операційна система вибирає один формат для функції адаптера. Цей вибір ґрунтується, наприклад, на конфігурації адресних просторів, тип адаптера, і т. п. Різні можливі формати включають:

а) Формат обходу, в якому трансляція адреси обходиться. Цей формат може використовуватися, коли адаптер, для якого виконується реєстрація, є надійним адаптером. Адаптер вважається надійним адаптером, якщо, наприклад, апаратна конструкція адаптера є досить стійкою до помилок і захищеною, так що адреси не можуть бути перекручені. Наприклад, внутрішньо розвинений адаптер, який надає свої власні механізми трансляції та захисту, або адаптер, який управляється надійним апаратно-програмним забезпеченням, може вважатися надійним адаптером.

У контексті цього винаходу апаратно-програмне забезпечення містить, наприклад, мікрокод, милликод та/або макрокод процесора. Воно містить, наприклад, команди апаратного рівня та/або структури даних, що використовуються при реалізації високорівневого машинного копоставляют як мікрокод, який містить вивірене програмне забезпечення, або мікрокод, характерний для базового апаратного забезпечення, і управляє доступом операційної системи до апаратного забезпечення системи.

З власним підключенням адаптери вводу-виводу, наприклад. System z®застосовується трансляція адреси введення-виводу (IOAT), щоб забезпечувати захист і ізолювання доступу DMA до системної пам'яті адаптером. Однак існують класи адаптерів, які не потребують такого додатковий рівень захисту, включаючи описані вище. Таким чином, для цих адаптерів може бути обраний формат обходу;

b) Формат без витягу, в якому адреса, включений у початковий запит від адаптера, використовується без вилучення будь-яких таблиць трансляції. Цей формат може бути обраний, коли пам'ять є безперервною, розмір сторінки відомий і адресу призначений для обмеженої області (наприклад, сторінки в 4 Кб або 1 Мб), в якій не потрібно витяг ніяких таблиць трансляції з системної пам'яті. Адреса, що використовується для доступу до системної пам'яті (тобто виходить у результаті адресу, коли вибирається формат без вилучення), виходить з адреси покажчика IOAT. Наприклад, для сторінки розміром 4 Кб, �ий адреса, використовується для доступу до системної пам'яті;

c) CPU DAT-сумісний формат, в якому таблиці трансляції, використовувані для трансляції адрес вводу-виводу, сумісні з таблицями трансляції, використовуваними для трансляцій CPU DAT. To повинні використовуватися таблиці трансляції адрес, які подібні і сумісні з тим, що вже використовується для динамічної трансляції адреси ЦП. Це забезпечує легкість використання для тих операційних систем, які знайомі з використанням таблиць цих типів; дозволяє розділяти таблиці між ЦП і адаптером вводу-виводу; і надає певній операційній системі (наприклад, z/VM®) ефективність при обробці просторів DMA її гостей з посторінковим організацією. Доступні різні CPU DAT-сумісні формати, як більш докладно описується нижче з посиланням на фіг.5В;

d) Формат трансляції розширених адрес вводу-виводу, в якому для трансляцій адрес вводу-виводу використовуються таблиці трансляції адрес розширених. При цьому форматі таблиці трансляції адреси призначаються для операцій вводу-виводу і можуть бути більше за розміром, ніж зазвичай використовуються при трансляції адреси ЦП. Наприклад, можуть бути 1-Мб або навіть більш великі таблицаблици сторінок, можуть відрізнятися один від одного, вони можуть відрізнятися від самих сторінок. Збільшення традиційних розмірів зменшує транзакції шини і допомагає покращувати кешування трансляції вводу-виводу. Розмір таблиці сторінок та інших таблиць трансляції, як і розмір сторінки, визначають, скільки рівнів трансляції необхідно. Приклади різних форматів трансляції розширених адрес вводу-виводу описуються більш докладно нижче з посиланням на фіг.5Г.

Один варіант здійснення процесу, що виконується операційною системою для вибору формату трансляції адреси з безлічі доступних форматів трансляції адреси, який повинен використовуватися для функції адаптера, для якої виконується реєстрація, описується з посиланням на фіг.3Б. В одному прикладі, щоб зробити цей вибір, операційна система розглядає свої внутрішні структури, як вона хоче адресувати пам'ять, тип адаптера, і т. п.

Звертаючись до фіг.3Б, у цьому прикладі, на етапі запиту 310 спочатку здійснюється визначення, чи є адаптер, для якого виконується реєстрація, надійним адаптером. Це визначення здійснюється, наприклад, перевіркою вказівки в структурі даних (наприклад, зберігається в пам'яті). Якщо операційна і бути обійдена трансляція. Наприклад, операційна система визначає, на підставі, наприклад, зберігається індикатора, що є прийнятним обхід. Якщо операційна система вирішує, що трансляція повинна бути обійдена, то на етапі 313 вибирається формат обходу, і адресу, надану реквестором, прямо використовується для доступу до системної пам'яті.

Повертаючись до етапу запиту 310, якщо, однак, адаптер не є надійним адаптером, або якщо обхід не повинен бути обраний на етапі 312, то на етапі запиту 314 здійснюється подальше визначення, повинен бути вибраний формат без вилучення. Для цього вибору операційна система розглядає, наприклад, є пам'ять безперервної, і розмір сторінки (або іншого розділу пам'яті). Якщо конфігурація дозволяє формат без вилучення, то за умови проходження будь-яких перевірок на правильність, на етапі 316 вибирається формат без вилучення. Отже, виходить у результаті адресу запиту PCI виходить прямо з адреси покажчика IOAT.

Повертаючись до етапу запиту 314, якщо формат без вилучення не вибрано, то на етапі запиту 318 здійснюється подальше визначення, повинен запит використовувати таблиці трансляції адрес CPU DAT-сумісності. І знову операційна ѕсли він є бажаним форматом, і за умови проходження будь-яких перевірок на правильність, на етапі 320 вибирається CPU DAT-сумісний формат. Зокрема, у цьому прикладі, один CPU DAT-сумісний формат вибирається з одного або більш доступних форматів, які описуються нижче.

Однак якщо CPU DAT-сумісність не обрана, то на етапі запиту 322 здійснюється подальше визначення, чи є бажаним формат трансляції розширених адрес вводу-виводу. Тобто, знову, приймається рішення на підставі, наприклад, структур, які повинні використовуватися, і адресації пам'яті. Якщо є бажаним формат трансляції розширених адрес вводу-виводу, то за умови проходження будь-яких перевірок на правильність, на етапі 324 вибирається формат трансляції розширених адрес вводу-виводу. Зокрема, у цьому прикладі, формат трансляції розширених адрес вводу-виводу вибирається з одного або більш доступних форматів, як описано нижче.

Однак якщо на всі ці запити виходить негативну відповідь, то на етапі 326 конкретний формат вибирається операційною системою від імені реквестора. Наприклад, може вибиратися формат за замовчуванням. Цей формат за замовчуванням може бути CPU DAT-сумісним форматом або форматом трансляустановлени тільки для введення-виведення, але ближче пов'язані з таблицями формату CPU DAT. Існує безліч варіантів. Крім того, хоча в цьому прикладі запити, представлені на фіг.3Б розташовані в конкретному порядку, в інших прикладах вони можуть бути відрізняються порядках.

Згідно ФІГ.3А, згодом, за умови, що таблиці трансляції адреси необхідні, на етапі 304 створюються одна або більше таблиць трансляції адреси, щоб покривати це адресний простір DMA. В одному прикладі створення включає побудову таблиць і розміщення належних адрес в табличних записах. В якості прикладу, одна з таблиць трансляції адреси є таблицею 4-Кб сторінок, має 512 64-бітних записів, і кожна запис включає адреса 4-Кб сторінки, сумісний з призначеним адресним простором.

Після цього на етапі 306 адресний простір DMA реєструється для адаптера, як більш докладно описується з посиланням на фіг.3В. У цьому прикладі передбачається, що є одна функція PCI на адаптер, а тому один ID реквестора на адаптер. Ця логіка виконується, наприклад, центральним процесором, пов'язаних з системною пам'яттю, з урахуванням запиту операційної системи.

Звертаючись до фіг.3В, спочатку, в одному варіанті здійснення, на етапі 350 вибираетс�тора буде використовуватися для визначення положення записи таблиці пристроїв.

Додатково, базовий адреса PCI і обмеження PCI на етапі 352 зберігаються записи таблиці пристроїв. Крім того, на етапі 354 формат таблиці трансляції адреси найвищого рівня зберігається в полі формату запису таблиці пристроїв. Наприклад, поле формату включає безліч бітів, і один або більше з цих бітів вказують формат таблиці найвищого рівня і вибраний формат трансляції адреси (наприклад, рівня сегментів, CPU DAT-сумісний). Ще В одному варіанті здійснення один або більше бітів вказують найвищий рівень, і один або більше інших бітів вказують певний формат трансляції (наприклад, обхідний, без вилучення, конкретний CPU DAT-сумісний формат, конкретний формат трансляції розширеного адреси введення-виводу, тощо).

Додатково, на етапі 356 покажчик трансляції (IOAT) адреси введення-виводу, використовуваний, щоб вказати на таблицю трансляції адреси найвищого рівня (або сторінку, у випадку без вилучення), якщо є, зберігається в запису таблиці пристроїв. На цьому реєстрація завершується.

З урахуванням виконання реєстрації, адресний простір DMA і відповідні таблиці адреси трансляції, якщо є, готові до використання, також як і запис таблиці устройупа до системної пам'яті описуються з посиланням на фіг.4. Обробка, описана нижче, виконується концентратором вводу-виводу. В одному прикладі логіку виконує блок захисту і трансляції адреси концентратора вводу-виводу.

В одному варіанті здійснення спочатку на етапі 400 на концентраторі вводу-виводу виходить запит DMA. Наприклад, функція PCI подає запит, який направляється на концентратор PCI допомогою, наприклад, комутатора PCI. Використовуючи в запиті ID реквестор, на етапі 402 визначається положення відповідного запису таблиці пристроїв. Після цього на етапі запиту 404 здійснюється визначення, чи є запис таблиці пристроїв допустимої. В одному прикладі допустимість визначається перевіркою біта допустимості в самому записі. Цей біт встановлюється, наприклад, з урахуванням виконання запиту функції активації операційною системою. Якщо активовано, біт встановлюється, наприклад, на одиницю (тобто, допустимий); інакше він залишається нульовим (тобто, неприпустимим). У ще одному прикладі біт може встановлюватися, коли завершується процес реєстрації.

Якщо запис таблиці пристроїв є неприпустимою, на етапі 405 надається помилка. Інакше на етапі запиту 406 здійснюється подальше визначення, чи є адреса PCI, предоставленнза межами допустимого діапазону, і на етапі 407 надається помилка. Однак якщо адреса PCI більше базової адреси або дорівнює йому, то на етапі запиту 408 здійснюється інше визначення, більше адресу PCI, ніж граничне значення PCI запису в таблиці пристроїв. Якщо адреса PCI більше, ніж обмеження, то на етапі 409 знову надається помилка, оскільки адресу знаходиться за межами допустимого діапазону. Однак якщо адреса знаходиться в межах допустимого діапазону, то обробка триває.

В одному прикладі на етапі запиту 410 здійснюється визначення, вказує формат адреси трансляції, визначений у запису таблиці пристроїв, обхідну трансляцію. Якщо так, то адреса передається прямо на контролер пам'яті по шині ввода-виводу для здійснення доступу до пам'яті без будь-якого вилучення записів трансляції. На етапі 426 концентратор вводу-виводу продовжує обробку, щоб робити можливим витяг/збереження даних за адресою.

Повертаючись до етапу запиту 410, якщо формат не вказує обхід, то на етапі запиту 412 здійснюється наступний запит, вказує формат можливість прямого доступу до пам'яті на підставі покажчика IOAT, не вимагаючи будь-якого вилучення таблиць трансляції адреси. Якщо ніяке витяг)�осіб трансляції адреси з системної пам'яті немає необхідності. Виходить у результаті адресу відправляється на контролер пам'яті і використовується для визначення положення сторінки і запису на сторінці. Наприклад, якщо розмір сторінки становить 4 Кб, то біти 11:0 використовуються як зсув від покажчика IOAT. Концентратор вводу-виводу на етапі 426 продовжує обробку, щоб робити можливим витяг/збереження даних у цій запису сторінки.

Повертаючись до етапу запиту 412, з іншого боку, якщо використання таблиць трансляції необхідно, то на етапі 416 формат, наданий у запису таблиці пристроїв використовується для визначення типу таблиці трансляції (наприклад, CPU DAT-сумісна або трансляція розширеного адреси введення-виводу) і для визначення бітів адреси PCI в адресі, який необхідно використовувати для трансляції адреси. Наприклад, якщо формат вказує формат трансляції розширеного адреси введення-виводу з 4-Кб сторінками і 4-Кб таблицями трансляції адреси, які описані нижче, і таблиця верхнього рівня є таблицею першого рівня з 4-Кб сторінками, то біти 29:21 адреси використовуються для індексації всередині таблиці першого рівня; біти 20:12 використовуються для індексації всередині таблиці сторінок; і біти 11:0 використовуються для индексаци�або сторінки даного розміру. Наприклад, для 4-Кб сторінки з адресацією на рівні байтів для адресації 4096 байтів використовуються 12 біт; а для 4-Кб таблиці сторінок з 512 записами, по 8 байтів кожна, для адресації 512 записів використовується 9 біт, і т. д.

Потім, на етапі 418 концентратор PCI отримує відповідний запис таблиці трансляції адрес. Наприклад, спочатку з допомогою покажчика IOAT запису таблиці пристроїв визначається положення таблиці трансляції найвищого рівня. Потім біти адреси (ті, які знаходяться після старших бітів, використовуваних для перевірки допустимості, а не трансляції; наприклад, після бітів 29:21 у наведеному вище прикладі) використовуються, щоб визначати положення конкретної запису в таблиці.

Потім на етапі запиту 420 здійснюється визначення на підставі, наприклад, формату, наданого в запису таблиці пристроїв, має знайдений запис трансляції адреси вірний формат. Наприклад, формат запису таблиці пристроїв порівнюється з форматом, зазначеним у запису адреси трансляції. Якщо вони рівні, то формат запису таблиці пристроїв є допустимим. Якщо ні, на етапі 422 вказується помилка; інакше обробка триває на етапі запиту 424 визначенням того, чи є ця таблиця після� необхідні для одержання дійсного або абсолютної адреси, або ж було визначено положення записи таблиці нижнього рівня. Це визначення здійснюється на підставі наданого формату і розміру вже оброблених таблиць. Якщо це не остання таблиця, то обробка триває на етапі 418. Інакше концентратор вводу-виводу продовжує обробку, щоб на етапі 426 робити можливим отримання або збереження даних транслированному адресою. Наприклад, концентратор вводу-виводу направляє певну адресу, що визначена на підставі початкової адреси і вибраного формату трансляції, на контролер пам'яті (або прямо в пам'ять), який використовує його, щоб витягувати і/або зберігати дані з пам'яті DMA/в пам'ять DMA.

Подальші подробиці щодо використання таблиць трансляції і різних форматів трансляції описуються з посиланням на фіг.5А-5Г. В одному прикладі, як показано з посиланням на фіг.5А-5Б, число рівнів трансляції, а отже і кількість витягів, потрібних для виконання трансляції, зменшується, наприклад, шляхом ігнорування старших бітів адреси під час трансляції і використанням тільки молодших бітів, щоб проходити таблиці трансляції. Позначення старших бітів і молодших бітів засноване, наприклад, на розмір�дресом додатково показано в наступних прикладах.

На початку, згідно ФІГ.5А наводиться приклад, в якому весь адреса використовується для трансляції адреси/доступу до пам'яті. При цьому способі існуючого рівня техніки необхідні шість рівнів таблиць трансляції, включаючи таблицю сторінок. На початок таблиці найвищого рівня (наприклад, в цьому прикладі - таблиці 5 рівня) вказує покажчик IOAT, і потім біти адреси PCI використовуються для визначення положення записи в таблиці. Запис кожної таблиці трансляції указує на початок таблиці трансляції більш низького рівня або на сторінку (наприклад, запис у таблиці 5 рівня указує на початок таблиці 4 рівня, і т. д.).

У цьому прикладі адресний простір DMA (DMAAS) має розмір 6 Мб, і кожна таблиця займає 4 Кб, маючи максимум 8 512-байтних записів (крім таблиці 5 рівня, яка підтримує тільки 128 записів на підставі розміру адреси). Адреса становить, наприклад, 64 біта: FFFF С000 0009 С600. На початок таблиці 5 рівня вказує покажчик IOAT, і біти 63:57 адреси PCI використовуються для індексування в таблиці 5 рівня, щоб визначати позицію початку таблиці 4 рівня; біти 56:48 адреси PCI використовуються для індексації в таблиці 4 рівня, щоб визначати позицію початку таблиці 3 рівня; біти 47:39 використовуються для інд�сации в таблиці 2 рівня, щоб визначати позицію початку таблиці 1 рівня; біти 29:21 використовуються для індексації в таблиці 1 рівня, щоб визначати позицію початку таблиці сторінок; біти 20:12 використовуються для індексації в таблиці сторінок, щоб визначати позицію початку сторінки; і біти 11:0 використовуються, щоб визначати положення записи в 4-килобитной сторінці. Таким чином, у цьому прикладі, всі біти адреси використовуються для трансляції доступу. Це відрізняється від прикладу, представленого на фіг.5Б, в якому адресний простір має той же розмір (наприклад, 6 мегабайт), і адреса той же, але спосіб трансляції ігнорує деякі біти адреси під час трансляції. У цьому прикладі біти 63:30 адреси ігноруються при трансляції. Покажчик IOAT указує на початок таблиці 1 рівня, і біти 29:21 адреси PCI використовуються для індексації в таблиці 1 рівня, щоб визначати позицію початку таблиці сторінок; біти 20:12 використовуються для індексації у відповідній таблиці сторінок, щоб визначати позицію початку сторінки; а біти 11:0 використовуються для індексації в 4-Кб сторінці.

Як показано, таблиця 500 першого рівня містить 3 записи 502, кожна з яких надає адресу до однієї з трьох таблиць 504 сторінок. Число необхідних табЂва DMA, розміру таблиць трансляції та/або розміру сторінок. У цьому прикладі адресний простір DMA становить 6 Мб, і кожна таблиця сторінок становить 4 Кб, маючи до 512 записів. Отже, кожна таблиця сторінок може відображати до 2 Мб пам'яті (4 Кб % 512 записів). Таким чином, для 6-Мб адресного простору потрібні три таблиці сторінок. Таблиця 1 рівня може містити три записи, по одній для кожної таблиці сторінок, і тому в цьому прикладі ніякі таблиці трансляції адреси додаткових рівнів не потрібні.

Крім того, як описано вище, для трансляції адреси можуть використовуватися різні формати таблиці трансляції адрес, і можуть існувати зміни у форматах. Наприклад, можуть існувати різні CPU DAT-сумісні формати, приклади яких описуються з посиланням на фіг.5В. Як показано, в якості прикладів, один CPU DAT-сумісний формат є CPU DAT-сумісним форматом 550 з 4-Кб сторінкою, а інший є CPU DAT-сумісним форматом 552 з 1-Мб сторінкою. Кількість показаних бітів є числом бітів адреси, що використовуються для індексації цій сторінці або таблиці (або іншого визначення положення записи в цій сторінці або таблиці). Наприклад, 12 біт 554 адреси PCI використовуються як байтове смещени�іце 564 сегментів, і т. д. Під визначеною таблицею трансляції адреси розташовується максимальний розмір адресного простору, підтримуваного цією таблицею трансляції адреси.

Наприклад, таблиця 560 сторінок підтримує 1-Мб адресний простір DMA; таблиця 564 сегментів підтримує 2 Гб адресний простір DMA, і т. д. На цій фігурі, також як і на фіг.5Г, К= кілобайти, М= мегабайти, G= гігабайти, Т= терабайти, Р= петабайти і Е= экзабайти.

Як показано, в міру збільшення розміру сторінки число рівнів таблиць трансляції зменшується. Наприклад, для 4-Кб сторінки 556 потрібна таблиця сторінок, але вона не потрібна для 1-Мб сторінки. Можливі інші приклади, і варіанти.

Різні приклади форматів трансляції розширеного адреси введення-виводу представлені на фіг.5Г. Наприклад, показані наступні формати: 4-Кб таблиця 570 трансляції адреси з 4-Кб сторінками; 1-Мб таблиці трансляції 572 адреси з 4-Кб сторінками; 1-Мб таблиці 574 трансляції адреси з 1-Мб сторінками. Як і у випадку з CPU DAT-сумісних форматів, число перерахованих бітів являє собою ті біти, які використовуються для визначення положення записи в конкретній таблиці. Наприклад, під номером посилання 576, 12 бітів являють собою зміщення в 4-Кб сторінці. Аналогичниц вводу-виводу допускає адресний простір DMA, яке має розмір 2 мегабайти. Існує багато інших прикладів.

В одній конкретній реалізації, щоб виконати реєстрацію адресного простору DMA в адаптер, використовується команда, звана командою Modify PCI Function Controls (MPFC). Наприклад, операційна система визначає, який формат адреси трансляції вона хоче використати, створює таблиці трансляції адреси для цього формату, а потім подає команду MPFC з цим форматом, включеним в якості операнда команди. В одному прикладі формат і інші операнди команди включаються в інформаційний блок функції (описано нижче), який є операндом команди. Інформаційний блок функції потім використовується для оновлення DTE, і, в одному варіанті здійснення, - необов'язково запису таблиці функцій (FTE), яка включає робочі параметри адаптера.

Один варіант здійснення подробиць, що відносяться до цієї команди, і конкретно до процесу реєстрації, описується з посиланням на фіг.6А-9. Як показано на фіг.6А, команда 600 Modify PCI Function Controls містить, наприклад, код 602 операції, вказує команду Modify PCI Function Controls; перше поле 604, яке вказує місце розташування, в якому знаходиться різна інформація, що стосується функції адаптера, для якої вуст�формації про функції PCI (FIB). Вміст місцезнаходжень, зазначених у полях 1 і 2, додатково описано далі.

В одному з варіантів здійснення у полі 1 вказаний регістр загального призначення, в якому міститься різна інформація. Як показано на ФІГ.6Б, у вмісті регістрі міститься, наприклад, дескриптор 610 функції, який ідентифікує дескриптор функції адаптера, від імені якого виконується команда зміни; адресний простір 612, що вказує адресний простір в пам'яті, відповідне функції адаптера, зазначеної дескриптором функції; управління 614 операцією, яка визначає операцію, виконувану для функції адаптера; і покажчик 616 стану, який вказує стан команди при її виконанні з використанням заданого коду.

В одному з варіантів здійснення дескриптор функції містить, наприклад, дозволяє індикатор, що вказує, активовано дескриптор, номер функції, що вказує функцію адаптера (це статичний код, який може використовуватися для індексації в таблиці функцій); і номер примірника, який вказує конкретний екземпляр цього дескриптора функції. Для кожної функції адаптера передбачений один дескриптор функції, що використовується для виготовлення�ие параметри та/або іншу інформацію, пов'язану з функцією адаптера. В якості одного з прикладів, запис у таблиці функцій містить:

номер примірника: в цьому полі вказаний конкретний екземпляр дескриптора функції адаптера, відповідний запис в таблиці функцій;

індекс 1...n запису в таблиці пристроїв (DTE): може існувати один або кілька індексів таблиці пристроїв, кожним з яких є індекс в таблиці пристроїв для визначення місцезнаходження запису в таблиці пристроїв (DTE). Для кожної функції адаптера існує одна або декілька записів у таблиці пристроїв, кожна з яких містить інформацію, пов'язану з функцією адаптера, включаючи інформацію, яка використовується для обробки запитів функції адаптера (наприклад, запитів DMA, запитів MSI), та інформацію, що стосується запитів, пов'язаних з функцією адаптера (наприклад, команд PCI). Кожного запису в таблиці пристроїв відповідає одне адресний простір в пам'яті, присвоєне функції адаптера. Функція адаптера може мати одне або кілька адресних просторів в системній пам'яті, присвоєних функції адаптера;

індикатор зайнятості: у цьому полі зазначено, зайнята функція адаптера;

індикатор стану постійної помилки: у цьому полі указу�ія: у цьому полі зазначено, ініційовано чи відновлення функції адаптера;

індикатор повноважень: у цьому полі зазначено, чи має операційна система, яка намагається керувати функцією адаптера, повноважень для цього;

дозволяє індикатор: у цьому полі зазначено, дозволено функція адаптера (наприклад, 1= дозволена, 0= заблокована);

ідентифікатор реквестора (RID): це ідентифікатор функції адаптера, що містить, наприклад, номер шини, номер пристрою і номера функції.

В одному з прикладів це поле використовується для доступу до конфігураційного простору функції адаптера. (Пам'ять адаптера може бути визначена як адресні простори, що містять, наприклад, конфігураційне простір, область вводу-виводу і/або одну або декілька областей пам'яті). В одному з прикладів доступ до конфігураційного простору може здійснюватися шляхом вказівки конфігураційного простору в команді, яку операційна система (або інша конфігурація) передає функції адаптера. У команді вказаний зрушення в конфігураційному просторі і дескриптор функції, що використовується для визначення місця розташування відповідного запису в таблиці функцій, яка містить RID. Апаратно-програмне забезпечення приймається�ування запиту концентратора вводу-виводу використовується RID, a концентратора вводу-виводу створює запит для доступу до адаптера. Місцезнаходження функції адаптера визначається на підставі RID, а зміщення визначає зміщення в конфігураційному просторі функції адаптера.

Індексний регістр (BAR) (1-n): у цьому полі міститься безліч цілих чисел без знаку, що позначаються як BAR0-BARnі відповідних спочатку заданої функції адаптера, при цьому їх значення також зберігаються в індексних регістрах, відповідних функції адаптера. У кожному BAR вказаний початковий адресу області пам'яті або області вводу-виводу функції адаптера, а також вказаний тип адресного простору, тобто, чи є вона, наприклад, 64 - або 32-бітної областю пам'яті або 32-бітної областю введення-виведення.

В одному з прикладів він використовується для доступу до пам'яті і/або області вводу-виводу функції адаптера. Наприклад, зсув, зазначене в команді доступу функції адаптера, підсумовується зі значенням в індексному регістрі, відповідному адресного простору, вказаною в команді, щоб отримати адресу для використання з метою доступу до функції адаптера. Ідентифікатор адресного простору, що міститься в команді, ідентифікує адресний простір у ф�жество цілих чисел без знаку, позначаються як SIZE0-SIZEn. Значення поля розміру, коли воно є ненульовим, відображає розмір кожного адресного простору, при цьому кожен запис відповідає раніше описаному BAR.

Додаткові подробиці щодо BAR і Size описані нижче.

1. Коли BAR не застосовується для функції адаптера, поле BAR і його відповідне поле розміру обидва зберігаються як нулі.

2. Коли поле BAR-або адресний простір вводу-виводу, або 32-бітне адресний простір пам'яті, відповідне поле розміру є ненульовим і являє розмір адресного простору.

3. Коли поле BAR-64-бітове адресний простір пам'яті,

а. Поле BARnявляє молодші біти адреси.

b. Наступне поле BARn+1є старші біти адреси.

с. Відповідне поле SIZEnє ненульовим і являє розмір адресного простору.

d. Відповідне поле SIZEn+1є незначущим і зберігається рівним нулю.

Інформація внутрішньої маршрутизації: Ця інформація використовується для виконання конкретної маршрутизації до адаптера. Вона включає, наприклад, інформацію адресації вузла, схеми процесора і концентратора.

Улі знаходиться адаптер в змозі помилки, а також інші вказівки.

В одному прикладі вказівник зайнятості, покажчик стану постійної помилки і покажчик ініційованого відновлення встановлюються на підставі поточного контролю, виконуваного вбудованим програмним забезпеченням. Крім того, покажчик дозволу встановлюється, наприклад, на підставі алгоритму; та інформація BAR ґрунтується на конфігураційної інформації, виявленої процесором (наприклад, вбудованим програмним забезпеченням процесора) під час обходу шини. Інші поля можуть встановлюватися на підставі конфігурації, ініціалізації та/або подій. В інших варіантах здійснення запис таблиці функцій може містити більше або менше інформації, або іншу інформацію. Міститься інформація може залежати від операцій, підтримуваних функцією адаптера або доступною для неї.

Згідно ФІГ.6В, в одному прикладі, поле 2 вказує логічний адресу 620 блоку (FIB) інформації про функції PCI, який містить інформацію щодо пов'язаної функції адаптера. Інформаційний блок функції використовується для поновлення запису таблиці пристроїв і/або запису таблиці функцій (або іншого місця розташування), пов'язаної з функцією адаптера. Інформація збе�додаткові подробиці щодо інформаційного блоку (FIB) функції описуються з посиланням на ФІГ.6Г. В одному варіанті здійснення інформаційний блок 650 функції містить такі поля:

Формат 651: Це поле визначає формат FIB.

Управління 652 перехопленням: Це поле використовується для вказівки того, чи призводить гостьове виконання конкретних команд гостем сторінкового режиму до перехоплення команд.

Вказівка 654 помилки: це поле містить вказівку стану помилки для прямого доступу до пам'яті і переривань адаптера. Коли біт встановлений (наприклад, 1), під час виконання прямого доступу до пам'яті або переривання адаптера для функції адаптера були виявлені одна або більше помилок.

Завантаження/збереження блокована 656: це поле вказує, блоковані операції завантаження/збереження.

Достовірність 658 функції PCI: це поле включає управління активацією функції адаптера. Коли біт встановлений (наприклад, 1), вважається, що функція адаптера для операцій вводу-виводу активована.

Адресний простір зареєстровано 660: це поле включає управління активацією прямого доступу до пам'яті для функції адаптера. Коли поле встановлено (наприклад, 1), прямий доступ до пам'яті активований.

Розмір 661 сторінки: це поле вказує розмір сторінки або іншого блоку пам'яті для звернення посредого простору в системній пам'яті, призначеного для функції адаптера. Він являє молодший віртуальний адреса, який дозволено використовувати функції адаптера для прямого доступу до пам'яті до певного адресного простору DMA.

Адресний обмеження PCI (PAL) 664: Це поле являє старший віртуальний адреса, який дозволено використовувати функції адаптера для доступу в межах певного адресного простору DMA.

Покажчик (IOAT) 666 трансляції адрес вводу-виводу: покажчик трансляції адрес вводу-виводу вказує першу з будь-яких таблиць трансляції, використовуваних трансляцією віртуальних адрес PCI, або він може прямо вказувати абсолютний адресу кадру пам'яті, який є результатом трансляції.

Підклас 668 переривання (ISC): Це поле містить підклас переривання, використовується для того, щоб представляти переривання адаптера для функції адаптера.

Кількість переривань (NOI) 670: це поле вказує число відмінних кодів переривань, прийнятих для функції адаптера. Це поле також визначає розмір у бітах, бітового вектора переривань адаптера, зазначеного полями адреси бітового вектора переривань адаптера і зсуву бітового вектора переривань адаптера.

Адреса 672 бітового вектора переривань адапте�послуговується при обробці переривань.

Зсув 674 бітового вектора переривань адаптера: Це поле визначає зсув першого біта бітового вектора переривань адаптера для функції адаптера.

Адреса 676 сумарного біта переривань адаптера (AISB): це поле надає адреса, яка вказує сумарний біт переривань адаптера, який необов'язково використовується при обробці переривань.

Зсув 678 сумарного біта переривань адаптера: Це поле надає зрушення в сумарному бітовому вектор переривань адаптера.

Адреса 680 блоку (FMB) вимірювання функції: це поле надає адресу блоку вимірювання функції, використовуваного для того, щоб збирати вимірювання щодо функції адаптера.

Ключ 682 блоку вимірювання функції: це поле містить ключ доступу для доступу до блоку вимірювання функції.

Управління 684 повідомлення сумарного біта: це поле вказує, використовується сумарний бітовий вектор.

Маркер 686 авторизації команд: Це поле використовується, щоб визначати, авторизований гість посторінкового режиму збереження виконувати команди PCI без втручання хосту.

В одному з прикладів в системі z/Architecture®за допомогою команди Start Interpretive Execution (SIE) в режимі інтерпретації на рівні 2 виконується гість з сторінкової азбиение у фізичної постійної пам'яті. Якщо операційною системою при цьому логічному розбиття є z/VM®вона передає команду SIE для виконання своїх гостьових (віртуальних) машин у своєму V=V (віртуальному) запам'ятовуючому пристрої. Отже, гіпервізор LPAR використовує рівень-1 SIE, а гіпервізор z/VM®використовує рівень-2 SIE;

формат 687 трансляції адреси: Це поле вказує вибраний формат для трансляції адреси таблиці трансляції найвищого рівня, яка повинна використовуватися в трансляції (наприклад, вказівка таблиці найвищого рівня (наприклад, таблиці сегментів, області 3rd, тощо) і вказівка вибраного формату (наприклад, CPU DAT сумісний, розширений формат трансляції адреси введення-виводу, формат обходу, формат без витяги)).

Інформаційний блок функції, зазначений у команді Modify PCI Function Controls використовується для того, щоб змінювати обрану запис таблиці пристроїв, запис таблиці функцій та/або інші елементи управління вбудованого програмного забезпечення, пов'язані з функцією адаптера, зазначеної в команді. Шляхом зміни запису таблиці пристроїв, записи таблиці функцій та/або інших елементів управління вбудованого програмного забезпечення адаптера надані певні сервіси. Эттановку блокування завантаження/збереження; встановлення параметрів вимірювання функції; і установку управління перехоплення.

Один варіант здійснення логіки, пов'язаної з командою Modify PCI Function Controls описується з посиланням на ФІГ.7. В одному прикладі команда подається операційною системою (або іншою конфігурацією) і виконується процесором (наприклад, вбудованим програмним забезпеченням), який виконує операційну систему. У прикладах, наведених у цьому документі, команда і функції адаптера засновані на PCI. Однак в інших прикладах може використовуватися інша архітектура адаптера і відповідні команди.

В одному прикладі операційна система надає команді (наприклад, в одному або більше регістрах, зазначених командою) такі операнди: дескриптор функції PCI; ідентифікатор адресного простору DMA; управління операцією; та адресу інформаційного блоку функції.

Згідно ФІГ.7 спочатку на етапі запиту 700 здійснюється визначення, встановлене засіб, що допускає команду Modify PCI Function Controls. Це визначення здійснюється, наприклад, шляхом перевірки покажчика, що зберігається, наприклад, у блоці управління. Якщо засіб не встановлено, на етапі 702 надається виняткова ситуація. В іншому разі на етапі запр�стем). Якщо так, на етапі 706 операційна система хоста емулює операцію для цього гостя.

В іншому разі на етапі запиту 708 здійснюється визначення, точно вирівняні один або декілька операндів. Наприклад, здійснюється визначення, знаходиться адресу інформаційного блоку функції на кордоні подвійного слова. В одному прикладі це необов'язково. Якщо операнди не вирівняні, то на етапі 710 надається виняткова ситуація. В іншому разі на етапі 712 здійснюється визначення, доступний інформаційний блок функції. Якщо ні, то на етапі 714 надається виняткова ситуація. В іншому разі на етапі 716 здійснюється визначення, активовано дескриптор, наданий в операндах команди Modify PCI Function Controls. В одному прикладі це визначення здійснюється шляхом перевірки покажчика активації в дескрипторі. Якщо дескриптор не активований, то на етапі 718 надається виняткова ситуація.

Якщо дескриптор активований, то на етапі 720 дескриптор використовується для того, щоб визначити положення записи таблиці функцій. Тобто, щонайменше, частина дескриптор використовується в якості індексу в таблиці функцій, щоб визначати положення запису таблицтапе запиту 722 здійснюється визначення, була знайдена запис таблиці функцій. Якщо ні, то на етапі 724 надається виняткова ситуація. Інакше, якщо конфігурація, подає команду, є гостем, на етапі запиту 726 здійснюється визначення, пристосована функція для використання гостем. Якщо вона не дозволена для такого використання, то на етапі 728 надається виняткова ситуація. Цей запит може бути проігнорований, якщо конфігурація не є гостем, або можуть перевірятися інші дозволи, якщо вказані.

Потім на етапі запиту 730 здійснюється визначення, активована функція. В одному прикладі це визначення здійснюється шляхом перевірки покажчика активації запису в таблиці функцій. Якщо вона не активована, то на етапі 732 надається виняткова ситуація.

Якщо функція активована, то на етапі запиту 734 здійснюється визначення того, чи активно відновлення. Якщо відновлення активно, як визначається покажчиком відновлення запису в таблиці функцій, то на етапі 736 надається виняткова ситуація. Однак якщо відновлення не активно, то на етапі запиту 738 здійснюється подальше визначення того, зайнята функція. Це визначення здійснюється�являється ситуація зайнятості. У разі ситуації зайнятості команда може бути повторена, а не припинена.

Якщо функція не зайнята, то на етапі запиту 742 здійснюється додаткове визначення того, чи є достовірним формат інформаційного блоку функції. Наприклад, поле формату FIB перевіряється для того, щоб визначити, чи підтримується цей формат системою. Якщо він недостовірний, то на етапі 744 надається виняткова ситуація. Якщо формат інформаційного блоку функції достовірний, то на етапі запиту 746 здійснюється наступне визначення того, чи є достовірним управління операцією, визначене в операндах команди. Тобто є управління операцією одним з управлінь операцій, визначених для цієї команди. Якщо воно недостовірно, то на етапі 748 надається виняткова ситуація. Однак якщо управління операцією достовірно, то обробка триває з конкретним визначаються управлінням операцією.

Одне управління операцією, яке може бути визначено, являє собою операцію реєстрації параметрів трансляції адреси введення-виводу, що використовується в управлінні трансляціями адреси для адаптера. Цією операцією параметри функції PCI, відносяться до трансляції�ється операндом команди. Ці параметри включають, наприклад, базовий адреса PCI; обмеження адреси PCI (також зване обмеженням PCI або обмеженням); формат трансляції адреси; розмір сторінки; і покажчик трансляції адреси введення-виводу, які є операндами для цієї операції. Також є непрямі операнди, включаючи початковий адресу DMA (SDMA) і кінцевий адресу DMA (EDMA), які зберігаються в місці, доступному для процесора, що виконує команду.

Один варіант здійснення логіки для встановлення робочих параметрів для трансляції адреси введення-виведення описується з посиланням на фіг.8. Спочатку на етапі запиту 800 здійснюється визначення, чи є базовий адресу PCI в FIB більше, ніж обмеження PCI в FIB. Якщо порівняння базової адреси і обмеження вказує, що базовий адресу більше обмеження, то на етапі 802 розпізнається виняткова ситуація. Однак якщо базовий адресу менше або дорівнює обмеження, то на етапі запиту 804 здійснюється подальше визначення, чи є формат трансляції адреси і розмір сторінки достовірними. Якщо вони недостовірні, то на етапі 806 надається виняткова ситуація. Однак якщо вони достовірні, то на етапі запиту 808 здійснюється подальше визначення, перевищення�одному прикладі розмір адресного простору порівнюється з максимально можливою здатністю трансляції на підставі формату таблиці верхнього рівня. Наприклад, якщо таблиця верхнього рівня є DAT-сумісної таблицею сегментів, максимальна здатність трансляції становить 2 гігабайти.

Якщо розмір адресного простору перевищує здатність трансляції, то на етапі 810 надається виняткова ситуація. Інакше на етапі запиту 812 здійснюється подальше визначення, чи є базовий адресу менше початкового адреси DMA. Якщо так, то на етапі 814 надається виняткова ситуація. В іншому разі на етапі запиту 816 здійснюється інше визначення, чи є обмеження адреси більшим, ніж кінцевий адресу DMA. Якщо так, то на етапі 818 надається виняткова ситуація. В одному прикладі початковий адресу DMA і кінцевий адресу DMA засновані на загальносистемної політиці.

Після цього на етапі запиту 820 здійснюється визначення, доступно достатньо ресурсів, якщо такі потрібні, для виконання трансляції адреси введення-виводу. Якщо ні, то на етапі 822 надається виняткова ситуація. В іншому разі на етапі запиту 824 здійснюється подальше визначення, чи були параметри трансляції адреси введення-виводу вже зареєстровані в FTE і DTE. Це визначається перевіркою значень параметрів в FTE/DTE. Наприби визначити положення FTE, використовується дескриптор, наданий в команді, а щоб визначити положення DTE, використовується індекс пристрою в FTE.

Якщо функція адаптера вже була зареєстрована для трансляції адреси, то на етапі 826 надається виняткова ситуація. Якщо ні, то на етапі запиту 828 здійснюється визначення, чи є достовірним визначене адресне простір DMA (тобто чи є воно адресним простором, для якого була активована DTE). Якщо ні, то на етапі 830 надається виняткова ситуація. Якщо всі перевірки успішні, то на етапі 832 параметри трансляції поміщаються в запис таблиці пристроїв та, необов'язково, у відповідний запис таблиці функцій (або інше зазначене місце). Наприклад, параметри функції PCI, відносяться до трансляції адреси введення-виводу, копіюються з інформаційного блоку функції і поміщаються у DTE/FTE. Ці параметри включають, наприклад, базовий адреса PCI, обмеження адреси PCI, формат трансляції, розмір сторінки і покажчик трансляції адреси введення-виводу. Ця операція активує доступи DMA до певного адресного простору DMA. Вона активує трансляцію адреси введення-виводу для функції адаптера.

Інше управління операцією, коѸ адреси введення-виводу, приклад якої описується з посиланням на фіг.9. Цією операцією параметри функції, що відносяться до трансляції адреси введення-виводу, переустанавливаются в нулі. Ця операція деактивує доступи DMA до певного адресного простору DMA і викликає очищення записів буфера асоціативної трансляції вводу-виводу для цього адресного простору DMA. Вона деактивує трансляцію адреси.

Згідно фіг.9, в одному варіанті здійснення на етапі запиту 900 здійснюється визначення, не зареєстровані параметри трансляції адреси введення-виводу. В одному прикладі це визначення здійснюється шляхом перевірки значень відповідних параметрів у FTE або DTE. Якщо ці поля дорівнюють нулю або деякому значенню, вони не зареєстровані. Отже, на етапі 902 надається виняткова ситуація. Якщо вони зареєстровані, то на етапі запиту 904 здійснюється визначення, чи є достовірним адресний простір DMA. Якщо воно недостовірно, то на етапі 906 надається виняткова ситуація. Якщо адресний простір DMA достовірно, то на етапі 908 параметри трансляції запису в таблиці пристроїв та, необов'язково, у відповідному записі таблиці функцій сбрасиваютсять під час виконання, який формат трансляції з різних форматів трансляції повинен використовуватися для конкретної функції (наприклад, функції PCI). Певний формат трансляції попередньо реєструється для функції запису таблиці пристроїв для цієї функції. Потім під час обробки запиту адресу, надану в запиті, транслюється, якщо необхідно, блоком трансляції адреси на підставі попередньо зареєстрованого формату трансляції.

В описаних в даному документі варіантах здійснення адаптери є адаптерами PCI. PCI, як використовується в даному документі, належить до будь-яких адаптерам, реалізованим у відповідності зі специфікаціями на основі PCI, як визначено в Peripheral Component Interconnect Special Interest Group (PCI-SIG) (www.pcisig.com/home), включаючи, без обмеження, PCI або PCIe. В одному конкретному прикладі Peripheral Component Interconnect Express (PCIe) являє собою стандарт взаємозв'язку на рівні компонентів, який визначає двонаправлений протокол зв'язку для виконання транзакцій між адаптерами вводу-виводу і хост-системами. Здійснення зв'язку PCIe інкапсулюється у пакетах у відповідності зі стандартом PCIe для передачі по шині Pci. Транзакції, які виникають у адаптери вводу-виводу і завершуються в хост-системах, терах введення-виведення, називаються спрямованими вниз транзакціями. Топологія PCIe заснована на односпрямованих з'єднання точка-точка, які з'єднуються попарно (наприклад, одне спрямоване вгору з'єднання, одне спрямоване вниз з'єднання)з утворенням шини PCIe. Стандарт PCIe підтримується та оприлюднюється організацією PCI-SIG.

Як буде зрозуміло фахівця в даній області техніки, особливості цього винаходу можуть бути реалізовані системою, способом або комп'ютерним програмним продуктом. Відповідно, особливості цього винаходу можуть мати форму повністю апаратного варіанту здійснення, повністю програмного варіанти здійснення (включаючи вбудоване програмне забезпечення, резидентне програмне забезпечення, мікрокод тощо) або варіанту здійснення, що поєднує програмні і апаратні особливості, які всі в даному документі в цілому можуть називатися "контуром", "модулем" або "системою". Крім того, особливості цього винаходу можуть мати форму комп'ютерного програмного продукту, реалізованого в одній або декількох машиночитаній середовищі(-ах), з реалізованим на них машиночитаних програмним кодом.

Може використовуватися будь-яка комбінація одноашиночитаемая запам'ятовує середовище може бути, наприклад, без обмеження, електронної, магнітній, оптичної, електромагнітного, інфрачервоного або напівпровідникової системою, апаратом або пристроєм, або будь-яким відповідним поєднанням вищевказаного. Більш конкретні приклади (список не вичерпний) машиночитаних запам'ятовуючих середовищ включають таке: електричне з'єднання, що має один або кілька проводів, знімний диск для комп'ютера, жорсткий диск, оперативне запам'ятовуючий пристрій (ОЗП), постійне запам'ятовуючий пристрій (ПЗУ), зтирається програмоване постійне запам'ятовуючий пристрій (СПЗУ або флеш-пам'ять), оптоволокно, постійний запам'ятовуючий пристрій на знімному диску (CD-ROM), оптичне запам'ятовуючий пристрій, магнітне запам'ятовуючий пристрій чи будь-яке відповідне поєднання вищевказаного. В контексті цього документа машиночитаемая запам'ятовує середовище може бути будь-якої матеріальної середовищем, яка може містити або зберігати програму для використання за допомогою системи, апарати або пристрої виконання команд або у зв'язку з ними.

Як показано на ФІГ.10, в одному прикладі комп'ютерний програмний продукт 1000 містить, наприклад, одну або кілька машиночитаних запам'ятовуючих середовищ 1002 для зберігання та сушіння�е особливостей цього винаходу.

Програмний код, втілений в машиночитаній середовищі, може передаватися з використанням відповідного середовища, включаючи, без обмеження, бездротову, дротову лінію, оптоволоконний кабель, ВЧ-середовище і т. д. або будь-яке відповідне поєднання вищезазначеного.

Комп'ютерний програмний код для виконання операцій, що забезпечують особливості цього винаходу, може бути написана на будь-якому сполученні одного або декількох мов програмування, включаючи об'єктно-орієнтована мова програмування, такій як Java, Smalltalk, C++ тощо, і традиційні процедурні мови програмування, такі як мова програмування С, асемблер або подібні мови програмування. Програмний код може повністю виконуватися на комп'ютері користувача, частково на комп'ютері користувача, в якості автономного пакету програмного забезпечення, частково на комп'ютері користувача і частково на віддаленому комп'ютері або повністю віддаленому комп'ютері або сервері. В останньому випадку віддалений комп'ютер може бути з'єднаний з комп'ютером за допомогою мережі будь-якого типу, включаючи локальну обчислювальну мережу (LAN) або глобальну обчислювальну мережу (WAN), або з'єднання може що�ящего винаходу описані в цьому документі, з посиланням на структурні схеми та/або блок-схеми способів, пристроїв (систем) і комп'ютерних програмних продуктів у відповідності з варіантами здійснення винаходу. Буде зрозуміло, що кожен блок на структурних схемах та/або блок-схемах і поєднання блоків на структурних схемах та/або блок-схеми можуть бути реалізовані за допомогою команд комп'ютерних програм. Ці команди комп'ютерної програми можуть подаватися на процесор комп'ютера загального призначення, комп'ютера спеціального призначення або іншого програмованого пристрою для обробки даних з метою створення машини, в якій команди, які виконуються за допомогою процесора комп'ютера або іншого програмованого пристрою для обробки даних, створюють засіб для реалізації функцій/дій, визначених блоком або блоками на структурних схемах та/або блок-схемах.

Ці команди комп'ютерної програми також можуть зберігатися в машиночитаній середовищі, яка може наказувати комп'ютера, іншого программируемому пристрою обробки даних або інших пристроїв діяти певним чином, так що команди, які зберігаються в машиночитаній середовищі, утворюють виріб обробки, що містить команди, які реалізують функцію/дію, визначені блоком або блоками н�єр, інше програмований пристрій обробки даних або інші пристрої, щоб викликати виконання послідовності оперативних етапів комп'ютером, іншим програмованим пристроєм або іншими пристроями, щоб створювати комп'ютерно-реалізований процес, так що команди, які виконуються на комп'ютері або іншому програмованому пристрої, що забезпечують процеси для реалізації функцій/дій, заданих блоком або блоками на структурних схемах та/або блок-схемах.

Наведені на кресленнях структурні схеми і блок-схеми ілюструють архітектуру, функціональні можливості і роботу можливих осуществлений систем, способів і комп'ютерних програмних продуктів у відповідності з різними варіантами здійснення цього винаходу. У зв'язку з цим кожен блок на структурних схемах або блок-схемах може представляти модуль, сегмент або частину коду, яка містить одну або кілька виконуваних команд для реалізації заданої логічної функції(-ї). Слід також зазначити, що в деяких альтернативних осуществлениях вказані в блоці функції можуть відбуватися не в тому порядку, в якому вони представлені на графічних матеріалах. Наприклад, два блоки, покногда виконуватися в зворотному порядку, в залежності від пов'язаних функціональних можливостей. Слід також зазначити, що кожен блок на блок-схемах та/або структурних схемах і поєднання блоків на блок-схемах та/або структурних схемах можуть бути реалізовані за допомогою спеціалізованих апаратних систем, які виконують задані функції або дії, або поєднань спеціалізованого апаратного забезпечення і комп'ютерних команд.

На додачу до вищесказаного, одна або кілька особливостей цього винаходу може надаватися, пропонуватися, вводитися, управлятися, обслуговуватися і т. п. постачальником послуг, який пропонує управління користувацькими середовищами. Наприклад, постачальник послуг може створювати, підтримувати, обслуговувати і т. п. комп'ютерний код і/або обчислювальну інфраструктуру, яка виконує одну або кілька особливостей цього винаходу для одного або декількох користувачів. У відповідь постачальник послуг може отримувати оплату від користувача, наприклад, згідно з передплатою та/або угоди. Додатково або в якості альтернативи, постачальник послуг може отримувати плату за продаж реклами одній або кільком третім сторонам.

Згідно з однією з особливостей цього изоложение. В якості одного з прикладів, розгортання програми включає надання обчислювальної інфраструктури, здатної виконувати одну або кілька особливостей цього винаходу.

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

В якості ще однієї особливості цього винаходу може бути представлений спосіб інтегрування обчислювальної інфраструктури, що включає інтегрування машиночитаемого коду в комп'ютерну систему. Комп'ютерна система містить машиночитаемую середовище, причому машиночитаемая середовище містить одну або кілька особливостей цього винаходу. Код в поєднанні з комп'ютерною системою здатний виконувати одну або кілька особливостей цього винаходу.

Хоча вище описані різні варіанти здійснення, вони є лише прикладами. Наприклад, обчислювальні середовища інших архітектур можуть містити й використовувати одну або кілька особливостей настоящегие сервери, поставляються International Business Machines Corporation, або сервери інших компаній можуть включати, використовувати або отримувати переваги від однієї або більше особливостей цього винаходу. Крім того, хоча у наведеному в даному документі прикладі адаптери і концентратор PCI розглядаються як частина сервера, в інших варіантах здійснення вони не обов'язково повинні розглядатися як частина сервера, а можуть просто розглядатися як сполучені з системною пам'яттю і/або іншими компонентами обчислювальної середовища. Не потрібно, щоб обчислювальна середа була сервером. Також, хоча описані таблиці трансляції, можуть використовуватися будь-які структури даних, і мається на увазі, що термін "таблиця" включає всі такі структури даних. Крім того, хоча адаптери і засновані на PCI, одна або більше особливостей цього винаходу можуть використовуватися з іншими адаптерами або іншими компонентами введення-виведення. Адаптер адаптер PCI є лише прикладами. Більше того, можуть використовуватися адресні простори і таблиці адрес іншого розміру, не відходячи від суті цього винаходу. Також з використанням однієї або декількох особливостей цього винаходу можуть транслюватися та інші ть більше або менше інформації, або іншу інформацію. Можливі інші зміни.

Крім того, від однієї або декількох особливостей цього винаходу можуть отримувати вигоду і інші типи обчислювальних середовищ. Наприклад, може застосовуватися система обробки даних призначена для зберігання та/або виконання програмного коду, яка містить щонайменше два процесора, прямо або непрямо сполучених з елементами пам'яті через системну шину. Елементи пам'яті містять, наприклад, локальну пам'ять, яка використовується під час фактичного виконання програмного коду, пристрій масової пам'яті і кеш-пам'ять, яка забезпечує тимчасове зберігання щонайменше деякого програмного коду з метою зменшення кількості витягів коду з пристрою масової пам'яті під час виконання.

Пристрої введення-виведення або I/O пристрої (включаючи без обмеження клавіатури, екрани, пристрої вказівки, DASD, стрічку, CD, DVD диски, флеш-пристроїв та інших середовища пам'яті, тощо) можуть підключатися до системи або прямо, або за допомогою проміжних контролерів вводу-виводу. Мережеві адаптери також можуть підключатися до системи, щоб дозволяти системі обробки даних з'єднуватися з іншими системами обробки дан� Модеми, кабельні модеми і мережні карти Ethernet є лише деякими з доступних типів мережевих адаптерів.

ФІГ.11 являє собою зображення характерних компонентів хост-комп'ютерної системи 5000 для реалізації однієї або декількох особливостей цього винаходу. Характерний хост-комп'ютер 5000 містить один або кілька ЦП 5001, пов'язаних з пам'яттю 5002 (тобто центральним запам'ятовуючим пристроєм комп'ютера, а також інтерфейси введення-виведення до запам'ятовуючим пристроям 5011 і мережі 5010 для зв'язку з іншими комп'ютерами або SAN і т. п. ЦП 5001 сумісний з архітектурою, що має структурований набір команд і структуровані функціональні можливості. ЦП 5001 може мати динамічну трансляцію 5003 адреси (DAT) для перетворення програмних адрес (віртуальних адрес) достовірні адреси пам'яті. DAT зазвичай містить буфер 5007 швидкого перетворення адреси (TLB) для кешування трансляцій, щоб при наступних доступи до блоку пам'яті 5002 комп'ютера не потрібна затримка трансляції адреси. Зазвичай між пам'яттю 5002 комп'ютера і процесором 5001 використовується кеш 5009. Кеш 5009 може бути ієрархічним, мають кеш великої ємності, доступний для більш ніж одного ЦП, і більш швидкодіючих кешей (�ого рівня поділяються, щоб надавати окремі кеші низького рівня для вилучення команд і доступу до даних. В одному варіанті здійснення команда витягається з пам'яті 5002 блоком 5004 вилучення команд допомогою кешу 5009. Команда декодується в блоці 5006 декодування команд і відправляється (з іншими командами у деяких варіантах здійснення) в блок або блоки 5008 виконання команд. Зазвичай використовується кілька блоків 5008 виконання, наприклад, блок виконання арифметичних команд, блок виконання з плаваючою точкою і блок виконання команд переходу. Команда виконується блоком виконання, який здійснює доступ до операндам із визначаються командами регістрів пам'яті або по мірі необхідності. Якщо доступ (завантаження або збереження) до операнду необхідно здійснювати з пам'яті 5002, блок 5005 завантаження/збереження зазвичай здійснює доступ під управлінням виконуваної команди. Команди можуть виконуватися в апаратних схемах або у внутрішньому мікрокоді (апаратно-програмному забезпеченні), або з використанням їх поєднання.

Як зазначено, комп'ютерна система містить інформацію в локальному (чи переважно) запам'ятовуючому пристрої, а також адресні, захисні, контрольні та коригувальні записи�ресов і спосіб, яким адресу одного типу транслюється на адресу іншого типу. Деякі з основних запам'ятовуючих пристроїв містять постійно призначені розташування в запам'ятовуючому пристрої. Основне запам'ятовуючий пристрій забезпечує систему запам'ятовуючим пристроєм з прямою адресацією і швидким доступом до даних. В основний запам'ятовуючий пристрій повинні завантажуватися (з пристроїв введення) і дані, і програми, до того як вони можуть бути оброблені.

Основне запам'ятовуючий пристрій може містити одне або кілька буферних пристроїв меншої ємності більш швидкого доступу, іноді званих кэшами. Кеш зазвичай фізично пов'язаний з ЦП або процесором введення-виведення. Фізична структура і використання різних запам'ятовуючих середовищ, як правило, не видимі програмою, за винятком продуктивності.

Для команд і операндів, що зберігаються в пам'яті, можу бути передбачені окремі кеш. Інформація в кеші міститься у формі безперервних байтів на цілочисельний кордоні, званої блоком кешу або рядком кеша (для стислості рядком). Одна модель може надавати команду EXTRACT CACHE ATTRIBUTE, яка повертає розмір рядка кеша в байтах. Одна модель також може предоставйства в кеш даних або команд або для звільнення даних з кеша.

Запам'ятовуючий пристрій розглядається як довга горизонтальна рядок бітів. Для більшості операцій доступ до запам'ятовуючого пристрою здійснюється послідовно зліва направо. Рядок бітів поділяється на блоки з восьми бітів. Восьмибітний блок називається байтом, який є основним конструктивним блоком всіх форматів представлення інформації. Розташування кожного байта в запам'ятовуючому пристрої ідентифікується унікальним невід'ємним цілим числом, яке є адресою розташування цього байта або просто адресою байта. Сусідні місця розташування байтів мають послідовні адреси, що починаються зліва з 0 і послідовно наступні зліва направо. Адреси являють собою беззнакові двійкові цілі числа, що містять 24, 31 або 64 біта.

Інформація між запам'ятовуючим пристроєм і ЦП або канальної підсистемою передається по одному байту або групою байтів за один раз. Якщо не обумовлено інше, наприклад, в архітектурі z/Architecture®група байтів у запам'ятовуючому пристрої адресується за допомогою крайнього лівого байта групи. Число байтів у групі мається на увазі або прямо визначається операцією, яку необхідно виконати. Використовуємо�овательно нумеруються зліва направо. В z/Architecture®крайні ліві біти іноді іменуються "старшими" бітами, а крайні праві біти - "молодшими" бітами. Однак номера бітів не є адресами запам'ятовуючого пристрою. Звертатися за адресою можна тільки до байтам. Щоб працювати з окремими бітами байта в запам'ятовуючому пристрої, здійснюється доступ до всього байту. Біти в байті пронумеровані зліва направо від 0 до 7 (наприклад, z/Architecture®). Біти в адресі можуть бути пронумеровані від 8 до 31, або від 40 до 63 у разі 24-бітових адрес або від 1 до 31, або від 33 до 63 у разі 31-бітових адрес, і від 0 до 63 у разі 64-бітових адрес. В будь-якому іншому форматі фіксованої довжини з безлічі байтів біти, що утворюють формат, послідовно нумеруються, починаючи з 0. В цілях виявлення помилок, і переважно їх виправлення, з кожним байтом або групою байтів може передаватися один або декілька контрольних бітів. Такі контрольні біти генеруються автоматично машиною і не можуть безпосередньо управлятися програмою. Ємність запам'ятовуючого пристрою виражається в числі байтів. Коли довжина зберігається поля операнда мається на увазі кодом операцій команди, кажуть, що поле має фіксовану довжину, яка може становити один, два, �ліна зберігається поля операнда не мається на увазі, а прямо вказується, кажуть, що поле має змінну довжину. Операнди змінної довжини можуть розрізнятися по довжині приростами в один байт (або для деяких команд з кроком в два байти та іншими кроками). При збереженні інформації в запам'ятовуючому пристрої заміщається вміст розташування тільки тих байтів, які включені у вказане поле, незважаючи на те, що ширина фізичного шляху до запам'ятовуючого пристрою може бути більше довжини зберігається поля.

Деякі одиниці інформації повинні перебувати на цілочисельний кордоні в запам'ятовуючому пристрої. Стосовно до одиниці інформації межа називається цілочисловою, коли адреса пристрою кратний довжині одиниці інформації в байтах. Полів довжиною 2, 4, 8 і 16 байтів на цілочисельний кордоні даються особливі назви. Півслово являє собою групу з 2 послідовних байтів на двухбайтной кордоні і є основним структурним блоком команд. Слово являє собою групу з 4 послідовних байтів на четирехбайтной кордоні. Подвійне слово являє собою групу з 8 послідовних байтів на восьмибайтной кордоні. Учетверенное слово являє собою групу з 16 послідовних байтів на 16-байтного кордонів�особисте уявлення адреси містить один, два, три або чотири крайніх правих нульових біт, відповідно. Команди повинні знаходитися на двухбайтних цілочисельних кордонах. Зберігаються операнди більшості команд не містять вимоги вирівнювання на кордонах.

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

В одному варіанті здійснення винахід може бути реалізовано на практиці програмним забезпеченням (іноді званих ліцензійних внутрішнім кодом, апаратно-програмним забезпеченням, мікрокодом, милликодом, пикокодом і т. п., будь з чого буде узгоджуватися з цим винаходом). Як показано на ФІГ.11, до програмного коду програмного забезпечення, яке втілює даний винахід, зазвичай отримує доступ процесор 5001 хост-системи 5000 з запам'ятовуючих пристроїв 5011 довготривалої пам'яті, таких накопичувач на КОМПАКТ-диску, накопичувач на магнітній стрічці або накопичувач на жорстких дисках. Код програмного про�сований, такий дискета, накопичувач на жорстких дисках або CD-диск. Код може розподілятися в таких середовищах або може розподілятися користувачам з комп'ютерної пам'яті 5002 або запам'ятовуючого пристрою однієї комп'ютерної системи по мережі 5010 іншим комп'ютерним системам для використання користувачами таких систем.

Програмний код включає операційну систему, яка управляє функцією і взаємодією різних компонентів комп'ютера і однієї або декількох прикладних програм. Зазвичай програмний код підкачується по частинам із запам'ятовуючого пристрою 5011 у відносно більш швидкодіючий запам'ятовуючий пристрій 5002 комп'ютера, де він доступний для обробки процесором 5001. Методи і способи для втілення програмного коду в пам'яті, у фізичних середовищах та/або розподілу програмного коду через мережі добре відомі і більш докладно в даному документі обговорюватися не будуть. Програмний код, створений і зберігається в матеріальному середовищі (включаючи без обмеження модулі електронної пам'яті (ОЗП), флеш-пам'ять, компакт-диски (CD, DVD, магнітну стрічку тощо) часто називають "комп'ютерним програмним продуктом". Містить комп'ютерний програмний продукт середовище зазвичай може з обробки даних.

ФІГ.12 являє собою зображення характерною робочої станції або сервера апаратної системи, в якій даний винахід може бути реалізовано на практиці. Система 5020, представлена на ФІГ.12, містить характерну базову комп'ютерну систему 5021, таку як персональний комп'ютер, робоча станція або сервер, включаючи додаткові периферійні пристрої. Базова комп'ютерна система 5021 має один або кілька процесорів 5026 і шину, яка використовується для з'єднання та зв'язку процесора (-ів) 5026 та інших компонентів системи 5021 у відповідності з відомими способами. Шина з'єднує процесор 5026 з пам'яттю 5025 і довготривалим запам'ятовуючим пристроєм 5027, яке може містити накопичувач на жорстких дисках (наприклад, включає будь-яке з магнітного накопичувача, CD-диски, DVD-диски і флеш-пам'яті) або, наприклад, накопичувач на магнітній стрічці. Система 5021 також може містити адаптер інтерфейсу, який з'єднує мікропроцесор 5026 через шину з одним або кількома інтерфейсними пристроями, такими як клавіатура 5024, миша 5023, принтер/сканер 5030 та/або інші інтерфейсні пристрої, які можуть бути будь-якими пристроями користувальницького інтерфейсу, такими какЖК-екран або монітор, з мікропроцесором 5026 допомогою адаптера пристрої відображення.

Система 5021 може підтримувати зв'язок з іншими комп'ютерами або комп'ютерними мережами за допомогою мережевого адаптера, здатного підтримувати зв'язок 5028 з мережею 5029. Прикладами мережевих адаптерів є канали зв'язку, кільцева мережа з маркерним доступом, мережа Ethernet або модеми. Альтернативно система 5021 може підтримувати зв'язок за допомогою бездротового інтерфейсу, такого як карта CDPD (стільникової системи передачі пакетів цифрових даних). Система 5021 може бути пов'язана з іншими такими комп'ютерами в локальної обчислювальної мережі (LAN) або глобальної обчислювальної мережі (WAN), або система 5021 може бути клієнтом в клієнт/серверної розподіленої системи з іншим комп'ютером, і т. п. Всі ці конфігурації, а також відповідне комунікаційне апаратне і програмне забезпечення, відомі в даній області техніки.

ФІГ.13 являє собою зображення мережі 5040 обробки даних, в якій даний винахід може бути реалізовано на практиці. Мережа 5040 обробки даних може містити безліч окремих мереж, таких як бездротова мережа і дротова мережа, кожна з яких може містити безліч окремих робочих сѸли кілька мереж LAN, де LAN може містити безліч інтелектуальних робочих станцій, з'єднаних з хост-процесором.

Також згідно ФІГ.13 мережі також можуть містити мейнфрейми або сервери, такі як шлюзовий комп'ютер (клієнт-сервер 5046) або сервер додатків (віддалений сервер 5048, який може здійснювати доступ до сховища даних, а також може бути доступний безпосередньо з робочої станції 5045). Шлюзовий комп'ютер 5046 служить точкою входу в кожну окрему мережу. Шлюз необхідний при з'єднанні одного мережевого протоколу з іншим. Шлюз 5046 переважно може бути з'єднаний лінією зв'язку з іншою мережею (наприклад, мережею Інтернет 5047). Шлюз 5046 також може бути прямо з'єднаний з однією або кількома робочими станціями 5041, 5042, 5043, 5044 допомогою лінії зв'язку. Шлюзовий комп'ютер може бути реалізований з використанням сервера IBM eServer System z, що поставляється на ринок International Business Machines Corporation.

Одночасно на ФІГ.12 і ФІГ.13 представлений програмний код програмного забезпечення, який може реалізовувати даний винахід може бути доступний процесору 5026 системи 5020 з довготривалих запам'ятовуючих середовищ 5027, таких як накопичувач на КОМПАКТ-дисках або накопичувач на жорстких дисках. Програмний код програмного забезпе�х, такий дискета, жорсткий диск або CD-диск. Код може розподілятися в таких середовищах або може розподілятися користувачам 5050, 5051 з пам'яті або пристрою однієї комп'ютерної системи по мережі іншим комп'ютерним системам для використання користувачами таких систем.

Альтернативно програмний код може бути здійснено в пам'яті 5025 з доступом до нього процесором 5026 із застосуванням процесорної шини. Такий програмний код містить операційну систему, яка управляє функцією і взаємодією різних компонентів комп'ютера і однієї або декількох прикладних програм 5032. Програмний код зазвичай підкачується по частинах з запам'ятовуючих середовищ 5027 в швидкодіючу пам'ять 5025, де він доступний для обробки процесором 5026. Методи і способи здійснення програмного коду програмного забезпечення в пам'яті, у фізичних середовищах та/або розподілу коду програмного забезпечення за допомогою мереж добре відомі, і в даному документі детальніше обговорюватися не будуть. Програмний код, створений і зберігається в матеріальному середовищі (включаючи без обмеження модулі електронної пам'яті (ОЗП), флеш-пам'ять, компакт-диски (CD), DVD-диски, магнітну стрічку тощо) часто називають "коься пристроєм обробки даних переважно в комп'ютерній системі для виконання пристроєм обробки даних.

Кеш, який є найбільш легкодоступним для процесора (зазвичай більш швидкодіючий і менш об'ємна, ніж інші кеші процесора), являє собою нижчий (L1 або один рівень) кеш, а основне запам'ятовуючий пристрій (основна пам'ять) являє собою кеш вищого рівня (L3, якщо є 3 рівня). Кеш нижчого рівня часто ділиться на кеш команд (I-Cache), зберігає машинні команди, що підлягають виконанню, і кеш даних (D-Cache), що містить операнди, що зберігаються в пам'яті.

ФІГ.14 являє собою зображення ілюстративного варіанту здійснення процесора для процесора 5026. Зазвичай, щоб буферізіровать блоки пам'яті з метою підвищення продуктивності процесора, використовується один або кілька рівнів кешу 5053. Кеш 5053 являє собою високошвидкісний буфер, що зберігає рядка кеша даних пам'яті, які, ймовірно, будуть використовуватися. Типові рядка кеша містять 64, 128 або 256 байтів даних пам'яті. Окремі кеші часто використовуються для кешування команд, а не кешування даних. Узгодженість кешей (синхронізація копій рядків в пам'яті і в кешах) часто забезпечується різними алгоритмами стеження, добре відомими в даній галузі техніки. Основне запоминающе�3, основне запам'ятовуючий пристрій 5025 іноді називають кешем 5 рівня (L5), оскільки воно зазвичай є більш швидкодіючими і містить лише частину енергонезалежного запам'ятовуючого пристрою (DASD, стрічка тощо), яке доступне для комп'ютерної системи. Основне запам'ятовуючий пристрій 5025 "кешує" сторінки даних, які посторінково переміщуються в основний запам'ятовуючий пристрій 5025 і з нього операційною системою.

Програмний лічильник (лічильник команд) 5061 відстежує адреса поточної команди, що підлягає виконанню. Лічильник команд в процесорі z/Architecture®є 64-бітним і може бути усічений до 31 або 24 біт з метою підтримки попередніх обмежень адресації. Лічильник команд зазвичай втілений в PSW (слові статусу програми) комп'ютера, так що він зберігається при перемиканні контексту. Таким чином, працююча програма, що має значення лічильника команд, може перериватися, наприклад, операційною системою (при перемиканні контексту з програмної середовища в середовище операційної системи). PSW програми зберігає значення лічильника команд, поки програма неактивна, і програмний лічильник (PSW) операційної системи використовується, поки виконується операційна система. Зазвичай счетчи� набором команд) звичайно мають фіксовану довжину, тоді як CISC-команди (обчислення зі складним набором команд) зазвичай мають змінну довжину. Команди IBM z/Architecture®є CISC-командами, що мають довжину 2, 4 або 6 байтів. Лічильник 5061 команд змінюється, наприклад, або операцією перемикання контексту, або операцією обраного переходу команди переходу. В операції перемикання контексту поточне значення лічильника команд зберігається у слові статусу програми разом з іншою інформацією про стан виконуваної програми (такий як коди станів), і завантажується нове значення лічильника команд, що вказує на команду нового програмного модуля, який необхідно виконати. Операція обраного переходу виконується, щоб дозволити програмі приймати рішення чи виконувати цикл у програмі шляхом завантаження результату команди переходу в лічильник 5061 команд.

Зазвичай для отримання команд від імені процесора 5026 використовується блок 5055 вилучення команд. Блок вилучення або витягує "наступні послідовні команди", цільові команди команд обраного переходу, або перші команди програми, наступного за перемиканням контексту. В сучасних блоках вилучення команд часто застосовують методи попереднього витягу, щоб эмпиричеченние команди могли б бути використані. Наприклад, блок вилучення може здійснювати витяг 16 байтів команди, яка містить таку послідовну команду, і додаткових байтів інших послідовних команд.

Потім витягнуті команди виконуються процесором 5026. В одному варіанті здійснення зіграна команда(-и) передається блоку 5056 диспетчеризації блоку вилучення. Блок диспетчеризації декодує команду(-и) і пересилає інформацію про декодированной команді(-ах) відповідним блокам 5057, 5058, 5060. Блок 5057 виконання зазвичай приймає інформацію про декодованих арифметичних командах від блоку 5055 вилучення команд і виконує арифметичні операції з операндами відповідно до коду операції команди. Операнди подаються на блок 5057 виконання переважно або з пам'яті 5025, структурованих регістрів 5059 або з найближчого поля виконуваної команди. Збережені результати виконання зберігаються або в пам'яті 5025, регістрах 5059 або в іншому машинному апаратному забезпеченні (такому як керуючі регістри, регістри PSW і тощо).

Процесор 5026 зазвичай має один або кілька блоків 5057, 5058, 5060 для виконання функції команди. Згідно ФІГ.15А блок 5057 виконання може взаємодіяти зі структурованими регіс� процесорними блоками 5065 допомогою інтерфейсної логіки 5071. Блок 5057 виконання може застосовувати кілька регістрових схем 5067, 5068, 5069, щоб зберігати інформацію, з якою буде працювати арифметичний логічний пристрій (ALU) 5066. ALU виконує арифметичні операції, такі як додавання, віднімання, множення і ділення, а також логічні функції, такі як І, АБО і виключає АБО (XOR), циклічний зсув і зміщення. ALU переважно підтримує спеціалізовані операції, що залежать від структури. Інші схеми можуть забезпечувати інші структуровані кошти 5072, що містять, наприклад, коди ситуацій та логіку підтримки відновлення. Зазвичай результат операції ALU зберігається в схемі 5070 вихідного регістра, яка може направляти результат низки інших функцій обробки. Хоча існує безліч конструкцій процесорів, даний опис призначене лише забезпечити характерне розуміння одного варіанта здійснення.

Наприклад, команда ADD виконується блоком 5057 виконання, володіє арифметичними й логічними функціональними можливостями, тоді як, наприклад, команда з плаваючою точкою виконується блоком виконання з плаваючою точкою, що володіє спеціальними можливостями роботи з плаваючою точкою. Блок виконання предпоча операндах. Наприклад, команда ADD може виконуватися блоком 5057 виконання на операндах, що знаходяться у двох регістрах 5059, зазначених в регістрових полях команди.

Блок 5057 виконання виконує арифметичне додавання двох операндів і зберігає результат у третьому операнді, де третій операнд може бути третім регістром або одним з двох вихідних регістрів. Блок виконання переважно використовує арифметичний логічний пристрій (ALU) 5066, здатне виконувати ряд логічних функцій, таких як зсув, циклічний зсув. І, АБО і виключає АБО, а також ряд алгебраїчних функцій, включаючи будь-яку з додавання, віднімання, множення, ділення. Деякі ALU 5066 розроблені для скалярних операцій, а деякі - для плаваючою точки. В залежності від архітектури дані можуть мати зворотний порядок проходження байтів (коли найменший значущий байт відповідає старшому байтовому адресою) або прямий порядок розташування байтів (коли найменший значущий байт відповідає молодшому байтовому адресою). IBM z/Architecture®має зворотний порядок проходження байтів. В залежності від архітектури поля чисел зі знаком можуть бути представлені у вигляді прямого коду, доповнення до 1 або доповнення до 2. Число у формі�ве, і позитивне значення у формі доповнення до 2 ALU вимагає тільки додавання. Числа зазвичай описані в скороченому вигляді, в якому 12-бітове поле визначає адресу блоку з 4096 байтів і зазвичай описується, наприклад, 4-кбайтний (кілобайтний) блок.

Згідно ФІГ.15Б інформація команди переходу для виконання команди переходу зазвичай передається блоку 5058 переходу, який часто застосовує алгоритм передбачення переходів, такий як таблиця 5082 історії переходів, щоб пророкувати результат переходу до завершення інших умовних операцій. Мета поточної команди переходу витягується і виконується за припущенням до завершення умовних операцій. Коли умовні операції завершуються, виконані за припущенням команди переходу або завершуються, або відкидаються на підставі ситуацій умовної операції і припущеного результату. Типова команда переходу може перевіряти коди ситуацій та перехід до цільового адресою, якщо коди ситуацій відповідають вимогу переходу команди переходу, причому цільової адреса може розраховуватися на підставі кількох чисел, включаючи, наприклад, числа з полів реєстру або безпосереднього поля команди. Блок 5058 переходу може застосовувати ALU 5074-vi, має безліч схем р, з регістрами 5059 загального призначення, блоком 5056 декодування/диспетчеризації або іншими схемами 5073.

Виконання групи команд може перериватися з ряду причин, включаючи, наприклад, перемикання контексту, ініційоване операційною системою, виняткову ситуацію або помилку програми, що приводить до перемикання контексту, сигнал переривання вводу-виводу, що приводить до перемикання контексту, або багатопотокову діяльність безлічі програм (многопоточной середовищі). Переважно перемикання контексту зберігає інформацію про стан виконуваної в даний момент програми, а потім завантажує інформацію про стан іншої запущеної програми. Інформація про стан може зберігатися, наприклад, в апаратних регістрах або в пам'яті. Інформація про стан переважно містить значення лічильника команд, що вказує на наступну команду, яку потрібно виконати, коди ситуацій, інформацію про трансляції пам'яті і вміст структурованого регістра. Діяльність по перемикання контексту може здійснюватися апаратними схемами, прикладними програмами, програмами операційної системи або апаратно-програмним кодом (мікрокодом, пикокодом або ліцензійним вн�виї з певними командами способами. Команда може надавати безпосередній операнд, який використовує значення частині команди, може надавати одне або кілька регістрових полів, що прямо вказують або на регістри загального призначення, або на регістри особливого призначення (наприклад, регістри з плаваючою точкою). Команда може використовувати непрямі регістри, ідентифікуються полем коду операції як операнди. Команда може використовувати для операндів комірки пам'яті. Комірка пам'яті операнда може надаватися регістром, безпосереднім полем або поєднанням регістрів і безпосереднього поля, прикладом чого є засіб далекого зміщення z/Architecture®, в якому команда визначає базовий регістр, індексний регістр і безпосереднє поле (поле зсуву), які сумуються, щоб надавати, наприклад, адресу операнда в пам'яті. Під осередком у цьому документі розуміється місце в основній пам'яті (основному запам'ятовуючому пристрої), якщо не зазначено інше.

Згідно ФІГ.15В процесор здійснює доступ до запам'ятовуючого пристрою за допомогою блоку 5060 завантаження/збереження. Блок 5060 завантаження/збереження може виконувати операцію завантаження шляхом отримання адреси цільового операнда в пам'яті 5053 і з�чення адреси цільового операнда в пам'яті 5053 і збереження даних, отриманих з регістра 5059 або іншої комірки пам'яті 5053, в комірці цільового операнда в пам'яті 5053. Блок 5060 завантаження/збереження може діяти за припущенням і здійснювати доступ до пам'яті в послідовності, яка по порядку не відповідає послідовності команд, проте блок 5060 завантаження/збереження повинен підтримувати для програм видимість того, що команди виконувалися по порядку. Блок 5060 завантаження/збереження може підтримувати зв'язок з регістрами 5059 загального призначення, блоком 5056 декодування/диспетчеризації, інтерфейсом 5053 кеша/пам'яті або іншими елементами 5083 і містить різні регістрові схеми, пристрої ALU 5085 та керуючу логіку 5090, щоб обчислювати адреси пам'яті і забезпечувати формування послідовності конвеєра для збереження порядку операцій. Деякі операції можуть не зберігати порядок, але блок завантаження/збереження забезпечує функціональні можливості для того, щоб операції з порушеним порядком здавалися програмі виконаними по порядку, як добре відомо в даній області техніки.

Переважно адреси, що "бачить"" прикладна програма, часто називають віртуальними адресами. Віртуальні адреси іноді називають "логічними адр�правляются місце у фізичній пам'яті за допомогою однієї з ряду технологій динамічної трансляції адреси (DAT), включаючи без обмеження просту префиксацию віртуального адреси величиною зсуву, трансляцію віртуального адреси за допомогою однієї або декількох таблиць трансляції, причому таблиці трансляції переважно містять, щонайменше, таблицю сегментів і таблицю сторінок окремо або в поєднанні, переважно таблицю сегментів, що містить запис, що вказує на таблицю сторінок. В z/Architecture®надається ієрархія трансляції, що включає першу таблицю області, другу таблицю області, третю таблицю області, таблицю сегментів та необов'язкову таблицю сторінок. Ефективність трансляції адрес часто підвищується за рахунок використання буфера (TLB) асоціативної трансляції, який містить записи, що відображають віртуальний адреса для відповідного розташування фізичної пам'яті. Записи створюються, коли DAT транслює віртуальний адресу з допомогою таблиці трансляції. Подальше використання віртуального адреси може потім використовувати запис швидкодіючого TLB, а не повільний послідовний доступ до таблиці трансляції. Вмістом TLB може керувати ряд алгоритмів заміщення, включаючи алгоритм заміщення, включаючи LRU (найбільш давньою по використанню).

�охорона спільно використовуваних ресурсів, таких як засоби введення-виведення, кеші, TLB і пам'ять, взаємно заблокованих для забезпечення несуперечності. Зазвичай для підтримки несуперечності кешей використовуються технології "стеження". Щоб полегшувати спільне використання, в середовищі стеження кожна рядок кеша може відзначатися як що знаходиться в будь-якому стані стану спільного використання, стану монопольного використання, зміненого стану, недостовірного стану і т. п.

Блоки 5054 вводу-виводу (ФІГ.14) забезпечують процесор засобами підключення до периферійних пристроїв, включаючи, наприклад, накопичувачі на магнітній стрічці, диски, принтери, пристрої відображення та мережі. Блоки введення-виведення часто представляються комп'ютерній програмі драйверами програмного забезпечення. У мэйнфреймах, таких як System z®виробництва IBM®, канальні адаптери та адаптери відкритих систем є блоками вводу-виводу мейнфрейма, які забезпечують зв'язок між операційною системою і периферійними пристроями.

Вигоду від однієї або декількох особливостей цього винаходу можуть отримувати й інші типи обчислювальних середовищ. Наприклад, середовище може містити емулятор (наприклад, програмні �оманд, структуровані функції, такі як трансляція адреси структуровані регістри) або її частину (наприклад, у приватній комп'ютерній системі, що має процесор і пам'ять). У такому середовищі одна або декілька функцій емуляції емулятора можуть здійснювати одну або кілька особливостей цього винаходу, навіть якщо комп'ютер, на якому працює емулятор, може мати архітектуру, яка відрізняється від емульованих коштів. Наприклад, в режимі емуляції декодується конкретна емуліруемой команда або операція, і для реалізації окремої команди або операції створюється відповідна функція емуляції.

У эмулирующей середовищі хост-комп'ютер містить, наприклад, пам'ять для зберігання команд і даних; блок вилучення команд для вилучення команд з пам'яті та, необов'язково, забезпечення локальної буферизації витягнутої команди; блок декодування команд для прийому вилучені команд і визначення типу команд, які були витягнуті; і блок виконання команд для виконання команд. Виконання може включати завантаження даних з пам'яті в регістр; збереження даних назад в пам'ять з регістра; або виконання арифметичної або логічної операції деякого типу, як визначається блокомами операції реалізуються у вигляді однієї або декількох підпрограм в програмному забезпеченні емулятора.

Більш конкретно, у мэйнфрейме структуровані машинні команди використовуються програмістами, сьогодні, як правило, програмістами, що працюють на мові С, часто за допомогою програми-компиллятора. Ці команди, що зберігаються в запам'ятовує середовищі, можуть виконуватися у вихідному форматі на сервері z/Architecture®IBM®або в іншому випадку в машинах, що реалізують інші архітектури. Вони можуть емулюватися в існуючих і майбутніх мэйнфрейм серверах IBM®і на інших машинах IBM®(наприклад, серверах Power Systems і серверах System x®). Вони можуть виконуватися на машинах, що працюють на Linux на широкому ряді машин, які використовують апаратне забезпечення виробництва IBM®, Intel®, AMDта інших. Крім виконання на цьому апаратному забезпеченні під z/Architecture®може використовуватися Linux, а також машини, які використовують емуляцію допомогою Hercules (див. www.hercules-390.org) або FSI (Fundamental Software, Inc) (див. www.funsoft.com), де виконання, як правило, здійснюється в режимі емуляції. В режимі емуляції програмне забезпечення емуляції виконується власним процесором, щоб емулювати архітектуру емульованого процесора.

Власний процесор, щоб виконувати емуляцію эмулируеное забезпечення або власну операційну систему. Програмне забезпечення емуляції відповідає за отримання та виконання команд архітектури емульованого процесора. Програмне забезпечення емуляції підтримує лічильник емульованих програм, щоб відстежувати кордону команд. Програмне забезпечення емуляції може витягувати одну або кілька емульованих машинних команд за раз і перетворювати одну або кілька емульованих машинних команд у відповідну групу власних машинних команд для виконання власним процесором. Ці перетворені команди можуть кешуватися, так що можна домогтися більш швидкого перетворення. Тим не менш, програмне забезпечення емуляції має підтримувати правила архітектури емульованого процесора, щоб забезпечувати коректну роботу операційних систем і додатків, написаних для емульованого процесора. Крім того, програмне забезпечення емуляції повинно забезпечувати ресурси, визначені архітектурою емульованого процесора, включаючи без обмеження керуючі регістри, регістри загального призначення, регістри з плаваючою точкою, функцію динамічної трансляції адреси, включаючи, наприклад, таблиці сегментів і таблиці сторінок, механізми переривання, механізми переключе�ерационная система або прикладна програма, створена для роботи на що емулюється процесорі, могла запускатися на власному процесорі, має програмне забезпечення емуляції.

Конкретна емуліруемой команда декодується, і для виконання функції окремої команди викликається підпрограма. Функція програмного забезпечення емуляції, эмулирующая функцію емульованого процесора, реалізується, наприклад, в підпрограмі або драйвері мовою або яким-небудь іншим способом надання драйвера для конкретного апаратного забезпечення, який буде доступний фахівцям в даній області техніки після розуміння опису кращого варіанту здійснення. Різні патенти, що належать до емуляції програмного і апаратного забезпечення, включаючи, без обмеження, патент США на винахід №5551013 під назвою "Multiprocessor for Hardware Emulation", Beausoleil et al.; і патент США на винахід №6009261 під назвою "Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor", Scaizi et al.; і патент США на винахід №5574873 під назвою "Decoding Guest Instruction Directly to Access Emulation Routines that Emulate the Guest Instructions", Davidian et al.; і патент США на винахід №6308255 під назвою "Symmetrical Multiprocessing Bus and Used for Chipset Coprocessor Support Allowing Non-Native Code to Run in a System", Gorishek et al.; і патент США на изобреѽт США на винахід №5790825 під назвою "Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions", Eric Traut; і багато інші представляють ряд відомих способів здійснення емуляції формату команд управління, розробленого для іншої машини, для цільової машини, доступною фахівця в даній галузі техніки.

ФІГ.16 являє собою зображення прикладу емуліруемой комп'ютерної хост-системи 5092, яка емулює комп'ютерну хост-систему 5000' хост-архітектури. У емуліруемой комп'ютерної хост-системі 5092 хост-процесором (ЦП) 5091 є емульованим хост-процесором (або віртуальним хост-процесором) і містить процесор 5093 емуляції, має іншу власну архітектуру набору команд, ніж у процесора 5091 хост-комп'ютера 5000'. Емуліруемой комп'ютерна хост-система 5092 містить пам'ять 5094, доступну для процесора 5093 емуляції. В ілюстративному варіанті здійснення пам'ять 5094 розділена на частину пам'яті 5096 хост-комп'ютера і частина 5097 програм емуляції. Пам'ять 5096 хост-комп'ютера доступна для програм емульованого хост-комп'ютера 5092 у відповідності з архітектурою хост-комп'ютера. Процесор 5093 емуляції виконує власні команди структурованого набору команд, що мають структуру, відмінну від структури команд емульованого процесора 5091, власні команди витягуються з пам5096 хост-комп'ютера шляхом застосування однієї або декількох команд, отриманих в підпрограмі послідовності і доступу/декодування, яка може декодувати хост-команду(-и), до якої здійснюється доступ, щоб визначати підпрограму виконання власних команд для емуляції функції хост-команди, до якої здійснюється доступ. Інші кошти, які визначені для архітектури комп'ютерної хост-системи 5000', можуть емулюватися подпрограммами структурованих засобів, включаючи такі засоби, як, наприклад, регістри загального призначення, керуючі регістри, підтримка підсистеми динамічного перетворення адреси введення-виводу і кеш процесора. Підпрограми емуляції також можуть отримувати перевагу від функцій, доступних в процесорі 5093 емуляції (таких як регістри загального призначення і динамічна трансляція віртуальних адрес), щоб покращувати продуктивність підпрограм емуляції. Також може надаватися спеціальне апаратне забезпечення і механізми розвантаження, щоб допомагати процесору 5093 емулювати функції хост-комп'ютера 5000'.

Використовувана в даному документі термінологія має на меті лише опис конкретних варіантів здійснення і не призначена обмежувати винахід. Як використовуються в данно з контексту. Також буде зрозуміло, що терміни "містить" та/або "містить", коли використовуються в цьому описі, визначають наявність зазначених ознак, чисел, етапів, операцій, елементів і/або компонентів, але не виключають наявності або додавання одного або декількох інших ознак, чисел, кроків, операцій, елементів, компонентів та/або їх груп.

Мається на увазі, що відповідні структури, матеріали, дії та еквіваленти всіх елементів "засіб або етап плюс функція" у наданій нижче формулі винаходу, якщо такі є, включають будь-яку структуру, матеріал або дія для виконання функції в поєднанні з іншими заявленими елементами, як заявлено конкретним чином. Опис цього винаходу було представлено з метою демонстрації і опису, та не мається на увазі повним або обмеженим винаходом у формі розкритої. Фахівцям звичайної кваліфікації в даній області техніки будуть очевидні численні модифікації і зміни, що не виходять за межі обсягу і духу винаходу. Варіант здійснення був обраний і описаний для того, щоб найкращим чином пояснити принципи винаходи і застосування на практиці, і щоб дозволити іншим фахівцям обикновенн�ими модифікаціями, які підходять для розглянутого конкретного застосування.

1. Спосіб полегшення доступу до пам'яті, що включає наступні етапи:
здійснювана з урахуванням виконання команди Modify PCI Function Controls (MPFC), яка визначає дескриптор для визначення положення адаптера, покажчик для визначення становища однієї або декількох таблиць трансляції і поле формату, яке вказує вибраний формат трансляції з безлічі доступних форматів трансляції, установка формату трансляції у вибраний формат трансляції, пов'язаний з допомогою дескриптора з адаптером;
динамічно виконується при надходженні запиту від адаптера отримання вказівки формату трансляції, встановленого командою MPFC, який повинен використовуватися при наданні адреси, використовуваного для доступу до пам'яті, при цьому зазначений формат трансляції попередньо реєструють для адаптера, причому запит має початковий адресу, який повинен використовуватися при наданні адреси, використовуваного для доступу до пам'яті;
визначення адреси прямого доступу до пам'яті (DMA), використовуваного для доступу до пам'яті, на підставі отриманого формату трансляції та початкової адреси, при цьому початковий адресу згенерований адаптерество доступних форматів трансляції включає один або більше з наступних форматів:
вибраний сумісний з динамічною трансляцією адреси центрального процесора формат (CPU DAT), вибраний формат трансляції розширеного адреси введення-виводу (I/O), який використовує одну або кілька таблиць трансляції розширеного адреси, формат обходу, в якому здійснюють обхід трансляції адреси, або формат без вилучення, у якому таблиці трансляції адрес не витягують.

3. Спосіб за п. 2, який відрізняється тим, що отримання отримує вказівку про те, що формат трансляції є форматом обходу, і при цьому визначення визначає, що адреса, що використовується для доступу до пам'яті, є початковим адресою, з урахуванням того, що формат трансляції є форматом обходу.

4. Спосіб за п. 3, який відрізняється тим, що формат обходу вибирають на підставі того, що адаптер є надійним адаптером.

5. Спосіб за п. 2, який відрізняється тим, що отримання отримує вказівку про те, що формат трансляції є форматом без вилучення, і при цьому визначення визначає адреса, що використовується для доступу до пам'яті, використовуючи початковий адресу і покажчик на таблицю трансляції адреси найвищого рівня, яка повинна бути використана при визначенні адреси.

6. Спосіб за п. 2, який відрізняється тим, що п�визначення визначає адресу, використовуючи початковий адресу і одну або кілька CPU DAT-сумісних таблиці трансляції.

7. Спосіб за п. 6, відрізняється тим, що CPU DAT-сумісний формат включає один з 4-Кб CPU DAT-сумісного формату або 1-Мб CPU DAT-сумісного формату.

8. Спосіб за п. 2, який відрізняється тим, що отримання отримує вказівку про те, що формат трансляції є вибраним форматом трансляції розширеного адреси введення-виводу, і при цьому визначення визначає адресу, використовуючи початковий адресу і одну або декілька таблиць трансляції вводу-виводу.

9. Спосіб за п. 8, відрізняється тим, що обраний формат трансляції розширеного адреси введення-виводу включає один з формату 4-Кб таблиць трансляції адреси з 4-Кб сторінками формату 1-Мб таблиць трансляції адреси з 4-Кб сторінками формату 1-Мб таблиць трансляції адреси з 1-Мб сторінками.

10. Спосіб за п. 1, який відрізняється тим, що отримання включає перевірку індикатора формату запису в таблиці пристроїв, пов'язаної з адаптером, з отриманням вказівки формату, який необхідно використовувати.

11. Спосіб за п. 1, який відрізняється тим, що установка включає вказівку запису таблиці пристроїв, пов'язаної з адаптером, вибраного формату трансляції.

12. Спосіб за п. 1, відрізняються�, зареєстрованого для іншого адаптера.

13. Система для полегшення доступу до пам'яті, що містить засоби, пристосовані для виконання всіх етапів способу по кожному з попередніх пунктів.

14. Машиночитаемий носій інформації, що містить комп'ютерну програму, виконувану в пристрої обробки даних і містить команди, спеціально пристосовані для виконання етапів способу по кожному з пп. 1-12.



 

Схожі патенти:

Пристрій для завантаження інтегральної схеми soc та інтегральна схема типу soc

Винахід відноситься до обчислювальної техніки. Технічний результат полягає в підвищенні ефективності завантаження і продуктивності інтегральної схеми типу SoC. Пристрій для завантаження інтегральної схеми типу SoC містить модуль інтерфейсу пам'яті, забезпечений інтерфейсом шини пам'яті і сконфігурований для з'єднання із зовнішньою пам'яттю; узгоджувальний модуль шини з прямим доступом до пам'яті (DMA), забезпечений інтерфейсом шини DMA і сконфігурований для передачі даних у зовнішню пам'ять на місце для зберігання, яке відповідає визначеною адресою; модуль завантаження, сконфігурований для відправки команд зчитування і запису даних у зовнішню пам'ять через модуль інтерфейсу пам'яті і для перетворення даних, що передаються зовнішньою пам'яттю, дані, узгоджені з согласующим модулем шини DMA; і модуль налаштування параметрів, сконфігурований для налагодження керуючих команд для відправки команд зчитування і запису даних у зовнішню пам'ять; при цьому модуль налаштування параметрів містить модуль настройки шинного інтерфейсу і модуль налаштування DMA. 2 н. і 4 з.п. ф-ли, 2 іл.

Гетерогенний процесор

Винахід відноситься до галузі обчислювальної техніки, а саме до області цифрової обробки сигналів. Технічний результат - зниження енергоспоживання на одиницю продуктивності і підвищення продуктивності процесора. Гетерогенний процесор містить: універсальний процесор з портом, блок вводу/виводу з портом, контролер оперативної пам'яті з портом, блок прискореного виконання алгоритмів цифрової обробки сигналів з портом, що складається з контролера прямого доступу до пам'яті блоки пам'яті програм і блоку управління обчислювальними секціями, кожна з яких складається з блоку регістрового файлу з портами, сполученого з портом блоку управління обчислювальними секціями, локального блоку ОЗП і блоку арифметико-логічного пристрою, що складається з блоків вхідних регістрів, блоків вихідних регістрів, блоків умножителей і блоків суматорів, встановлених в кількості, достатній для виконання операції B±C×D кожен такт, де B, C і D - комплексні числа, дійсні та уявні частини яких є 32-розрядними числами з плаваючою комою, а процесор оснащений блоком буферної пам'яті з портами. 3 іл.

Інтерфейс користувача

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

Пристрій пересилання даних і видеоигровое пристрій, в якому воно використовується

Винахід відноситься до пристроїв передачі даних, яка передає та приймає дані через шини даних, що зв'язують безліч передавачів даних

Контролер прямого доступу до пам'яті

Винахід відноситься до обчислювальної техніки і забезпечує управління передачею даних між зовнішнім пристроєм та системою пам'яттю, логічно розбита на блоки, у відповідності зі списком або зчепленими списками атрибутів блоків, подготавливаемими процесором в системній пам'яті

Пристрій для сполучення цвм з зовнішнім пристроєм

Винахід відноситься до обчислювальної техніки і може бути використане в автоматизованих системах контролю цифрових логічних пристроїв для сполучення цифрової обчислювальної машини з об'єктами контролю за різних параметрах тимчасової діаграми обміну

Трансляція адрес вводу-виводу адреси комірок пам'яті

Винахід відноситься до області трансляції (перетворення або переказу) адрес в комп'ютерному середовищі. Технічним результатом є підвищення ефективності трансляції адрес. Описано перетворення адреси, що міститься в запиті, що видаються адаптером, адреса, безпосередньо застосовний при доступі до системної пам'яті. Адреса містить безліч розрядів, в яке входить перша частина розрядів і друга частина розрядів. Друга частина розрядів використовується для індексації в таблиці трансляції адрес одного або декількох рівнів з метою здійснення перетворення, а перша частина розрядів не враховується при перетворенні. Перша частина розрядів використовується для перевірки достовірності адреси. 2 н. і 10 з.п. ф-ли, 25 іл.

Пристрій для перетворення віртуальних адрес у фізичні адреси

Винахід відноситься до обчислювальної техніки. Технічний результат полягає в підвищенні надійності перетворення віртуальних адрес у фізичні адреси за рахунок введення контролю за перетворені віртуальним адресою. Пристрій для перетворення віртуальних адрес у фізичні адреси містить елемент пам'яті з таблицею перетворення адрес першого рівня і кеш-пам'ять, причому додатково введені багатоканальний комутатор запитів перетворення віртуальних адрес, перші групи входів/виходів якого є відповідними групами входів/виходів пристрою, і блок управління перетворенням, перша група входів/виходів якого з'єднаний із другою групою входів/виходів багатоканального комутатора запитів, а друга група входів/виходів з'єднана з групою входів/виходів кеш-пам'яті, причому третя група входів/виходів блоку управління перетворенням є відповідною групою входів/виходів пристрою, при цьому блок керування перетворенням включає в себе керуючий кінцевий автомат і елемент пам'яті з таблицею перетворення адрес першого рівня, в яку введені поля розміру і зсуву, а в кожен канал комутатора запитів

Спосіб і пристрій трансляції адреси

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

Пристрій обробки інформації, спосіб управління процесом і комп'ютерна програма

Винахід відноситься до способу і пристрою обробки даних з оптимальним логічним процесором, виділеним для фізичного процесора

Енергонезалежне пристрій пам'яті, пристрій запису і спосіб запису

Винахід відноситься до незалежного пристрою пам'яті, що включає в себе таблицю управління логічними/фізичними адресами для управління незалежним пристроєм пам'яті, в якому здійснюють дискретну запис даних, що складається з безлічі блоків, кожен з яких служить в якості блоку стирання даних і включає в себе сусідні сторінки, кожна з яких має фіксовану довжину і служить в якості блоку зчитування/запису даних, і відноситься до пристрою запису, а також до способу запису для генерації керуючих даних, які заносять до каталогу в таблиці управління логічними/фізичними адресами і використовуються при здійсненні доступу до незалежного пристрою пам'яті

Пристрій управління пам'яттю

Винахід відноситься до обчислювальної техніки, зокрема до пристроїв керування ЕОМ, і може бути використано при проектуванні пам'яті обчислювальної системи
Up!