загрузка...
загрузка...
На головну

Осередки пам'яті і їх адреси.

  1. III. 11.1. Загальне поняття про пам'ять
  2. III. 11.2. види пам'яті
  3. III. 11.7. Індивідуальні відмінності пам'яті
  4. адресація пам'яті
  5. адресація пам'яті
  6. Асоціації пам'яті.
  7. Біохімічні теорії пам'яті

Пам'ять - частина комп'ютера, де зберігаються програми і дані. Можна також вживати термін «накопичувач». Без пам'яті, звідки процесори зчитують і куди записують інформацію, не було б цифрових комп'ютерів з вбудованими програмами.

1.1. біт

Основною одиницею пам'яті є двійковий розряд, який називається бітом. Біт може містити 0 або 1. Ця найменша одиниця пам'яті. (Пристрій, в якому зберігаються тільки нулі, навряд чи могло бути основою пам'яті. Необхідні принаймні дві величини.) Багато хто вважає, що в комп'ютерах використовується бінарна арифметика, тому що це «ефективно». Вони мають на увазі (хоча самі це рідко усвідомлюють),

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

Вважається, що деякі комп'ютери, наприклад великі IBM, використовують і десяткову, і двійкову арифметику. Насправді тут застосовується так званий двійковій-десятковий код. Для зберігання одного десяткового розряду використовується 4 біта. Ці 4 біта дають 16 комбінацій для розміщення 10 різних значень (від 0 до 9). При цьому 6 залишилися комбінацій не використовуються. Нижче показано число 1944 двійковій-десяткового і чисто двійковій системах числення; в обох випадках використовується 16 бітів:

десяткове: 0001 10010100 0100 двоичное: 0000011110011000

16 бітів в двійковій-десятковому форматі можуть зберігати числа від 0 до 9999, тобто всього 10000 різних комбінацій, а 16 бітів в довічним форматі - 65536 комбінацій. Саме з цієї причини говорять, що двійкова система ефективніше.

Однак уявімо, що могло б статися, якби який-небудь геніаль-

ний молодий інженер придумав дуже надійне електронний пристрій, яке могло б зберігати розряди від 0 до 9, розділивши ділянку напруги від 0 до 10 В на 10 інтервалів. Чотири таких пристрої могли б зберігати десяткове число від 0 до 9999, тобто 10 000 комбінацій. А якби ті ж пристрої використовувалися для зберігання двійкових чисел, вони могли б містити всього 16 комбінацій. Природно, в цьому випадку десяткова система була б більш ефективною.

1.2. адреси пам'яті

Пам'ять складається з осередків, кожна з яких може зберігати деяку порцію інформації. Кожна осередок має номер, який називається адресою, За адресою програми можуть посилатися на певну комірку. Якщо пам'ять містить п осередків, вони матимуть адреси від 0 до п-1. Всі осередки пам'яті містять однакове число бітів. Якщо осередок складається з до бітів, вона може містити будь-яку з 2к комбінацій. На рис. 2.8 показані 3 різні способи організації 96-бітної пам'яті. Відзначимо, що сусідні осередки по визначенню мають послідовні адреси.

У комп'ютерах, де використовується двійкова система числення (включаючи вісімкове і шістнадцяткове представлення двійкових чисел), адреси пам'яті також виражаються в двійкових числах. Якщо адреса складається з m бітів, максимальне число адресованих осередків становитиме 2П |. Наприклад, адреса для звернення до пам'яті, зображеної на рис. 2.8, а, повинен складатися, принаймні, з 4 бітів, щоб висловлювати всі числа від 0 до 11. При влаштуванні пам'яті, показаному на рис. 2.8, 6 і 2.8, в, досить 3-бітного адреси. Число бітів в адресі визначає максимальну кількість адресованих комірок пам'яті і не залежить від числа бітів в осередку. 12-бітові адреси потрібні і пам'яті з 212 осередків по 8 бітів кожна, і пам'яті з 212 осередків по 64 біта кожна.

У табл. 2.1 показано число бітів в осередку для деяких комерційних комп'ютерів.

Осередок - мінімальна одиниця, до якої можна звертатися, В останні

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

1.3. впорядкування байтів

Байти в слові можуть нумеруватися зліва направо або справа наліво. На перший погляд може здатися, що між цими двома варіантами немає різниці, але ми скоро побачимо, що вибір має велике значення. На рис. 2.9, а зображена частина пам'яті 32-бітного комп'ютера, в якому байти пронумеровані зліва направо (як у комп'ютерів SPARC або великих IBM). Малюнок 2.9,6 показує аналогічну репрезентацію 32-бітного комп'ютера з нумерацією байтів справа наліво (як у комп'ютерів Intel).

Важливо розуміти, що в обох системах 32-бітове ціле число (наприклад, 6)

представлено битами 110 в трьох крайніх правих бітах слова, а решта 29 бітів представлені нулями. Якщо байти нумеруються зліва направо, біти 110 знаходяться в байті 3 (або 7, або 11 і т. Д.). Якщо байти нумеруються справа наліво, біти 110 знаходяться в байті 0 (або 4, або 8 і т. Д.). В обох випадках слово, що містить це ціле число, має адресу 0.

Якщо комп'ютери містять тільки цілі числа, ніяких складнощів не виникає. Однак багато прикладні завдання вимагають використання не тільки цілих чисел, але і ланцюжків символів і інших типів даних. Розглянемо, наприклад, просту запис даних персоналу, що складається з ланцюжка символів (ім'я співробітника) і двох цілих чисел (вік і номер відділу). Ланцюжок символів завершується одним або декількома байтами 0, щоб заповнити слово. На рис. 2.10, а представлена ??схема з нумерацією байтів зліва направо, а на рис. 2.10, б - з нумерацією байтів

справа наліво для запису «Jim Smith, 21 рік, відділ 260» (1x256 + 4 = 260).

Обидва ці уявлення хороші і внутрішньо послідовні. Проблеми починаються тоді, коли один з комп'ютерів намагається переслати цю запис на Інший комп'ютер по мережі. Припустимо, що машина з нумерацією байтів зліва направо пересилає запис на комп'ютер з нумерацією байтів справа наліво по одному байту, починаючи з байта 0 і закінчуючи байтом 19. Для простоти будемо вважати, що біти, що не інвертується при передачі. Таким чином, байт 0 переноситься з першої машини на другу в байт 0 і т. Д., Як показано на рис. 2.10, в.

Комп'ютер, що отримав запис, ім'я друкує правильно, але вік получа-

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

Очевидне рішення цієї проблеми - наявність програмного забезпечення, яке інвертовану б байти в слові після того, як зроблена копія. Результат такої операції зображений на рис. 2.10, р Ми бачимо, що числа стали правильними, але ланцюжок символів перетворилася в «MIJTIMS», при цьому «Н» взагалі помістилася окремо. Ланцюжок перевертається тому, що комп'ютер спочатку зчитує байт 0 (пропуск), потім байт 1 (М) і т. Д.

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

1.4. Код з виправленням помилок

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

Нехай загальна довжина слова буде п (тобто п = т + г). n-бітну одиницю, що містить m бітів даних і г контрольних розрядів, часто називають кодованим словом. Для будь-яких двох кодованих слів, наприклад 10001001 та 10110001, можна визначити, скільки відповідних бітів в них різниться. В даному прикладі таких біта три. Щоб визначити кількість розрізняються бітів, потрібно над двома кодованими словами призвести логічну операцію виключає Або і порахувати число бітів зі значенням 1 в отриманому результаті. Число бітових позицій, за якими розрізняються два слова, називається інтервалом Хеммінга. Якщо інтервал Хеммінга для двох слів дорівнює d, це означає, що досить d бітових помилок, щоб перетворити одне слово в інше. Наприклад, інтервал Хеммінга кодованих слів 11110001 та 00110000 дорівнює 3, оскільки для перетворення першого слова в друге досить 3 помилок в бітах.

Пам'ять складається з m-бітових слів, і отже, існує 2т варіантів

поєднання бітів. Кодовані слова складаються з п бітів, але через спосіб підрахунку контрольних розрядів допустимі тільки 2Ш з 2 "кодованих слів. Якщо в пам'яті виявляється неприпустиме кодоване слово, комп'ютер знає, що сталася помилка. При наявності алгоритму для підрахунку контрольних розрядів можна скласти повний список допустимих кодованих слів і з цього списку знайти два слова, для яких інтервал Хеммінга буде мінімальним. Це інтервал Хеммінга повного коду.

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

інтервалу Хеммінга. Щоб виявити d помилок в бітах, необхідний код з інтервалом d + 1, оскільки d помилок не можуть змінити одне припустиме кодоване слово на інше допустиме кодоване слово Відповідно, щоб виправити d помилок в бітах, необхідний код з інтервалом 2d + l, оскільки в цьому випадку допустимі кодовані слова так сильно відрізняються один від одного, що навіть якщо станеться d змін, початкове кодоване слово буде ближче до помилкового, ніж будь-яка інша кодоване слово, тому його легко можна буде визначити.

Як простий приклад коду з виявленням помилок розглянемо код, в якому до даних приєднується один біт парності. Біт парності вибирається таким чином, що число бітів зі значенням 1 в кодованому слові парне (чи парне). Інтервал цього коду дорівнює 2, оскільки будь-яка помилка в бітах призводить до кодованому слову з неправильною парністю. Іншими словами, досить двох помилок в бітах для переходу від одного допустимого кодованого слова до іншого допустимому слову. Такий код може використовуватися для виявлення одиночних помилок. Якщо з пам'яті зчитується слово, що містить невірну парність, надходить сигнал про помилку. Програма не зможе тривати, але зате не буде невірних результатів. Як простий приклад коду з виправленням помилок розглянемо код з чотирма допустимими кодованими словами:

0000000000,0000011111, ШІОООООі 1111111111

Інтервал цього коду дорівнює 5. Це означає, що він може виправляти подвійні

помилки. Якщо з'являється кодоване слово 0000000111, комп'ютер знає, що початкове слово повинно бути 0000011111 (якщо відбулося не більше двох помилок). При наявності трьох помилок, якщо, наприклад, слово 0000000000 змінилося на 0000000111, цей метод неприпустимий.

Уявімо, що ми хочемо розробити код з m битами даних і г контрольних розрядів, який дозволив би виправляти всі помилки в бітах. Кожне з 2т допустимих слів має п неприпустимих кодованих слів, які відрізняються від допустимого одним бітом. Вони утворюються інвертуванням кожного з п бітів в n-бітному кодованому слові. Отже, кожне з 2т допустимих слів вимагає п + 1 можливих поєднань бітів, приписуваних цьому слову (п можливих помилкових варіантів і один правильний). Оскільки загальне число різних сполучень бітів одно 2П, то (п + 1) 2га <2п. Так як n-ш + г, отже,

(Т + г + 1) <2М. Ця формула дає нижню межу кількості контрольних розрядів, необхідних для виправлення одиночних помилок. В табл 2.2 показано необхідну кількість контрольних розрядів для слів різного розміру.

Цього теоретичного нижньої межі можна досягти, використовуючи метод Річарда Хеммінга. Але перш ніж звернутися до цього алгоритму, давайте розглянемо просту графічну схему, яка чітко ілюструє ідею коду з виправленням помилок для 4-бітових слів. Діаграма Венна на рис. 2.11 містить 3 кола, А, В і С, які разом утворюють сім секторів. Давайте закодируем як приклад слово з 4 бітів 1100 в сектора АВ, ABC, AC і ВС, по одному біту в кожному секторі (в алфавітному порядку). Кодування показано на рис. 2.11, а.

Далі ми додамо біт парності до кожного з трьох порожніх секторів, щоб вийшла позитивна парність, як показано на рис. 2.11, б. За визначенням сума бітів в кожному з трьох кіл, А, В, і С, повинна бути парному. У колі А знаходиться 4 числа: 0, 0, 1 і 1, які в сумі дають парне число 2. У колі В знаходяться числа 1, 1, 0 і 0, які також при складанні дають парне число 2. Те ж має силу і для кола С. В даному прикладі вийшло так, що всі суми однакові, але взагалі можливі випадки з сумами 0 і 4. Малюнок відповідає кодованому слову, що складається з 4 бітів даних і 3 бітів парності. Припустимо, що біт в секторі АС змінився з 0 на 1, як показано на рис. 2.11, в. Комп'ютер бачить, що кола А і С мають негативну парність. Єдиний спосіб виправити помилку, змінивши лише один біт, -возвраще-

ня біту АС значення 0. Таким способом комп'ютер може виправляти поодинокі помилки автоматично.

А тепер подивимося, як може використовуватися алгоритм Хеммінга при створенні кодів з виправленням помилок для слів будь-якого розміру. У коді Хеммінга до слова, що складається з m бітів, додається г бітів парності, при цьому утворюється слово довжиною т + г бітів. Біти нумеруються з одиниці (а не з нуля), причому першим вважається крайній лівий. Всі біти, номери яких - ступеня двійки, є бітами парності; інші використовуються для даних. Наприклад, до 16-бітного слова потрібно додати 5 бітів парності. Біти з номерами 1, 2, 4, 8 і 16 - біти парності, а все решта - біти даних. Всього слово містить 21 біт (16 біт даних і 5 бітів парності). У розглянутому прикладі ми будемо використовувати

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

Біт 1 перевіряє біти 1, 3, 5,7, 9,11, 13,15,17,19, 21.

Біт 2 перевіряє біти 2, 3, 6, 7,10,11,14,15,18,19.

Біт 4 перевіряє біти 4, 5,6, 7,12,13,14,15, 20, 21.

Біт 8 перевіряє біти 8,9,10, І, 12,13,14, 15.

Біт 16 перевіряє біти 16,17,18,19, 20, 21.

У загальному випадку біт b перевіряється бітамі'і Ь2, ..., bJt такими що bi + b2 + ... + b, = b. Наприклад, біт 5 перевіряється битами 1 і 4, оскільки 1 + 4 = 5. Біт 6 перевіряється битами 2 і 4, оскільки 2 + 4 = 6 і т. Д.

На рис. 2.12 показано побудову коду Хеммінга для 16-бітного слова

1111000010101110 Відповідним 21-бітовим кодованим словом є 001011100000101101110. Щоб побачити, як відбувається виправлення помилок, розглянемо, що відбудеться, якщо біт 5 змінить значення через різкого стрибка напруги на лінії електропередачі. В результаті замість кодованого слова +001011100000101101110 вийде 001001100000101101 ПО. Будуть перевірені 5 бітів парності.

Ось результати перевірки:

Біт парності 1 неправильний (біти 1, 3, 5, 7,9, 11, 13, 15, 17, 19, 21 містять

п'ять одиниць).

Біт парності 2 правильний (біти 2, 3, 6,7,10,11,14,15,18,19 містять шість

одиниць).

Біт парності 4 неправильний (біти 4,5,6,7,12,13,14,15,20,21 містять п'ять

одиниць).

Біт парності 8 правильний (біти 8,9,10,11,12,13,14,15 містять дві одиниці).

Бітчетності 16 правильний (біти 16,17,18,19,20,21 містять чотири одиниці).

Загальна кількість одиниць в бітах 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 і 21 має бути

парних, оскільки в даному випадку використовується позитивна парність. Неправильним повинен бути один з бітів, що перевіряються бітом парності 1 (а саме 1,3,5,7,9,11,13,15,17,19 і 21). Біт парності 4 теж неправильний. Це означає, чтоізменіл значення один з наступних бітів: 4,5,6,7,12,13,14,15,20,21. Помилка повинна бути в бите, який міститься в обох списках. В даному випадку загальними є біти 5,7,13,15 і 21. Оскільки біт парності 2 правильний, біти 7 і 15 виключаються. Правильність біта парності 8 виключає наявність помилки в бите 13.

Нарешті, біт 21 також виключається, оскільки біт парності 16 правильний. У підсумку залишається біт 5, в якому і міститься помилка. Оскільки цей біт має значення 1, він повинен прийняти значення 0. Саме таким чином виправляються помилки.

Щоб знайти неправильний біт, спочатку потрібно підрахувати всі біти парності. Якщо вони правильні, помилки немає (або є, але більше однієї). Якщо виявилися неправильні біти парності, то потрібно скласти їх номери. Сума, отримана в результаті, дасть номер позиції неправильного біта. Наприклад, якщо біти парності 1 і 4 неправильні, а 2,8 і 16 правильні, то помилка сталася в бите 5 (1 + 4).

2. Кеш-пам'ять

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

яке йому потрібно. Чим повільніше працює пам'ять, тим довше процесору доводиться чекати, тим більше циклів повинно пройти.

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

Інше рішення проблеми - сконструювати машину, яка не зупиняє роботу, але стежить, щоб програми-компілятори не використали слова до того, як вони вважаються з пам'яті. Однак це не так просто здійснити на практиці. Часто при виконанні команди завантаження машина не може виконувати інші дії, тому компілятор змушений вставляти порожні команди, які не виробляють ніяких операцій, але при цьому займають місце в пам'яті. Насправді при такому підході простоює НЕ апаратне, а програмне забезпечення, але зниження продуктивності при цьому таке ж. Насправді ця проблема не технологічна, а економічна. Інженери знають, як побудувати пам'ять, яка буде працювати так само швидко, як і процесор, але при цьому її доводиться поміщати прямо на мікросхему процесора (оскільки інформація через шину надходить дуже повільно). Установка великий пам'яті на мікросхему процесора робить його більше і, отже, дорожче, і навіть якщо б вартість не мала значення, все одно існують обмеження в розмірах процесора, який можна сконструювати. Таким чином, доводиться вибирати між швидкою пам'яттю невеликого розміру і повільної пам'яттю великого розміру. Ми б вважали за краще пам'ять великого розміру з високою швидкістю роботи по низькій ціні. Цікаво відзначити, що існують технології поєднання маленької і швидкої пам'яті з великою і повільної, що дозволяє отримати і високу швидкість роботи, і велику ємність за розумною ціною. Маленька пам'ять з високою швидкістю роботи називається кеш-пам'яттю (від французького слова cacher «ховати» 1; читається «кеш»). Нижче ми коротко опишемо, як використовується кеш-пам'ять і як вона працює. Більш докладний опис див. В розділі 4. Основна ідея кеш-пам'яті проста: в ній знаходяться слова, які найчастіше використовуються. Якщо процесору потрібно якесь слово, спочатку він звертається до кеш-пам'яті. Тільки в тому випадку, якщо слова там немає, він звертається до основної пам'яті. Якщо значна частина слів знаходиться в кеш-пам'яті, середній час доступу значно скорочується. Таким чином, успіх або невдача залежить від того, яка частина слів знаходиться в кеш-пам'яті. Давно відомо, що програми не звертаються до пам'яті навмання. Якщо програмі потрібен доступ до адресою А, то швидше за все після цього їй знадобиться доступ до адресою, розташованому поблизу від А. Практично всі команди звичайної програми (за винятком команд переходу і виклику процедур) викликаються з послідовних ділянок пам'яті. Крім того, велику частину часу програма витрачає на цикли, коли обмежений набір команд виконується знову і знову. Точно так же при маніпулюванні матрицями програма, швидше за все, буде звертатися багато разів до однієї і тієї ж матриці, перш ніж перейде до чого-небудь іншого. Те, що при послідовних відсилання до пам'яті протягом певного проміжку часу використовується тільки невеликий її ділянка, називається принципом локальності. Цей принцип лежить в основі всіх систем кеш-пам'яті. Ідея полягає в наступному: коли певне слово викликається з пам'яті, воно разом з сусідніми словами переноситься в кеш-пам'ять, що дозволяє при черговому запиті швидко звертатися до наступних словами. Загальний пристрій процесора, кеш-пам'яті і основної пам'яті показано на рис. 2.13. Якщо слово зчитується або записується до раз, комп'ютера знадобиться зробити 1 звернення до повільної основної пам'яті і до-1 звернень до швидкої кеш-пам'яті. Чим більше до, тим вище загальна продуктивність.

Ми можемо зробити більш суворі обчислення. Нехай с - час доступу до кеш-пам'яті, m - час доступу до основної пам'яті і h - коефіцієнт збігу, який показує співвідношення кількості посилань до кеш-пам'яті і загального числа всіх посилань. У нашому прикладі h = (k ~ l) / k. Таким чином, ми можемо обчислити середній час доступу:

середній час доступу = з + (1 -h) m.

Якщо h-І і всі звернення робляться тільки до кеш-пам'яті, то час доступу прагне до с. З іншого боку, якщо h- »0 і кожного разу потрібно звертатися до основної пам'яті, то час доступу прагне до с + ш: спочатку потрібен час з для перевірки кеш-пам'яті (в даному випадку безуспішною), а потім час m для звернення до основний пам'яті. У деяких системах звернення до основної памятіможет починатися паралельно з дослідженням кеш-пам'яті, щоб в разі невдалого пошуку цикл звернення до основної пам'яті вже почався. Однак ця стратегія вимагає здатності зупиняти процес звернення до основної пам'яті в разі результативного звернення до кеш-пам'яті, що робить розробку такого комп'ютера складнішою. Основна пам'ять і кеш-пам'ять діляться на блоки фіксованого розміру з урахуванням принципу локальності. Блоки всередині кеш-пам'яті зазвичай називають рядками кеш-пам'яті (cache lines). Якщо звернення до кеш-пам'яті не результативно, з основної пам'яті в кеш-пам'ять завантажується вся рядок, а не тільки необхідне слово. Наприклад, якщо рядок складається з 64 байтів, звернення до адресою 260 спричинить за собою завантаження в кеш-пам'ять всього рядка, тобто з 256-го по 319-й байт.

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

Розробка кеш-пам'яті дуже важлива для процесорів з високою продуктивністю.

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

Друге питання - розмір рядка кеш-пам'яті. Кеш-пам'ять об'ємом 16 Кбайт можна розділити на 1К рядків по 16 байтів, 2К рядків по 8 байтів і т. Д. Третє питання - як влаштована кеш-пам'ять, тобто, як вона визначає, які саме слова містяться в ній в даний момент . Пристрій кеш-пам'яті ми розглянемо докладно в розділі 4.

Четверте питання - чи повинні команди і дані перебувати разом в загальній кеш-пам'яті. Простіше розробити суміжну кеш-пам'ять, в якій зберігаються і дані, і команди. При цьому виклик команд і даних автоматично врівноважується. Тим не менш, у даний час існує тенденція до використання розділеної кеш-пам'яті, коли команди зберігаються в одній кеш-пам'яті, а дані - в інший. Така структура також називається Гарвардської (Harvard Architecture), оскільки ідея використання окремої пам'яті для команд і окремої пам'яті для даних вперше втілилася в комп'ютері Маге III, який був створи Говард Ейкен в Гарварді. Сучасні розробники пішли цим шляхом, оскільки зараз широко використовуються процесори з конвеєрами, а при такій організації повинна бути можливість одночасного доступу і до команд, і до даних (операндам). Розділена кеш-пам'ять дозволяє здійснювати паралельний доступ, а загальна - немає. До того ж, оскільки команди зазвичай не змінюються під час виконання, зміст командної кеш-пам'яті ніколи не доводиться записувати назад в основну пам'ять.

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

 



Попередня   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   Наступна

Мови і сучасні багаторівневі машини | Сучасні багаторівневі машини | Основні принципи розробки сучасних комп'ютерів | Шини інформаційного обміну. | Символьні термінали. | Символьне кодування інформації. | Інтегральні схеми. | комбінаційні схеми | арифметичні схеми | Засувки, тригери. |

загрузка...
© um.co.ua - учбові матеріали та реферати