
- •2. Архітектура обчислювальних систем
- •2.1 Функції бінарної логіки
- •2.2 Представлення даних на рівні машин
- •Виконання логічних операцій з цілими числами, представленими в машинних кодах
- •2.2.2. Принципи зображення дійсних чисел в памяті програми у форматі з плаваючою комою. Основні арифметичні операції над дійсними числами у форматі з плаваючою комою та їх проблеми
- •2.3. Пристрої введення-виведення. Поняття шини комп'ютера
- •2.4. Функціональна організація обчислювальних систем
- •2.4.1. Структура комп'ютера, класична архітектура фон Неймана, гарвардська архітектура
- •2.4.2. Ієрархічний принцип побудови пам'яті – регістрова, кеш, оперативна пам'ять, зовнішня пам'ять. Cpu.
- •2.4.3. Переферійні пристрої
2.4.2. Ієрархічний принцип побудови пам'яті – регістрова, кеш, оперативна пам'ять, зовнішня пам'ять. Cpu.
Ієрархія пам'яті — термін, який використовується в обчислювальній техніці при проектуванні і низькорівневому програмуванні ЕОМ (комп'ютерів).
Означає, що різні види пам'яті утворюють ієрархію, на різних рівнях якої розташовані пам'яті з різними часом доступу, складністю, вартістю та обсягом. Можливість побудови ієрархії пам'яті викликана тим, що більшість алгоритмів звертаються в кожний проміжок часу до невеликого набору даних, який може бути поміщений у швидшу, але дорожчу і тому невелику, пам'ять (див. locality of reference[en]). Використання швидшої пам'яті збільшує продуктивність обчислювального комплексу. Під пам'яттю в даному разі мається на увазі пристрій (пристрої) зберігання даних в обчислювальній техніці або комп'ютерна пам'ять.
При проектуванні високопродуктивних комп'ютерів і систем необхідно розв'язати багато компромісів, таких як розміри і технології для кожного рівня ієрархії. Можна розглядати набір різних типів пам'яті (m1,m2,…,mn), які знаходяться в ієрархії, тобто кожен mi рівень є підлеглим для mi+1 рівня ієрархії. Для зменшення часу очікування на вищих рівнях, нижчі рівні можуть готувати дані укрупненими частинами з буферизацією і, після наповнення буфера, сигналізувати верхньому рівню про можливість отримання даних.
Часто виділяють 4 основних (укрупнених) рівня ієрархії:
Внутрішня пам'ять процесора (регістри, організовані в регістровий файл і кеш процесора).
Основний — оперативна пам'ять системи (англ. RAM) і допоміжних карт пам'яті.
Накопичувачі з «гарячим» доступом (англ. On-line mass storage) — або вторинна комп'ютерна пам'ять. Жорсткі диски і твердотільні накопичувачі, які не потребують тривалих (секунди і більше) дій для початку отримання даних.
Накопичувачі, що вимагають переключення носіїв (англ. Off-line bulk storage) — або третинна пам'ять. Сюди відносяться магнітні стрічки, стрічкові і дискові бібліотеки, які потребують тривалого перемотування або механічного (або ручного) перемикання носіїв інформації.
У більшості сучасних ПК розглядається наступна ієрархія пам'яті:
Регістри процесора, організовані в регістровий файл — найбільш швидкий доступ (близько 1 такту), але розміром лише в декілька сотень або, рідко, тисяч байт.
Кеш процесора 1го рівня (L1) — час доступу порядку декількох тактів, розміром в десятки кілобайт.
Кеш процесора 2го рівня (L2) — більший час доступу (від 2 до 10 разів повільніше L1), близько половини мегабайта або більше.
Кеш процесора третього рівня (L3) — час доступу близько сотні тактів, розміром в декілька мегабайт (у масових процесорах використовується з недавнього часу).
ОЗП системи — час доступу від сотень до, можливо, тисячі тактів, але величезні розміри в кілька гігабайт, аж до десятків. Час доступу до оперативної пам'яті може змінюватись для різних його частин у випадку комплексів класу NUMA (з неоднорідним доступом в пам'ять).
Дискове сховище — багато мільйонів тактів, якщо дані не були розміщені у кеші або буфері заздалегідь, розміри до декількох терабайт.
Третинна пам'ять — затримки до декількох секунд або хвилин, але практично необмежені обсяги (стрічкові бібліотеки).
Більшість програмістів звичайно припускає, що пам'ять ділиться на два рівні, оперативну пам'ять і дискові накопичувачі, хоча в ассемблерних мовах і ассемблерно-сумісних (типу C) існує можливість безпосередньої роботи з регістрами. Отримання переваг від ієрархії пам'яті вимагає спільних дій від програміста, апаратури і компіляторів (а також базова підтримка в операційній системі):
Програмісти відповідають за організацію передачі даних між дисками і оперативною пам'яттю, використовуючи для цього файловий ввід-вивід.
Апаратне забезпечення відповідає за організацію передачі даних між пам'яттю і кешами.
Оптимізувальний компілятор відповідає за генерацію коду, при виконанні якого апаратура ефективно використовує регістри і кеш процесора.
Багато програмістів не враховують багаторівневість пам'яті при програмуванні. Цей підхід працює поки застосунок не зіткнеться з падінням продуктивності через насичення підсистеми пам'яті (англ. memory wall). При виправленні коду (рефакторинг) необхідно врахувати наявність і особливість роботи верхніх рівнів ієрархії пам'яті для досягнення найвищої продуктивності.