Реферат: Керiвництво программиста

--PAGE_BREAK--
80386.

Синхронизація процесора 80386 в точності відповідає синхронизації80286.

Інтерфейс процесора 80386 в значному ступені схожий на інтерфейс 80286 хоча і зазнав ряду змін.

Шина даних припускає як 16-ти, так і 32-разрядный режим обміну, в залежності від стану вхідного сигналу BS16#. При читанні в 16-розрядномурежимі дані на лініях D [16-31] ігноруються, при записі процесор керує всією шиною даних незалежно від сигналу BS16#/.

Шина адреси дозволяє адресувати 4 Гб фізичної пам'яті в захищеному режимі і 1 Мб з області молодших адрес в реальному режимі. При виконанні інструкцій введення-висновку процесор адресується до області 64 Кб простори введення-виведення(00000000-0000FFFFh). При обміні з сопроцесором в циклах введення-виведенняпроцесор виставляє адреси 800000F8-8000000FFh, що спрощуєдешифрацію адреси зовнішніми схемами. Лінії A [31: 2] ідентифікують адресу з точністю до подвійного слова, а в межах цього слова сигнали BE[0: 3]# безпосередно вказують, що байтивикористовуються в даному циклі. Якщо в поточному циклі запису обидва сигналиBE0# і BE1# неактивні, виводимідані старших байт автоматичнодублюються на лініях молодших. Якщо слово, що адресувалося перетинає межу подвійного слова, процесор після пересилки молодшої частини, що помістилася,автоматичногенерує додатковий цикл обміну з іншими значеннями A [31: 2] і BE [3: 0] #.

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

     Тип циклу локальної шини визначається сигналами M/IO#, D/C#, W/R# і LOCK#, комбінація яких дійсна під час активності сигналу ADS# (строб адреси). Сигнали керування шиною ADS#, READY# і NA# задають тимчасові межі циклів і керують конвейєрною адресацією. Сигнал ADS# відзначає початоккожного циклу, під час його чинності виробляється ідентифікація типу циклу і фіксується відповіднайому адреса. Сигнал READY# повинен вводитися зовнішньою схемою в кожному циклі, відзначаючи готовність до завершення поточного циклу. Сигнал NA# використовується для запитання наступної адреси при конвейєрній адресації, коли зовнішні схеми вже готові сприйняти нову адресу і сигнали ідентифікації. Якщо процесор вже має внутрішнє запитання на наступний шини цикл, він видасть адресу і ідентифікаторинаступного циклу до завершення поточного.

Сигнали арбітражу локальної шини передвизначені для передачі керування локальною шиною іншому влаштуванню по його запитанню — переходу в стан лог. “1” лінії HOLD. Коли процесор визнає можливим передачу керування (в незаблокованих циклах відразу по завершенні поточного шиногоциклу), він виставить сигнал підтвердження HLDA. В такому стані процесор переводить в високоімпеданснийстан всі двунаправленіі вихідні лінії. Цим станом можна користуватися і для отладки апаратних засобів. Шиніцикли процесора уявлені на рисунках 1.4 і 1.5.

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

В блок обчислення адреси додане нове влаштування — блок трансляції сторінок. Дане влаштування транслює лінійну адресу в фізичнуі перебує з трьох основних блоків: ПЛМ керування, суматор фізичної адреси і кеш-пам'яті сторінок (TLB).

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

<img width=«487» height=«479» src=«ref-1_1972036684-8279.coolpic» v:shapes="_x0000_s1560 _x0000_s1561 _x0000_s1562 _x0000_s1563 _x0000_s1564 _x0000_s1565 _x0000_s1566 _x0000_s1567 _x0000_s1568 _x0000_s1569 _x0000_s1570 _x0000_s1571 _x0000_s1572 _x0000_s1573 _x0000_s1574 _x0000_s1575 _x0000_s1576 _x0000_s1577 _x0000_s1578 _x0000_s1579 _x0000_s1580 _x0000_s1581 _x0000_s1582 _x0000_s1583 _x0000_s1584 _x0000_s1585 _x0000_s1586 _x0000_s1587 _x0000_s1588 _x0000_s1589 _x0000_s1590 _x0000_s1591 _x0000_s1592 _x0000_s1593 _x0000_s1594 _x0000_s1595 _x0000_s1596 _x0000_s1597 _x0000_s1598 _x0000_s1599 _x0000_s1600 _x0000_s1601 _x0000_s1602 _x0000_s1603 _x0000_s1604 _x0000_s1605 _x0000_s1606 _x0000_s1607 _x0000_s1608 _x0000_s1609 _x0000_s1610 _x0000_s1611 _x0000_s1612 _x0000_s1613 _x0000_s1614 _x0000_s1615 _x0000_s1616 _x0000_s1617 _x0000_s1618 _x0000_s1619 _x0000_s1620 _x0000_s1621 _x0000_s1622 _x0000_s1623 _x0000_s1624 _x0000_s1625 _x0000_s1626 _x0000_s1627 _x0000_s1628 _x0000_s1629 _x0000_s1630 _x0000_s1631 _x0000_s1632 _x0000_s1633 _x0000_s1634 _x0000_s1635 _x0000_s1636 _x0000_s1637 _x0000_s1638 _x0000_s1639 _x0000_s1640 _x0000_s1641 _x0000_s1642 _x0000_s1643 _x0000_s1644 _x0000_s1645 _x0000_s1646 _x0000_s1647 _x0000_s1648 _x0000_s1649 _x0000_s1650 _x0000_s1651 _x0000_s1652 _x0000_s1653 _x0000_s1654 _x0000_s1655 _x0000_s1656 _x0000_s1657 _x0000_s1658 _x0000_s1659 _x0000_s1660 _x0000_s1661 _x0000_s1662 _x0000_s1663 _x0000_s1664 _x0000_s1665 _x0000_s1666 _x0000_s1667 _x0000_s1668 _x0000_s1669 _x0000_s1670 _x0000_s1671 _x0000_s1672 _x0000_s1673 _x0000_s1674 _x0000_s1675 _x0000_s1676 _x0000_s1677 _x0000_s1678 _x0000_s1679 _x0000_s1680 _x0000_s1681 _x0000_s1682 _x0000_s1683 _x0000_s1684 _x0000_s1685 _x0000_s1686 _x0000_s1687 _x0000_s1688 _x0000_s1689 _x0000_s1690 _x0000_s1691 _x0000_s1692 _x0000_s1693 _x0000_s1694 _x0000_s1695 _x0000_s1696 _x0000_s1697 _x0000_s1698 _x0000_s1699 _x0000_s1700 _x0000_s1701 _x0000_s1702 _x0000_s1703 _x0000_s1704 _x0000_s1705 _x0000_s1706 _x0000_s1707 _x0000_s1708 _x0000_s1709 _x0000_s1710 _x0000_s1711 _x0000_s1712 _x0000_s1713 _x0000_s1714 _x0000_s1715 _x0000_s1716 _x0000_s1717 _x0000_s1718 _x0000_s1719 _x0000_s1720 _x0000_s1721 _x0000_s1722 _x0000_s1723 _x0000_s1724 _x0000_s1725 _x0000_s1726 _x0000_s1727 _x0000_s1728 _x0000_s1729 _x0000_s1730 _x0000_s1731 _x0000_s1732 _x0000_s1733 _x0000_s1734 _x0000_s1735 _x0000_s1736 _x0000_s1737 _x0000_s1738 _x0000_s1739 _x0000_s1740 _x0000_s1741 _x0000_s1742 _x0000_s1743 _x0000_s1744 _x0000_s1745 _x0000_s1746 _x0000_s1747 _x0000_s1748 _x0000_s1749 _x0000_s1750 _x0000_s1751 _x0000_s1752 _x0000_s1753 _x0000_s1754 _x0000_s1755 _x0000_s1756 _x0000_s1757 _x0000_s1758 _x0000_s1759 _x0000_s1760 _x0000_s1761 _x0000_s1762 _x0000_s1763 _x0000_s1764 _x0000_s1765 _x0000_s1766 _x0000_s1767 _x0000_s1768 _x0000_s1769 _x0000_s1770 _x0000_s1771 _x0000_s1772 _x0000_s1773 _x0000_s1774 _x0000_s1775 _x0000_s1776 _x0000_s1777 _x0000_s1778 _x0000_s1779 _x0000_s1780 _x0000_s1781 _x0000_s1782 _x0000_s1783 _x0000_s1784 _x0000_s1785 _x0000_s1786 _x0000_s1787 _x0000_s1788 _x0000_s1789 _x0000_s1790 _x0000_s1791 _x0000_s1792 _x0000_s1793 _x0000_s1794 _x0000_s1795 _x0000_s1796 _x0000_s1797 _x0000_s1798 _x0000_s1799 _x0000_s1800 _x0000_s1801 _x0000_s1802 _x0000_s1803 _x0000_s1804 _x0000_s1805 _x0000_s1806 _x0000_s1807 _x0000_s1808 _x0000_s1809 _x0000_s1810 _x0000_s1811 _x0000_s1812 _x0000_s1813 _x0000_s1814 _x0000_s1815 _x0000_s1816 _x0000_s1817 _x0000_s1818 _x0000_s1819 _x0000_s1820 _x0000_s1821 _x0000_s1822 _x0000_s1823 _x0000_s1824 _x0000_s1825 _x0000_s1826 _x0000_s1827 _x0000_s1828 _x0000_s1829 _x0000_s1830 _x0000_s1831 _x0000_s1832 _x0000_s1833 _x0000_s1834 _x0000_s1835 _x0000_s1836 _x0000_s1837 _x0000_s1838 _x0000_s1839 _x0000_s1840 _x0000_s1841 _x0000_s1842 _x0000_s1843 _x0000_s1844 _x0000_s1845 _x0000_s1846 _x0000_s1847 _x0000_s1848 _x0000_s1849 _x0000_s1850 _x0000_s1851 _x0000_s1852 _x0000_s1853 _x0000_s1854 _x0000_s1855 _x0000_s1856 _x0000_s1857 _x0000_s1858 _x0000_s1859 _x0000_s1860 _x0000_s1861 _x0000_s1862 _x0000_s1863 _x0000_s1864 _x0000_s1865 _x0000_s1866 _x0000_s1867 _x0000_s1868 _x0000_s1869 _x0000_s1870 _x0000_s1871 _x0000_s1872 _x0000_s1873 _x0000_s1874 _x0000_s1875 _x0000_s1876 _x0000_s1877 _x0000_s1878 _x0000_s1879 _x0000_s1880 _x0000_s1881 _x0000_s1882 _x0000_s1883 _x0000_s1884 _x0000_s1885 _x0000_s1886 _x0000_s1887 _x0000_s1888 _x0000_s1889 _x0000_s1890 _x0000_s1891 _x0000_s1892 _x0000_s1893 _x0000_s1894 _x0000_s1895 _x0000_s1896 _x0000_s1897 _x0000_s1898 _x0000_s1899 _x0000_s1900 _x0000_s1901 _x0000_s1902 _x0000_s1903 _x0000_s1904 _x0000_s1905 _x0000_s1906 _x0000_s1907 _x0000_s1908 _x0000_s1909 _x0000_s1910 _x0000_s1911 _x0000_s1912 _x0000_s1913 _x0000_s1914 _x0000_s1915 _x0000_s1916 _x0000_s1917 _x0000_s1918 _x0000_s1919 _x0000_s1920 _x0000_s1921 _x0000_s1922 _x0000_s1923 _x0000_s1924 _x0000_s1925 _x0000_s1926 _x0000_s1927 _x0000_s1928 _x0000_s1929 _x0000_s1930 _x0000_s1931 _x0000_s1932 _x0000_s1933 _x0000_s1934 _x0000_s1935 _x0000_s1936 _x0000_s1937 _x0000_s1938 _x0000_s1939 _x0000_s1940 _x0000_s1941 _x0000_s1942 _x0000_s1943 _x0000_s1944">



Робота TLB відбувається слідуючим чином. Після формування лінійної адреси 3 молодших розрядиполя (біти14-12 лінійної адреси) визначають номер одного з восьмих блоків. Старші 17 розрядів (біти31-15) порівнюються з 17 бітами тегів, що містяться в чотирьох рядках вибраного блоку. При їхньому збігу означенав стоцібазова адреса заміщає 20 старших розрядів лінійної адреси.

Таким чином, кеш-пам'ять сторінок покриває 32*4Кб=128Кб адресного простору, що для більшості додатків забезпечує кеш-попадания з імовірністю 98%.

80486.

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

На зміну конвейєрної адресаціїпопередніх процесорів, починаючи з процесора 80486, введений режим пакетної передачі. Цей режим передвизначений для швидких операцій зі рядками кеша. Рядок кеша процесора 80486 має довжину 16 байт, отже, для її пересилки вимагається чотири 32-розрядных шинихциклу. Оскільки використання кеша припускає, що рядок повиненв ньому бути присутнімцілком, ввели пакетний цикл оптимизований для операцій обміну внутрішнього кеша з оперативною пам'яттю. В цьому циклі адреса і сигнали ідентифікації типу шин циклу видаються тільки в першому такті пакету, а в кожному з наступних тактів можуть передаватися дані, адреса яких вже не передається по шині, а вираховується з першого по правилам, відомим і процесору, і зовнішньому влаштуванню. В пакетний цикл процесор може перетворитибудь-яке внутрішнє запитання на множествену передачу, але при читанні його розмір обмежений одним рядком кеша, а при записі в стандартному режимі шини в пакет може збиратися не більш 32 біт. Більш пізні моделі процесорів при роботі з WB-кешемпри записі рядків в пам'ять збирають в пакет чотири 32-битных циклу, але це вже робота в розширеному режимі шини 486-го процесора. Пакетний цикл починається процесором так же, як і звичайний: на зовнішній шині встановлюється адреса, сигнали ідентифікації типу циклу і формується строб ADS#. В наступному такті передається перша порція даних, і, якщо вона не єдина, сигнал BLAST# має пасивне значення. Якщо влаштування, що адресувалося підтримує пакетний режим, воно повинно відповісти сигналом BRDY# замість сигналу RDY# по готовності даних в першій же передачі даних циклу. В цьому випадку процесор продовжить цикл як пакетний, не вводячи такту адресації-ідентифікації (з сигналом ADS#), а відразу перейде до передачі наступної порції даних. Нормально про завершення пакетного циклу повідомляє влаштуванню сигналом BLAST#, що видається в такті останньої передачі пакету. Якщо у процесора є наміру зібрати пакет, а влаштування відповідає сигналом RDY#, дані будуть передаватися звичайними циклами. Введенням сигналу RDY# замість BRDY# зовнішнє влаштування може в будь-який момент перервати пакетну передачу, і процесор її продовжить звичайними циклами. В ідеальному варіанті (без тактів чекання) для передачі 16 байт в пакетному режимі вимагається усього п'ять тактів шини замість восьми, що зажадалося б при звичайному режимі обміну. Пакетний режим припускає додержання одніх і тих же правилформування наступних адрес як процесором, так і зовнішнім влаштуванням. Під час пакетного циклу процесора 486 старші бітиадреси A[31:4] залишаються незмінними. Змінюватися можуть тільки бітиA [3: 2] і сигнали BE[3:4]#. Таким чином, один пакетний цикл не може перетинати межу рядка кеша. Крім того, є специфічний порядок чергуванняадрес в пакетному циклі, що визначається початковою адресою пакету і розрядністю передач. Якщо під час пакетного циклу процесор виявить активність сигналів BS16# або BS8# до того, як перейти до наступної адреси, будуть завершені поточні 32-бітніцикли. Оскільки пакетний режим підтримується звичайно тільки оперативною пам'яттю (разом зі вторинним кешем), розрядність якої намагаються не усікати, на практиці перетворення послідовності адрес в 8 — або 16-битные передачі вряд чи де використовується. Порядок чергування адрес в пакетному циклі характерний для всіх процесорів Intel і сумісних із ними, починаючи з 486-го. Він оптимизован для двох банкової організації пам'яті, підрозумуючей чергування банків, що використаються в сусідніх передачах пакетного циклу.

Процесор 486 має чотири внутрішніх буферу для операцій запису. Якщо під час внутрішнього запитання процесора на запис всібуферивільні і шина не позичена, запис виконується відразу без буферирування. Якщо шина позичена, запитання спрямовується в буфер, позичаючи для запису тільки один внутрішній такт, а з буферу дані вивантажуються в оперативну пам'ять або влаштування введення-виведенняпо мірі звільнення зовнішньої шини. Зовнішні операції запису з буферів будуть вироблятися в тому же порядку, що і запитання,що надійшли. Однак якщо за наявності невільних буферів з'явиться запитання на читання пам'яті, вономоже бути обслуговане і раніше, ніж задовольняться йому запитання, що передують на запис. Ця зміна послідовності може відбутися тільки в тому випадку, якщо всі запитання запису в буферах зв'язані з кеш-попаданнями, а запитання на читання відноситься до кеш-промаху. Тільки в цьому випадку процесор може сміло міняти порядок операцій, але тільки один раз до тих пір, доки не визволяться всібуферизапису. Більше одного разу міняти порядок в загальному випадку не можна, тому що лічені дані можуть замістити рядок,що модифікувався кеша, з якогооновлена інформація якраз і очікує в буфері черги на запис в основну пам'ять. В такому випадку друга спроба зміни послідовності може порушити цілісність даних. Для операцій введення-виведеннязміна порядку неможлива. Читання введення-виведенняніколи не може обганяти запис в пам'ять. Одинковіоперації висновку не буферируються з тим, щоб дати можливість своєчасно (для програми) повідомити з своєї реакції на запис в порт (викликати апаратне перериванняабо цикл анулювання рядка). Однак засоби введення програмної затримки між одинковими операціями висновку для процесора 486 відрізняються від що передують: тут команда JMP, раніше безумовно що наводить до генерації зовнішнього циклу звертання до пам'яті скоріше усього буде обслугована з внутрішнього кеша, і бажаної затримки не відбудеться. Надійним засобом введення зовнішнього циклу шини між циклами виводає явна операція читання некешуємоїобласті пам'яті. Ця операція буде виконана тільки після завершення попереднього циклу висновку, а наступна операція висновку почнеться тільки по завершенні цього читання. Операції блочного висновку, викликані інструкцією REP OUTS, будуть використати буфери, але порядок не буде порушений.

Синхронизація процесора здійснюється зовнішнім сигналом CLK, всі тимчасові параметри відраховуються відносно його позитивного перепада. Зовнішня частота процесором вже не ділиться навпіл (як у 386-го), а може навіть умножатися на коефіцієнт, що у різних моделей процесорів може приймати значення 1, 2, 2.5 і 3. При Цьому інтерфейс зовнішньої шини процесора завжди працює на зовнішній частоті, а частота тактування обчислювального ядра може підвищуватися в декілька раз. Стандартними значеннями зовнішньої частоти є 25, 33.33, 40 і 50 МГц. Коефіцієнт множення задається рівнем логічного сигналу на вході CLKMUL.

Шина адреси дозволяє адресувати 4 Гб фізичної пам'яті в захищеному режимі і 1 Мб з області молодших адрес в реальному режимі. Сигналом A20M# можна включити примусове обнуленнялінії A20 (як для внутрішнього кэша, так і для зовнішніх операцій). Таким чином эмулюється циклічне повернення адреси процесора 8086/88 (сигнал сприймається тільки в реальному режимі). При виконанні інструкцій введення-виведенняпроцесор адресується в 64 Кб простори введення-виведення. Лінії A[31:2] ідентифікують адресу з точністю до подвійного слова, а в межах цього слова сигнали BE[3:0]# безпосередно вказують, якібайтивикористовуються в даному циклі. Лінії A[31:4], що визначають адресурядка внутрішнього кеша, в циклах анулювання працюють на введення.

Шина даних D[31:0] припускає як 32-розрядний режим, так і 16 — і 8-розрядний, в залежності від стану вхідних сигналів BS16# або BS8#. Але, в відзнаку від 386-го, перекомутація байтів не здійснюється. Кожний байт шини даних має бітпаритету DP[3:0]. Схеми паритету генерують коректніконтрольні бітив циклах запису, а в циклах читання в випадку помилки паритету тільки виробляється сигнал помилки на виході PCHK#, що ніяк не впливаєна роботу процесора. Він може використовуватися зовнішніми схемами по розсуду розробника системної плати.

Тип циклу локальної шини визначається сигналами M/IO#, D/C#, W/R# і LOCK# під час активності сигналу ADS#.

Сигнали арбітражу локальної шини у порівнянні з попередніми процесорами доповнені вихідною лінією BREQ, що управляється процесором в будь-якому стані. Цей сигнал вказує зовнішньому арбітру на те, що процесор має внутрішнє запитання на використання шини. Сигнал встановлюється водночас зі стробом ADS#. Якщо процесор в даний момент не керує шиною, тосигнал з'явиться в той момент, коли процесор виставив б сигнал ADS#. Для запитання передачі керування локальною шиною іншому влаштуванню використовується сигнал HOLD. Коли процесор визнає можливим передачу керування, він виставить сигнал підтвердження HLDA. Крім того, є сигнал безумовного отключення процесора від шини — BOFF#. По цьому сигналу процесор віддає керування шиною в наступному же такті, а поточний цикл може бути перерваний. По Закінченню чинності сигналу BOFF# процесор рестартуєперерваний цикл, знову ввівши такт адресаціїі ідентифікації зі стробом ADS#. Для внутрішніх вузлів процесора це бачитьсяяк введення тактівчекання. Сигнал AHOLD передвизначений для захоплення зовнішнім контролером тільки шини адреси для анулювання рядків внутрішньої кеш-пам'яті. Анулювання рядка виробляється за наявності строба зовнішньої адреси EADS#.

До інтерфейсу кеш-пам'яті відносяться вхідні сигнали KEN# (дозвіл кешировання пам'яті по поточній адресі), FLUSH# (анулювання всіх рядків внутрішнього кеша з попереднім вивантаженням рядків, що модифікувалися в випадку застосування зворотного запису) і вихідні сигнали PWT і PCD, керуючізовнішнім кешированням. Процесори, працюючі в режимі зворотного запису кэша, використають додаткові сигнали INV, HITM#, CASHE# і WB/WT#. Перші процесори сімейства 486-х в первинному кеше забезпечували тільки політику наскрізногозапису. Для них не було необхідностів реалізації пакетного режиму при записі. Запис зовнішнім контролером в кешуюму пам'ять наводить тільки до анулювання рядка кеша, якщо осередок, до якої буде в обігу зовнішній контролер, уявлений і в внутрішньому кеші. Для політики зворотного запису інтерфейс ускладнюється — необхідно забезпечення можливості вивантаження рядків кеша,що модифікувалися в основну пам'ять, якщо до пам'яті, що відображається цими рядками, буде в обігу зовнішній контролер шини. З цими відмінностями зв'язані поняття стандартного і розширеного режиму шини процесора 486. Стандартний режим шини передвизначений для роботи первинного кеша з політикою наскрізний запису, що повністю сумісно з інтерфейсом перших процесорів 486 з WT-кешем. Його основні відзнаки наступні: на сигнал FLUSH# процесор не відповідає спеціальним циклом підтвердження; по сигналу FLUSH# процесор анулює всіх рядки внутрішнього кеша за 15-20 тактів CLK; сигнали, специфічнідля WB-кеша, ігноруються; сигнал EADS# сприймається в будь-який момент часу. Розширений режим шини передвизначений для роботи первинного кеша з політикою зворотного запису, що повністю сумісно з інтерфейсом процесорів 486 з WB-кешем. Його основні відзнаки наступні: по сигналу FLUSH# процесор виконує зворотні записи рядків, що модифікувалися кеша, після чого відповідає спеціальним циклом підтвердження; зворотний запис рядків, що модифікувалися кеша, що виконується по сигналу FLUSH# і інструкції WBINVD, може позичати біля 2000 тактів CLK, система повинна спостерігати за шиною, очікуючи спеціального циклу підтвердження; сигнали BLEN#, EWBE#, WB/WT#, INV сприймаються процесором; сигнал WB/WT# сприймається в кожному циклі звертання до пам'яті, дозволяючи визначати політику запису для кожного рядка окремо; сигнал EADS# сприймається тільки в стані HOLD, AHOLD або BOFF#; сигнал PLOCK# не активний (постійний високий рівень). Вибір режиму шини здійснюється процесором за станом лінії WB/WT# в момент закінчення сигналу RESET, низькому рівню відповідає стандартний режим шини. Сигнал всередині процесора резистором підтягується до низького рівня, так що на системній платі, не зворотного запису, що підтримує режим, процесор завжди буде працювати в стандартному режимі. На рисунку 1.6 уявлений пакетний цикл заповнення рядка кеш-пам'яті.

<img width=«409» height=«328» src=«ref-1_1972044963-3933.coolpic» v:shapes="_x0000_s1945 _x0000_s1946 _x0000_s1947 _x0000_s1948 _x0000_s1949 _x0000_s1950 _x0000_s1951 _x0000_s1952 _x0000_s1953 _x0000_s1954 _x0000_s1955 _x0000_s1956 _x0000_s1957 _x0000_s1958 _x0000_s1959 _x0000_s1960 _x0000_s1961 _x0000_s1962 _x0000_s1963 _x0000_s1964 _x0000_s1965 _x0000_s1966 _x0000_s1967 _x0000_s1968 _x0000_s1969 _x0000_s1970 _x0000_s1971 _x0000_s1972 _x0000_s1973 _x0000_s1974 _x0000_s1975 _x0000_s1976 _x0000_s1977 _x0000_s1978 _x0000_s1979 _x0000_s1980 _x0000_s1981 _x0000_s1982 _x0000_s1983 _x0000_s1984 _x0000_s1985 _x0000_s1986 _x0000_s1987 _x0000_s1988 _x0000_s1989 _x0000_s1990 _x0000_s1991 _x0000_s1992 _x0000_s1993 _x0000_s1994 _x0000_s1995 _x0000_s1996 _x0000_s1997 _x0000_s1998 _x0000_s1999 _x0000_s2000 _x0000_s2001 _x0000_s2002 _x0000_s2003 _x0000_s2004 _x0000_s2005 _x0000_s2006 _x0000_s2007 _x0000_s2008 _x0000_s2009 _x0000_s2010 _x0000_s2011 _x0000_s2012 _x0000_s2013 _x0000_s2014 _x0000_s2015 _x0000_s2016 _x0000_s2017 _x0000_s2018 _x0000_s2019 _x0000_s2020 _x0000_s2021 _x0000_s2022 _x0000_s2023 _x0000_s2024 _x0000_s2025 _x0000_s2026 _x0000_s2027 _x0000_s2028 _x0000_s2029 _x0000_s2030 _x0000_s2031 _x0000_s2032 _x0000_s2033 _x0000_s2034 _x0000_s2035 _x0000_s2036 _x0000_s2037 _x0000_s2038 _x0000_s2039 _x0000_s2040 _x0000_s2041 _x0000_s2042 _x0000_s2043 _x0000_s2044 _x0000_s2045 _x0000_s2046 _x0000_s2047 _x0000_s2048 _x0000_s2049 _x0000_s2050 _x0000_s2051 _x0000_s2052 _x0000_s2053 _x0000_s2054 _x0000_s2055 _x0000_s2056 _x0000_s2057 _x0000_s2058 _x0000_s2059 _x0000_s2060 _x0000_s2061 _x0000_s2062 _x0000_s2063 _x0000_s2064 _x0000_s2065 _x0000_s2066 _x0000_s2067 _x0000_s2068 _x0000_s2069 _x0000_s2070 _x0000_s2071 _x0000_s2072 _x0000_s2073 _x0000_s2074 _x0000_s2075 _x0000_s2076 _x0000_s2077 _x0000_s2078 _x0000_s2079 _x0000_s2080 _x0000_s2081 _x0000_s2082 _x0000_s2083 _x0000_s2084 _x0000_s2085 _x0000_s2086 _x0000_s2087 _x0000_s2088 _x0000_s2089 _x0000_s2090 _x0000_s2091 _x0000_s2092 _x0000_s2093 _x0000_s2094 _x0000_s2095 _x0000_s2096 _x0000_s2097 _x0000_s2098 _x0000_s2099 _x0000_s2100 _x0000_s2101 _x0000_s2102 _x0000_s2103 _x0000_s2104 _x0000_s2105 _x0000_s2106 _x0000_s2107 _x0000_s2108 _x0000_s2109 _x0000_s2110 _x0000_s2111 _x0000_s2112 _x0000_s2113 _x0000_s2114 _x0000_s2115 _x0000_s2116 _x0000_s2117 _x0000_s2118 _x0000_s2119 _x0000_s2120 _x0000_s2121 _x0000_s2122 _x0000_s2123 _x0000_s2124 _x0000_s2125 _x0000_s2126 _x0000_s2127 _x0000_s2128 _x0000_s2129 _x0000_s2130 _x0000_s2131">



Процесор 486 має RISC-ядро, що зажадало докорінної зміни дешифраціїкоманд. Черга кодів перебує з двох блоків по 16 байт і заповнюється, або з кэша за 1 такт, або швидкими пакетними циклами поблочно. Запитання на передвиборку має нижчий пріоритет у порівнянні з іншими запитаннями, що дозволяє звести до мінімуму час, необхідний для вибірки операнда. На рисунку 1.7 уявлений конвейєр процесора.
<img width=«511» height=«81» src=«ref-1_1972048896-1621.coolpic» v:shapes="_x0000_s2475 _x0000_s2476 _x0000_s2477 _x0000_s2478 _x0000_s2479 _x0000_s2480 _x0000_s2481 _x0000_s2482 _x0000_s2483 _x0000_s2484 _x0000_s2485">



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

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

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

Процесор має внутрішню 64-розрядну шину, що зв'язує кеш-пам'ять з основними внутрішніми блоками, що дозволяє за один такт передавати операнд з плаваючою крапкою або дескриптор сегменту.
    продолжение
--PAGE_BREAK--
Pentium.

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

Шина даних стала 64-бітной для підвищення продуктивності обміну з пам'яттю. Можливість динамічного керування розрядністю шини вилучена, погодження по розрядностіз інтерфейсними шинами покладене на мікросхемичипсета. При дозволеному контролі паритету даних (сигнал PEN) помилка викликає не тільки спрацьовуваннясигналу PCHK#, але і фіксацію збойноїадреси і даних в регістрі машинного контролю. А якщо встановлен бітMCE регістру CR4, по цій помилці генерується виключення 18. В доповнення до контролю паритету шини даних введен контроль паритету шини адреси. Виявлена помилка паритету бітівA[31:5] шини адреси тільки викликає сигнал помилки APCHK#, що може бути оброблений системною логікою.

Пакетні цикли виконуються тільки у разі звертання до пам'яті, причому як при читанні, так і при записі. Пакетні цикли зв'язані тільки з кешуємоюпам'яттю, при цьому кешуємість пам'яті подразумуєі її підтримку пакетного режиму. Під час пакетного циклу сигнали дозволу байт і молодші бітиадреси не міняються. Порядок чергування адрес, як і у процесора 486, оптимизован для двухбанковоїорганізації пам'яті. Знову з'явилася конвейєрна адресація, що дозволяє водночас на шині бути присутімдвом обслуговуваним запитанням. Ознакою пакетного циклу (і його закінчення) є сигнал CASHE#. Зовнішня система не може перервати пакетний цикл, початий процесором. Конвейєризация запрошується сигналом NA#, в відповідь на який процесор через такт видасть адресу наступного циклу. Без конвейєризаціїнаступна адреса була б виставлена тільки після завершення передачі даних поточного циклу.

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

          Для підтримання погодженості даних кеша і основної пам'яті процесор відпрацьовує цикли спостереження, що ініціювалися зовнішньою системою. Ці цикли, як і в 486-м, використають сигнали AHOLD#, EADS# і відповідні сигнали процесора HIT# і HITM#. Сигнал FLUSH# викликає вивантаження всіх рядків, що модифікувалися первинного кеша. Цикли спостереженняініціюються системою для визначення присутності затребуваної області пам'яті в рядку будь-як кеш-пам'яті і визначення її стану. Процесори, починаючи з Pentium, підтримують протокол MESI, названий по їм станам,що визначаються: Modified, Exclusive, Shared, Invalid. Стану визначаються слідуючим чином: M-state — рядок присутнійтільки в одному кешіі модифікований, те є відрізняється від вмісту основної пам'яті. Доступ до цього рядка можливий без генерації зовнішнього (по відношенню до локальної шини) циклу звертання; E-state — рядок присутнійтільки в одному кеші, але не модифікований. Доступ до цього рядка можливий без генерації зовнішнього циклу звертання, при записі вона перейде в стан М; S-state — рядок потенційно може бути присутнімв декількох кешах. Її читання можливо без генерації зовнішнього циклу, а запис в неї повинна супроводжуватися наскрізним записом в основну пам'ять, що притягне анулювання відповідних рядків в інших кешах; I-state — рядок буде відстуній в кеше, її читання може призвести до генерації циклу заповнення рядка. Запис в неї буде наскрізний і вийде на зовнішню шину. Шини цикли процесора уявлені на рисунку 1.8.

<img width=«441» height=«321» src=«ref-1_1972050517-4846.coolpic» v:shapes="_x0000_s2132 _x0000_s2133 _x0000_s2134 _x0000_s2135 _x0000_s2136 _x0000_s2137 _x0000_s2138 _x0000_s2139 _x0000_s2140 _x0000_s2141 _x0000_s2142 _x0000_s2143 _x0000_s2144 _x0000_s2145 _x0000_s2146 _x0000_s2147 _x0000_s2148 _x0000_s2149 _x0000_s2150 _x0000_s2151 _x0000_s2152 _x0000_s2153 _x0000_s2154 _x0000_s2155 _x0000_s2156 _x0000_s2157 _x0000_s2158 _x0000_s2159 _x0000_s2160 _x0000_s2161 _x0000_s2162 _x0000_s2163 _x0000_s2164 _x0000_s2165 _x0000_s2166 _x0000_s2167 _x0000_s2168 _x0000_s2169 _x0000_s2170 _x0000_s2171 _x0000_s2172 _x0000_s2173 _x0000_s2174 _x0000_s2175 _x0000_s2176 _x0000_s2177 _x0000_s2178 _x0000_s2179 _x0000_s2180 _x0000_s2181 _x0000_s2182 _x0000_s2183 _x0000_s2184 _x0000_s2185 _x0000_s2186 _x0000_s2187 _x0000_s2188 _x0000_s2189 _x0000_s2190 _x0000_s2191 _x0000_s2192 _x0000_s2193 _x0000_s2194 _x0000_s2195 _x0000_s2196 _x0000_s2197 _x0000_s2198 _x0000_s2199 _x0000_s2200 _x0000_s2201 _x0000_s2202 _x0000_s2203 _x0000_s2204 _x0000_s2205 _x0000_s2206 _x0000_s2207 _x0000_s2208 _x0000_s2209 _x0000_s2210 _x0000_s2211 _x0000_s2212 _x0000_s2213 _x0000_s2214 _x0000_s2215 _x0000_s2216 _x0000_s2217 _x0000_s2218 _x0000_s2219 _x0000_s2220 _x0000_s2221 _x0000_s2222 _x0000_s2223 _x0000_s2224 _x0000_s2225 _x0000_s2226 _x0000_s2227 _x0000_s2228 _x0000_s2229 _x0000_s2230 _x0000_s2231 _x0000_s2232 _x0000_s2233 _x0000_s2234 _x0000_s2235 _x0000_s2236 _x0000_s2237 _x0000_s2238 _x0000_s2239 _x0000_s2240 _x0000_s2241 _x0000_s2242 _x0000_s2243 _x0000_s2244 _x0000_s2245 _x0000_s2246 _x0000_s2247 _x0000_s2248 _x0000_s2249 _x0000_s2250 _x0000_s2251 _x0000_s2252 _x0000_s2253 _x0000_s2254 _x0000_s2255 _x0000_s2256 _x0000_s2257 _x0000_s2258 _x0000_s2259 _x0000_s2260 _x0000_s2261 _x0000_s2262 _x0000_s2263 _x0000_s2264 _x0000_s2265 _x0000_s2266 _x0000_s2267 _x0000_s2268 _x0000_s2269 _x0000_s2270 _x0000_s2271 _x0000_s2272 _x0000_s2273 _x0000_s2274 _x0000_s2275 _x0000_s2276 _x0000_s2277 _x0000_s2278 _x0000_s2279 _x0000_s2280 _x0000_s2281 _x0000_s2282 _x0000_s2283 _x0000_s2284 _x0000_s2285 _x0000_s2286 _x0000_s2287 _x0000_s2288 _x0000_s2289 _x0000_s2290 _x0000_s2291 _x0000_s2292 _x0000_s2293 _x0000_s2294 _x0000_s2295 _x0000_s2296 _x0000_s2297 _x0000_s2298 _x0000_s2299 _x0000_s2300 _x0000_s2301 _x0000_s2302 _x0000_s2303 _x0000_s2304 _x0000_s2305 _x0000_s2306 _x0000_s2307 _x0000_s2308 _x0000_s2309 _x0000_s2310 _x0000_s2311 _x0000_s2312 _x0000_s2313 _x0000_s2314 _x0000_s2315 _x0000_s2316 _x0000_s2317 _x0000_s2318 _x0000_s2319 _x0000_s2320 _x0000_s2321 _x0000_s2322 _x0000_s2323 _x0000_s2324 _x0000_s2325 _x0000_s2326 _x0000_s2327 _x0000_s2328 _x0000_s2329 _x0000_s2330 _x0000_s2331 _x0000_s2332 _x0000_s2333 _x0000_s2334 _x0000_s2335 _x0000_s2336 _x0000_s2337 _x0000_s2338 _x0000_s2339 _x0000_s2340 _x0000_s2341 _x0000_s2342 _x0000_s2343 _x0000_s2344 _x0000_s2345 _x0000_s2346 _x0000_s2347 _x0000_s2348 _x0000_s2349 _x0000_s2350 _x0000_s2351 _x0000_s2352 _x0000_s2353 _x0000_s2354 _x0000_s2355 _x0000_s2356 _x0000_s2357">



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

Структура конвейєрів уявлена на рисунку 1.9 (Пунктиром показані стадії, добавлені в процесори з підтримкою ММХ). На стадії передвибірки PF команди вибираються з кеша команд. Далі вони надходять на стадію вибірки F. Тут відбувається розподіл вибраної порції коду на окремі команди, а також декодуваннябудь-яких префіксів. Між стадією F і D1 знаходиться FIFO-буфер. В ньому може міститися до чотирьох інструкцій (в процесорах без ММХ буфер буде відстуній, а префікси декодуються на стадії D1). Буфер прозорий, т. є. він не віднімає часу, коли пуст. В кожному такті з стадії F в буфер може надходити до двох інструкцій. Бо середня швидкість виконання команд менш ніж дві команди за такт, те буфер звичайно заповнений.

          На стадії D1 відбувається перетворення команд в RISC-інструкціїі прийняття рішення про распаралелювання. Далі команди надходять в два конвейєра. Обидва конвейєра функціонально подібні, але другий Vконвейєр у порівнянні з головнимU має деякі обмеження. Стадія D2, на якій вираховуються адреси операндів пам'яті, має багатоканальний суматор. В відзнаку від відповідної стадії конвейєра попередніх процесорів, ця стадія не вводить додаткових тактів затримки при багатокомпонентних обчисленнях адреси. На стадії ЕХ відбувається безпосереднє виконання команд в цілочисельних АЛУ. Pentium має окремий умножитель, що не використає ресурсів АЛУ, і, отже, дозволяє виконувати інші команди паралельно з множенням. Але бо умножитель тільки один, дві команди множення не распаралеливаються. Множення може вироблятися в Vконвейєрі. Кожний конвейєр має свій буфер записуWB для підвищення продуктивності при послідовних операціях запису в пам'ять. Буфери мають розрядність 64 б і можуть обидва заповнитися за один такт, наприклад, при одночасних кеш-промахах записи на обидва конвейєрах.

<img width=«548» height=«322» src=«ref-1_1972055363-3369.coolpic» v:shapes="_x0000_s2358 _x0000_s2359 _x0000_s2360 _x0000_s2361 _x0000_s2362 _x0000_s2363 _x0000_s2364 _x0000_s2365 _x0000_s2366 _x0000_s2367 _x0000_s2368 _x0000_s2369 _x0000_s2370 _x0000_s2371 _x0000_s2372 _x0000_s2373 _x0000_s2374 _x0000_s2375 _x0000_s2376 _x0000_s2377 _x0000_s2378 _x0000_s2379 _x0000_s2380 _x0000_s2381 _x0000_s2382 _x0000_s2383 _x0000_s2384 _x0000_s2385 _x0000_s2386 _x0000_s2387 _x0000_s2388 _x0000_s2389 _x0000_s2390 _x0000_s2391 _x0000_s2392 _x0000_s2393 _x0000_s2394 _x0000_s2395 _x0000_s2396 _x0000_s2397 _x0000_s2398 _x0000_s2399 _x0000_s2400 _x0000_s2401 _x0000_s2402">



В відзнаку від цілочисельних команд, що цілком виконуються на стадії ЕХ, команди FPU і MMX починають виконуватися на стадії ЕХ, а після цього уходятьна свої стадії. На стадіях конвейєра FPU виконуються наступні дії. На стадії ЕХ відбувається читання операндів з пам'яті і регістрів, далі перехід на стадію Х1 або перетворення даних до зовнішнього формату і запис в пам'ять. На стадії Х1 відбувається перетворення даних до внутрішнього формату і запис в регістр. На стадії Х2 виконання команд, а на стадії WF — округленняі запис результату. Для команд ММХ існують два своїх конвейєра, постачених окремими АЛУ і умножителями. На стадії ЕХ відбувається читання операндів. Стадія Mex — виконання команд, перший такт множення. Стадія Wm/М2 — запис результату однотактних команд, другий такт множення. Стадія М3 — третій такт множення. Wmul — запис результату множення.

Блок попередньої вибірки інструкцій має чотири 32-байтных буферу. На стадії PF дві незалежні пари буферів вибірки працюють разом з цільовим буфером ветвленняВТВ. В кожний момент часу попередню вибірку інструкцій може активно запрошувати тільки один буфер. Вибірка виробляється послідовно до появи інструкції галуження. Коли така інструкція з'являється, ВТВ завбачує, буде чи перехід. Якщо завбачується перехід, те дозволяється робота іншого буферу передвиборки і він починає передвиборку з цільової крапки галуження. Якщо завбачене галуження не відбулося, конвейєри інструкцій скидаються і передвиборка починається знову. Оскільки кеш інструкцій окремий від кэша даних, передвиборка інструкцій не конфліктуєз запитаннями даних з кеша.

Pentium Pro.

Зовнішній інтерфейс процесора Pentium Pro докорінно відрізняється від всіх попередніх моделей процесорів. Застосування динамічного виконання різко підвищує частоту запитань процесорного ядра до шини за даними пам'яті і інструкціями, оскільки ядро водночас обробляє декілька інструкцій. Для обходу вузького місця — зовнішньої шини — кристал процесорного ядра використає архітектуру подвійної незалежної шини. Одна з цих шин використовується тільки для зв'язку з кристалом вторинного кеша, розташованим в тому же корпусі мікросхеми, а у Pentium II — на загальному картриджі. Ця шина є локальною і в геометричному сенсі — провідники мають довжину порядку одиниць сантиметрів, що дозволяє використати її на частоті ядра процесора. Значний обсяг вторинного кеша дозволяє задовольняти більшість запитань до пам'яті суто локально, при цьому коефіцієнт завантаження шини досягає 90%. Друга шина процесорного кристалу виходить на зовнішні виводимікросхеми, вона і є системною шиною процесора. Ця шина працює на зовнішній частоті незалежно від внутрішньої шини. Завантаження процесором зовнішньої шини для звичайних “настольных” застосуваннь складає порядку 10% від її пропускної спроможності, а для серверних застосуваннь може досягати 60% при чотирьохпроцесорной конфігурації. Таким Чином, обмежена пропускна спроможність зовнішньої шини перестаєсильно стримувати продуктивність процесора. Зниження навантаження на зовнішню шину дозволяє ефективно використати багатопроцесорну архітектуру.

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

Сигнали системної шини об'єднуються в групи запитань і відповідей. Кожне влаштування-агент, підключенедо цієї шини, до ініціализаціїзапитання через механізм арбітражу повинно отримати право на використання шини запитання. Запитання виходить за два суміжних такта: в першому такті передається адреса, тип звертання і тому подібна інформація. В другому такті передається унікальний ідентифікатор транзакції, довжина запитання, дозволені байтишини і т. п. Через три тактипісля запитання перевіряється стан помилки для захисту від помилок передачі або порушень протоколу. Будь-яка виявлена помилка викликає повторення запитання, а друга помилка для того же запитання викликає виключення контролю. Шини транзакціїділяться на безліч фаз, перекриваючих друг друга. В фазі завершення всі агенти, що відповідають на дане запитання, при необхідності можуть виставити на шину коди завершення. Інші процесори в цій фазі управляють лініями HIT# і HITM#, в залежності від попадання запитання в їхнійвнутрішній кеш. Агент, що не встигає відповісти за відведені чотири такту, може виставити водночас сигнали HIT# і HITM# для затримки фази завершення на число тактів, кратне двом. В випадку кеш-попадания запитання до пам'яті задовольняє процесор, оскільки передачі кеш-кэш відбуваються швидше. Однак при попаданнів рядок,що модифікувався цикли звертання до пам'яті неминучі. На шині водночас може бути присутнімбезліч запитань і відповідей, однак логічний аналізатор, “що розуміє” протокол шини Pentium Pro, здатний розкласти їх “по полочкам” відповідних транзакцій.

По складу і призначенню сигналів системна шина процесорів шостої ґенерації значно відрізняється від шин попередніх процесорів.

Шина REQ[4:0]# під час першого такту фази запитання несе частину інформації про транзакції, достатню для ініціалізаціїциклу спостереження. При транзакціїдоступу до пам'яті тут же передається інформація про розмір адресного простору — 4 Гб (32-біта) або 64 Гб (38-біт). Під час другого такту фази запитання по цим лініям передається додаткова інформація, включаюча довжину поля даних. Можливо завдання довжини 0-8, 16 або 32 байта.

Шина A[35:3]# використовується багатофункціонально. Під час першого такту фази запитання вона містить адреса пам'яті або введення-висновку, а для транзакцій з відкладеноювідповіддю — її ідентифікатор. Під час другого такту фази запитання ця шина несе інформацію про атрибути транзакції, її ідентифікатор, і додаткові функції,що беруть участь байтах. По закінченню дії сигналу RESET# процесори з цих ліній одержують інформацію про конфігурацію по включенню.

Сигнали запитання BREQ[3:0]# використовуються для арбітражу симетричних агентів. Агент “n” запрошує шину, управляючи сигналом BREQn#, а інші лінії розглядає як вхідні. Симетричні агенти підтримують розподілений механізм арбітражу на основі циклічної зміни ідентифікатора пріоритету. “Що обертається” ідентифікатор подає собою внутрішній стан всіх симетричних агентів для визначення агента з найменшим пріоритетом для наступної події арбітражу. По включенні живлення що обертається ідентифікатор встановлюється в значення 3, дозволяючи агенту 0 мати вищий пріоритет з всіх симетричних агентів. По черговій події арбітражу новий стане рівним номеру агента — поточного власника шини, в результаті чого, віддавши керування шиною при наступній події, він отримає найнижчий пріоритет. Чергова подія трапляється, коли виставляє запитання до вільної шини або поточний власник знімає своє запитання. За станом ліній BREQ[3:0] і значенню ідентифікатора, відомого всім агентам, вони водночас (по однаковим правилам) визначають нового власника шини. Власник шини може відраховувати керування шиною, зберігаючи активне значення свого сигналу запитання. Однак виявивши запитання від інших агентів, він по можливості повинен віддати керування шиною. Для підключення до шини арбітражу BREQ[3:0]# використовуються сигнали процесора BR0#(i/o) і BR[3:1]# (i). Під час конфігурування по включенню центральний агент повинен виставити сигнал BREQ0#. Всі симетричні агенти по сигналам прийнятим зі своїх ліній BR[3:0]#, визначають свій ідентифікатор агента. Процесор Pentium II розрахований на застосування не більш ніж в двухпроцесорних симетричних системах, він має тільки сигнали BR0# і BR1#. Тимчасова діаграма роботи процесора уявлена на рисунку 1.10.

<img width=«561» height=«258» src=«ref-1_1972058732-4741.coolpic» v:shapes="_x0000_s1269 _x0000_s1270 _x0000_s1271 _x0000_s1272 _x0000_s1273 _x0000_s1274 _x0000_s1275 _x0000_s1276 _x0000_s1277 _x0000_s1278 _x0000_s1279 _x0000_s1280 _x0000_s1281 _x0000_s1282 _x0000_s1283 _x0000_s1284 _x0000_s1285 _x0000_s1286 _x0000_s1287 _x0000_s1288 _x0000_s1289 _x0000_s1290 _x0000_s1291 _x0000_s1292 _x0000_s1293 _x0000_s1294 _x0000_s1295 _x0000_s1296 _x0000_s1297 _x0000_s1298 _x0000_s1299 _x0000_s1300 _x0000_s1301 _x0000_s1302 _x0000_s1303 _x0000_s1304 _x0000_s1305 _x0000_s1306 _x0000_s1307 _x0000_s1308 _x0000_s1309 _x0000_s1310 _x0000_s1311 _x0000_s1312 _x0000_s1313 _x0000_s1314 _x0000_s1315 _x0000_s1316 _x0000_s1317 _x0000_s1318 _x0000_s1319 _x0000_s1320 _x0000_s1321 _x0000_s1322 _x0000_s1323 _x0000_s1324 _x0000_s1325 _x0000_s1326 _x0000_s1327 _x0000_s1328 _x0000_s1329 _x0000_s1330 _x0000_s1331 _x0000_s1332 _x0000_s1333 _x0000_s1334 _x0000_s1335 _x0000_s1336 _x0000_s1337 _x0000_s1338 _x0000_s1339 _x0000_s1340 _x0000_s1341 _x0000_s1342 _x0000_s1343 _x0000_s1344 _x0000_s1345 _x0000_s1346 _x0000_s1347 _x0000_s1348 _x0000_s1349 _x0000_s1350 _x0000_s1351 _x0000_s1352 _x0000_s1353 _x0000_s1354 _x0000_s1355 _x0000_s1356 _x0000_s1357 _x0000_s1358 _x0000_s1359 _x0000_s1360 _x0000_s1361 _x0000_s1362 _x0000_s1363 _x0000_s1364 _x0000_s1365 _x0000_s1366 _x0000_s1367 _x0000_s1368 _x0000_s1369 _x0000_s1370 _x0000_s1371 _x0000_s1372 _x0000_s1373 _x0000_s1374 _x0000_s1375 _x0000_s1376 _x0000_s1377 _x0000_s1378 _x0000_s1379 _x0000_s1380 _x0000_s1381 _x0000_s1382 _x0000_s1383 _x0000_s1384 _x0000_s1385 _x0000_s1386 _x0000_s1387 _x0000_s1388 _x0000_s1389 _x0000_s1390 _x0000_s1391 _x0000_s1392 _x0000_s1393 _x0000_s1394 _x0000_s1395 _x0000_s1396 _x0000_s1397 _x0000_s1398 _x0000_s1399 _x0000_s1400 _x0000_s1401 _x0000_s1402 _x0000_s1403 _x0000_s1404 _x0000_s1405 _x0000_s1406 _x0000_s1407 _x0000_s1408 _x0000_s1409 _x0000_s1410 _x0000_s1411 _x0000_s1412 _x0000_s1413 _x0000_s1414 _x0000_s1415 _x0000_s1416 _x0000_s1417 _x0000_s1418 _x0000_s1419 _x0000_s1420 _x0000_s1421 _x0000_s1422 _x0000_s1423 _x0000_s1424 _x0000_s1425 _x0000_s1426 _x0000_s1427 _x0000_s1428 _x0000_s1429 _x0000_s1430 _x0000_s1431 _x0000_s1432 _x0000_s1433 _x0000_s1434 _x0000_s1435 _x0000_s1436 _x0000_s1437 _x0000_s1438 _x0000_s1439 _x0000_s1440 _x0000_s1441 _x0000_s1442 _x0000_s1443 _x0000_s1444 _x0000_s1445 _x0000_s1446 _x0000_s1447 _x0000_s1448 _x0000_s1449 _x0000_s1450 _x0000_s1451 _x0000_s1452 _x0000_s1453 _x0000_s1454 _x0000_s1455 _x0000_s1456 _x0000_s1457 _x0000_s1458 _x0000_s1459 _x0000_s1460 _x0000_s1461 _x0000_s1462 _x0000_s1463 _x0000_s1464 _x0000_s1465 _x0000_s1466 _x0000_s1467 _x0000_s1468 _x0000_s1469 _x0000_s1470 _x0000_s1471 _x0000_s1472 _x0000_s1473 _x0000_s1474 _x0000_s1475 _x0000_s1476 _x0000_s1477 _x0000_s1478 _x0000_s1479 _x0000_s1480 _x0000_s1481 _x0000_s1482 _x0000_s1483 _x0000_s1484 _x0000_s1485 _x0000_s1486 _x0000_s1487 _x0000_s1488 _x0000_s1489 _x0000_s1490 _x0000_s1491 _x0000_s1492 _x0000_s1493 _x0000_s1494 _x0000_s1495 _x0000_s1496 _x0000_s1497 _x0000_s1498 _x0000_s1499 _x0000_s1500 _x0000_s1501 _x0000_s1502 _x0000_s1503 _x0000_s1504 _x0000_s1505 _x0000_s1506 _x0000_s1507 _x0000_s1508 _x0000_s1509 _x0000_s1510 _x0000_s1511 _x0000_s1512 _x0000_s1513 _x0000_s1514 _x0000_s1515 _x0000_s1516 _x0000_s1517 _x0000_s1518 _x0000_s1519 _x0000_s1520 _x0000_s1521 _x0000_s1522 _x0000_s1523 _x0000_s1524 _x0000_s1525 _x0000_s1526 _x0000_s1527 _x0000_s1528 _x0000_s1529 _x0000_s1530 _x0000_s1531 _x0000_s1532 _x0000_s1533 _x0000_s1534 _x0000_s1535 _x0000_s1536 _x0000_s1537 _x0000_s1538 _x0000_s1539 _x0000_s1540 _x0000_s1541 _x0000_s1542 _x0000_s1543 _x0000_s1544 _x0000_s1545 _x0000_s1546 _x0000_s1547 _x0000_s1548 _x0000_s1549 _x0000_s1550 _x0000_s1551 _x0000_s1552 _x0000_s1553 _x0000_s1554 _x0000_s1555 _x0000_s1556 _x0000_s1557 _x0000_s1558 _x0000_s1559">



          В сімействі процесорів Pentium Pro використовується архітектура динамічного виконання, в якійсочетаєтся змінапорядку виконання, предположне виконання інструкцій з апаратним перейменуванням регістрів і передсказанням ветвлень. Їхньою відокремлювальною рисою є те, що інструкції, що минають через конвейєр в порядку надходження, розбиваються на найпростіші мікрооперації, що виконуються суперскалярним процесорним ядром в порядку, зручному процесору. “Безладне” ядро процесора містить декілька конвейєрів, до яких підключаються виконавчі прилади. Декілька виконавчих приладів можуть об'єднуватися на одному конвейєрі. Конвейєр процесора містить три частини: препроцесор, ядро з неупорядоченим виконанням, що упорядковує влаштування. Схема конвейєра уявлена на рисунку 1.11.

<img width=«327» height=«314» src=«ref-1_1972063473-2611.coolpic» v:shapes="_x0000_s2827 _x0000_s2828 _x0000_s2829 _x0000_s2830 _x0000_s2831 _x0000_s2832 _x0000_s2833 _x0000_s2834 _x0000_s2835 _x0000_s2836 _x0000_s2837 _x0000_s2838 _x0000_s2839 _x0000_s2840 _x0000_s2841 _x0000_s2842 _x0000_s2843 _x0000_s2844 _x0000_s2845 _x0000_s2846 _x0000_s2847 _x0000_s2848 _x0000_s2849 _x0000_s2850 _x0000_s2851 _x0000_s2852 _x0000_s2853 _x0000_s2854 _x0000_s2855 _x0000_s2856 _x0000_s2857 _x0000_s2858 _x0000_s2859 _x0000_s2860 _x0000_s2861 _x0000_s2862 _x0000_s2863 _x0000_s2864 _x0000_s2865 _x0000_s2866 _x0000_s2867">



Конвейєр має наступні східців. Буфер мети галуження ВТВ зберігає історію і їхніх цільових адрес,що відбувалися ветвлень. Кожний з 512 елементів ВТВ зберігає цільовуадресуі чотири бітипередісторії, що несуть інформацію про те, траплялася чи перехід за останні чотири проходу через інструкції галуження, посилатися на дану адресу. Якщо на підставі аналізу передісторіїзавбачується перехід, цільова адреса посилається в блок предвиборки, не чекаючивиконання інструкції галуження. Окрім BTB, Pentium Pro має буфер стекових вертаннь, що дозволить коректно завбачувати адресу повернення з процедур, що викликаються з різноманітних крапок. Таким чином, виклик процедури в лінійній послідовності кодів не наводить до втрати продуктивності предвиборки. Блок вибірки інструкцій IFU має дві стадії. На першій стадії інструкції вибираються 16-байтними пакетами, зрівненими по межам параграфів. На другий стадії інструкції попередно декодуються і вкладаються в два буферу по 16 байт вже без прив'язки до меж параграфів. На східці ID процесор має три декодера. Перший декодер за один такт здатний декодувать одну макроінструкцію, що містить до чотирьох мікрооперацій. Два інших декодера можуть за такт декодуватитільки інструкцію, що перебує з однієї мікрооперації. Більш складні інструкції декодуються за декілька тактів.

В кожному такті декодериможуть виробляти до шести мікрооперацій, що надходять в спеціальну чергу. З черги до трьох мікрооперацій надходять на стадію RAT. Тут відбувається перейменування регістрів, а на стадії RS резервування місця в ROB. ROB організований в вигляді кільцевого буферу на 40 місця. Микрооперации надходять в ROB в порядку черги і удаляються в порядку черги, а виконуватися мікроопераціїможуть поза чергою по мірі готовності вихідних даних і доступності виконавчих приладів. До трьох мікроопераціїможуть передаватися на виконання в кожному такті. В залежності від функції, що виконується мікрооперація спрямовується в один з п'ятих портів. До кожного порту прикріплені свої виконавчі прилади. Порт 0 може містити цілочисельне АЛУ і FPU, порт 1 — цілочисельне АЛУ, порт 2 — блок завантаження даних, порт 3 — блок адреси запису, порт 4 — блок даних запису. В процесорі Pentium II порт 0 містить АЛУ ММХ і умножитель ММХ, а порт 1 — АЛУ ММХ і зсуватель ММХ. Після виконання мікрооперація вертається зворотно в ROB, де очікує вилучення. Після того як результат мікроопераціїбув записаний в ROB, він (результат) ставає доступним іншим мікроопераціям.    продолжение
--PAGE_BREAK--
1.3 П
рограмна модель мікропроцесорів


1.3.1
Регістри


Регістри загального призначення.

Для виконання обчислень і адресація процесори мають 8 регістрів загального призначення. В процесорах 8086/88 і 80286 ці регістри мають розрядність 16 біт. Регістри АХ, ВХ, DX і СХ припускають звертання як до всього регістру, так і до їхніхмолодших і старших частин. Регістри SP, BP, SI і DI припускають звертання тільки до всього регістру. В 32-розрядних процесорах всі ці регістри мають 32 розрядиі містять в молодшій частині регістри попередніх процесорів. Імена 32-разрядных регістрів починаються з символу “Е” ((ЕАХ, ЕВХ і т. Д.). Кожний регістр має своє призначення, але як правило може використовуватися і в інший ролі.

(Е) АХ — аккумулятор;

(Е) СХ — лічильник;

(Е) DX — регістр даних;

(Е) ВХ — регістр базової адреси;

(Е) SP — покажчик стека;

(Е) ВР — додатковий покажчик стека;

(Е) SI — індекс операнда-джерела;

(E) DI — індекс операнда-приймальника;

В 16-разрядных процесорах для адресації застосовуються регістри ВХ, ВР, SI і DI в різноманітних комбінаціях, причому регістри ВХ і ВР містять базовуадресу, а SI і DI — індекс. В 32-розрядних процесорах в якості базового або індексного може виступати будь-який регістр.

Сегментн
і
регістри.


Для надання гнучкості програмам в процесорах є сегментнірегістри. Адресація пам'яті завжди виконується відносно якого-небудьсегменту, параметри якого зберігаються в сегментном регістрі. В процесорі 8086/88 є 4 16-разрядных сегментних регістра, що зберігають сегментнуадресу. У разі звертання до операнду в пам'яті формується його лінійна адреса шляхом підсумовування зміщення операнда в сегменті з сегментноюадресою, зсунутоюна 4 розрядиліворуч. В підсумку одержується 20-розрядналінійна адреса, по якійпроцесор виробляє вибірку. В процесорі 8086/88 не застосовується жодний захист пам'яті, тому до всіх сегментів розв'язаний доступ як по запису так і по читанню. Сегмент може розташуватися по будь-якій адресі кратній 16 і має розмір 64 Кб. Кожному сегментному регістру відведена своя роль.

DS — сегмент даних;

CS — сегмент коду;

SS — сегмент стека;

ES — додатковий сегмент даних.

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

Процесор 80286 підтримує захист пам'яті, тому його сегментнірегістри були істотно перероблені і доповнені. Тепер сегментний регістр перебує з двох основних частин:

·      Селекторна частина в режимі реальних адрес містить сегментнуадресу, а в захищеному режимі — селектор сегменту, індикатор дескрипторнїтаблиці і пріоритет запитання. Має 16 розрядів і відповідає сегментному регістру процесора 8086/88 в усіх операціях по завантаженню/вивантаженню;

·      Дескрипторна частина містить базовулінійнуадресу(24 розряди) початкусегменту, розмір (16 розрядів) і атрибути.

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

В 32-розрядних процесорах була доопрацьована дескрипторна частина сегментних регістрів. Поле базової лінійної адреси поширене до 32 розрядів, поле розміру сегменту поширене до 20 розрядів. В атрибутах з'явилося два нових біти: бітрозрядностісегменту і бітдрібності (дрібнішеці бітибудуть описані в розділі, присвяченому захищеному режиму). Крім того з'явилося два нових сегментних регістраFS і GS. Вони використовуються наряду з регістрами DS і ES для зберігання параметрів сегментів даних.

Регістр прапорів.

Регістр прапорів використовується для зберігання результатів арифметичних операцій і керування процесором. В процесорах 8086/88 і 80286 регістр прапорів має 16 розрядів.

<img width=«361» height=«72» src=«ref-1_1972066084-1245.coolpic» v:shapes="_x0000_s2506 _x0000_s2507 _x0000_s2508 _x0000_s2509 _x0000_s2510 _x0000_s2511 _x0000_s2512 _x0000_s2513 _x0000_s2514 _x0000_s2515 _x0000_s2516 _x0000_s2517 _x0000_s2518 _x0000_s2519 _x0000_s2520 _x0000_s2521 _x0000_s2522 _x0000_s2523">



Призначення прапорів наступне:

·      CF — прапор перенесення;

·      PF — прапор паритету;

·      AF — прапор половинногоперенесення;

·      ZF — прапор нуля;

·      SF — прапор знаку;

·      TF — прапор трасировки;

·      IF — прапор переривання;

·      DF — прапор направлення;

·      OF -прапор переповнення.

Прапори CF, PF, AF, ZF, SF і OF відображають результат виконання арифметичної операції і використовуються для організації ветвленньв програмах шляхом виконання переходу при певному стані якого-або прапора.

Настанова прапора TF наводить до того, що після виконання кожної інструкції процесор буде генерувати переривання1. Скид прапора IF призведе до забороні обробки апаратних перериваннь, що маскуються. Прапор DF вказує направлення при виконанні строковых команд.

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

·      Прапор NT (біт14) задає поведінку команди IRET (повернення з переривання), якщо він скинут, адреса повернення буде вибиратися з стека, а якщо встановлен — відбудеться переключення задачі. Даний прапор встановлюється всякий раз, коли відбувається переключення задачі шляхом виконання команд передачі керування або виклика переривання і скидається при поверненні до попередньої задачі шляхом виконання команди IRET. Всеописане вище відноситься тільки до захищеного режиму.

·      Поле IOPL (біти13-12) задає рівень привілей введення-виведення. Команда введення-виведеннябуде виконана тільки якщо значення в цьому полі чисельно більше значення поточного рівня пріоритету. Дане поле також має сенс тільки в захищеному режимі.

В процесорі 80386 регістр прапорів поширений до 32 розрядів і містить два нових прапора:

·      RF (біт16) — прапор поновлення, використовується спільно з регістрами крапок останова;

·      VM (біт17) — прапор виртуальноїмашини. В захищений режим 32-разрядных процесорів введений новий подрежим. Настанова даного прапора наводить до того, що формування лінійної адреси в захищеному режимі здійснюється також, як і в режимі реальних адрес, але при цьому зберігається робота механізму захисту задач і введення-виведення.

В процесор 80486 був доданий тільки один новий прапор — AC (біт18). Настанова цього прапора наводить до включення механізму контролю за вирівнюванням операндів.

В останніх моделях 80486, а також в процесорах Pentium з'явилися три нових прапора:

·      ID (біт21) — якщо вдається встановити цей прапор, значить процесор підтримує команду CPUID, що закликана повідомляти програмі користувача інформацію про процесор;

·      VIP (біт20) — віртуальнезапитання переривання;

·      VIF (біт19) — віртуальний прапор переривання.

В процесорах Pentium Pro і Pentium II регістр прапорів не змінився у порівнянні з процесорами Pentium.

Системні регістри.

Системні регістри передвизначені для завдання режимів роботи процесора, а також для зберігання покажчиків на системні області даних.

В процесорі 8086/88 є тільки один регістр, що можна лічити системним. Це регістр покажчика команд IP. Даний регістр має 16 розрядів і містить зміщення наступної команди в сегменті коду. Програма не може напряму працювати з цим регістром, однак виконуючи переходи, вона побічним образом змінює вміст регістру IP.

В процесорі 80286 в зв'язку з підтримкою захищеного режиму був введений цілий ряд системних регістрів для зберігання покажчиків на системні області пам'яті і керування процесором.

Регістр GDTR зберігає покажчик на таблицю глобальних дескрипторів і її розмір. Має два поля: поле лінійної адреси початкутаблиць (24 біти) і поле розміру таблиці (16 біт). Доступ до цього регістру здійснюється з допомогою команд LGDT і SGDT для завантаження і збереження вмісту регістру відповідно.

Регістр IDTR по внутрішньому формату відповідає регістру GDTR і зберігає покажчик і довжину таблиці перериваннь. В попередньому процесорі таблиця перериванньзавжди розташувалася в початку фізичної пам'яті. В процесорі 80286 вона може розташуватися в будь-якому місці пам'яті.

Регістр LDTR по внутрішньому формату нагадує сегментний регістр і зберігає базовуадресу, розмір і атрибути локальної дескрипторноїтаблиці.

Регістр TR по внутрішньому формату нагадує сегментний регістр і зберігає базовуадресу, розмір і атрибути сегменту стану поточної задачі.

Регістр MSW — слово стану машини. Має 16 розрядів і містить чотири прапора:

·      PE (біт0) — дозвіл захисту. Настанова цього прапора переводить процесор в захищений режим, повернення в реальний режим можливе тільки по сигналу RESET;

·      MP (біт1) — моніторінг сопроцесора, дозволяє викликати виключення 7 по кожній команді WAIT;

·      EM (біт2) — емуляція сопроцесора. Настанова цього прапора викликає появу виключення 7 при кожній команді, стосовній до сопроцесору, що дозволяє здійснювати його програмнуемуляцію.

·      TS (біт3) — переключення задач. Встановлюється процесором після кожного переключення задачі. Скидається командою CLTS. При встановленому прапорі, команда, стосовна до сопроцесору, викличе виключення 7, що дозволяє програмно визначити, відноситься чи контекст сопроцесора до поточної задачі.

Починаючи з процесора 386 змінилася розрядність полів системних регістрів. Так поле базової адреси регістрів GDTR, IDTR, LDTR і TR поширилося до 32 розрядів. Регістр MSW поширився до 32 розрядів і називається тепер CR0. В ньому з'явилися нові прапори:

·      WP (біт16) дозвіл захисту від запису на рівні привілей супервізора в сторінки тільки для читання;

·      PG (біт31) включення механізму трансляції сторінок.

В зв'язкуз підтримкою механізму трансляції сторінок з'явилися також два нових регістри: CR2 — містить 32-битнулінійнуадресу, по якійбула отримана остання відмова сторінки пам'яті і CR3, старші 20 розрядів якого зберігають фізичнуадресукаталогасторінок.

В процесорі 80486 регістр CR0 був доповнений декількома новими прапорами:

·      ET (біт4) — індикатор підтримки інструкцій математичного сопроцесора;

·      NE (біт5) — дозвіл стандартного (для Intel) механізму повідомлення про помилку FPU через генерацію виключення. При NE=0 і активному сигналі IGNNE# помилки FPU ігноруються. При NE=0 і пасивному сигналі IGNNE# при виникненні помилки FPU процесор зупиняється і чекає переривання, вводимого зовнішньою логікою по сигналу на висновку FERR#. Таким чином емулюється обробка помилок FPU, прийнята в РС зі часів сопроцесорів 80287 і 80387;

·      AM (біт18) — дозвіл контролю вирівнювання (контроль виконується тільки на рівні привілей 3 при АМ=1 і прапорі АС=1);

·      NW (біт29) — заборона наскрізна запису кеша і циклів анулювання;

·      CD (біт30) — заборона заповнення кеша (кеш-попадания в раніше заповнені рядки при цьому не забороняються).

В регістр CR3булидодані два нових б: PCD (б 4) — заборона кешування і PWT (б 3) — кешуваннясторінки зі наскрізним записом.

В останні моделі 80486 і процесори Pentium був доданий регістр CR4, що містить бітидозволу архітектурних рішень. В даному регістрі визначені наступні біти:

·      VME (біт0) — дозвіл механізму віртуальних перериваннь;

·      PVI (біт1) — дозвіл використання віртуального прапора перериванньв захищеному режимі;

·      TSD (біт2) — перетворення інструкції RDTSC в привілейовану (тільки Pentiun+);

·      DE (біт3) — дозвіл крапок останова по звертанню до портів введення-виведення;

·      PSE (біт4) — дозвіл сторінок розміром 4 Мб (тільки Penium+);

·      PAE (біт5) — дозвіл 36-розрядноїфізичної адреси (тільки Pentium Pro+).
1.3.2
З
ахищений режим

Сегментація пам'яті.

Захищений режим почав вперше підтримуватися процесором 80286. Наступні процесори тільки доповнювали режим новими можливостями, але основні поняття і механізми залишилися.

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

Дескрипторисегментів зберігаються в пам'яті масивів даних, що сформувалися в вигляді таблиць. Процесор використає три типу таблиць дескрипторів: GDT — глобальна таблиця дескрипторів; LDT — локальна таблиця дескрипторів; IDT — таблиця дескрипторів перериваннь.

Таблиця GDT містить будь-які типи дескрипторів, окрім тих, що використаються при обробці перериваннь. В GDT заносяться дескрипторисегментів, що можуть використовуватися системою при виконанні різноманітних задач. Таблиці LDT містять дескрипторисегментів, що використаються при рішенні поточної задачі. Кількість таблиць,що створюються LDT визначається операційною системою і залежить від числа задач,що реалізуються. В принципі кожна задача може мати окрему LDT, що включає дескрипторисегментів, що використаються при її рішенні. Крім того, LDT можуть містити спеціальні дескрипторишлюзів — крапок входу в програми або задачі. В випадку спільного використання сегментів таблиці LDT можуть повністю або частково перекриватидруг друга. Таблиця IDT використовується для реалізації перериваннь. Таблиці можуть мати розміри від 8 байт до 64 Кб, т. є. Містити до 8192 дескрипторів.

Звертання до необхідного дескриптору здійснюється з допомогою селектора, що міститься в відповідному сегментном регістрі. Селектор подає собою 16-разрядный покажчик, що має три поля (рисунок 1.13.).

Поле RPL (біти1-0) визначає рівень привілей запитання. Це двухрозрядний код, що вказує допустимий рівень захисту сегменту, що може бути вибраний з допомогою даного селектора.

<img width=«292» height=«94» src=«ref-1_1972067329-706.coolpic» v:shapes="_x0000_s2443 _x0000_s2444 _x0000_s2445 _x0000_s2446 _x0000_s2447 _x0000_s2448 _x0000_s2449 _x0000_s2450">



Поле TI (біт2) служить індикатором таблиці. Його значення вказує таблицю,що вибирається: GDT при TI=0, LDT при TI=1.

Поле ІНДЕКС (біти15-3) служить індексом для вибору одного з 8192 дескрипторів.

Селектор з нульовим значенням називається нуль-індикатором. Він забезпечує звертання до першого дескриптору в таблиці GDT. Цей дескриптор не використовується при роботі процесора, тому при його вибірці виконується переривання.

Кожна з таблиць має відповідний регістр: GDTR, LDTR, IDTR. Регістр GDTR містить 48 розрядів (40 в 80286), з яких 32 (24 в 80386) задають базову адресу таблиці, а 16 розрядів вказують її обсяг в байтах мінус 1. Якщо подставитив молодші 3 розряду селектора нулі, тоотримається зміщення дескриптора в таблиці. Це зміщення порівнюється з межею таблиці. В випадку, якщо зміщення виходить за межі таблиці, виробляється виключення. Якщо порушення межі немає, зміщення підсумовується з базовою адресою таблиці, в результаті утвориться лінійна адреса дескриптора. Дана перевірка і наступне формування адреси справедливі для всіх таблиць.

Регістр LDTR містить 16-разрядный покажчик, що визначає розміщення в GDT дескриптора таблиці,що використається LDT. Дескриптор LDT містить 32-розрядний (24-розрядний в 80286) базову адресу таблиці і її 16-розрядний розмір, що при завантаженні регістру LDTR вибираються з GDT і зберігаються в внутрішніх програмно недосяжних регістрах процесора.

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

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

<img width=«549» height=«102» src=«ref-1_1972068035-1701.coolpic» v:shapes="_x0000_s2451 _x0000_s2452 _x0000_s2453 _x0000_s2454 _x0000_s2455 _x0000_s2456 _x0000_s2457 _x0000_s2458 _x0000_s2459">



В процесорі 80286 біти63-48 зарезервованіі повинні бути рівним нулю.

В поле “доп. Атрибути” присутнє4 біти:

·      Бітдрібності G (біт55) вказує, в яких одиницях заданий розмір сегменту: в байтах при G=0 або сторінках обсягом по 4 Кб при G=1. Таким чином, в процесорах 80386+ сегмент може мати розмір до 220*4Кб= 4Гб;

·      Бітрозрядність D (біт54). Даний бітмає сенс тільки для сегментів коду і стека. Для сегменту коду він задає розрядність операндів і адреси за замовчанням. Для сегменту стека він задає розрядність осередків стека, при D=1 для стекових операцій використовується регістр ESP, і осередок стека має 32 розряди, т. є. Навіть при вталкуваннів стек 16-розрядного слова ESP зменшиться на 4;

·      Біт53 передвизначений для майбутніх розширенньі повинен містити 0;

·      Біт52 не використовується.

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

·      Бітприсутності Р визначає наявність відповідного сегменту в пам'яті. Якщо Р=0 (сегмент буде відстуній), те даний дескриптор не використовується для формування адрес. В цьому випадку вміст інших розрядів дескриптора може бути довільним. Якщо в регістр сегменту надходить селектор дескриптора, що є Р=0, те процесор генерує виключення “відсутність сегменту”. Обработчик даного виключення може підвантажитинеобхідний сегмент з диску;

·      Поле DPL вказує рівень привілей дескриптора. В залежності від співвідношення значень DPL, CPL (поточний рівень привілей) і RPL, що задається в молодших бітах селектора, дозволяється або забороняється звертання до даного сегменту. Таким чином забезпечується рівень, що вимагається захисту сегменту;

·      Системний бітS визначає роль що вибирається дескриптора в системі. При S=1 дескриптор забезпечує звертання до сегментів кодів або даних. Дескрипторы, що є S=0, служать для звертання до таблиць LDT, сегментів TSS, або шлюзів для входу в інші задачі або програми, включаючи обработчики перериваннь. Такі дескрипториназиваються системними.

<img width=«248» height=«223» src=«ref-1_1972069736-1648.coolpic» v:shapes="_x0000_s2403 _x0000_s2404 _x0000_s2405 _x0000_s2406 _x0000_s2407 _x0000_s2408 _x0000_s2409 _x0000_s2410 _x0000_s2411 _x0000_s2412 _x0000_s2413 _x0000_s2414 _x0000_s2415 _x0000_s2416 _x0000_s2417 _x0000_s2418 _x0000_s2419 _x0000_s2420 _x0000_s2421 _x0000_s2422 _x0000_s2423 _x0000_s2424 _x0000_s2425 _x0000_s2426 _x0000_s2427 _x0000_s2428 _x0000_s2429 _x0000_s2430 _x0000_s2431 _x0000_s2432 _x0000_s2433">



Поле типу системного дескриптора визначає його тип. Типи системних дескрипторов наведені в таблиці 1.1.
Таблиця 1.1 Типи системних дескрипторов.



Тип

Визначення

Тип

Визначення



1

2

3

Не використовується

Доступний TSS 286

Таблиця LDT

Зайнятий TSS 286

8

9

A

B

Не використовується

Доступний TSS 386+

Зарезервирован

Зайнятий TSS 386+

4

5

6

7

Шлюз виклика 286

Шлюз задачі

Шлюз перериваннь286

Шлюз ловушки 286

C

D

E

F

Шлюз виклика 386+

Зарезервирован

Шлюз перериваннь386+

Шлюз ловушки 386+



В процесорі 80286 доступні тільки типи з 0 по 7.

Можна виділити три основних класу системних дескрипторів.

Дескрипторитаблиць LDT (тип 2) забезпечують звертання до локальної таблиці дескрипторів для вибору сегментів.

Дескрипторы сегментів TSS (типи 1 3 9 В) використовуються при переключенні задач в багатозадачномурежимі. Біт1 в байтідоступу сегменту TSS пазиваеться бітом зайнятості і вказує, є чи задача,що викликається зайнятой. Цей бітдескриптора встановлюється в одиницю, коли процесор виконує виклик задачі, і скидається в нуль при виконанні повернення до попередньої задачі. Б зайнятості використовується для запобігання повторного виклика вже працюючої задачі. Переключення на зайняту задачу наводить до генерації виключення 13.

Відзначимо, що дескрипториLDT і TSS завжди повинні мати значення бітарозрядностіD=0.

Дескрипторишлюзів (типи 4-7, C, E, F) використовуються для звертання до програм і задач, а також при обробці перериванньі ловушек.

Формати байта доступу для дескрипторів кодів і даних (S=1) показані на рисунку 1.15. Вони відрізняються значеннями б виконавчостіЕ: Е=1 для сегментів кодів і Е=0 для сегментів даних і стека.

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

Бітдозволу читання R вводиться для сегменту кодів і дозволяє при R=1 виробляти читанняйого вмісту. При R=0 допускається тільки вибірка вмісту цього сегменту для виконання через регістр CS. Спроба читання в цьому випадку викличе виключення 13. Відзначимо, що виключення цього типу виникне також при спробі запису в сегмент програм незалежно від значення бітуR.

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

Біт дозволу записуW вводиться для сегментів даних. Дозволяє при W=1 або забороняє при W=0 зміна вмісту цих сегментів. Читання з сегментів даних розв'язане завжди.

Бітнаправлення розширення ED визначає розміщення сегменту даних відносно базової адреси. При ED=0 (розширення вверх) дані в сегменті розміщуються в направленні зростання адрес від базової адреси до межі. При ED=1 (розширення вниз) дані в сегменті розташуються в направленні зменшення адрес. Таким чином, при розширенні вверх відносна адреса осередка сегменту повиннабути менш або рівназначенню розміру сегменту, при розширенні вниз відносна адреса повиннабути більше розміру сегменту.
    продолжение
--PAGE_BREAK--
Захист пам'яті.


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

<img width=«448» height=«229» src=«ref-1_1972071384-2434.coolpic» v:shapes="_x0000_s2524 _x0000_s2525 _x0000_s2526 _x0000_s2527 _x0000_s2528 _x0000_s2529 _x0000_s2530 _x0000_s2531 _x0000_s2532 _x0000_s2533 _x0000_s2534 _x0000_s2535 _x0000_s2536 _x0000_s2537 _x0000_s2538 _x0000_s2539 _x0000_s2540 _x0000_s2541">



Відповідні рівні захищеності ілюструються на прикладі сегментів кодів. Наименее захищеними є програми користувача, для яких виділяється рівень з номером 3. Рівні з 0 по 2 відводяться для системних програм.

В відповідності з рівнями привілей і захищеності встановлені наступні правила доступу для сегментів кодів і даних.

1.    Дані з сегменту, що є рівень захисту PL можуть бути вибрані програмою, що є такий же або більш високий рівень привілей.

2.    Сегмент кодів (процедура), рівень, що є захисту PL, може бути викликаний програмою, що є такий же або більш низький рівень привілей.

Необхідно відзначити, що правило 2 не виконується при викликові сегментів кодів, що є встановлений бітпідпорядкованості С=1 в байтідоступу дескриптора.

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

Рівень привілей дескриптора DPL задається бітами 5 і 6 в байтідоступу дескриптора. Значення DPL вказує рівень захищеності сегменту, т. є. Номер кільця захисту, до якого він відноситься.

Рівень привілей запитання RPL задається бітами 0 і 1 селектора. Значення RPL визначає рівень привілей, ініціатора запитання-звертання до сегменту. Ініціатором є програма або влаштування, що з допомогою селектора буде в обігу до пам'яті системи.

Поточний рівень привілей CPL задається бітами 0 і 1 селектора, розміщеного в регістрі CS. Визначає рівень привілей в нинішній момент сегменту, що виконується програми.

Процесор має спеціальну команду ARPL, що використається для корекціїзначення RPL селектора. При цьому селектор служить першим операндом команди. В якості другого операнда в регістр завантажується поточне значення CS. При виконанні команди порівнюються значення двох молодших бітів операндів, що містять RPL і CPL. Поле RPL селектора приймає максимальне з значень RPL і CPL, т. Е. Встановлюється мінімальний рівень привілей запитання. Якщо значення RPL при цьому змінилося, те встановлюється ознака ZF.

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

Звертання до сегментів даних виробляється з допомогою селекторів, що завантажуються в регістри DS, ES, FS, GS. При звертанні аналізується значення RPL селектора і CPL програми. Ефективний рівень привілей (EPL) для запитання даних в цьому випадку визначається як максимальне з значень RPL і CPL. Звертання до сегменту, що запрошується даних дозволяється, якщо його рівень захисту DPL³EPL. Порушення цього правила викликає прерывание типу 13.

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

Звертання до підлеглих сегментів допускається тільки з програм, що є такий же або більш низький рівень привілей. Таким чином, в програмах з поточним рівнем привілей CPL можуть виконуватися міжсегментнікоманди JMP, CALL з передачею керування підлеглому сегменту, що є DPL³CPL. При такій передачі керування зберігається рівень вихідної (викликаючої) програми.

Звертання до непідлеглихсегментів з допомогою команд JMP і CALL допускається тільки в випадку, якщо значення CPL поточної програми рівно DPL сегменту. Крім того, команда CALL може викликати сегменти програм з більш високим рівнем привілей, використовуючи механізм шлюзів (або вентилів).

Менш привілейована процедура може викликати більш привілейовану, будучи в обігу до неї через дескриптор шлюзу виклика, що визначає доступну крапку входу. Цей засіб дозволяє програмам користувача бути в обігу до операційної системи. Формат дескриптора шлюзу виклика уявлений на рисунку 1.17.
<img width=«549» height=«102» src=«ref-1_1972073818-1650.coolpic» v:shapes="_x0000_s2434 _x0000_s2435 _x0000_s2436 _x0000_s2437 _x0000_s2438 _x0000_s2439 _x0000_s2440 _x0000_s2441 _x0000_s2442">



В процесорі 80286 бвтиз 48 по 63 не використовуються і повинні бути рівні 0.

П'ятибайтове поле WC вказує кількість параметрів, що переносяться в стек нової програми. Параметри подають собою 16-разрядные слова для 16-разрядных програм (в тому числі і для процесора 80286) і 32-разрядные слова для 32-разрядных програм.

При викликові програм через шлюз повинні виконуватися наступні правила. Значення RPL селектора шлюзу і CPL викликаючої програми повинні бути менш або рівним значенню DPL в байтідоступу шлюзу.

Якщо програма,що викликається має інший (більш високий) рівень привілей для неї створюється новий стек. При цьому в регістри SS і (E)SP з сегменту TSS завантажується новий вміст, що визначає початкова адреса нового стека. В цей стек послідовно вводяться старі значення SS і (E) SP; параметри, переносиміз старого стека; старі значення CS і (E) IP. Число переносимих параметрів визначається полем WC, причому вибираються останні з завантажених в старий стек параметрів. Стать команді RET виробляється відновлення з стека старого вмісту регістрів SS, (E)SP і CS, (E)IP.

Реалізація введення-виведенняв захищеному режимі виробляється з урахуванням CPL програми,що виконується. Величина CPL порівнюється зі значенням поля IOPL в регістрі (E)FLAGS. Введення-виведення виробляється тільки при виконанні умови CPL менш або рівно IOPL.

Багат
озадачн
і
сть.


Багатозадачністю називається такий засіб організації роботи системи, при якому в її пам'яті водночас містяться програми і дані для виконання декількох процесів обробки інформації (задач). При цьому повинен забезпечуватися взаємний захист програм і даних, стосовних до різноманітних задач, а також можливість переходу від виконання однієї задачі до другий (переключення задач). Процесори починаючи з 80286 мають ефективні засоби підтримки багатозадачного режиму. В якості таких засобів використовується структура даних, організована в вигляді сегменту, що називається сегментом стану задачі TSS. Апаратними засобами для підтримки багатозадачности служить регістр задачі TR, в що з GDT може бути завантажений дескриптор задачі.

Кожна задача має свій сегмент TSS, структура якого перебує з двох частин. Обов'язкова частина містить всю інформацію, необхідну процесору для рішення даної задачі. Додаткова частина може містити яку-або інформацію про задачу, що використається операційною системою, бітову карту, що визначає допустимі адреси приладів введення/висновку (тільки 80386+) і бітовую карту віртуальних перериваннь(тільки Pentium+). Розглянемо утримання обов'язкової частини TSS (таблиці 1.2 і 1.3).

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

Поля SS0, (E) SP0, SS1, (E) SP1, SS2, (E) SP2 служать джерелом нового покажчика стека при зміні поточного рівня привілей (передачі керування).

Бітловушки T в TSS викликає при Т=1 перериваннятипу 1 при переключенні на дану задачу. Це перериваннявикористовується при отладке програмного забезпечення.

Бітова карта перенаправлення перериванньБКПП забезпечує можливість автоматичного перенаправлення програмного переривання в віртуальном режимі.

Бітова карта введення-виведенняБКВВ забезпечує індивідуальний захист кожного порту введення-виведення. При записі в біті БКВВ нуля дозволяє при CPL>IOPL звертання до відповідного порту. За останнім байтом БКВВповинен слідувати заключний байт, що містить 1 в усіх розрядах. Адреса цього байта повиннавідповідати межі сегменту.

Дескриптор TSS повинен зберігатися тільки в GDT. Тому звертання до дескриптору TSS з допомогою селектора, що є бітTI=1, викликає виключення 10.

Для переключення задач процесор використає звичайні команди міжсегментного переходу JMP, виклика CALL і повернення IRET. Якщо селектор команди JMPабоCALL вибирає з таблиці GDT системний дескриптор, у якого поле типу рівно 1 (для 80286) або 9 (для 80386+), виконується переключення задач. При цьому селектор заноситься в TR. Слідує відзначити, що команди передачі керування містять зміщення. Однак при переключенні задач воно ігнорується.

При переключенні задач з допомогою команд JMP або CALL повинні виконувати правила привілей, встановлені для доступу до даних: максимальне з CPL і RPL повинно бути менш або рівно DPL. Таким Чином допускається переключення на задачі, чий ступінь захисту менш або рівному рівню привілей поточної задачі.
Таблиця 1.2. Сегмент стану задачі 80286



Зміщення

Вміст



Селектор повернення

2

SP0

4

SS0

6

SP1

8

SS1

0A

SP2

0C

SS2

0E

IP

10

FLAGS

12

AX

14

CX

16

DX

18

BX

1A

SP

1C

BP

1E

SI

20

DI

22

ES

24

CS

26

SS

28

DS

2A

LDTR

2C

Інформація ОС



При використанні команди CALL можливо звертання до задач з більш високим ступенем захисту, ніж рівень привілей поточної програми, з допомогою шлюзу задачі. Використання шлюзу задачі аналогічно використанню шлюзів виклика. В дескрипторе шлюзу задачі визначені тільки два поля: поле селектора, в якому знаходиться селектор TSS, і поле прав доступу.

Режим V86.

     Починаючи з процесора 80386 стало можливим виконання в захищеному режимі програм, написаних для 8086/88, забезпечуючи при цьому ряд засобів захисту і можливість страничной організації пам'яті. Такий варіант захищеного режиму називається режимом віртуального 8086 і реалізується при настанові в регістрі EFLAGS значення ознаки VM=1.
Таблиця 1.3. Сегмент стану задачі 80386+



Зміщення

Вміст



Селектор повернення

4

ESP0

8

SS0



ESP1

10

SS1

14

ESP2

18

SS2



CR3

20

EIP

24

EFLAGS

28

EAX



ECX

30

EDX

34

EBX

38

ESP



EBP

40

ESI

44

EDI

48

ES



CS

50

SS

54

DS

58

FS



GS

60

LDTR

64

66

Відносна адреса БКПП (б 15-1). Т (б 0)

Відносна адреса БКВВ

68

Інформація ОС



БКПП



БКВВ

 

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

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

2.    Надходження команд, що виконуються тільки при рівні CPL=0, в режимі V86 викликає виключення 13.

3.    Надходження команд, що виконуються тільки в захищеному режимі, викликає виключення 6 (недозволений код команди).

4.    Команди PUSHF, POPF, CLI, STI, INT, IRET дошкульні до значення поля IOPL. Вони виконуються тільки при IOPL=3.

5.    Виконання команд введення/висновку не залежить від значення поля IOPL. Однак захист може здійснюватися з допомогою БКВВ.
1.3.3
М
еханізм трансляції сторінок


32-разрядные процесори підтримують механізм трансляції сторінок. Даний механізм здійснює перетворення лінійної адреси в фізичнушляхом таблиць сторінок. Вперше трансляція сторінок почала підтримуватися в процесорі 80386. Наступні ґенерації процесорів додашли в цей механізм нові можливості.

Керування сторінковим перетворенням здійснюється з допомогою трьох бітів в регістрах керування (таблиця 1.4).

·       PG — біт31 регістру CR0. Дозволяє механізм сторінкового перетворення (80386+);

·       PSE — біт4 регістру CR4. Дозволяє сторінки розміром 4Мб (або розміром 2 Мб, коли встановлений прапор PAE) (Pentium+);

·       PAEбіт 5 регіструCR4. Дозволяє 36-разрядный фізична адреса. Розширена фізична адреса може бути використана тільки з дозволеним сторінковим перетворенням (Pentium Pro+).
Таблиця 1.4. Розміри сторінок і фізичної адреси.



CR0. PG

CR4. PAE

CR4. PSE

PDE. PS

Розмір сторінки

Розмір фізичної адреси



x

x

x

-

Сторінкове перетворення отключено

1





x

4Кб

32 б

1



1



4Кб

32 б

1



1

1

4Мб

32 б

1

1

x



4Кб

36 б

1

1

x

1

2Мб

36 б



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

·      Каталог сторінок;

·      Таблиця сторінок;

·      Таблиця покажчиків на каталог сторінок.

Коли використовується 32-разрядный фізична адреса, таблиці забезпечують доступ до сторінок розміром 4 Кб або 4 Мб. При використанні розширеної 36-разрядного фізичної адреси таблиці забезпечують доступ до сторінок розміром 4 Кб або 2 Мб.
    продолжение
--PAGE_BREAK--
еще рефераты
Еще работы по информатике