Як байт (и) завантажується з вторинного запам'ятовуючого пристрою в оперативну пам'ять після завантаження, якщо оперативна пам'ять, ймовірно, вже містить біти в конденсаторах?


5

Це було на моєму розумінні сьогодні.

Якщо мікросхеми оперативної пам'яті містять біти, що зберігаються в конденсаторах, що сидять там, як ви можете витягти біти звідкись і покласти їх там, де вже є щось?

Наприклад, під час завантаження, я буду педантичним тут, щоб проілюструвати свою плутанину:

MOV AL, 07h

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

Тому що в основному процесор буде тягнути байт через шину з оперативної пам'яті, незалежно від того, це код або дані, щоб визначити, що робити з ним.

Тому моє запитання, якщо це не ясно, це:

Як має сенс, що байти / біти переміщуються в ОЗП, коли RAM вже займає біти, тобто "2 ГБ DIMM небуферизований".

Оперативна пам'ять має біти, що сидять в конденсаторах, так як має сенс, що BIOS / прошивка встановлює IP-реєстратор процесора до наступної інструкції, коли оперативна пам'ять ЗАВЖДИ займає біти до завантаження?

Вибачте, якщо поза темою.

boot  memory  cpu  bios 

питання краще підходить в електротехніці, не тут.
Sickest

1
Вони сказали мені, що там не було теми.

5
Хоча це й дуже технічний характер, це все ще стосується комп'ютерної техніки, тому тут все в порядку. cc @Sickest
slhck

Чесно кажучи, якщо його тему немає, то я бажаю вам удачі тут, LOL :)
Sickest

Я коментар echo @ slhck, це питання залишається.
studiohack

Відповіді:


9

Якщо мікросхеми оперативної пам'яті містять біти, що зберігаються в конденсаторах, що сидять там, ...

Оперативна пам'ять (оперативна пам'ять) - загальний термін, але ви використовуєте його певним чином.
Загалом комп'ютери використовували три основні типи оперативної пам'яті для своєї основної пам'яті:

  • феритова (ядро) пам'ять: цей тип оперативної пам'яті використовувався в комп'ютерах до тих пір, поки напівпровідникова пам'ять не перейшла в 1970-х і 1980-х роках. Це було нестійкий пам'ять; Ви можете вимкнути живлення комп'ютера і перетворити його на наступний день або тиждень, і програма все одно буде в пам'яті.
  • статична пам'ять: напівпровідникова пам'ять, яка є швидкою, але дорогою і менш щільною, ніж DRAM. Ця пам'ять використовує активну схему (тобто транзистори) для утримання бітового стану.
  • Динамічна пам'ять: напівпровідникова пам'ять, яка найчастіше використовується для основної пам'яті ПК. DRAM використовує конденсатор і логіку оновлення, щоб зберегти свої бітові значення.

... як можна витягнути біти звідкись і покласти їх там, де вже є щось?

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

"Біти" в оперативній пам'яті є лише логічними станами або умовою буття. У вас може бути піднята рука, або ви можете опустити руку: це два стани.
Кожна комірка в оперативній пам'яті може змінювати свій стан (так само, як можна підняти або опустити руку).
Операція запису викликає цю зміну стану. Попередній стан комірки пам'яті втрачено назавжди.

... коли RAM вже займає біти, тобто "2 ГБ DIMM небуферизований".

Це досить незручна формулювання.
ОЗП (фізичний елемент) не може "займати" "біти" (які є логічними станами).
DRAM (і SRAM) матимуть сміттєві (випадкові) значення при включенні, поки не буде записано кожне місце.
У загальному випадку пам'ять читання, до якої раніше не записувалася (і, отже, має відоме значення), є помилкою програмування / логіки.

RAM має біти сидять в конденсаторах, ...

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

... отже, як має сенс, що BIOS / прошивка встановлює реєстр IP процесора до наступної інструкції ...

Першим кроком у "завантаженні" є операція "скидання", яка ініціалізує лічильник програм (ПК), або ви, здається, віддаєте перевагу "IP-реєстр" (покажчик інструкцій?) До відомого значення.
Передбачається, що програма завантаження існує на такому "скидання адреси".
Комп'ютери, які використовували феритову пам'ять, часто відкладають цю область пам'яті на "скидання адреси" для утримання програми завантаження .
Сучасні комп'ютери використовують енергонезалежну пам'ять, таку як PROM, EPROM, EEPROM або спалах на "скидання адреси", щоб утримувати програми завантаження .

коли оперативна пам'ять завжди займає біти до завантаження?

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

ДОДАТОК

Можливо, це може допомогти мій перший вчитель з програмування, який забився в наші голови:

  • A read операція (пам'ять або регістр або змінна) неруйнівний .
    Розташування не змінить його значення під час читання. Повторне читання повертає те ж саме значення.
    (Так, існують деякі винятки: автоматичне збільшення місць пам'яті; порти вводу-виводу, зіставлені пам'яттю; деякі типи оперативної пам'яті мають деструктивні ознаки та внутрішньо переписані після кожного читання.)
  • A писати операція (пам'ять або регістр або змінна) руйнівний .
    Нове значення замінить попереднє значення. Неможливо отримати попереднє значення після його запису.

2

Зрозумівши, що "біт" не є реальною фізичною сутністю, це "стан" комірки пам'яті. Дана комірка пам'яті може мати значення 0 або 1, і це трохи.

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

У дуже спрощеної моделі ("реальне життя", звичайно, є) багато складніше) уявіть, що дані надходять з диска як серія нулів і одиниць. Ми припустимо, що це дуже повільний диск і один біт в секунду надходить з диска. Таким чином, ваш MOV інструкція може бути щось подібне 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1з кожним 1 представлений 1 вольт на дроті і кожен 0 представлений 0 вольт на дроті. І ми скажемо, що кожен біт (1 або 0) відділений від наступного на одну секунду.

Далі нам потрібні "логічні" ("gates" і "flip-flops" в інтегральних схемах), які отримують ці дані і поміщають їх в оперативну пам'ять.

ОЗУ розміщується в матриці X-Y. Припустимо, що ми маємо a дуже мало Обсяг оперативної пам'яті розміром 8x8 біт. Для вибору конкретної комірки пам'яті, 16 провідників проходить через масив, 8 горизонтальних і 8 вертикальних. На стику кожного проводу знаходиться комірка пам'яті (конденсатор, в більшості випадків). Крім того, для всіх осередків є три інші дроти: DataIn, DataOut і Write.

Пам'ять виглядає приблизно так:

   Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8
X1 b  b  b  b  b  b  b  b
X2 b  b  b  b  b  b  b  b
X3 b  b  b  b  b  b  b  b
X4 b  b  b  b  b  b  b  b
X5 b  b  b  b  b  b  b  b
X6 b  b  b  b  b  b  b  b
X7 b  b  b  b  b  b  b  b
X8 b  b  b  b  b  b  b  b

Де кожна "b" є коміркою пам'яті, яка може містити або 1, або 0. (Дроти DataIn, DataOut і Write не показано).

Якщо я поклав 1 вольт у верхній горизонтальний дріт і ліворуч по вертикальному дроту, то будь-яке значення зберігається в комірці (конденсаторі) на стику цих двох проводів (або 1, або 0) буде "прочитано" і вийде через дріт DataOut. Якщо, з іншого боку, я поклав 1 або 0 на дроті DataIn і поклав імпульс на дріт запису, старий вміст вибраної комірки забувається (напруга, що зберігається в конденсаторі, змінюється) і будь-яке значення на дроті DataIn зберігається в комірці.

Так що, якщо я просто підключити цей провід від дисковода до DataIn дроту пам'яті, а потім почати перемикання інших проводів, я можу записати дані диска в оперативну пам'ять. Мені потрібно мати "логіку", яка буде вибирати різні X і Y проводів масиву пам'яті один раз в секунду. Якщо провідники X і Y пронумеровані X1 ... X8 і Y1 ... Y8, то вони будуть обрані (тобто застосовано +1 вольт) у такому порядку: ..X1 & Y8, X2 і Y1, X2 і Y2, ... X8 і Y8. І кожен раз, коли проводки були змінені, пишемо дріт.

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

У будь-якому випадку, оскільки наведені вище дані читаються, він потрапить у нашу 8x8 оперативну пам'ять так:

1 0 0 1 1 0 0 0 
0 0 0 0 0 1 1 1
x x x x x x x x
x x x x x x x x
x x x x x x x x
x x x x x x x x
x x x x x x x x
x x x x x x x x

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


1

Операція запису пам'яті змінить існуючі біти на бажаний стан. Не існує такої речі, як "unset" біти, вони є в будь-який час 0 або 1.

А як щодо включення живлення? Як правило, це випадковий стан, але, тим не менш, визначене стан. Якщо минуло не так багато часу від попереднього пакета, можна відновити допустимі дані.


1
Я завжди замислювався, якщо оперативна пам'ять (наприклад, DDR3 SDRAM), яка була вимкнена протягом, скажімо, 24 годин, фактично містить значення RANDOM або фактично містить 0 (або, можливо, тільки МОЖЕ містить 0).
ChrisInEdmonton

1

Вашим основним питанням здається таке: "як можна трохи перенестися до місця, де вже є інший?"

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


0

Я бачу, що ви дуже заплутані. :-)

По-перше, код є даними, це лише дані, які мають специфічне значення для процесора [1].

По-друге, "біти" - це рівні заряду, що рухаються, як водопровідні води, по проводах логіки. Зауважте, що рівень заряду (напруги) не є реальними електронами навколо: хоча електрони рухаються, вони рухаються досить повільно в порівнянні зі зміною напруги.

RAM означає оперативну пам'ять, а D в DRAM - для "Dynamic", тому що вона не триває довго без оновлення. Сучасні мікросхеми мають внутрішню логіку оновлення, яка зчитує всі біти і записує їх назад, що призводить до підзарядки магазину. Майже всі ОЗУ зберігають біти як два рівні заряду, наприклад потенціал 0 вольт для логіки 0 і потенціал 1,5 вольт для логіки 1. Можна, хоча і зовсім не загальне, мати багатозначні біти, так що 0 .. 0,1 вольт за 0, 0,9 .. 1,1 вольт за 1, 1,9 .. 2,1 вольт за 2 і 2,9 .. 3,1 вольт за 3, для стільника, що зберігає 2 біти (двійкові розряди) даних.

Фактичні напруги, що використовуються в логіці (пам'яті або іншим чином), не є важливими, але, звичайно, кожен кінець компонентів дроту, що з'єднує, повинен узгоджуватися з ними. Якщо ви подивитеся на електронні таблиці, ви знайдете заяву щодо напруг, які чіп інтерпретує як кожен логічний рівень. Загальний для TTL логіки на 5 вольт (номінальний) був між 0 і 0.5V є логікою 0, і 3,5 вольт до 5,1 вольт логіки 1.

Коли в пам'ять записується розташування, електроніка встановлюється таким чином, що все, що було там, перезаписується - будь то 0 або 1. Іноді ця логіка працює "неправильно": "природне" значення логічне 1 значення, яке повинно бути примусовим, дорівнює 0. У будь-якому випадку, це все в DRAM-чіпі: все інше вважає пам'ять місцем, яке можна записати і переписати стільки і часто, скільки потрібно. Якщо вам цікаво, що сталося з "старими" даними, заряд відправляється на землю, і він є частиною причини того, що мікросхеми споживають енергію.

Коли процесор отримує код з пам'яті, він передається через конвеєр етапів: вони служать для прискорення процесора. Багато сучасних процесорів також є мікропрограмованими: внутрішня логіка виконує кілька "інструкцій" з одного вхідного, і ці внутрішні інструкції ще нижчі. Щоб зрозуміти все це правильно, потрібно зрозуміти внутрішні процесори, і x86 не є місцем для запуску на цьому !! Щось простіше було б Роквеллом 6502 (Acorn BBC / C = 64 et al). Більше того, люди написали емулятори, так що ви можете грати всілякі ігри дуже легко.

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

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

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

HTH

[1] Деякі процесори розрізняють мікросхеми пам'яті, що використовуються для коду, з тих, що використовуються для даних, які називаються "архітектурною пам'яттю Гарварда". Тим не менш, "код даних" все ще вірно навіть тоді.


0

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

Біти не "займають пам'ять", вони є значеннями, що зберігаються в схемах пам'яті.

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

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

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

  • При зчитуванні чіп пам'яті буде керувати проводом шини даних високим або низьким належним чином, щоб відправити значення на надану адресу ЦП.

  • Під час запису процесор повинен керувати проводом шини даних високим або низьким відповідним чином, щоб надіслати значення мікросхемі пам'яті. Мікросхема пам'яті оновлюватиме біти пам'яті на наданій адресі, щоб бути ідентичними значенням, що "записується", роблячи їх утриманням, якщо написано 1, і утримуються, якщо записано 0.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.