6 мая 2021 6.05.21 14 976

Можно ли использовать процессор (CPU) как память в компьютере?

Предисловие

Доброго времени суток StopGame! Одним тёплым, весенним вечером мне в голову пришла отчасти бредовая мысль: «А можно ли использовать процессор в качестве памяти для компьютера?» и я решил более подробно изучить этот вопрос. Сегодня мы вместе с вами разберёмся, возможно ли это хотя бы теоретически и что потребуется для реализации. Буду стараться объяснять подробно даже для тех, кто имеет малое представление о работе компьютера, но порой всё равно будет тяжеловато понять написанный текст.

P.S: Информации по данной теме в интернете практически нет, поэтому будут озвучены лишь мои бредовые мысли. =)

P.S.S: Для сокращения написания я иногда буду писать аббревиатуру «CPU» вместо слова «процессор».

Какая память есть в компьютере?

Сначала взгляните на таблицу чуть ниже, в ней представлено большинство видов памяти, которые используются в ПК. После мы остановимся на главных из представленных и более подробно о них поговорим.

P.S: О внешней памяти мы говорить не будем, так как она не является обязательной для работы компьютера.

В современных компьютерах имеется два основных типа памяти: ОЗУ и ПЗУ.

-ОЗУ (оперативное запоминающее устройство) — предназначено для временного хранения информации, так как в такой памяти информация теряется при отключении питания. Данная память нужна для обработки той информации, которая нужна непосредственно сейчас, то есть может потребоваться на небольшой промежуток времени.

В ПК ОЗУ представлена в виде микросхем «оперативной памяти» и сейчас именуется по поколениям, таким как: DDR1, DDR2, DDR3, DDR4. (Скоро должна «появиться на прилавках» и ОЗУ пятого поколения: DDR5).

-ПЗУ же наоборот служит для долговременного хранения информации, так как данные не теряются после отключения питания от электросети. ПЗУ также обладает огромным объёмом по сравнению с ОЗУ. Например на момент апреля 2021 года в «Steam» у пользователей наиболее популярный объём памяти лежит в связке 16 гигабайт ОЗУ и более 1 терабайта (1024 гигабайта) ПЗУ.

В ПК ПЗУ представлена в виде HDD и SSD накопителей, более известных как «Жёсткие диски» или «винчестеры».

Почему же нельзя использовать ПЗУ также обработки информации вместо ОЗУ?

Ответ достаточно прост: ПЗУ чрезвычайно медленная по сравнению с ОЗУ, а значит она будет являться «бутылочным горлышком» (тормозить работу остальных компонентов) при работе ПК. Но это даже не самая главная проблема ПЗУ.

Самая главная проблема состоит в том, что ПЗУ вообще НЕ МОЖЕТ передавать данные к процессору непосредственно. Чтобы передать данные с вашего жёсткого диска (ПЗУ), они должны сначала скопироваться в ячейки оперативной памяти (ОЗУ), из которой процессор уже сможет прочитать данные.

НЕ СТОИТ думать, что ОЗУ — это самая быстрая память в компьютере. В следующем разделе мы с вами перейдём к по настоящему быстрой памяти ПК.

Какая память есть в процессорах уже сейчас?

Давайте начнём с того, что практически во всех существующих на данный момент процессорах уже есть память, но она обладает рядом ограничений, одно их таких например маленький объём (не более 512 мегабайт даже для очень мощных, серверных процессоров).

Такая память называется «КЭШ памятью» и используется для сверхбыстрой обработки информации. (Но её скорость всё ещё не максимальная среди всех запоминающих устройств в компьютере).

КЭШ память делится на несколько уровней: L1, L2, L3, L4 (от самой быстрой «L1», до самой медленной «L4»). Все уровни (кроме L1) располагаются непосредственно в кристалле (микросхеме) процессора и процессор имеет к ним непосредственный доступ.

Также в процессоре существует ещё и «регистровая память», которая обладает САМЫМ БЫСТРЫМ ДОСТУПОМ К ЧТЕНИЮ И ЗАПИСИ ИНФОРМАЦИИ в компьютере, но имеет совсем маленький объём и для долговременного хранения информации не подходит, так как регистры в процессоре работают по следующему алгоритму:

1. Получения (чтения) информации извне. (Например из оперативной памяти, также называемой ОЗУ).

2. Произведения вычислений над полученными данными.

3. Запись данных обратно в долговременную (ПЗУ), или оперативную память (ОЗУ).

4. Очистка регистров, и циклический запуск алгоритма с пункта № 1.

Ниже представлена таблица скоростей памяти от самой быстрой (сверху), к самой медленной (внизу):

И всё же мы так и не получили ответ на основной вопрос этого блога: «Как же всё-таки можно использовать CPU как память и можно ли вообще?». К этой теме мы сейчас перейдём, но для лучшего понимания информации нужно, чтобы вы поняли с помощью чего работают все современные процессоры.

Главный элемент цифрового века — транзистор.

Название этой главы блога действительно очень близко к правде, ведь если бы в 1950-х люди бы не изобрели транзисторы, мы бы не видел мир таким, какой он есть сейчас. Не появились бы смартфоны, компьютеры, телевизоры и практически вся остальная электроника.

Так как же работает этот загадочный элемент и почему он так нужен в процессорах?

Объяснить работу транзистора можно очень просто — это управляемый выключатель.

Представьте, что вам нужно включить свет в вашей комнате, для этого вы нажимаете на выключатель, и он переходит из закрытого состояния в открытое. Или представьте себе, что вы проснулись утром и вам нужно умыться, для этого вы тоже открываете кран, чтобы вода потекла и после умывания закрываете, чтобы вода прекратила течение. Транзистор работает точно также, у него имеется три контакта, если упрощенно их можно назвать так: вход, выход, управляющий контакт.

Когда на управляющем контакте есть напряжение, транзистор считается открытым и электрический ток между входом и выходом течёт, а когда на управляющий контакт не подаётся напряжение, транзистор считается закрытым и ток между входом и выходом не течёт.

Вы что-нибудь слышали про «двоичную логику»? Ну это там, где числа представляются в виде последовательности нулей и единиц, например: 0011101. В школах вам возможно часто говорили, что по принципу двоичного кодирования работает компьютер и эти слова близки к правде. Как раз в принципе двоичной логики и есть главная прелесть транзисторов: когда транзистор открыт, то есть ток между входом и выходом течёт это можно представить, как 1, а когда транзистор закрыт можно представить это как 0.

Как вы могли понять, на уровне «железа» никаких 0 и 1 нет, они нужны для более понятного восприятия информации и в процессорах 0 и 1 представлены состоянием транзисторов: открыт (1)/закрыт (0). Вообще двоичная логика применима ко всему, что может иметь два состояния: открыто/закрыто, включено/выключено, клюёт/не клюёт и так далее.

Почему же транзисторы с двоичной логикой так важны в производстве процессоров?

Потому что это очень удобно, так как можно произвести память с такой же логикой и совмещать работу памяти и процессора будет намного проще, чем когда память работает по другим принципам.

В современных процессорах количество транзисторов измеряется миллиардами, а их размер нанометрами. Например сейчас новейшие процессоры изготавливаются по архитектуре 7нм, что говорит о том, что один транзистор имеет размер в 7 нанометров. На самом деле это невероятно маленький размер, поэтому и удаётся поместить много миллиардов транзисторов в кристалл CPU, размером в несколько сантиметров.

И тут мы плавно переходим к тому, «а возможно ли всё-таки использовать процессор как память?» Но перед этим буквально пару слов о том, как работает память.

Память работает на самом деле по очень похожему принципу, только вместо транзисторов там используются триггеры (на самом деле не только триггеры, но поговорим мы сегодня только о них).

Триггер в памяти ПК — это можно сказать малюсенькая батарейка, которая тоже имеет два состояния: есть заряд, нет заряда (заряжена/разряжена). А это же тоже двоичная логика есть заряд (1)/нет заряда (0). Из множества таких триггеров составляются микросхемы памяти, которые хранят информацию по битам. Бит — это минимальная единица сохранения информации в ПК. Бит может иметь два состояния 0 или 1. В один триггер можно поместить только один бит.

Так можно ли всё-таки использовать процессор как память?

Прочитав блог, вы думаю уже и сами поняли ответ на этот вопрос.

Теоретически конечно это сделать возможно, но почему тогда производители до сих пор выносят память, как отдельные устройства? Давайте разбираться.

P.S: Практически же создание такого процессора скорее всего НЕВОЗМОЖНО и ниже описываются скорее мои МЫСЛИ И ДОГАДКИ, которые ЧРЕЗВЫЧАЙНО ФАНТАСТИЧНЫ.

Давайте далее называть процессор, который будет использоваться в качестве памяти: «память-процессор» для более удобного и короткого написания блога.

Одна из главных причин отсутствия даже прототипов таких память-процессоров состоит в том, что потребуется невероятно кардинальное изменение архитектуры производства таких процессоров, и даже если бы прототип такого память-процессора был создан, изменения в схеме были бы настолько огромными, что такое устройство уже не могло бы называться процессором.

Также всё дело в том, что процессор следит за состоянием битов (0 или 1) памяти, из которых получает информацию и как бы то странно не звучало, но для использования процессора как памяти нам понадобится другой «процессор».

Более того, следить за состоянием транзисторов сложнее, чем за состоянием триггеров памяти, поэтому для использования память-процессора будет необходим другой «процессор». Один процессор будет использоваться как хранилище из транзисторов, а другой будет отслеживать состояние каждого транзистора (открыт/закрыт, 0/1), то есть будет использовать транзисторы, как триггеры.

Ещё немаловажный момент составляет то, что этот так называемый вспомогательный процессор, для отслеживания состояний память-процессора будет просто НЕВЕРОЯТНО СЛОЖЕН в производстве и даже попытка производства его лежит где-то в области фантастики. Этот вспомогательный процессор тоже мало что общего мог бы иметь с термином процессор, каким мы его понимаем сейчас, если бы был создан. Этот вспомогательный процессор по сути мог бы представлять из себя устройство наблюдения за течением тока в отдельных участках цепи, но опять же, создание такого устройства, которое могло бы следить за состоянием НЕСКОЛЬКИХ МИЛЛИАРДОВ ТРАНЗИСТОРОВ — ПРАКТИЧЕСКИ НЕВОЗМОЖНО (на данный момент).

Из-за кучи конструктивных особенностей да и из-за соображений банальной логики производить так процессоры никто не будет. Это также и экономически нецелесообразно.

Хотя если бы все транзисторы в процессоре например: «Intel I7-6950X» использовались как триггеры, мы бы могли иметь 324 гигабайта памяти, что безусловно намного больше, чем в большинстве компьютеров сейчас (если говорить об ОЗУ). Посчитать это довольно просто: в данной модели процессора 3.2 миллиарда транзисторов, а значит 3.2 миллиарда потенциальных триггеров или битов. Переведём их в гигабайты, путём деления: 3200000000 / 8 / 1024 /1024 = 324,4393687707641 гигабайта памяти.

Ещё одной большой проблемой было бы то, что такую память можно использовать исключительно как ОЗУ, так как при отключении питания все транзисторы закроются, то есть примут значение 0, что естественно не подходит для долговременного хранения информации.

Большим плюсом было бы то, что потенциально скорость работы такой памяти была бы в разы выше, чем всей ныне существующей.

Самой главной проблемой создания такого память-процессора — его производство, поскольку скорее всего придётся кардинально менять внутреннее строение и соединение транзисторов друг с другом, да и создание сопроцессора, который бы следил за состоянием память-процессора будет ещё сложнее.

В теории это скорее всего память-процессор возможно было бы создать, но производителям ГОРАЗДО ПРОЩЕ сделать ставку на увеличении объёма кэш памяти и регистров, нежели создавать совершенно новое устройство, для которого ещё и потребуется создание сложнейшей логики работы.

Конечно не обязательно обрабатывать все транзисторы память-процессора другим процессором, для этого можно создать другое устройство, но это лишь мечты, которые скорее всего никогда своего воплощения не найдут.

Заключение

Я действительно старался подать материал максимально упрощённо и многие моменты упустил для лучшего понимания, но однако местами получилось не особо понятно, за что прошу меня простить.

Буду рад вашему плюсику, ещё увидимся на StopGame.ru.


alexanderp03

Лучшие комментарии

dmicher 6 мая 2021, 13:59

Написано неплохо. Всё понятно, кроме одного: «зачем?»

Процессоры намеренно создавались не для того, чтобы хранить краткосрочную или долгосрочную информацию, а для того, чтобы её обрабатывать с максимально доступной скоростью. Поэтому смысла замарачиваться в этом немного. Разве что по приколу.

Если уж очень хочется, то можно:

1. использовать регистры процессора как ячейки информации; тогда достаточно будет лишь снизить тактовую частоту до нуля: информация регистров станет хранилищем; для получения информации потребуется лишь восстановить тактовую частоту;

2. использовать кэши процессоров (это уже в современных процессорах) — увеличит объём хранимой памяти, не потребует снижения тактовой частоты, но потребуется чёткого слежения за содержимым кэшей;

3. использовать аппаратные прерывания (вариант использования кэшей) — когда процессор будет сбрасывать своё текущее состояние (реестры) в собственное хранилище; после чего сбрасывать тактовую частоту до нуля и для получения информации опять же восстанавливать тактовую частоту.

Все три решения не требуют вмешательство в работу процессора и его природу.

А вот то, что один процессор может отслеживать состояние каждого транзистора другого процессора — это полная дичь. Такое невозможно чисто физически: так процессоры не работают. Единственную информацию, которую может получить другой процессор о состоянии первого — это электрические импульсы на выходных ножках процессора-«памяти». Это совершенно не те цифры памяти, о которых вы заявляете.

Вывод: статья больше о «фантазии» вокруг компьютерного железа, нежели о реальной архитектуре компьютера. Я бы советовал на этот счёт прочитать Таненбаума «Архитектура компьютера» — книжка написана очень простым и очень понятным для любого человека языком. Там отлично описан принцип работы процессора и то, почему одно железо не используется вместо другого.

alexanderp03 6 мая 2021, 15:27

Да я и сам согласен с комментарием выше, и сегодня дополню блог некоторыми недостающими деталями, которые мне показались не очевидными в момент написания блога. А по поводу использования железа не по прямому назначению (если говорить о софте), относительно недавно Nvidia сделали RTX Voice, который удаляет шумы с помощью нейросети на мощностях видеокарты. Что конечно идея хорошая, учитывая то, что GPU выполняют вычисления с плавающей точкой гораздо быстрее CPU (который вообще не может вычислять не целые числа без АЛУ. Ну и видеокарта не может, но там блоков АЛУ гораздо больше).

bodixx 6 мая 2021, 15:49

ну и тем более, тема хоть и околоигровая, но довольно сложная для массовой аудитории — кому-то банально «очень интересно» это, кто-то банально начнет читать, но не сможет понять, и так далее.

alexanderp03 6 мая 2021, 14:10

Вся критика по делу, приму к сведению. По поводу отслеживания состояния одного процессора другим я же указал, что потребуется кардинальное изменение архитектуры производства процессоров, чтобы использовать транзисторы в качестве своеобразных триггеров. Теоретически это всё же возможно, но не практически.

Также связка регистры+кэш в сумме даже 1гб памяти не даст, они нужны для других целей. Я представлял себе вариант использования процессора в качестве ОЗУ, чтобы объём был более менее вменяемый.

В целом на все ошибки вы указали правильно.

bodixx 6 мая 2021, 15:04

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

единственное, что я вспоминаю из примеров использования железа не по прямому назначению, это обсчет физики на видеокартах или в простонародье PhysX, который очень круто «делал» частицы в том же Batman: Arkham.

возможно, «процессорная память» будет очень нужна в каких-то задачах, где важна пропускная способность, а так она, по идее, будет максимальной.

ну а вообще, в любом случае, блог не достоин был минусовки.

alexanderp03 6 мая 2021, 17:23

Тоже вполне разумное замечание, тема достаточно узкая и малоинтересная большинству пользователей. Блог чуть дополнил в последней главе, чтобы донести главную мысль — это всё лишь мои мечты и фантазии.

van237 20 августа 2021, 3:44

alexanderp03 — Вы гений! Как всегда все гениальное просто, почему инженеры интел и амд до этого не додумались? И уверяю Вас даже архитектуру процессора не надо переделывать, и даже не надо 2й сокет делать на материнке — т.к. можно все запихать в один сокет и под одну крышку как например видеокарту! И если разбить по блокам память — то при браке можно отключать блоки и не обязательно 300+ гигабайт можно и меньше и брака меньше :) да же больше если если в течеии времени какие-то блоки памяти будут выходить из строя их легко сможет отключить биос после например тестирования :) Считаю Вашу идею самой простой и гениальной!!! 

van237 20 августа 2021, 3:45

alexanderp03 — Вы гений! Как всегда все гениальное просто, почему инженеры интел и амд до этого не додумались? И уверяю Вас даже архитектуру процессора не надо переделывать, и даже не надо 2й сокет делать на материнке — т.к. можно все запихать в один сокет и под одну крышку как например видеокарту! И если разбить по блокам память — то при браке можно отключать блоки и не обязательно 300+ гигабайт можно и меньше и брака меньше :) да же больше если если в течеии времени какие-то блоки памяти будут выходить из строя их легко сможет отключить биос после например тестирования :) Считаю Вашу идею самой простой и гениальной!!!

van237 20 августа 2021, 3:55

только мне кажется — Вы ошиблись в формуле переводя 3,2 млрд тригиров в гигабайты :) 3 200 000 000 (тригер=бит) /8 = 400 000 000 байт /1024 = 390 625 килобайт /1024 = 381,469… Мегабайт /1024 = 0,372… Гигабайта

bodixx 6 мая 2021, 18:50

В любом случае, конкретно мне было интересно — я, в принципе, люблю блоги на подобноые темы, думаю с десяток таких как я еще найдется)

alexanderp03 21 августа 2021, 15:03

Впоплне возможно, что в калькуляции мог ошибится. Но в один кристалл, под один сокет это сделать будет невозможно чисто физически. Это просто не реально, да и в перспективе ближайших лет 20 наверное процессоры не придут к ОЗУ под теполраспределительной крышкой.

alexanderp03 21 августа 2021, 15:05

Комментарий звучит уж очень саркастически) В мечтах и теоретически это наверное возможно, но вряд ли реализуемо на практике.

Читай также