1) Допустим, вы хотите собрать скромный сервер под БД. Ну, у вас есть 1000 новых записей за день, а каждый год вы начинаете заполнять новую базу. Итого у вас в каждой базе всего ~300000 записей.
2) Даже если каждая из них по 100000 байт (ну куда, куда столько?) то вся база влезет в 32 GB памяти.
3) 8-ми гиговые модули для десктопных машин это уже не экзотика.
С конца 2011 года уже почти все производители выпустили
ассортимент таких продуктов.
4) и стоит недорого - к примеру Kingston обойдется в 3000 рублей за модуль = 12 тыр за 32 GB
5) основное отличие серверных модулей в том, что они Registred. Т.е. на планку памяти ставится дополнительная микросхема-регистр, назначение которой заключается в том, чтобы уменьшить электрическую нагрузку на контроллер
и позволить устанавливать больше модулей памяти в одном канале.
понятно, что у нас всего 4 модуля и поэтому Registred память не обязательна
6) к тому же Registred-память слегка медленнее - из-за использования регистров возникает дополнительная задержка на один такт при работе с памятью.
Есть возможность собрать десктопный комп с поддержкой ECC, но не registred памяти:
7) Модули с ECC и без него по формфактору, пинам и напряжению одинаковые (там 72 линии)
8) С тех пор как контроллер памяти разместили в кристалле к процессора,
совместимость материнки с памятью осталась
только механическая и электрическая, но не функциональная.
в каких процах появился интегрированный контроллер памяти?
у AMD - в K8 ~ с апреля 2003
у Intel - в Nehalem ~ 4 квартал 2008
процессоры на базе ARM - примерно с 2010-го ()
9) бывают модули памяти с ECC, но не Registred
10) существуют десктопные процессоры, поддерживающие ECC (i7-660UE, i7-610E, i5-520E, i3-330E, Celeron P4505, Celeron U3405 )
11) существуют десктопные материнские платы с поддержкой ECC
(и стоить он будет дешевле серверного раза в два-три).
Но мысль на этом не останавливается.
12) ECC нужна для защиты от повреждения данных в памяти, повреждения могут возникнуть от ионизирующего-излучения и космических лучей.
Счетчик Гейгера - газоразрядный прибор, в котором ионизация газа излучением превращается в электрический ток между электродами.
Приблизительная норма в помещении - до 20 мкР/час
защита
от альфа-излучения — лист бумаги, резиновые перчатки, респиратор;
от бета-излучения — плексиглас, тонкий слой алюминия, стекло, противогаз;
от гамма-излучения — тяжёлые металлы (вольфрам, свинец, сталь, чугун и пр.). 10 сантиметров плотно слежавшегося грунта ослабляют гамма-излучение вполовину;
от нейтронов — вода, полиэтилен, другие полимеры
(например наполненные водородом борные нанотрубки), бериллий - металлический бериллий относительно мало реакционноспособен при комнатной температуре (стоит 500 долл./кг);
13) Я не осилил пересчет естественного радиационного фона через зиверты и размер планок памяти
в частоту возникновения ошибок, поэтому «сошлюсь на ученых LORа»:
4000 ошибок за год на планку
3751 ошибка на планку в год
планок 4-ре, в году 365 дней => 1 ошибка раз в три часа
14) не вся память используется под хранение данных, часть пустует
15) суммарный оверхед при аппаратной защите составляет 12% стоимости системы (потому что +1 микросхема для проверки на 8 микросхем для хранения)
16) значит можно сэкономить часть стоимости аппаратных средств, заменив аппаратную проверку целостности данных в памяти на программную проверку целостности объектов.
17) маловероятно, что ошибка возникнет именно в коде проверке ошибок (его объем мал по сравнению с размером всей памяти), кроме того, этот объем можно уменьшить до нескольких десятков байт, проверяя целостность кода проверки (что по сравнению с 32-мя гигабайтами на 9-10 порядков ниже ~= 1 ошибка раз в 60 тысяч лет).
18) Особенно это удобно сделать в управляемой среде типа mono или jvm.
19) Учитывая наличие моно под ARM (там уже всё есть: и тулчейн на C#, и ядро, и шелл, и прикладные программы), где не сильно распространена ECC-память, мне это кажется хорошей идеей