IT-кот 5. Оперативная память, как у золотой рыбки
Настоящий кот в своей жизни должен сделать три вещи: поесть, поспать и тыгыдык. Но как тогда запомнить в какое время делать какую из вещей? Что ж, придется и это переложить на плечи компьютера.
Для начала попробуем повторить функционал золотой рыбки: будем запоминать только на время работы программы.
Для такого функционала в программе есть два механизма: переменные и поля.
Переменными мы будем называть такое место внутри метода, куда сохраняются те или иные значимые вещи: числа, строки, даты и вот это все. "Вот это все" будем называть данными.
Полями же назовем назовем тоже самое, но уже снаружи метода.
Переменные используются для совсем временного хранения данных. Так в прошлом посте (IT-кот 4. Смерть кащея в подрограмме "яйцо", а подпрограмма "яйцо" - в подпрограмме "заяц") в качестве переменной мы использовали переменную i, в которую система автоматически записывала номер текущего повторения (итерации).
Поля нужны для сохранения информации между методами. Если строго подходить к программированию, то в силу того, что один метод вызывается из другого, а дургой из третьего и т.д., то переменных для хранения информации нам обычно достаточно. Поля же обычно используются для описания более сложных данных, но об этом поговорим в следующих постах.
Пока же перед телом главного метода Main создадим поле "whatNow" (будем хранить в ней описание того что нужно делать сейчас) и "whatDone" (для хранения прошлого действия):
static string whatNow;
static string whatDone;
В теле главного метода зададим начальные значения (текст указываем в двойных кавычках):
whatDone = "поспать";
whatNow = "поесть";
Теперь создадим метод, который с учетом наших дел будет говорить нам что делать теперь.
static void WhatToDo()
{
whatDone = whatNow;
if (whatNow == "поспать")
{
whatNow = "поесть";
}
else if (whatNow == "поесть")
{
whatNow = "тыгыдык";
}
else
{
whatNow = "поспать";
}
}
В этом методе мы сначала говорим, что запланированное действие уже сделано. Затем проверяем что же именно сделано с помощью конструкции if .. else if .. else. В этой конструкции для первой проверки всегда пишется if, а в скобках указывается условие проверки (то, что сделано, это - "поспать"). Затем, если на первую проверку мы дали ответ - "нет", то проверяется следующая (раз мы не поспали, то, наверное, поели). В самом конце написаны действия без проверок, которые выполняются, если ни одна из проверок не выполнилась (в любой непонятной ситуации - пойдем спать). Первая проверка обязательна, писать ли остальные - решает программист.
Ну и в самом конце выведем на экран наш текущий план, для чего в методе Main после задания начальных значений спросим компьютер что нам делать и выведем результат на экран:
WhatToDo();
Console.WriteLine("Сделано:");
Console.WriteLine(whatDone);
Console.WriteLine("а сейчас:");
Console.WriteLine(whatNow);
Console.WriteLine("******");
Если вспомнить предыдущие посты про циклы, то используя их, расписание можно повторять любое количество раз. Ссылка на всю программу должна быть доступна здесь.
В следующий раз попробуем запомнить уже на долго, ну а пока - всем больше "поспать" и меньше "тыгыдык" ;)
IBM Power - личное мнение (часть 2а)
спасибо подписчикам за доверие и за терпение. лето, дача, сад и огород были важнее. что поспособствовало обрастанию темы подробностями. интересны ли они только мне, решать читателям.
1. почему IBM Power и чем эти процессоры выделились
2. особености ввода-вывода серверов на основе Power
- 2а. POWER, POWER2
- ...
3. как работают LPar-ы, или в чем преимущества Power Hypervisor + HMC
4. VIOS или не VIOS, вот в чём вопрос...
5. AIX, устаревший UNIX, или неувядающий
хороший процессор всего лишь часть производительной ЭВМ. без хорошей памяти и без быстрого доступа к устройствам ввода-вывода не обойтись. мода в 80е была на микропроцессоры, впихивание всех блоков процессора в одной микросхеме. в погоне за дешевизной уменьшали корпус совмещением адресной шины и шины данных. но основные продукты IBM всегда были сложными, а в погоне за высокой производительностью и дорогими. тем более, что люди, привыкшие к процессорам размером в шкаф и ЭВМ размером в спортивный зал, ограничивать себя в производительности не привыкли. поэтому с целью выжать как можно больше производительности шина наоборот расширяется. вводя одновременное выполнение нескольких комманд, нужно все эти команды загрузить. тем более, что операнды комманд тоже нужно загрузить.
первое поколение IBM POWER позволяло одновременное выполнение одной команды загрузки/сохранения/перехода, одной целочисленной команды и одной команды с плавающей запятой. каждая по 32 бит, значит нужны не менее 96 битов для загрузки трех команд из памяти. поэтому шина доступа к памяти сделали шириной в четыре слова, или 128 битов. на схеме это четыре блока кеша данных (data-cache unit / DCU), 32 битов каждый.
на каждой плате четыре пары 32-битовых планок памяти, что позволяет чередованием достичь более высокой скорости доступа к данным. 64-битовые платы памяти нужно устанавливать попарно.
знакомая хитрость, которой пользовались и пользуются все производители сложных микросхем: часть отбракованных на производстве микросхем можно вернуть в строй, понизив тактовую частоту или выключая неработающие блоки. другие удешевляют, жертвуя параметрами. многим знакомы 16-битовые процессоры Intel 8088/80188 с 8-битовой иной данных, или 32-битовые Motorola 68000 и Intel 80386SX с их 16-битовой шиной. процессоры POWER не исключение, существует упрощенный вариант процессора с выполнительными блоками пониженной тактовой частоты и двумя блоками кеша. в них шина к памяти 64 бит и платы памяти можно устанавливать поштучно.
например из первых моделей POWERserver 320 и POWERserver 520 работали на 20 МГц, включали только 32 килобайт кеша, шина к памяти была 64-битовой и оснащались одной картой памяти на 8 MB. зато модели POWERserver 530 и POWERserver 540 работали на 25 и 30 МГц соответственно, включали 64 килобайт кеша, имели 128-битовую шину, а объем памяти начинался с 16 MB (2х8MB) и 64 MB (2x32MB).
доступ к устройствам ввода-вывода осуществляется через отдельную шину System Input/Output (SIO). о ней очень мало известно, но она 64-битовая. последнее приводило немало людей к заблуждению, что это 64-битовая шина MicroChannel, хотя между ними сидит Input/Output Channel Controller (IOCC). предположительно работала на частоте процессора.
шина MCA позволяет обмен 64-битовыми двойными словами через 32-битовую шину при помощи "мультиплексирования". о последнем тоже мало что известно и даже служители IBM порой пишут невероятные вещи. догадываясь по скудным данным в открытом доступе, "мультиплексирование" проводит обмен второго 32-битового слова через линии адреса. таким образом некоторые платы линейки RS/6000 могли достичь теоретический максимум в 80 MB/s, что в серверах PS/2 ограничено до 40 MB/s. встречал упоминания, что на практике можно было достичь около 77 MB/s при обменах блоками в 4 килобайт. все это при частоте шины в 10 МГц. теоретически при частоте в 20 МГц потолок скорости 160 MB/s, но не знаю был ли когда-либо достигнут. жадность IBM проиграла PCI.
также очень мало известно о Serial Optical Channel Converter (SOCC), что появился годом позже на серверах 500 серии и 900 серии. в открытом доступе есть упоминания, что скорость каждого из двух оптических портов была 220 Мбит/с, что в те времена было вдвое быстрее самого быстрого наличного сетевого стандарта FDDI. устройства поддерживают связь точка-точка между машинами, но IBM указывает, что можно купить коммутатор у партнера. операционная система AIX поддерживает связь по протоколу TCP/IP через Serial Optical Link.
с улучшением технологии изготовления микросхем появляются некоторые улучшения производительности за счет повышения тактовой частоты. за этим можно подозревать связанную с частотой процессора скорость шины SIO, но потверждения тем подозрениям вряд ли удастся найти. процессоры POWER работали на частотах 20 МГц, 25 МГц и 30 МГц. первое улучшение (POWER+) достигло частоты в 25 МГц, 33 МГц и 41 МГц. второе улучшение (POWER++) дало 25 МГц, 33 МГц, 41 МГц, 50 МГц и 62,5 МГц. на таких относительно высоких частотах задержка доступа к памяти уже является основным узким местом. это приводит к замене плат памяти на новых моделях.
машины POWERserver 970 и POWERserver 980 добавляют второй IOCC на шине SIO, что дает вторую шину MicroChannel (2x 80 MB/s) и еще два порта SOCC.
на смену первому поколению приходит второе. для дальнейшего повышения производительности повышается суперскалярность. в процессорах POWER2 уже два АЛУ и два блока вычислении с плавающей запятой. их нужно запитывать и шина к памяти расширяется до 256 бит, а карты памяти лучше добавлять группами по четыре. хотя возможность установить всего лишь две карты памяти предусмотрена, но это сужает шину до 128 бит с потерей производительности.
вторая шина MicroChannel в модели POWERserver 990 уже не добавляется по заказу, а установлена штатно.
(продолжение следует...)
Праздник к нам приходит
Сата мои, тег моё
Стоимость оперативной памяти выросла на 20% за две недели.
Ограничения на экспорт высокотехнологичных материалов из Японии в Южную Корею привели к тому, что всего за две недели стоимость чипов оперативной памяти выросла более чем на 20%. По информации аналитиков DRAMeXchange, средняя цена одной 8-гигабитной микросхемы DDR4 DRAM к завершению биржевых торгов в минувшую пятницу составила $3,74. Это на 14,6% выше цены закрытия на позапрошлой неделе (12 июля) и на 23% выше цены, по которой закрывались торги 5 июля.
C учетом отсутствия существенных изменений в объеме спроса и предложения на рынке DRAM, торговые ограничения правительства Японии выступили решающим фактором в росте цены на оперативную память. Кроме того, определенную роль сыграл инцидент с отключением электроэнергии на японском заводе Toshiba Memory Corporation и Western Digital в городе Йоккаити.
Если Samsung Electronics и SK Hynix, ведущие производители оперативной и флэш-памяти NAND, начнут ощущать реальный спад производства из-за регулирующих действий Японии, цены на данный вид продукции могут вырасти до показателей 2017-2018 годов или даже выше. Под угрозой подорожания окажутся не только модули ОЗУ, но и множество другой техники вроде смартфонов, ноутбуков или планшетов.
Если вы профи в своем деле — покажите!
Такую задачу поставил Little.Bit пикабушникам. И на его призыв откликнулись PILOTMISHA, MorGott и Lei Radna. Поэтому теперь вы знаете, как сделать игру, скрафтить косплей, написать историю и посадить самолет. А если еще не знаете, то смотрите и учитесь.
Тайминг и частота ОЗУ
Вопрос к "шарящим" людям. Имеется процессор работающий с ОЗУ на частоте 1600МГЦ. С таймингами 10. Если поставить Планки с частотой 2400мгц, и таймингами 11, ОЗУ естественно будет работать на той же частоте 1600, но на каких таймингах? И будет ли это хуже чем родные 1600 и CL10?