Ошибка кэша на материнской плате

Обновлено: 04.07.2024

Что такое кэш процессора? Для чего существуют кэши L1, L2 и L3? Вот что вам нужно знать и как они работают.

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

Когда дело доходит до процессоров, важны не только транзисторы и частоты, но и кеш.

Возможно, вы слышали о кэш-памяти, когда обсуждались ЦП (центральные процессоры). Однако мы не уделяем должного внимания этим номерам кэш-памяти ЦП, и они не являются основным акцентом в рекламе ЦП.

Итак, насколько важен кэш процессора и как он работает?

Что такое кэш-память процессора?

Проще говоря, кэш-память ЦП — это просто очень быстрый тип памяти. В первые дни вычислений скорость процессора и скорость памяти были низкими. Однако в 1980-е годы скорость процессоров начала быстро расти. В то время системная память (ОЗУ) не могла справиться с увеличением скорости ЦП или соответствовать ему, поэтому родился новый тип сверхбыстрой памяти: кэш-память ЦП.

Теперь в вашем компьютере установлено несколько типов памяти.

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

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

Наконец, ЦП имеет внутри себя еще более быстрые блоки памяти, известные как кэш-память ЦП.

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

Компьютерная память также бывает разных типов.

Кэш-память — это разновидность статической ОЗУ (SRAM), тогда как обычная системная ОЗУ называется динамической ОЗУ (DRAM). Статическая оперативная память может хранить данные без необходимости постоянного обновления, в отличие от DRAM, которая делает SRAM идеальной для кэш-памяти.

Как работает кэш процессора?

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

Данные сначала загружаются в ОЗУ, а затем отправляются в ЦП. В наши дни центральные процессоры способны выполнять гигантское количество инструкций в секунду. Чтобы в полной мере использовать свою мощность, ЦП требуется доступ к сверхбыстрой памяти, для чего и нужен кэш-память ЦП.

Контроллер памяти берет данные из ОЗУ и отправляет их в кэш ЦП. В зависимости от вашего ЦП контроллер находится на ЦП или набор микросхем северного моста на материнской плате.

Затем кэш памяти выполняет обмен данными внутри ЦП. Иерархия памяти существует и в кэше ЦП.

Уровни кэш-памяти ЦП: L1, L2 и L3

Кэш-память ЦП разделена на три «уровня»: L1, L2 и L3. Иерархия памяти снова соответствует скорости и, следовательно, размеру кеша.

Итак, влияет ли размер кеша ЦП на производительность?

Кэш L1

Кэш L1 (уровень 1) — это самая быстрая память, которая присутствует в компьютерной системе. С точки зрения приоритета доступа, кэш L1 содержит данные, которые, скорее всего, потребуются ЦП при выполнении определенной задачи.

Размер кэша L1 зависит от процессора. Некоторые топовые потребительские процессоры теперь имеют кэш-память L1 объемом 1 МБ, например Intel i9-9980XE, но они стоят огромных денег, и их по-прежнему мало. Некоторые серверные наборы микросхем, такие как линейка Intel Xeon, также имеют кэш-память L1 объемом 1–2 МБ.

Не существует «стандартного» размера кэш-памяти L1, поэтому перед покупкой необходимо проверить характеристики ЦП, чтобы определить точный размер кэш-памяти L1.

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

Кэш второго уровня

Кэш L2 (уровень 2) медленнее, чем кэш L1, но больше по размеру. В то время как кэш L1 может измеряться в килобайтах, современные кэши памяти L2 измеряются в мегабайтах. Например, высоко оцененный процессор AMD Ryzen 5 5600X имеет кэш-память L1 объемом 384 КБ и кэш-память L2 объемом 3 МБ (плюс кэш-память L3 объемом 32 МБ).

Размер кэша L2 зависит от процессора, но обычно его размер составляет от 256 КБ до 8 МБ. Большинство современных процессоров имеют кэш-память L2 объемом более 256 КБ, и этот размер сейчас считается небольшим.Кроме того, некоторые из самых мощных современных процессоров имеют больший объем кэш-памяти второго уровня, превышающий 8 МБ.

Что касается скорости, то кэш L2 отстает от кэша L1, но все же намного быстрее, чем оперативная память вашей системы. Кэш-память L1 обычно в 100 раз быстрее вашей оперативной памяти, а кэш-память L2 — примерно в 25 раз.

Кэш L3

В кэш L3 (уровень 3). В первые дни кэш памяти L3 действительно находился на материнской плате. Это было очень давно, когда большинство процессоров были одноядерными. Теперь кэш-память L3 в вашем ЦП может быть огромной, а топовые потребительские ЦП имеют кэш-память L3 до 32 МБ. Кэш L3 ЦП некоторых серверов может превышать это значение, достигая 64 МБ.

Кэш L3 — это самый большой, но и самый медленный модуль кэш-памяти. Современные ЦП включают кэш L3 на самом ЦП. Но в то время как кэш L1 и L2 существуют для каждого ядра на самом чипе, кэш L3 больше похож на общий пул памяти, который может использовать весь чип.

На следующем изображении показаны уровни кэш-памяти ЦП для ЦП Intel Core i5-3570K:

Обратите внимание, что кэш L1 разделен на две части, а кэш L2 и L3 соответственно больше.

Сколько мне нужно кэш-памяти ЦП?

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

Как данные перемещаются между кэшами памяти ЦП?

Большой вопрос: как работает кэш-память процессора?

В самых общих чертах данные передаются из ОЗУ в кэш L3, затем в L2 и, наконец, в L1. Когда процессор ищет данные для выполнения операции, он сначала пытается найти их в кэше L1. Если ЦП находит его, это называется попаданием в кэш. Затем он находит его в L2, а затем в L3.

Если ЦП не находит данные ни в одном из кэшей памяти, он пытается получить к ним доступ из системной памяти (ОЗУ). Когда это происходит, это называется промахом кеша.

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

Кэш-память L1 имеет самую низкую задержку, будучи самой быстрой и ближайшей к ядру, а L3 — самой высокой. Задержка кэша памяти увеличивается при промахе кэша, поскольку ЦП должен извлечь данные из системной памяти.

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

Будущее кэш-памяти ЦП

Конструкция кэш-памяти постоянно развивается, особенно по мере того, как память становится дешевле, быстрее и плотнее. Например, одной из самых последних инноваций AMD является память Smart Access Memory и кэш-память Infinity, которые повышают производительность компьютера.

Программа проверки ошибок кэша материнской платы [386]

Действия по теме

Первое сообщение от GigAHerZ

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

Что касается первой темы, у меня небольшая проблема с моим ПК 386.

Это Am386DX40 на материнской плате PC CHIPS.
В него было впаяно 128 КБ кеша L2. (вместо перемычек были еще и провода припаяны) При этом в нем были отверстия и все для еще одного банка микросхем кэша и отдельного чипа кэша обратной записи.
Конечно, я выпаял микросхемы и припаял обратно разъемы, добавил керамические конденсаторы, заменил провода перемычками и т. д.

Хотя в основном все хорошо и хорошо, есть одна интересная проблема. (И эта проблема присутствовала до того, как я атаковал MB своим паяльником)
Несколько нестабилен при включенном кэше L2. При загрузке emm386 тоже есть интересный артефакт с norton commander: когда команда запускается в командной строке, а потом norton commander возвращается обратно, то остаются 2 вертикальных ряда символов, которые не заполнены именами файлов, а пусты не обновлены и содержат буквы из фоновой распечатки командной строки.

Я испробовал множество различных инструментов, чтобы попытаться надежно диагностировать проблему, но, похоже, ни один из них не устраняет сбой. Я перепаивал сокеты, переустанавливал и заменял чипы, может быть, уже десятки раз, но все равно не повезло. Самое близкое, что у меня есть, это то, что, может быть, 1/20 раза, когда я запускаю тест doom2, начиная с одной точки, он как бы пропускает правильные шаги и начинает стрелять в слегка неправильном направлении.Но 1/20 шанса получить такой результат недостаточно для диагностического инструмента.

Итак, я иду к вам. Знаете ли вы какие-нибудь инструменты для тестирования кэша L2? Еще лучше, если бы он распечатывал ошибочные адреса, чтобы я мог найти правильный чип и следы от него на плате.

Большое спасибо всему сообществу. Вы даже не представляете, сколько информации я уже прочитал отсюда и использовал для своего развлечения с ретро-компьютерами. Спасибо!

"640 КБ должно быть достаточно для всех." - И я намерен выжать из него все до последней капли даже после загрузки всех проклятых драйверов!

Ответ 1 из 26 от GigAHerZ

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

Быстрое дополнение к моей проблеме: знаменитый набор тестов Phil's Computer Lab dos - цвет текста в меню становится оранжевым. Файл bat не отправляет команду оранжевого цвета текста.
Происходят разные странные вещи. и в конечном итоге компьютер зависнет.

"640 КБ должно быть достаточно для всех." - И я намерен выжать из него все до последней капли даже после загрузки всех проклятых драйверов!

Ответ 2 из 26 от fitzpatr

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

Диск DX-40 работает с шиной 40 МГц, что может оказаться слишком большим для вашего кэша/ОЗУ. Можем ли мы увидеть фотографии вашей платы, кэш-чипов и оперативной памяти? Я согласен, что это звучит как проблема с памятью, но то, что это происходит, когда кеш включен, не обязательно означает, что проблема заключается в кеше. Я также вижу, что это проблема с чипсетом или процессором.

Вы пробовали настраивать перемычки/параметры BIOS, управляющие состояниями ожидания?

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

MT-32 Old, CM-32L, CM-500, SC-55mkII, SC-88Pro, SC-D70, FB-01, MU2000EX
K6-III+/450/GA-5AX/G400 Max/ Voodoo2 SLI/CT1750/MPU-401AT/Audigy 2ZS
486 сборка

Ответ 3 из 26 от GigAHerZ

Фицпатр, спасибо за ответ.

Я поэкспериментировал с состояниями ожидания в биосе, и это не дало результата. (И для ОЗУ, и для кеша) Если внешний кеш включен, проблемы присутствуют.

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

"640 КБ должно быть достаточно для всех." - И я намерен выжать из него все до последней капли даже после загрузки всех проклятых драйверов!

Ответ 4 из 26, автор AlaricD

Попробуйте другую видеокарту или переустановите карту/попробуйте другие слоты.

Ответ 5 из 26 от fitzpatr

Рады помочь!

-15 должно быть хорошо.

Обновляли ли вы микросхему TAG RAM при обновлении до 256 КБ?

Вы заменили все исходные микросхемы кеша при внесении изменений или повторно использовали исходные микросхемы и дополнили их?

MT-32 Old, CM-32L, CM-500, SC-55mkII, SC-88Pro, SC-D70, FB-01, MU2000EX
K6-III+/450/GA-5AX/G400 Max/ Voodoo2 SLI/CT1750/MPU-401AT/Audigy 2ZS
486 сборка

Ответ 6 из 26 от GigAHerZ

Я заменил все микросхемы кэша, включая микросхему TAG.

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

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

"640 КБ должно быть достаточно для всех." - И я намерен выжать из него все до последней капли даже после загрузки всех проклятых драйверов!

Ответ 7 из 26, автор AlaricD

Вы говорите: "Это немного нестабильно", но описываете только графические сбои. Если компьютер не перезагружается/не зависает, скорее всего, проблема в видеокарте. Плохая оперативная память или кеш-память чаще всего означают проблемы со стабильностью, а не с отображением.

Ответ 8 из 26 от GigAHerZ

AlaricD, в конечном итоге он также блокируется случайным образом. В основном сценарий такой:
Я использую norton commander. Собираюсь выполнить какую-то программу (допустим mTCP telnet) и все работает. Поиграйтесь, скажем, 30 минут с telnet, а затем я выйду из программы и вернусь в norton commander.
Теперь иногда TAB больше не меняет сфокусированную сторону в norton commander, и что бы я ни делал, через ~10 секунд весь компьютер зависает со звуковым сигналом при каждом нажатии клавиши.

Тем не менее, возможно, проблема с графикой. В ближайшее время попробую другие видеокарты. (у меня валяется несколько)

"640 КБ должно быть достаточно для всех." - И я намерен выжать из него все до последней капли даже после загрузки всех проклятых драйверов!

Ответ 9 из 26 от Мугла!

У вас не слишком высокая скорость шины ISA для видеокарты, не так ли? Для 40 МГц у вас есть кристалл 80 МГц. Таким образом, CLK2/5 = 16 МГц, clk2/6 = 13,33 МГц, clk2/8 = 10 МГц и т. д.Мой самый быстрый графический адаптер ISA не любит 16 МГц и выдает графические ошибки.

Ответ 10 из 26 от GigAHerZ

Итак, я попытался протестировать разные вещи. К сожалению, не дает больше информации.

Я попробовал 2 дополнительные видеокарты, и они ведут себя точно так же. (Trident 8900 и 9000)
В BIOS нет параметров для установки тактовой частоты ISA. Что касается состояний ожидания, я также пробовал максимальные настройки состояния ожидания, но проблема остается.
Я также безуспешно пробовал несколько наборов 30-контактных модулей RAM.

Что-нибудь, что я мог бы сделать, чтобы диагностировать это дальше?

"640 КБ должно быть достаточно для всех." - И я намерен выжать из него все до последней капли даже после загрузки всех проклятых драйверов!

Ответ 11 из 26 от Eep386

Обычно неисправный кеш вызывает довольно предсказуемые шаблоны ошибок на больших пространствах ОЗУ в Memtest86. Вы можете сказать, что это «вероятно» не из-за ОЗУ, так как это аналогичная картина ошибок на очень больших пространствах.

Вы пытались вернуть исходный кэш размером 128 КБ?

Жизни недостаточно, чтобы снова включить все скрытые параметры в каждом BIOS на каждой плате. 🙁

Ответ 12 из 26 от GigAHerZ

memtest86 чист. Я подозреваю, что каким-то образом обхожу кеш, чтобы получить действительные результаты для самой оперативной памяти, что само по себе нормально.

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

Еще один интересный симптом: при использовании диспетчера памяти EMM386 у norton Commander возникает проблема с «необновленными символами» только при загрузке ускорителя текстового режима Zeno. Другие проблемы все еще сохраняются, но этот конкретный симптом проявляется при загрузке Zeno. К счастью, он дает быструю индикацию, работает ли все или нет - просто нужно загрузиться и загрузить NC, чтобы понять, есть ли у меня проблема.

"640 КБ должно быть достаточно для всех." - И я намерен выжать из него все до последней капли даже после загрузки всех проклятых драйверов!

Ответ 13 из 26 от GigAHerZ

Итак, я попробовал:
кэш 128 КБ с кешем обратной записи (требуется другой чип тегов кеша): проблема сохраняется
кэш 128 КБ без кэша обратной записи (чип другого тега): проблема сохраняется
256 КБ кэш без кэша обратной записи: проблема не устранена
Кэш 256 КБ с кэшем обратной записи: проблема не устранена

В настоящее время у меня нет идей. Есть мысли?

"640 КБ должно быть достаточно для всех." - И я намерен выжать из него все до последней капли даже после загрузки всех проклятых драйверов!

Ответ 14 из 26 от Tiido

Возможно, проблема механическая (неисправность или что-то в этом роде). У меня есть одна плата Pentium, которая не работает при включенном кеше, и на ней я почти полностью заменил все чипы, и проблема все еще проявляется, в то время как на плате-доноре чипы оригинальной платы работают отлично. Однажды я попытаюсь найти разрыв. достаточно одного сигнала.

Ответ 15 из 26 от GigAHerZ

Есть ли какие-нибудь инструменты, которые могут диагностировать нерабочие линии адреса/шины данных в кеше? Было бы очень полезно, если бы была прерывистая линия.

"640 КБ должно быть достаточно для всех." - И я намерен выжать из него все до последней капли даже после загрузки всех проклятых драйверов!

Ответ 16 из 26 от Eep386

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

Правка: пробовали ли вы кэш 64 КБ? Также пробовали ли вы запускать Memtest86 со всеми этими комбинациями кеша и смотреть, выдает ли он тот же шаблон ошибки? Если он дает ту же картину, то это либо плохой переходный канал/линия, либо (увы!) неисправный чипсет/ASIC.

Жизни недостаточно, чтобы снова включить все скрытые параметры в каждом BIOS на каждой плате. 🙁

Ответ 17 из 26 от GigAHerZ

Eep386, 64k не пробовал, так как у меня нет под рукой чипов 8Kx8, а он не может работать на чипах 32Kx8 с конфигурацией 64K. (Та же история для конфигурации 32K)

Я пробовал memtest86, и он чист. (Я позволил ему работать в течение дня, пока я был на работе, и он сделал 2 полных прохода, IIRC)

"640 КБ должно быть достаточно для всех." - И я намерен выжать из него все до последней капли даже после загрузки всех проклятых драйверов!

Ответ 18 из 26 от GigAHerZ

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

Недавно я получил еще одну 386 (материнская плата) с процессором 486DLC. С новым компьютером симптомы точно такие же с аналогичной конфигурацией. (autoexec.bat и config.sys) Я также переключил материнскую плату/процессор наоборот, и проблема все еще сохраняется.

Удаляя различные драйверы, я обнаружил, что проблема возникает из-за драйвера ZENO, ускоряющего текстовый режим в DOS. (Необновленные текстовые блоки в norton Commander) Тем не менее, у меня все еще есть случайные проблемы - некоторые клавиши клавиатуры перепутались (TAB не переключает активную сторону norton Commanders или действительно мгновенно переключается обратно; со временем компьютер в конечном итоге зависает, и т. д.)

Итак, проблема существует как с EMM386 (от win98), так и с JEMMex. Я попытался удалить все диапазоны памяти, включенные вручную, из emm386/jemmex, но проблема осталась.

Не могу поверить, что у двух компьютеров точно такая же проблема. Поэтому я ищу вашей помощи. 😀 Может вы видите проблему в моем конфиге?

Мои файлы autoexec.bat и config.sys выглядят следующим образом:

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

"640 КБ должно быть достаточно для всех." - И я намерен выжать из него все до последней капли даже после загрузки всех проклятых драйверов!


Обратите внимание, что не все ошибки, о которых сообщает MemTest86, связаны с плохой памятью. Тест неявно проверяет ЦП, кэши L1 и L2, а также материнскую плату. Тест не может определить, что вызывает сбой. Однако большинство сбоев будет связано с проблемой модуля памяти. Если это не так, единственным вариантом является замена деталей до тех пор, пока неисправность не будет устранена.

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

Часто память работает в другой системе или производитель утверждает, что она исправна. В этих случаях память не обязательно плохая, но не может надежно работать на полной скорости. Иногда эти ошибки исправляют более консервативные тайминги памяти на материнской плате. В других случаях единственным вариантом является замена памяти на более качественную и высокоскоростную память. Не покупайте дешевую память и не ждите, что она будет надежно работать. Иногда ошибки теста «перемещения блока» возникают даже при использовании памяти известной марки и качественной материнской платы. Эти ошибки допустимы и должны быть исправлены.

Все допустимые ошибки памяти должны быть исправлены. Вполне возможно, что конкретная ошибка никогда не появится при нормальной работе. Однако работа с предельным объемом памяти сопряжена с риском и может привести к потере данных и даже повреждению диска. Даже если нет явных признаков проблем, вы не можете считать, что ваша система не затронута. Иногда периодически возникающие ошибки могут вызывать проблемы, которые не проявляются в течение длительного времени. Вы можете быть уверены, что Мерфи доберется до вас, если вы узнаете об ошибке памяти и проигнорируете ее.

Нас часто спрашивают о достоверности ошибок, о которых сообщает MemTest86. В подавляющем большинстве случаев ошибки, сообщаемые тестом, действительны. Есть некоторые системы, из-за которых MemTest86 путается с размером памяти и пытается протестировать несуществующую память. Это приведет к тому, что большое количество последовательных адресов будет считаться неверным, и, как правило, будет много ошибочных битов. Если у вас есть относительно небольшое количество ошибочных адресов и только один или два бита с ошибкой, вы можете быть уверены, что ошибки действительны. Также без исключения допустимы периодические ошибки. Часто поставщики памяти задаются вопросом, поддерживает ли MemTest86 их конкретный тип памяти или набор микросхем. MemTest86 предназначен для работы со всеми типами памяти и всеми наборами микросхем.

MemTest86 не может диагностировать многие типы сбоев ПК. Например, неисправный ЦП, который вызывает сбой Windows, скорее всего, вызовет точно такой же сбой MemTest86.

Почему я получаю ошибки только во время теста 13 Hammer Test?

Тест Hammer предназначен для обнаружения модулей ОЗУ, подверженных ошибкам помех, вызванным утечкой заряда. Это явление описано в исследовательской статье Yoongu Kim et al. «Переворачивание битов в памяти без доступа к ним: экспериментальное исследование ошибок DRAM Disturbance Errors». Согласно исследованиям, этому дефекту подвержено значительное количество модулей оперативной памяти, выпущенных в 2010 году или новее. Проще говоря, уязвимые модули ОЗУ могут подвергаться ошибкам нарушения при многократном доступе к адресам в одном и том же банке памяти, но к разным строкам в течение короткого периода времени. Ошибки возникают, когда повторный доступ вызывает потерю заряда в ячейке памяти до того, как содержимое ячейки может быть обновлено при следующем интервале обновления DRAM.

Начиная с MemTest86 v6.2, пользователь может увидеть предупреждение, указывающее, что ОЗУ может быть уязвимо для высокочастотных переворотов бит молотка.Это предупреждение появляется, когда ошибки обнаружены во время первого прохода (максимальная скорость молотка), но ошибки не обнаружены во время второго прохода (более низкая скорость молотка). См. Алгоритмы тестирования MemTest86 для описания двух проходов, выполняемых во время теста Hammer (тест 13). При выполнении второго прохода адресные пары забиваются только с той скоростью, которая считается максимально допустимой производителями памяти (200К обращений за 64мс). После превышения этой скорости целостность содержимого памяти больше не может быть гарантирована. Если ошибки обнаружены в обоих проходах, об ошибках сообщается как обычно.

Ошибки, обнаруженные во время теста 13, хотя и обнаруживаются только в экстремальных случаях доступа к памяти, скорее всего, являются реальными ошибками. При типичном использовании домашнего ПК (например, при просмотре веб-страниц, обработке текстов и т. д.) маловероятно, что модель использования памяти попадет в экстремальный случай, который сделает ее уязвимой для ошибок, вызывающих помехи. Это может вызвать большую озабоченность, если вы используете высокочувствительное оборудование, такое как медицинское оборудование, системы управления самолетами или серверы банковских баз данных. Невозможно с какой-либо точностью предсказать, будут ли эти ошибки возникать в реальных приложениях. Потребуется провести крупное научное исследование 1000 компьютеров и моделей их использования, а затем провести криминалистический анализ каждого приложения, чтобы изучить, как оно использует оперативную память во время выполнения. На сегодняшний день мы видели только 1-битные ошибки в результате запуска теста Hammer.

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

  • Ничего не делать
  • Замените модули оперативной памяти
  • Используйте модули оперативной памяти с функциями проверки ошибок (например, ECC)

В зависимости от вашей готовности жить с возможностью того, что эти ошибки проявятся как реальные проблемы, вы можете ничего не делать и пойти на риск. Для домашнего использования вы можете быть готовы жить с ошибками. По нашему опыту, у нас есть несколько компьютеров, которые стабильно работают дома или в офисе, несмотря на ошибки в тесте Hammer.

Вы также можете заменить оперативную память модулями, прошедшими тест Hammer. Выбирайте модули ОЗУ другой марки/модели, так как вполне вероятно, что модули ОЗУ той же модели все равно не пройдут тест Hammer.

Для чувствительного оборудования, требующего высокой доступности/надежности, вы без вопросов замените ОЗУ и, вероятно, переключитесь на ОЗУ с исправлением ошибок, такое как ОЗУ ECC. Даже 1-битная ошибка может привести к катастрофическим последствиям, скажем, для остатка на банковском счете. Обратите внимание, что не все материнские платы поддерживают память ECC, поэтому перед покупкой памяти ECC ознакомьтесь со спецификациями материнской платы.

Обнаружение и устранение ошибок молотка строк

Способность MemTest86 обнаруживать и сообщать об ошибках молотка строк зависит от нескольких факторов и от того, какие меры по их устранению используются. Чтобы генерировать ошибки, необходимо многократно обращаться к соседним строкам памяти. Но аппаратные функции, такие как несколько каналов, чередование, скремблирование, хеширование каналов, схемы NUMA и XOR, делают почти невозможным (для произвольного модуля ЦП и ОЗУ) узнать, какие адреса памяти соответствуют каким строкам в ОЗУ. Также могут быть предусмотрены различные меры по смягчению последствий. Различные микропрограммы BIOS могут устанавливать разные значения интервала обновления (tREFI). Чем короче интервал, тем более устойчивой к ошибкам будет оперативная память. Но более короткие интервалы приводят к более высокому энергопотреблению и увеличению накладных расходов на обработку. Некоторые ЦП также поддерживают обновление псевдоцелевой строки (pTRR), которое можно использовать в сочетании с ОЗУ, совместимым с pTRR. Это поле позволяет RAM-накопителю указать уровень MAC (Maximum Active Count), который может поддерживать RAM. Типичным значением может быть 200 000 активаций строки. Некоторые процессоры также поддерживают алгоритм Targeted Row Refresh (TRR) Объединенного технического совета по электронному дизайну (JEDEC). TRR представляет собой улучшенную версию ранее реализованного алгоритма pTRR и не вызывает снижения производительности или дополнительного энергопотребления. В результате проверка строк, реализованная в MemTest86, возможно, не является наихудшим возможным случаем, а уязвимости в базовой оперативной памяти могут быть необнаружимы из-за мер по смягчению последствий в BIOS и ЦП.

Почему я получаю ошибки только при совместном тестировании модулей оперативной памяти, а не при тестировании по отдельности?

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

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

MemTest86 сообщил адрес памяти сбоя. Что это значит?

Когда MemTest86 обнаруживает ошибки во время тестов памяти, пользователю сообщается адрес памяти, фактические и ожидаемые данные. Адрес памяти — это место в системной памяти, где содержащиеся данные не соответствуют ожидаемым. Это адрес, который ЦП указывает контроллеру памяти при запросе данных из DRAM. Затем контроллер памяти декодирует этот адрес памяти, чтобы идентифицировать конкретный канал, DIMM, ранг, микросхему DRAM, банк, строку и столбец в DRAM, используя схему декодирования адреса, характерную для набора микросхем.

Схема декодирования адреса — это процесс, используемый контроллером памяти для генерации соответствующих адресных сигналов для микросхемы DRAM. В зависимости от контроллера памяти этот процесс может стать довольно сложным, поскольку это не просто прямое сопоставление битов системного адреса с битами адреса DRAM. Для увеличения производительности памяти используются такие стратегии, как чередование каналов (для двухканальных, трехканальных и четырехканальных установок), чередование рангов/банков/строк и переключение адресов для увеличения параллелизма доступа к памяти. Для некоторых наборов микросхем, таких как AMD, схема декодирования адреса может быть настроена/определена через регистры PCI, как описано в спецификациях набора микросхем. Однако для других наборов микросхем (например, Intel) схема декодирования адресов является частной и недоступной для общественности. Это значительно усложняет идентификацию адреса DRAM и, соответственно, неисправного модуля. По этой причине MemTest86 не имеет возможности сообщать об адресах DRAM и, следовательно, о неисправных модулях DIMM и ошибках памяти.

Как MemTest86 сообщает об ошибках ECC?

Обратитесь к технической информации ECC для получения отчетов ECC в MemTest86 и других технических деталей ECC.

Если я знаю схему декодирования адреса, могу ли я настроить MemTest86, чтобы сообщать о неисправном модуле?

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

Для каждого из этих 3 параметров можно использовать список битовых позиций, чтобы указать, какие биты адреса памяти использовать исключающее ИЛИ (исключающее ИЛИ), чтобы определить соответствующий [канал памяти|слот|выбор микросхемы (CS )] (0 или 1) неисправного модуля. Это полезно только в том случае, если вы знаете, что контроллер памяти сопоставляет конкретный адрес с [каналом памяти|слотом|выбором микросхемы (CS)], используя эту схему декодирования на основе XOR. Если эти параметры указаны, а MemTest86 обнаруживает ошибку памяти, [канал памяти|слот|выбор микросхемы (CS)] будет рассчитан и отображен вместе с неисправным адресом.

Как узнать, какой модуль оперативной памяти неисправен?

После обнаружения ошибки памяти определение неисправного модуля SIMM/DIMM не является однозначной процедурой. Различные процессоры по-разному сопоставляют адреса памяти с физическими планками памяти. Такие функции, как двухканальное ОЗУ (с чередованием), хеширование каналов и NUMA, очень усложняют сопоставление адресов с модулями, банками и строками. При большом количестве поставщиков процессоров и материнских плат и возможных комбинаций слотов памяти было бы трудно, если вообще возможно, собрать полную информацию о том, как конкретная ошибка будет связана с неисправным модулем памяти. Однако есть шаги, которые могут быть предприняты для определения неисправного модуля. Вот некоторые методы, которые вы можете использовать:

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

Если ни один из модулей не может быть удален, вы можете повернуть модули, чтобы найти неисправный. Этот прием можно использовать только при наличии в системе трех и более модулей. Меняйте расположение двух модулей одновременно. Например, поместите модуль из слота 1 в слот 2 и поместите модуль из слота 2 в слот 1. Запустите тест, и если бит или адрес сбоя изменятся, вы будете знать, что модуль с ошибкой является одним из только что перемещенных. Используя несколько комбинаций перемещения модуля, вы сможете определить, какой модуль неисправен.

Если вы не можете использовать ни один из предыдущих методов, вам остается выборочно заменить модули, чтобы найти неисправность.

Как исправить ошибки памяти?

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

  • Замените модули оперативной памяти (наиболее распространенное решение)
  • Установите тайминги RAM по умолчанию или консервативные
  • Увеличьте уровень напряжения ОЗУ.
  • Уменьшите уровень напряжения процессора.
  • Примените обновление BIOS, чтобы устранить проблемы несовместимости
  • Отметить диапазоны адресов как "недопустимые"

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

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

Для некоторых конфигураций (особенно при использовании агрессивных таймингов ОЗУ) может потребоваться более высокое напряжение, чтобы ОЗУ работало в стабильных условиях. Если вы используете нестандартные тайминги ОЗУ, небольшое увеличение напряжения (например, с 1,5 В до 1,55 В) может повысить стабильность. Увеличивайте напряжение на свой страх и риск, так как чрезмерное напряжение может повредить компоненты вашей системы

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

В некоторых случаях проблемы с несовместимостью ОЗУ можно устранить с помощью обновления BIOS. Обратитесь к поставщику материнской платы за обновлениями BIOS с исправлениями совместимости с оперативной памятью.

Некоторые операционные системы позволяют пользователю передать список «плохих» диапазонов памяти, чтобы предотвратить использование или выделение памяти операционной системой в этом диапазоне. Дополнительные сведения см. в разделе Добавление страниц RAM в черный список.

Что такое Кэш-память в моем компьютере?

Слово "кэш" могло появляться в ваших разговорах о компьютерах, производительности и, в частности, о памяти. Но что это на самом деле означает и почему это важно?

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

Определение кэша компьютера

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

Кэш и оперативная память

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

Если кеш такой быстрый, почему не все данные хранятся там? Хранилище кеша ограничено и очень дорого для его места, поэтому имеет смысл хранить только наиболее часто используемые данные, а все остальное оставить в ОЗУ.

Другое использование термина «кеш»

Как кеш-память влияет на производительность

Как кэш ускоряет ваши вычисления? Мы уже знаем, что он может получать доступ к часто используемым данным с максимальной эффективностью. Однако решить, какие данные он хранит в кеше, само по себе почти искусство.

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

Попадания и промахи

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

Что делать, если мой кеш заполнен?

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

Объяснение уровней кэша

Кэш-памяти тоже не одно большое ведро. Компьютер может назначать данные одному из двух уровней.

Кэш 1-го уровня

Уровень 1 (L1) — это кэш, встроенный в ваш ЦП. Он оценивает данные, к которым только что обращался ваш ЦП, и определяет, что, вероятно, вы скоро снова получите к ним доступ. Итак, она попадает в кеш L1, потому что это первое место, которое ваш компьютер проверит в следующий раз, когда вам понадобится эта информация. Это самый быстрый уровень кэширования.

Кэш второго уровня

Уровень 2 (L2) также называется «вторичным кешем». Это то, куда ваш компьютер отправляется, когда не может найти ваши данные (или получает «промах») после поиска в кеше L1. Уровень 2 обычно находится на карте памяти в непосредственной близости от процессора.

Кэш диска

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

Кэш графического процессора

Получение необходимых данных для рендеринга графики должно происходить очень быстро, поэтому имеет смысл использовать только систему кэширования. Если графика вашего компьютера интегрирована, она будет обрабатываться графическим процессором (GPU), который объединен с CPU в одном чипе. Обе функции работают с одними и теми же ресурсами, поэтому кэш GPU тоже ограничен.

Отдельная выделенная графическая карта (также называемая дискретной видеокартой) будет отделена от ЦП и будет иметь собственный кэш-память. Самые быстрые игровые компьютеры будут иметь выделенную графическую карту с достаточным объемом кэш-памяти, встроенной непосредственно в графический процессор, чтобы избежать задержек или зависаний в интенсивных играх.

Как покупать с учетом кеша

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

Да, это правда, что больший кеш содержит больше данных. Но это также медленнее, поэтому есть компромисс в производительности. Кроме того, компьютеры созданы для распределения данных по приоритетам в разных кэшах. Вот почему у них есть уровни кеша. Если в кеше L1 недостаточно места, он может сохранить его в кеше L2. В результате размер кеша не должен быть главным соображением при покупке.

Задержка

Чтобы получить доступ к данным, думайте о задержке как о "скорости". Сколько времени требуется вашему компьютеру, чтобы добраться до этого кеша памяти L2? Если это меньший кеш, это будет быстрее. Кэш L2 объемом 6 МБ будет иметь повышенную задержку по сравнению с кешем 3 МБ. Компьютеры более высокого класса используют мультисистемный подход, который размещает данные в дополнительных кэшах меньшего размера. Это решает проблему хранения большего количества информации с меньшей общей задержкой.

Заключение

Учитывая все характеристики, которые необходимо учитывать при покупке компьютера, ваше решение о покупке, вероятно, будет зависеть не только от кэш-памяти. Вместо этого вы будете покупать ЦП или ГП, так как именно там происходят процессы кэширования.

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

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

Статьи по теме:

Об авторе

Линси Кнерл (Linsey Knerl) является автором статей для HP® Tech Takes. Линси — писатель со Среднего Запада, оратор и член ASJA. Она стремится помогать потребителям и владельцам малого бизнеса использовать свои ресурсы с помощью новейших технических решений.

Связанные теги

Популярные статьи

Также посетите

Архивы статей

Нужна помощь?

Рекомендованная производителем розничная цена HP может быть снижена. Рекомендованная производителем розничная цена HP указана либо как отдельная цена, либо как зачеркнутая цена, а также указана цена со скидкой или рекламная цена. На скидки или рекламные цены указывает наличие дополнительной более высокой рекомендованной розничной цены зачеркнутой цены.

Ultrabook, Celeron, Celeron Inside, Core Inside, Intel, логотип Intel, Intel Atom, Intel Atom Inside, Intel Core, Intel Inside, логотип Intel Inside, Intel vPro, Itanium, Itanium Inside, Pentium, Pentium Inside, vPro Inside , Xeon, Xeon Phi, Xeon Inside и Intel Optane являются товарными знаками корпорации Intel или ее дочерних компаний в США и/или других странах.

Домашняя гарантия доступна только для некоторых настраиваемых настольных ПК HP. Необходимость обслуживания на дому определяется представителем службы поддержки HP. Заказчику может потребоваться запустить программы самопроверки системы или исправить выявленные неисправности, следуя советам, полученным по телефону. Услуги на месте предоставляются только в том случае, если проблема не может быть устранена удаленно. Услуга недоступна в праздничные и выходные дни.

HP передаст ваше имя и адрес, IP-адрес, заказанные продукты и связанные с ними расходы, а также другую личную информацию, связанную с обработкой вашего заявления, в Bill Me Later®. Bill Me Later будет использовать эти данные в соответствии со своей политикой конфиденциальности.

Подходящие продукты/покупки HP Rewards определяются как продукты из следующих категорий: принтеры, ПК для бизнеса (марки Elite, Pro и Workstation), выберите аксессуары для бизнеса и выберите чернила, тонер и бумага.

Makaroni Ask: Ошибка кэш-памяти на материнской плате
Я получаю 11 сигналов в биосе AMI (ошибка кэш-памяти из-за звуковых кодов).

Кто-нибудь может помочь мне решить эту проблему? Я попытался сбросить батарею RAM и CMOS, но компьютер не запускается.

Сообщения без ответов

[Решено] sload. со структурой — загрузка байтов

  • исследование beatstorelax
  • 2 минуты назад
  • Ответов: 0

beatstorelaxstudy спрашивает: sload. со структурой - загрузка байтов
Я пытаюсь загрузить различные байты из структуры в сборке. Я нашел хорошее объяснение здесь для uint. Пока это работает для uint и всего слота памяти, я не могу понять, как получить переменную bytes1 или bytes12 из структуры.

[Решено] Тестирование функции прочности в зависимости от block.timestamp

  • махима
  • 2 минуты назад
  • Ответов: 0

mahima Asks: Тестирование функции Solidity, зависящей от block.timestamp
Я пишу смарт-контракт для размещения токенов в Solidity. Вот пример фрагмента кода:

Функция проверяет разницу во времени в 1 месяц как условие вывода средств и возвращается. Как смоделировать это с помощью Truffle и web3js?

Мне нужно пройти тест ниже:

[Решено] Как получить баланс контракта с помощью библиотеки Ether.js

  • Аланкрит010
  • 2 минуты назад
  • Ответов: 0

Alankrit010 Спрашивает: Как получить баланс контракта с помощью библиотеки Ether.js
Когда я использую (await provider.getBalance(contractAddress)).toNumber(), я получаю баланс ноль. До этого я отправил 1 эфир на смарт-контракт. Что я делаю не так?

[Решено] Вызов функций обновления из контрактов основной сети в тестах каски

  • неовенсун
  • 2 минуты назад
  • Ответов: 0

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

Что я пытаюсь сделать


    В тестовом коде я пытаюсь добавить ликвидности внешнему контракту (PancakeSwap).

Возвращаемое значение console.log(разрешить)

Мои вопросы

В чем причина этого эффекта и есть ли способ решить эту проблему?

Заранее большое спасибо, ребята!

[Решено] Невозможно проверить XML на соответствие схеме XSD (множественный импорт)

  • Стефано Мунарини
  • 12 минут назад
  • Ответов: 0

Стефано Мунарини спрашивает: Невозможно проверить XML на соответствие схеме XSD (множественный импорт)
Я работаю над проектом Python, в котором у нас есть функция, генерирующая схему XML на основе данных, собранных из разных источников. источники. Основная цель состоит не в том, чтобы проверить выходные данные этой функции с помощью авторитетной схемы (а именно, xml2rfc/v3.rnc в main · ietf-tools/xml2rfc).

Официальная авторитетная схема представлена ​​в формате Relax NG Compact (RNC). Поэтому я преобразовал эту схему в схему XSD с помощью официального конвертера trang.

Во время преобразования схемы отображается следующее предупреждающее сообщение:

Теперь я использовал онлайн-валидатор для проверки XSD, полученного с помощью trang, который подтверждает синтаксическую правильность XSD.

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

То же самое происходит, когда я пытаюсь разобрать схему XSD с помощью библиотеки Python lxml.

Кто-нибудь знает, как можно решить эти проблемы?

[Решено] Как я могу поместить навигационную панель с пробелом 100vh/delete при нажатии точки?

  • Тейкерссылка
  • 12 минут назад
  • Ответов: 0

Takerlink спрашивает: Как я могу поместить навигационную панель с пробелом 100vh/delete при клике на dotnav?
На самом деле я работаю над своим веб-сайтом. Сейчас я столкнулся с двумя проблемами.

Во-первых, я не знаю, почему, когда я нажимаю на меню гамбургеров, навигация не занимает 100% высоты экрана.

И второе, когда я нажимаю на одну точку справа. у меня есть пробел под нижним колонтитулом, который появляется.

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

Спасибо за помощь.

[Решено] как суммировать все заказы пользователей в typeorm

  • Хусейн
  • 12 минут назад
  • Ответов: 0

const query = getManager() .createQueryBuilder(Users, 'user') .addSelect("COUNT(user.orders)", "totalOrders") .groupBy("user.id");

этот код не работает

[Решено] CSS не применяется к выводимому тексту

  • привет
  • 12 минут назад
  • Ответов: 0

welp Спрашивает: CSS не применяется к выводимому тексту
Поэтому я пытаюсь дать выводимым данным с помощью javascript некоторый CSS. В настоящее время я набираю css внутри файла html/php в теге. Но код этого не понимает. Это работает только тогда, когда я добавляю css к тегам следующим образом

Например: я заметил, что код не применяет шрифт, который я установил в теле, к выводимому тексту. И я установил синий цвет фона тела просто для проверки, но он также не применялся к телу страницы.

Я понятия не имею, почему это происходит, потому что у меня мало опыта работы с JS.

Это мой код на данный момент:

сначала у меня есть php с небольшим количеством javascript, мне нужно сначала получить некоторые данные

А это мой html/css/js код для фронтенда:

[Решено] Флаттер || ускорить мой веб-просмотр во флаттере

  • Соукаина ДЕРУАШ
  • 12 минут назад
  • Ответов: 0

Соукаина ДЕРУАШ спрашивает: Флаттер || ускорьте мой веб-просмотр во флаттере
Я преобразовал свой сайт WordPress в мобильное приложение с помощью Flutter WebView. WebView загружает веб-страницу более 7 секунд. Та же страница занимает менее 3 секунд на веб-сайте на компьютере. Есть ли способ ускорить время загрузки в моем мобильном приложении? Или есть способ кэшировать мой WebView, чтобы он не загружался каждый раз? если да, пожалуйста, как я могу кэшировать свой веб-просмотр. Любая помощь приветствуется.

Читайте также: