УРОВЕНЬ ТЕХНИКИ
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0001] Это изобретение относится к области контроллеров запоминающего устройства.
ОПИСАНИЕ ПРЕДШЕСТВУЮЩЕГО УРОВНЯ ТЕХНИКИ
[0002] Цифровые системы обычно включают в себя запоминающую систему, образованную из полупроводниковых запоминающих устройств, например статического оперативного запоминающего устройства (SRAM), динамического оперативного запоминающего устройства (DRAM), синхронного DRAM (SDRAM), SDRAM с удвоенной скоростью передачи данных (DDR, DDR2, DDR3 и т.д.), включая маломощные версии SDRAM (LPDDR, LPDDR2 и т.д.) и т.д. Запоминающая система является энергозависимой, хранящей данные во включенном состоянии, но не в выключенном, однако также обеспечивает доступ с малой задержкой по сравнению с энергонезависимыми запоминающими устройствами, такими как флэш-память, магнитные запоминающие устройства, например накопители на дисках, или оптические запоминающие устройства, например компакт-диск (CD), универсальный цифровой диск (DVD) и накопители BluRay.
[0003] Запоминающие устройства, образующие запоминающую систему, имеют низкоуровневый интерфейс для считывания и записи в запоминающее устройство в соответствии с зависящими от запоминающего устройства протоколами. Источники, которые формируют операции в запоминающем устройстве, обычно взаимодействуют через интерфейс более высокого уровня, например шину, интерфейс двухточечной пакетный передачи и т.п. Источники могут быть процессорами, периферийными устройствами, например устройствами ввода/вывода (I/O), аудио- и видеоустройствами и т.п. Как правило, операции в запоминающем устройстве включают в себя операции считывания запоминающего устройства для передачи данных из запоминающего устройства в устройство и операции записи в запоминающее устройство для передачи данных из источника в запоминающее устройство. Операции считывания запоминающего устройства в этом документе могут короче называться операциями считывания или считываниями, и аналогичным образом операции записи в запоминающее устройство в этом документе могут короче называться операциями записи или записями.
[0004] Соответственно, обычно имеется контроллер запоминающего устройства для приема операций в запоминающем устройстве от интерфейса более высокого уровня и управления запоминающими устройствами для выполнения принятых операций. Контроллер запоминающего устройства обычно также включает в себя очереди для захвата операций в запоминающем устройстве и может включать в себя схемы для повышения быстродействия. Например, некоторые контроллеры запоминающего устройства планируют операции считывания запоминающего устройства перед более ранними операциями записи в запоминающее устройство, которые затрагивают разные адреса.
[0005] Контроллеры запоминающего устройства обладают ограниченной видимостью разных типов трафика, который может выдаваться источниками. Соответственно, контроллеры запоминающего устройства не способы разделять трафик с меньшей крупностью разбиения. Таким образом, повышения быстродействия в контроллерах запоминающего устройства ограничены более грубыми механизмами, например планированием операций считывания до операций записи.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В одном варианте осуществления контроллер запоминающего устройства может включать в себя несколько портов для приема запросов к запоминающему устройству. Каждый порт может ассоциироваться с конкретным типом трафика, например в реальном масштабе времени (RT), графики и не в реальном масштабе времени (NRT). Каждый тип трафика имеет разные требования и характеристику (поведение). В результате предоставления разных портов контроллер запоминающего устройства может параллельно подвергаться воздействию разных типов запросов и соответственно может принимать интеллектуальные решения по планированию на основе смеси трафика.
[0007] В некоторых вариантах осуществления разные порты могут использовать разные протоколы связи. Например, интерфейс центрального процессора (CPU) может использоваться для процессоров, графический интерфейс может использоваться для графических устройств и т.п. В некоторых вариантах осуществления сторонние производители могут разработать один или несколько интерфейсов и могут продавать устройства, которые взаимодействуют с использованием этих интерфейсов. Поскольку в контроллере запоминающего устройства поддерживаются разные порты, системы, которые заключают в себе и контроллер запоминающего устройства и сторонние устройства, могут отказаться от промежуточных схем для преобразования протоколов между сторонними устройствами и контроллером запоминающего устройства. Системы могут стать проще и дешевле, и можно устранить задержку, которая добавлялась бы промежуточными схемами.
[0008] В некоторых вариантах осуществления параметры качества обслуживания (QoS) могут передаваться контроллеру запоминающего устройства вместе с операциями в запоминающем устройстве. Контроллер запоминающего устройства может использовать относительные уровни QoS для планирования запросов к запоминающему устройству из портов в каналы запоминающего устройства. Разные типы трафика могут иметь разные спецификации уровней QoS, и контроллер запоминающего устройства может конфигурироваться для разрешения конфликтов между разными типами параметров QoS для планирования. Более того, средства управления совместным использованием полосы частот могут влиять на планирование.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0009] Нижеследующее подробное описание ссылается на прилагаемые чертежи, которые теперь описываются вкратце.
[0010] Фиг. 1 - блок-схема одного варианта осуществления системы, включающей в себя контроллер запоминающего устройства.
[0011] Фиг. 2 - блок-схема одного варианта осуществления уровней QoS, которые могут задаваться для классов RT и NRT трафика.
[0012] Фиг. 3 - блок-схема одного варианта осуществления контроллера запоминающего устройства, показанного на фиг. 1.
[0013] Фиг. 4 - блок-схема одного варианта осуществления блока интерфейса порта, который может включаться в один вариант осуществления блока интерфейса агента, показанный на фиг. 3.
[0014] Фиг. 5 - блок-схема одного варианта осуществления блока интерфейса канала запоминающего устройства, который может включаться в один вариант осуществления блока интерфейса агента, показанный на фиг. 3.
[0015] Фиг. 6 - блок-схема операций, иллюстрирующая работу одного варианта осуществления арбитра QoS, показанного на фиг. 5.
[0016] Фиг. 7 - блок-схема одного варианта осуществления очереди предварительной сортировки (PSQ), проиллюстрированной в блоке канала запоминающего устройства на фиг. 3.
[0017] Фиг. 8 - блок-схема операций, иллюстрирующая работу одного варианта осуществления блока управления постановкой в очередь, показанного на фиг. 7.
[0018] Фиг. 9 - блок-схема операций, иллюстрирующая работу одного варианта осуществления планировщика, показанного на фиг. 7, для выбора между считываниями и записями, которые нужно планировать.
[0019] Фиг. 10 - блок-схема операций, иллюстрирующая работу одного варианта осуществления планировщика, показанного на фиг. 7, для выбора операции записи, которую нужно планировать.
[0020] Фиг. 11 - таблица, иллюстрирующая работу одного варианта осуществления планировщика, показанного на фиг. 7, для выбора считывания, которое нужно планировать.
[0021] Фиг. 12 - блок-схема одного варианта осуществления блока интерфейса запоминающего устройства (MIF), показанного на фиг. 3.
[0022] Фиг. 13 - блок-схема операций, иллюстрирующая работу одного варианта осуществления блока управления постановкой в очередь MIF, показанного на фиг. 12.
[0023] Фиг. 14 - блок-схема операций, иллюстрирующая работу одного варианта осуществления планировщика активации, показанного на фиг. 12.
[0024] Фиг. 15 - блок-схема операций, иллюстрирующая работу одного варианта осуществления планировщика строба адреса столбца (CAS), показанного на фиг. 12.
[0025] Фиг. 16 - таблица, иллюстрирующая работу одного варианта осуществления конечного планировщика, показанного на фиг. 12.
[0026] Фиг. 17 - блок-схема одного варианта осуществления организации очереди на высоком уровне и относительной важности параметров QoS и оптимизации пропускной способности запоминающего устройства при планировании на различных уровнях.
[0027] Фиг. 18 - блок-схема одного варианта осуществления возможностей контроллера запоминающего устройства для поддержки внутриполосного повышения QoS.
[0028] Фиг. 19 - блок-схема операций, иллюстрирующая работу одного варианта осуществления внутриполосного повышения QoS.
[0029] Фиг. 20 - блок-схема одного варианта осуществления интерфейса повышения QoS боковой полосы.
[0030] Фиг. 21 - блок-схема операций, иллюстрирующая один вариант осуществления повышения QoS вследствие старения операций.
[0031] Фиг. 22 - блок-схема одного варианта осуществления системы, включающей в себя интегральную схему, проиллюстрированную на фиг. 1.
[0032] Хотя изобретение допускает различные модификации и альтернативные виды, его характерные варианты осуществления показаны в качестве примера на чертежах и будут подробно описаны в этом документе. Однако следует понимать, что чертежи и подробное описание к ним не предназначены для ограничения изобретения конкретным раскрытым видом, а наоборот, направлены на охват всех модификаций, эквивалентов и альтернатив, входящих в сущность и объем настоящего изобретения, которые заданы прилагаемой формулой изобретения. Заголовки, используемые в этом документе, служат только для организационных целей и не предназначены для использования в ограничении объема описания. При использовании по всей данной заявке слово "может" используется в разрешающем смысле (то есть в значении "имеющий возможность для..."), а не в обязательном смысле (то есть в значении "должен"). Аналогичным образом слова "включают в себя", "включающий" и "включает в себя" означают "включающий", но не только.
[0033] Различные блоки, схемы или другие компоненты могут описываться как "сконфигурированные для" выполнения задачи или задач. В таком контексте "сконфигурированный для" является свободным изложением структуры, в целом означающей "имеющий схемы, которые" выполняют задачу или задачи во время работы. По существу, блок/схема/компонент может быть сконфигурирован для выполнения задачи, даже когда блок/схема/компонент в настоящее время не включен. Вообще, схемы, которые образуют структуру, соответствующую "сконфигурированный для", могут включать в себя аппаратные схемы. Аналогичным образом для удобства в описании различные блоки/схемы/компоненты могут описываться как выполняющие задачу или задачи. Такие описания следует интерпретировать как включающие в себя фразу "сконфигурированный для". Перечисление блока/схемы/компонента, который конфигурируется для выполнения одной или нескольких задач, в явной форме предназначено не для применения интерпретации шестого пункта 35 U.S.C. § 112 для того блока/схемы/компонента.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0034] Обращаясь теперь к фиг. 1, показана блок-схема одного варианта осуществления системы 5. В варианте осуществления по фиг. 1 система 5 включает в себя интегральную схему 10 (IC), соединенную с внешними запоминающими устройствами 12A-12B. В проиллюстрированном варианте осуществления интегральная схема 10 включает в себя центральный процессор 14 (CPU), который включает в себя один или несколько процессоров 16 и кэш 18 уровня 2 (L2). Другие варианты осуществления могут не включать в себя кэш 18 L2 и/или могут включать в себя дополнительные уровни кэша. Более того, рассматриваются варианты осуществления, которые включают в себя более двух процессоров 16 и которые включают в себя только один процессор 16. Интегральная схема 10 дополнительно включает в себя набор из одного или нескольких периферийных устройств 20, не относящихся к реальному масштабу времени (NRT), и набор из одного или нескольких периферийных устройств 22 реального масштаба времени (RT). В проиллюстрированном варианте осуществления периферийные устройства RT включают в себя процессор 24 изображений, один или несколько каналов 26 отображения и арбитр 28 портов. Другие варианты осуществления по желанию могут включать в себя больше или меньше процессоров 24 изображений, больше или меньше каналов 26 отображения и/или любые дополнительные периферийные устройства реального масштаба времени. Процессор 24 изображений может соединяться для приема данных изображений от одной или нескольких камер в системе 5. Аналогичным образом каналы 26 отображения могут соединяться с одним или несколькими контроллерами дисплея (не показаны), которые управляют одним или несколькими дисплеями в системе. В проиллюстрированном варианте осуществления CPU 14 соединяется с контроллером 30 моста/прямого доступа к памяти (DMA), который может соединяться с одним или несколькими периферийными устройствами 32 и/или одним или несколькими контроллерами 34 интерфейса периферийных устройств. Количество периферийных устройств 32 и контроллеров 34 интерфейса периферийных устройств может меняться от нуля до любого нужного числа в различных вариантах осуществления. Система 5, проиллюстрированная на фиг. 1, дополнительно включает в себя графический блок 36, содержащий один или несколько графических контроллеров, например G0 38A и G1 38B. Количество графических контроллеров в расчете на графический блок и количество графических блоков в других вариантах осуществления может меняться. Как проиллюстрировано на фиг. 1, система 5 включает в себя контроллер 40 запоминающего устройства, соединенный с одной или несколькими схемами 42A-42B физического интерфейса (PHY) запоминающих устройств. PHY 42A-42B запоминающих устройств конфигурируются для взаимодействия по выводам интегральной схемы 10 с запоминающими устройствами 12A-12B. Контроллер 40 запоминающего устройства также включает в себя набор портов 44A-44E. Порты 44A-44B соединяются с графическими контроллерами 38A-38B соответственно с помощью первого типа интерфейса (Интерфейс 1). CPU 14 соединяется с портом 44C с помощью второго типа интерфейса (Интерфейс 2). Периферийные устройства 20 NRT и периферийные устройства 22 RT соединяются с портами 44D-44E соответственно с помощью второго типа интерфейса. Количество портов, включенных в контроллер 40 запоминающего устройства, может меняться в других вариантах осуществления, как и количество контроллеров запоминающего устройства. Количество PHY 42A-42B запоминающих устройств и соответствующих запоминающих устройств 12A-12B в других вариантах осуществления может быть равно одному или более двух.
[0035] В одном варианте осуществления каждый порт 44A-44E может ассоциироваться с конкретным типом трафика. Например, в одном варианте осуществления типы трафика могут включать в себя трафик RT, трафик NRT и графический трафик. Другие варианты осуществления могут включать в себя другие типы трафика в дополнение или вместо подмножества вышеупомянутых типов трафика. Каждый тип трафика может характеризоваться по-разному (например, в показателях требований и характеристики (поведения)), и контроллер запоминающего устройства может по-разному обрабатывать типы трафика, чтобы обеспечить более высокое быстродействие на основе этих характеристик. Например, трафик RT требует обслуживания каждой операции в запоминающем устройстве в рамках конкретного количества времени. Если задержка операции превышает конкретное количество времени, то в периферийном устройстве RT может произойти ошибочная операция. Например, данные изображений могут потеряться в процессоре 24 изображений, или может визуально исказиться отображенное изображение на дисплеях, с которыми соединяются каналы 26 отображения. Трафик RT можно охарактеризовать, например, как изохронный. С другой стороны, графический трафик может иметь относительно большую полосу частот, но не является чувствительным к задержке. Трафик NRT, например от процессоров 16, более чувствителен к задержке по причинам быстродействия, но выдерживает большую задержку. То есть трафик NRT обычно может обслуживаться с любой задержкой, не вызывая ошибочную работу в устройствах, формирующих трафик NRT. Аналогичным образом, менее чувствительный к задержке графический трафик, но с большей полосой частот обычно может обслуживаться с любой задержкой. Другой трафик NRT может включать в себя трафик аудио, который имеет относительно малую полосу частот и обычно может обслуживаться с разумной задержкой. Большая часть трафика периферийных устройств также может быть NRT (например, трафик к запоминающим устройствам, например магнитному, оптическому или твердотельному запоминающему устройству).
[0036] В результате предоставления портов 44A-44E, ассоциированных с разными типами трафика, контроллер 40 запоминающего устройства может подвергаться воздействию разных типов трафика параллельно, и соответственно может допускать принятие лучших решений о том, какие операции в запоминающем устройстве обслуживать перед другими, на основе типа трафика. В некоторых вариантах осуществления каждый порт может предназначаться исключительно для трафика RT либо трафика NRT. В других вариантах осуществления порты могут ассоциироваться с конкретным типом трафика, но в порту могут поддерживаться другие типы трафика. В варианте осуществления графический трафик может считаться трафиком NRT, но наличие видимости для графического трафика отдельно от другого трафика NRT может быть полезным для балансирования полосы частот между другими источниками NRT и источником RT. Аналогичным образом, наличие процессорного трафика отдельно от других источников NRT может быть полезным при балансировании полосы частот. В проиллюстрированном варианте осуществления порт 44E RT может ассоциироваться с трафиком RT, а оставшиеся порты 44A-44D могут ассоциироваться с трафиком NRT.
[0037] Как правило, порт может быть точкой связи в контроллере 40 запоминающего устройства для взаимодействия с одним или несколькими источниками. В некоторых случаях порт может предназначаться для источника (например, порты 44A-44B могут предназначаться графическим контроллерам 38A-38B соответственно). В других случаях порт может совместно использоваться несколькими источниками (например, процессоры 16 могут совместно использовать порт 44C CPU, периферийные устройства 20 NRT могут совместно использовать порт 44D NRT, и периферийные устройства RT, например каналы 26 отображения и процессор 24 изображений, могут совместно использовать порт 44E RT). Порт может соединяться с одним интерфейсом для взаимодействия с одним или несколькими источниками. Таким образом, когда источники совместно используют некий интерфейс, может присутствовать арбитр на стороне источников интерфейса для выбора между источниками. Например, кэш 18 L2 может служить для контроллера 40 запоминающего устройства в качестве арбитра для порта 44C CPU. Арбитр 28 портов может служить в качестве арбитра для порта 44E RT, и аналогичный арбитр портов (не показан) может быть арбитром для порта 44D NRT. Одиночный источник в порту или сочетание источников в порту может называться агентом.
[0038] Каждый порт 44A-44E соединяется с интерфейсом для взаимодействия с соответствующим агентом. Интерфейс может быть любым типом средств связи (например, шиной, двухточечным межсоединением и т.п.) и может реализовывать любой протокол. В некоторых вариантах осуществления все порты 44A-44E могут реализовать один и тот же интерфейс и протокол. В других вариантах осуществления разные порты могут реализовывать разные интерфейсы и/или протоколы. Например, проиллюстрированный на фиг. 1 вариант осуществления включает в себя графические контроллеры 38A-38B, использующие один тип интерфейса/протокола, и CPU 14, периферийные устройства 20 NRT и периферийные устройства 22 RT, использующие другой тип интерфейса/протокола. Интерфейс может обращаться к определениям сигналов и электрическим свойствам интерфейса, а протокол может быть логическим определением связи по интерфейсу (например, включающим в себя команды, правила упорядочения, поддержку когерентности, при их наличии и т.п.). Поддержка более одного интерфейса в различных портах 44A-44E может устранить потребность в преобразовании из одного интерфейса, поддерживаемого источником/агентом, в интерфейс, поддерживаемый контроллером 40 запоминающего устройства, что может повысить быстродействие в некоторых вариантах осуществления. Дополнительно некоторые варианты осуществления интегральной схемы 10 могут включать в себя схемы, приобретенные у стороннего производителя в виде предварительно размещенного в корпусе блока, обычно называемого в промышленности интеллектуальной собственностью (IP). IP может быть "жесткой" (в этом случае она задается в виде таблицы соединений схем, которые разводятся и размещаются на IC в виде блока) или "мягкой" (в этом случае она задается в виде синтезируемого блока, который можно синтезировать вместе с другими блоками, которые нужно включить в интегральную схему 10). И жесткая и мягкая IP включает в себя заданный интерфейс и протокол, которые проектировщику интегральной схемы 10 обычно нельзя изменять (по меньшей мере без уплаты пошлины стороннему производителю, который владеет этой IP). Соответственно, поддержка нескольких интерфейсов/протоколов может дать возможность упрощенного включения IP стороннего производителя.
[0039] В варианте осуществления каждый источник может назначать параметр качества обслуживания (QoS) каждой операции в запоминающем устройстве, переданной этим источником. Параметр QoS может идентифицировать запрошенный уровень обслуживания для операции в запоминающем устройстве. Операциям в запоминающем устройстве со значениями параметров QoS, запрашивающими более высокие уровни обслуживания, может отдаваться предпочтение перед операциями в запоминающем устройстве, запрашивающими более низкие уровни обслуживания. Например, каждый из интерфейсов к портам 44A-44E на фиг. 1 показан включающим в себя команду (Cmd), идентификатор потока (FID) и параметр QoS (QoS). Команда может идентифицировать операцию в запоминающем устройстве (например, считывание или запись). Команда/операция считывания запоминающего устройства вызывает передачу данных из запоминающего устройства 12A-12B в источник, тогда как команда/операция записи в запоминающее устройство вызывает передачу данных из источника в запоминающее устройство 12A-12B. Команды также могут включать в себя команды для программирования контроллера 40 запоминающего устройства. Например, то, какие диапазоны адресов отображаются в какие каналы запоминающего устройства, параметры совместного использования полосы пропускания и т.п. могут быть программируемыми в контроллере 40 запоминающего устройства. FID может идентифицировать операцию в запоминающем устройстве как часть потока операций в запоминающем устройстве. Поток операций в запоминающем устройстве обычно может быть связанным, тогда как операции в запоминающем устройстве из разных потоков, даже от одного и того же источника, могут быть не связаны. Часть FID (например, поле источника) может идентифицировать источник, а оставшаяся часть FID может идентифицировать поток (например, поле потока). Таким образом, FID может быть аналогичен ID транзакции, и некоторые источники могут просто передавать ID транзакции в качестве FID. В таком случае поле источника в ID транзакции может быть полем источника в FID, и порядковый номер (который идентифицирует транзакцию среди транзакций от одного и того же источника) в ID транзакции может быть полем потока в FID. Однако источники, которые группируют транзакции в виде потока, могут по-разному использовать FID. В качестве альтернативы потоки могут соотноситься с полем источника (например, операции от одного и того же источника могут быть частью одного и того же потока, а операции от другого источника являются частью другого потока). Возможность идентифицировать транзакции потока может использоваться различными способами, описанными ниже (например, повышение QoS, переупорядочение и т.п.).
[0040] Таким образом, заданный источник может конфигурироваться для использования параметров QoS, чтобы идентифицировать, какие операции в запоминающем устройстве важнее для источника (и соответственно должны обслуживаться до других операций в запоминающем устройстве от того же источника), особенно для источников, которые поддерживают неупорядоченные передачи данных относительно адресных передач от источника. Кроме того, параметры QoS могут позволить источникам запрашивать более высокие уровни обслуживания, нежели другие источники в том же порту и/или источники в других портах.
[0041] В некоторых вариантах осуществления разные типы трафика могут иметь разные определения параметров QoS. То есть разные типы трафика могут иметь разные наборы параметров QoS. Значимость данного значения параметра QoS зависит от набора параметров QoS, из которого он извлекается. Например, может быть задан набор параметров QoS RT, и может быть задан набор параметров QoS NRT. Таким образом, значению параметра QoS RT придается значимость в рамках набора параметров QoS RT, а значению параметра QoS NRT придается значимость в рамках набора параметров QoS NRT. Другие варианты осуществления могут реализовать одинаковый набор параметров QoS во всех портах или среди всех типов трафика.
[0042] Контроллер 40 запоминающего устройства может конфигурироваться для обработки параметров QoS, принятых в каждом порту 44A-44E, и может использовать относительные значения параметров QoS для планирования операций в запоминающем устройстве, принятых в портах, относительно других операций в запоминающем устройстве из этого порта и относительно других операций в запоминающем устройстве, принятых в других портах. Точнее говоря, контроллер 40 запоминающего устройства может конфигурироваться для сравнения параметров QoS, которые извлекаются из разных наборов параметров QoS (например, параметры QoS RT и параметры QoS NRT), и может конфигурироваться для принятия решений по планированию на основе этих параметров QoS.
[0043] Параметры QoS соответственно могут быть значениями, которые передаются вместе с операциями в запоминающем устройстве и которые могут использоваться в контроллере запоминающего устройства для идентификации запрошенных уровней QoS. Уровни QoS могут находиться относительно других уровней и могут задавать, какие операции в запоминающем устройстве предпочтительно выбирать перед другими, имеющими более низкие уровни QoS. Таким образом, уровни QoS могут функционировать как своего рода приоритет после интерпретации контроллером 40 запоминающего устройства для рассмотрения уровней QoS, заданных в разных наборах, хотя приоритет может быть сбалансирован другими факторами.
[0044] В некоторых вариантах осуществления контроллер 40 запоминающего устройства может конфигурироваться для повышения уровней QoS для ожидающих операций в запоминающем устройстве. Могут поддерживаться различные механизмы повышения. Например, контроллер 40 запоминающего устройства может конфигурироваться для повышения уровня QoS для ожидающих операций в запоминающем устройстве из потока в ответ на прием другой операции в запоминающем устройстве из того же потока, которая имеет параметр QoS, задающий более высокий уровень QoS. Этот вид повышения QoS может называться внутриполосным повышением, поскольку параметры QoS, переданные с использованием обычного способа передачи операции в запоминающем устройстве, также служат в качестве неявного запроса повышения для операций в запоминающем устройстве в том же потоке. Контроллер 40 запоминающего устройства может конфигурироваться для принудительной отправки ожидающих операций в запоминающем устройстве из одинакового порта или источника, но не одинакового потока, в качестве вновь принятой операции в запоминающем устройстве, задающей более высокий уровень QoS. В качестве другого примера контроллер 40 запоминающего устройства может конфигурироваться для соединения с интерфейсом боковой полосы от одного или нескольких агентов, и может повышать уровни QoS в ответ на прием запроса повышения по интерфейсу боковой полосы. В другом примере контроллер 40 запоминающего устройства может конфигурироваться для отслеживания относительного срока ожидающих операций в запоминающем устройстве. Контроллер 40 запоминающего устройства может конфигурироваться для повышения уровня QoS старых операций в запоминающем устройстве с определенными сроками. Сроки, при которых происходит повышение, могут зависеть от текущего параметра QoS старой операции в запоминающем устройстве.
[0045] Контроллер 40 запоминающего устройства может конфигурироваться для определения канала запоминающего устройства, адресуемого каждой операцией в запоминающем устройстве, принятой в портах, и может конфигурироваться для передачи операций в запоминающем устройстве запоминающему устройству 12A-12B по соответствующему каналу. Количество каналов и отображение адресов в каналы может меняться в различных вариантах осуществления и может быть программируемым в контроллере запоминающего устройства. Контроллер запоминающего устройства может использовать параметры QoS у операций в запоминающем устройстве, отображенных в один и тот же канал, для определения порядка операций в запоминающем устройстве, переданных в тот канал. То есть контроллер запоминающего устройства может переупорядочить операции в запоминающем устройстве от их исходного порядка приема в портах. Более того, во время обработки в канале операции в запоминающем устройстве могут быть снова переупорядочены в одной или нескольких точках. На каждом уровне переупорядочения можно уменьшить внимание, уделенное параметрам QoS, и можно увеличить факторы, которые влияют на эффективность пропускной способности запоминающего устройства. Как только операции в запоминающем устройстве достигают конца конвейера канала запоминающего устройства, операции можно упорядочить по сочетанию уровней QoS и эффективности пропускной способности запоминающего устройства. В некоторых вариантах осуществления можно реализовать высокое быстродействие.
[0046] Процессоры 16 могут реализовывать любую архитектуру системы команд и могут конфигурироваться для выполнения команд, заданных в этой архитектуре системы команд. Процессоры 16 могут применять любую микроархитектуру, включающую в себя скалярную, суперскалярную, конвейерную, суперконвейерную, неупорядоченную, упорядоченную, спекулятивную, неспекулятивную и т.п., или их сочетания. Процессоры 16 могут включать в себя схемы и опционально могут реализовывать методики микропрограммирования. Процессоры 16 могут включать в себя один или несколько кэшей уровня 1, и соответственно кэш 18 является кэшем L2. Другие варианты осуществления могут включать в себя несколько уровней кэшей в процессорах 16, и кэш 18 может быть следующим уровнем ниже по иерархии. Кэш 18 может применять любой размер и любую конфигурацию (наборно-ассоциативный кэш, кэш прямого отображения и т.п.).
[0047] Графические контроллеры 38A-38B могут быть любыми схемами графической обработки. В целом, графические контроллеры 38A-38B могут конфигурироваться для представления объектов, которые нужно отобразить, в буфере кадра. Графические контроллеры 38A-38B могут включать в себя графические процессоры, которые могут выполнять программное обеспечение графики для выполнения части или всей графической операции и/или аппаратное ускорение некоторых графических операций. Величина аппаратного ускорения и программной реализации может меняться от одного варианта осуществления к другому.
[0048] Периферийные устройства 20 NRT могут включать в себя любые периферийные устройства, не относящиеся к реальному масштабу времени, которым по причинам быстродействия и/или полосы пропускания предоставляется независимый доступ к запоминающему устройству 12A-12B. То есть доступ периферийных устройств 20 NRT не зависит от CPU 14 и может проходить параллельно операциям CPU в запоминающем устройстве. Другие периферийные устройства, например периферийное устройство 32 и/или периферийные устройства, соединенные с интерфейсом периферийных устройств, управляемым контроллером 34 интерфейса периферийных устройств, также могут быть периферийными устройствами, не относящимися к реальному масштабу времени, но могут не требовать независимого доступа к запоминающему устройству. Различные варианты осуществления периферийных устройств 20 NRT могут включать в себя видеокодеры и декодеры, схемы преобразователя масштаба/вращателя, схемы сжатия/восстановления изображений и т.п.
[0049] Как упоминалось выше, периферийные устройства 22 RT могут включать в себя процессор 24 изображений и каналы 26 отображения. Каналы 26 отображения могут включать в себя схемы для выборки одного или нескольких кадров и для смешивания кадров, чтобы создать изображение на дисплее. Каналы 26 отображения могут дополнительно включать в себя один или несколько видеоконвейеров. Результатом каналов 26 отображения может быть поток пикселей, которые нужно отобразить на экране дисплея. Значения пикселей могут передаваться контроллеру дисплея для отображения на экране дисплея. Процессор 26 изображений может принимать данные с камеры и перерабатывать эти данные в изображение для сохранения в запоминающем устройстве.
[0050] Контроллер 30 моста/DMA может содержать схемы для сопряжения периферийного устройства (устройств) 32 и контроллера (контроллеров) 34 интерфейса периферийных устройств с областью памяти. В проиллюстрированном варианте осуществления контроллер 30 моста/DMA может переносить операции в запоминающем устройстве от периферийных устройств/контроллеров интерфейса периферийных устройств через CPU 14 в контроллер 40 запоминающего устройства. CPU 14 также может поддерживать когерентность между перенесенными операциями в запоминающем устройстве и операциями в запоминающем устройстве от процессоров 16/кэша 18 L2. Кэш 18 L2 также может разрешать конфликты перенесенных операций в запоминающем устройстве с операциями в запоминающем устройстве от процессоров 16, которые нужно передать по интерфейсу CPU в порт 44C CPU. Контроллер 30 моста/DMA также может предоставлять операцию DMA от лица периферийных устройств 32 и контроллеров 34 интерфейса периферийных устройств для передачи блоков данных в запоминающее устройство и из него. Конкретнее, контроллер DMA может конфигурироваться для выполнения передач в запоминающее устройство 12A-12B и из него посредством контроллера 40 запоминающего устройства от лица периферийных устройств 32 и контроллеров 34 интерфейса периферийных устройств. Контроллер DMA может быть программируемым с помощью процессоров 16 для выполнения операций DMA. Например, контроллер DMA может быть программируемым посредством дескрипторов. Дескрипторы могут быть структурами данных, сохраненными в запоминающем устройстве 12A-12B, которые описывают передачи DMA (например, адреса источника и назначения, размер и т.п.). В качестве альтернативы контроллер DMA может быть программируемым посредством регистров в контроллере DMA (не показаны).
[0051] Периферийные устройства 32 могут включать в себя любые требуемые устройства ввода/вывода или другие аппаратные средства, которые включаются в интегральную схему 10. Например, периферийные устройства 32 могут включать в себя сетевые периферийные устройства, например один или несколько контроллеров управления доступом к среде передачи (MAC), таких как MAC Ethernet или контроллер Wireless Fidelity (WiFi). В периферийные устройства 32 может включаться звуковой блок, включающий в себя различные устройства обработки звуковых сигналов. В периферийные устройства 32 может включаться один или несколько цифровых процессоров сигналов. Периферийные устройства 32 могут включать в себя любой другой требуемый функционал, например таймеры, встроенное в кристалл запоминающее устройство секретных значений, механизм шифрования и т.п., или любое их сочетание.
[0052] Контроллеры 34 интерфейса периферийных устройств могут включать в себя любые контроллеры для любого типа интерфейса периферийных устройств. Например, контроллеры интерфейса периферийных устройств могут включать в себя различные контроллеры интерфейса, например контроллер универсальной последовательной шины (USB), контроллер межсоединения периферийных компонентов (PCIe), интерфейс флэш-памяти, выводы универсального ввода/вывода (I/O) и т.п.
[0053] Запоминающие устройства 12A-12B могут быть любым типом запоминающего устройства, например динамическим оперативным запоминающим устройством (DRAM), синхронным DRAM (SDRAM), SDRAM с удвоенной скоростью передачи данных (DDR, DDR2, DDR3 и т.п.) (включая мобильные версии SDRAM, например mDDR3 и т.п., и/или маломощные версии SDRAM, например LPDDR2 и т.п.), RAMBUS DRAM (RDRAM), статическое RAM (SRAM) и т.п. Одно или несколько запоминающих устройств могут соединяться на монтажной плате для образования модулей запоминающего устройства, например модулей запоминающего устройства с однорядным расположением выводов (SIMM), модулей запоминающего устройства с двухрядным расположением выводов (DIMM) и т.п. В качестве альтернативы устройства могут размещены в корпусе интегральной схемы 10 в конфигурации "кристалл на кристалле", конфигурации "корпус на корпусе" или многокристальной модульной конфигурации.
[0054] PHY 42A-42B запоминающих устройств могут управлять низкоуровневым физическим интерфейсом к запоминающему устройству 12A-12B. Например, PHY 42A-42B запоминающих устройств могут отвечать за синхронизацию сигналов, за надлежащее тактирование в синхронном DRAM и т.п. В одном варианте осуществления PHY 42A-42B запоминающих устройств могут конфигурироваться для синхронизации с тактовыми импульсами, поставляемыми в интегральной схеме 10, и могут конфигурироваться для формирования тактовых импульсов, используемых запоминающим устройством 12.
[0055] Отметим, что другие варианты осуществления могут включать в себя другие сочетания компонентов, включая подмножества или надмножества компонентов, показанных на фиг. 1, и/или другие компоненты. Хотя один экземпляр заданного компонента может быть показан на фиг. 1, другие варианты осуществления могут включать в себя один или несколько экземпляров заданного компонента. Аналогичным образом, по всему данному подробному описанию может включаться один или несколько экземпляров заданного компонента, даже если показан только один, и/или могут использоваться варианты осуществления, которые включают в себя только один экземпляр, даже если показано несколько экземпляров.
[0056] Отметим, что другие варианты осуществления контроллера 40 запоминающего устройства могут не реализовывать несколько портов, но все же могут реализовывать параметры QoS, разные параметры/уровни QoS для разных типов или классов трафика, например NRT и RT, и повышение QoS.
[0057] Обращаясь далее к фиг. 2, показана пара таблиц 50 и 52, иллюстрирующих определение набора уровней QoS RT и набора уровней QoS NRT соответственно, для одного варианта осуществления. Другие варианты осуществления могут включать в себя дополнительные или заменяющие уровни, и другие варианты осуществления могут включать в себя дополнительные уровни совместно с подмножеством проиллюстрированных уровней. Как проиллюстрировано указывающими вниз стрелками рядом с таблицами 50 и 52 на фиг. 2, таблицы иллюстрируют уровни QoS в некотором наборе с увеличивающимся приоритетом. То есть зеленый уровень QoS реального масштаба времени (RTG) является уровнем QoS RT наименьшего приоритета; желтый уровень QoS реального масштаба времени (RTY) является уровнем QoS RT среднего приоритета; и красный уровень QoS реального масштаба времени (RTR) является уровнем QoS RT наивысшего приоритета. Аналогичным образом уровень QoS наилучшего из возможного (BEF) является уровнем QoS NRT наименьшего приоритета, а уровень QoS с малой задержкой (LLT) является уровнем QoS NRT наивысшего приоритета. Иллюстрация уровней QoS RT и уровней QoS NRT рядом друг с другом на фиг. 2 не предназначена для указания относительного приоритета уровней QoS RT относительно уровней QoS NRT. Вместо этого контроллер 40 запоминающего устройства может определять такие относительные приоритеты частично на основе других факторов, указывающих трафик, который поступает на контроллер 40 запоминающего устройства по различным типам и портам.
[0058] Уровни QoS RTG, RTY и RTR могут отражать относительные уровни срочности от источника RT. То есть, когда уменьшается количество времени перед тем, как данные требуются источнику RT, чтобы предотвратить ошибочную операцию, увеличивается уровень QoS, назначенный каждой операции в запоминающем устройстве, чтобы указать большую срочность. Рассматривая операции, имеющие большую срочность, как операции с более высоким приоритетом, контроллер 40 запоминающего устройства может быстрее возвращать данные источнику RT и соответственно может способствовать правильной работе источника RT.
[0059] Например, канал 26 отображения может инициировать считывание данных кадра из запоминающего устройства 12A-12B для следующего кадра, который необходимо отобразить в кадровый интервал гашения для дисплея. Кадр фактически не отображается до окончания кадрового интервала гашения, и соответственно канал 26 отображения может использовать уровень RTG в течение этого периода времени. Когда кадр начинает отображаться (то есть контроллер дисплея начинает считывание пикселей кадра из выхода канала 26 отображения), канал 26 отображения может повысить уровень QoS у операций считывания данных кадра в запоминающее устройство до уровня RTY. Например, если объем данных кадра, который считывается перед отображаемым текущим пикселем, уменьшается ниже первой пороговой величины, то уровень можно повысить до RTY. На второй пороговой величине (меньше первой пороговой величины) канал 26 отображения может повысить уровень QoS у операций в запоминающем устройстве до RTR.
[0060] Уровень QoS NRT BEF может быть запросом на возврат данных так быстро, как может контроллер 40 запоминающего устройства, как только удовлетворяются потребности других потоков данных. С другой стороны, уровень QoS NRT LLT может быть запросом данных с малой задержкой. NRT-операции в запоминающем устройстве, имеющие уровень QoS LLT, в показателях приоритета перед другими транзакциями запоминающего устройства могут рассматриваться тщательнее, чем имеющие уровень QoS BEF (по меньшей мере в некоторых случаях). В других случаях уровни QoS BEF и LLT могут рассматриваться контроллером 40 запоминающего устройства как одинаковые.
[0061] Обращаясь далее к фиг. 3, показана блок-схема одного варианта осуществления контроллера 40 запоминающего устройства. В варианте осуществления из фиг. 3 контроллер 40 запоминающего устройства включает в себя блок 54 интерфейса агента (AIU) и один или несколько блоков 56A-56B каналов запоминающего устройства. Может присутствовать один блок 56A-56B канала запоминающего устройства для каждого канала запоминающего устройства, включенного в данный вариант осуществления, а другие варианты осуществления могут включать в себя один канал или более двух каналов. Как проиллюстрировано на фиг. 3, AIU 54 может включать в себя несколько блоков 58A-58E интерфейса портов. Конкретнее, в контроллере 40 запоминающего устройства может присутствовать блок 58A-58E интерфейса порта для каждого порта 44A-44E. AIU 54 может дополнительно включать в себя блоки 60A-60B интерфейсов каналов запоминающего устройства (MCIU) (один для каждого блока 56A-56B канала запоминающего устройства). AIU 54 может дополнительно включать в себя один или несколько регистров 62 совместного использования полосы пропускания, которые могут быть программируемыми для указания, как должна совместного использования полоса пропускания портами. Блоки 58A-58E интерфейсов портов могут соединяться для приема операций в запоминающем устройстве и приема/передачи данных и ответов в соответствующем порту, а также могут соединяться с MCIU 60A-60B. MCIU 60A-60B могут дополнительно соединяться с регистрами 62 совместного использования полосы пропускания и с соответствующими MCU 56A-56B. Как проиллюстрировано на фиг. 3, MCU 56A-56B могут включать в себя очередь 64 предварительной сортировки (PSQ) и схему 66 интерфейса запоминающего устройства (MIF). PSQ 64 соединяются с соответствующими MCIU 60A-60B и с MIF 66 в том же MCU 56A-56B. MIF 66 в каждом MCU 56A-56B соединяется с соответствующей PHY 42A-42B запоминающего устройства.
[0062] AIU 54 может конфигурироваться для приема операций в запоминающем устройстве в портах 44A-44E и переключения операций в запоминающем устройстве на каналы, адресуемые этими операциями в запоминающем устройстве, используя параметры QoS у операций в запоминающем устройстве в качестве фактора при принятии решения, какие операции в запоминающем устройстве передавать одному из MCU 56A-56B перед другими операциями в запоминающем устройстве к тому же MCU 56A-56B. Другие факторы могут включать в себя средства управления совместным использованием полосы пропускания для совместного использования полосы пропускания в каналах запоминающего устройства между портами.
[0063] Конкретнее, каждый блок 58A-58E интерфейса порта может конфигурироваться для приема операций в запоминающем устройстве из соответствующего порта 44A-44E и может конфигурироваться для определения канала запоминающего устройства, на который направлена данная операция в запоминающем устройстве. Блок 58A-58E интерфейса порта может передавать операцию в запоминающем устройстве соответствующему MCIU 60A-60B и может передавать считывания отдельно от записей в проиллюстрированном варианте осуществления. Таким образом, например, блок 58A интерфейса порта может иметь соединение Rd0 и соединение Wr0 с MCIU 60A для операций считывания и операций записи соответственно. Аналогичным образом блок 58A интерфейса порта может иметь соединение Rd1 и Wr1 с MCIU 60B. Другие блоки 58B-58E интерфейсов портов могут иметь аналогичные соединения с MCIU 60A-60B. Также может присутствовать интерфейс данных для передачи считанных данных из блоков 58A-58B интерфейса портов в MCIU 60A-60B, проиллюстрированный в целом в виде пунктирного интерфейса "D" для MCIU 60A на фиг. 3.
[0064] MCIU 60A-60B могут конфигурироваться для постановки в очередь операций в запоминающем устройстве, предоставленных блоками 58A-58E интерфейса портов, и для разрешения конфликтов между операциями в запоминающем устройстве, чтобы выбирать операции для передачи соответствующим MCU 56A-56B. Разрешение конфликтов (арбитраж) между операциями, заданными в данном канале запоминающего устройства, может не зависеть от арбитража между операциями, заданными в других каналах запоминающего устройства.
[0065] MCIU 60A-60B могут соединяться с регистрами 62 совместного использования полосы пропускания, которые могут быть запрограммированы для указания, как пропускная способность запоминающего устройства в канале должна распределяться операциям в запоминающем устройстве в данном канале. Например, в одном варианте осуществления MCIU 60A-60B могут использовать алгоритм взвешенного циклического обслуживания с дефицитом для выбора среди портов, когда отсутствует трафик с высоким приоритетом (например, уровни RTR или RTY QoS в трафике RT). Когда присутствует трафик RTR или RTY, механизм циклического обслуживания может использоваться для выбора среди портов, которые имеют трафик RTR/RTY. Веса в механизме взвешенного циклического обслуживания с дефицитом могут быть программируемыми для распределения относительно большей полосы пропускания одному порту по сравнению с другим портом. Веса могут выбираться для поддержки, например, процессорного трафика по сравнению с графическими и NRT-портами, или для поддержки графических портов по сравнению с другими портами. В различных вариантах осуществления может использоваться любой набор весов. Другие варианты осуществления могут измерять распределение полосы пропускания другими способами. Например, могут использоваться процентные отношения общей полосы пропускания. В других вариантах осуществления кредитная система может использоваться для управления относительным количеством операций от каждого порта, которые выбираются. Однако в различных вариантах осуществления операции обычно могут выбираться на основе параметров QoS и требований к совместному использованию полосы пропускания.
[0066] MCU 56A-56B конфигурируются для планирования операций в запоминающем устройстве из очередей, которые требуется передать по каналу запоминающего устройства. MCU могут конфигурироваться для постановки в очередь отдельно считываний и записей в PSQ 64 и могут конфигурироваться для разрешения конфликтов между считываниями и записями с использованием, например, системы на основе кредитов. В системе на основе кредитов считывания и записи распределяются некоторому количеству кредитов. Количество кредитов записи и кредитов считывания не должны быть равны. Каждая запланированная операция в запоминающем устройстве может потреблять кредит. Как только кредиты записи и кредиты считывания уменьшаются до нуля или меньше, и имеется ожидающая транзакция, которую нужно планировать, оба кредита можно увеличить на соответствующее выделенное количество кредитов. Другие варианты осуществления могут использовать другие механизмы для выбора между считываниями и записями. В одном варианте осуществления кредитная система может быть частью арбитражного механизма между считываниями и записями (вместе с измерениями заполненности очереди записи). То есть, когда очередь записи становится полнее, приоритет записей в арбитражном механизме можно увеличить. Дополнительные подробности излагаются ниже.
[0067] В одном варианте осуществления параметры QoS у операций записи могут аннулироваться при поступлении в PSQ 64. Операции считывания могут сохранять параметры QoS, и параметры QoS могут влиять на планирование считывания из PSQ 64.
[0068] В варианте осуществления MCU 56A-56B могут планировать операции в запоминающем устройстве в пакетах операций (причем каждая операция в пакете потребляет кредит). Если пакет уменьшает счетчик кредитов до нуля, то можно позволить завершить пакет, и можно уменьшить счетчик кредитов до отрицательного числа. Когда счетчики кредитов позже увеличиваются, можно учесть отрицательные кредиты, и соответственно общее количество кредитов после увеличения может быть меньше выделенного количества кредитов.
[0069] Чтобы создать пакеты операций в запоминающем устройстве для планирования, MCU 56A-56B могут группировать операции в запоминающем устройстве в родственные группы. Можно сказать, что операция в запоминающем устройстве проявляет родственность с другой операцией в запоминающем устройстве (или можно сказать, что она является родственной другой операции в запоминающем устройстве), если операции могут выполняться эффективно в интерфейсе запоминающего устройства при выполнении в непосредственной близости во времени. Эффективность может измеряться в показателях увеличенного использования полосы пропускания. Например, SDRAM характеризуются страницей, которую можно открыть с использованием команды активации (вместе с адресом страницы). Размер страницы может меняться от одного варианта осуществления к другому, и в целом может относиться к количеству смежных битов, которые могут быть доступны, как только передана команда активации. Асинхронные DRAM аналогичным образом могут иметь страницу, которая может открываться путем установления управляющего стробирующего сигнала адреса строки и предоставления адреса строки. Две или более операции в запоминающем устройстве, которые обращаются к данным на одной и той же странице, могут быть родственными, потому что только одна активация/RAS может потребоваться в интерфейсе для операций в запоминающем устройстве. SDRAM также имеют независимые банки и ранги. Банк может быть совокупностью запоминающих элементов в микросхеме SDRAM, которые могут иметь открытую строку (в которой можно обнаружить попадания на страницу). Ранг может выбираться посредством выбора микросхемы от контроллера запоминающего устройства и может включать в себя одну или несколько микросхем SDRAM. Операции в запоминающем устройстве для разных рангов или банков также могут быть родственными операциями, потому что они не конфликтуют и соответственно не требуют закрытия страницы и открытия новой страницы. Операции в запоминающем устройстве можно рассматривать как родственные операции, только если они передают данные в одинаковом направлении (то есть операции считывания могут быть родственными только с другими операциями считывания, и аналогичным образом операции записи могут быть родственными только с другими операциями записи). Операции в запоминающем устройстве для одинаковой страницы (или открытой страницы) могут называться попаданиями на страницу, а операции в запоминающем устройстве для разных банков/рангов могут называться попаданиями в банк и попаданиями в ранг соответственно.
[0070] MCU 56A-56B также могут конфигурироваться для планирования команд в интерфейсе запоминающего устройства для запоминающих устройств 12A-12B (посредством PHY 42A-42B запоминающих устройств), чтобы выполнять запланированные операции в запоминающем устройстве. Конкретнее, в варианте осуществления MCU 56A-56B могут конфигурироваться для предварительного синтезирования команд для каждой операции в запоминающем устройстве и постановки в очередь этих команд. MCU 56A-56B могут конфигурироваться для планирования команд, чтобы обеспечить эффективное использование пропускной способности запоминающего устройства. В варианте осуществления MIF 66 в каждом MCU 56A-56B могут реализовывать предварительный синтез команд и планирование команд.
[0071] Обращаясь теперь к фиг. 4, показана блок-схема одного варианта осуществления блока 58C интерфейса порта. Другие схемы 58A-58B и 58D-58E интерфейсов портов могут быть аналогичными, хотя и могут быть отличия в реализации для схем интерфейсов портов, которые соединяются с разными интерфейсами. В проиллюстрированном варианте осуществления блок 58C интерфейса порта включает в себя буферы 70A-70B, соединенные с интерфейсами считывания (AR) и записи (AW) для приема операций считывания и записи в запоминающее устройство соответственно, как проиллюстрировано на фиг. 4. Буферы 70A-70B соединяются с генератором 72 инициирования считывания и генератором 74 инициирования записи соответственно, которые соединяются с интерфейсами Rd0/Rd1 и интерфейсами Wr0/Wr1 соответственно. Генератор 72 инициирования считывания соединяется с таблицей 76 невыполненных транзакций считывания (ROTT), а генератор 74 инициирования записи соединяется с таблицей 78 невыполненных транзакций записи (WOTT). ROTT 76 соединяется с генератором 80 ответа считывания, который конфигурируется для формирования ответа считывания по интерфейсу. ROTT также соединяется с буфером 84 считывания, который соединяется для приема данных от любого MCU 56A-56B через мультиплексор 86 и предоставления считанных данных по интерфейсу. WOTT 78 соединяется с генератором 82 ответа записи, который конфигурируется для формирования ответа записи по интерфейсу. WOTT 78 также соединяется с буфером 88 перенаправления данных записи, который соединяется для предоставления данных MCU 56A-56B и соединяется для приема данных из буфера 70C, который соединяется для приема данных записи из интерфейса.
[0072] Для операции считывания буфер 70A может конфигурироваться для приема операции от интерфейса. Буфер 70A может предоставляться для захвата операции считывания и удержания ее для обработки генератором 72 инициирования считывания. В варианте осуществления буфер 70A может быть "скользящим" буфером с двумя входами, который позволяет захватить вторую операцию в случае задержки на период, пока недоступный ресурс станет доступным, соответственно упрощая синхронизацию распространения обратных запросов к источнику (источникам) по интерфейсу. Буферы 70B-70C аналогичным образом могут быть скользящими буферами с двумя входами. Другие варианты осуществления по желанию могут включать в себя дополнительные входы в скользящие буферы.
[0073] Генератор 72 инициирования считывания может конфигурироваться для декодирования адреса операции считывания, чтобы определить, какой канал запоминающего устройства адресуется операцией считывания. Генератор 72 инициирования считывания может конфигурироваться для передачи операции считывания в адресуемый канал запоминающего устройства по интерфейсу Rd0 или Rd1. В некоторых вариантах осуществления операция считывания может совмещать каналы запоминающего устройства. Каждая операция считывания может задавать размер (то есть количество байтов для считывания, начиная с адреса операции). Если сочетание размера и адреса указывает, что байты считываются из более чем одного канала, то генератор 72 инициирования считывания может конфигурироваться для формирования нескольких операций считывания для адресуемых каналов. Считанные данные от нескольких операций считывания могут накапливаться в буфере 84 считывания для возврата источнику.
[0074] Генератор 72 инициирования считывания также может конфигурироваться для обновления ROTT 76, назначая запись в ROTT 76 для отслеживания хода считывания. Как только данные приняты в буфере 84 считывания, ROTT 76 может конфигурироваться для сигнализации генератору 80 ответа считывания, чтобы тот формировал ответ считывания для передачи данных к источнику. Если считанные данные требуется возвращать по порядку в интерфейсе (например, в соответствии с протоколом интерфейса), то данные могут остаться буферизованными в буфере 84 считывания, пока не возвращены предыдущие считывания, а затем ROTT 76 может сигнализировать генератору 80 ответа считывания, чтобы тот передавал данные. ROTT 76 может соединяться для приема различных сигналов состояния от MCU 56A-56B для обновления состояния ожидающих операций считывания (не показано на фиг. 4).
[0075] Буфер 70B, генератор 74 инициирования записи и WOTT 78 могут работать аналогичным образом для операций записи. Однако данные по интерфейсу принимаются, а не передаются. Данные записи можно принять в буфере 88 перенаправления данных записи и можно перенаправить в текущее расположение соответствующей операции записи. WOTT 78 может сигнализировать ответ записи, как только гарантировано завершение записи, прекращая записи в интерфейсе с ответом записи раньше, чем это могло бы стать возможным иным способом.
[0076] Отметим, что хотя вариант осуществления, проиллюстрированный на фиг. 4, включает в себя интерфейс, который раздельно передает операции считывания и записи в запоминающее устройство (AR и AW соответственно), другие варианты осуществления могут включать в себя одну передающую среду для операций считывания и записи. В таком варианте осуществления один буфер 70 может принимать операции, и генератор 72 инициирования считывания и генератор 74 инициирования записи могут декодировать команду от интерфейса, чтобы различать операции считывания и записи. В качестве альтернативы может быть один генератор, который формирует операции считывания и записи и соответственно обновляет ROTT 74 или WOTT 78.
[0077] Обращаясь теперь к фиг. 5, показана блок-схема, иллюстрирующая один вариант осуществления MCIU 60A. MCIU 60B может быть аналогичным за исключением того, что он соединяется для приема входных данных Rd1 и Wr1 из каждого порта и соединяется с MCU 56B. В проиллюстрированном варианте осуществления MCIU включает в себя набор очередей считывания, например очередей 90A-90B считывания, показанный на фиг. 5, и набор очередей записи, например очередей 92A-92B записи. Может присутствовать одна очередь считывания и одна очередь записи для каждого порта. Каждая очередь считывания соединяется с выходом Rd0 одного из блоков 58A-58E интерфейсов портов и соединяется с арбитром 94A QoS. Каждая очередь записи соединяется с выходами Wr0 соответствующего одного из блоков 58A-58E интерфейсов портов и с арбитром 94B QoS. Выходы арбитров 94A-94B QoS предоставляются в MCU 56A в качестве входов считывания и записи соответственно. Арбитры 94A-94B QoS соединяются для приема данных из регистров 62 совместного использования полосы пропускания.
[0078] Два входа очереди считывания показаны в очереди 90A считывания, и другие очереди считывания могут быть аналогичными. Очередь 90A считывания включает в себя FID операции в запоминающем устройстве, параметр QoS операции, бит принудительного задания (P) и другое поле (Oth). FID и параметр QoS могут быть теми же значениями, которые передавались вместе с операцией в запоминающем устройстве по интерфейсу в контроллер 40 запоминающего устройства. В качестве альтернативы одно или оба значения для удобства могут перекодироваться контроллером 40 запоминающего устройства внутри себя. Бит принудительного задания может использоваться для принудительного задания более высокого приоритета у операции в запоминающем устройстве, если вторая операция в запоминающем устройстве располагается за этой операцией в запоминающем устройстве и является более высоким уровнем QoS, чем эта операция в запоминающем устройстве. Например, вторая операция в запоминающем устройстве может приниматься в том же порту, что и операция в запоминающем устройстве, и интерфейс в этом порту может требовать, чтобы данные возвращались в таком же порядке, как передаются операции в запоминающем устройстве. Путем принудительного задания более высокого приоритета операция в запоминающем устройстве может выполняться быстрее и соответственно может дать возможность быстрого обслуживания второй операции в запоминающем устройстве с более высоким уровнем QoS. Другое поле может включать в себя различную информацию для операции в запоминающем устройстве (например, информацию об адресе, размере и т.п.). Аналогичным образом, два входа очереди записи показаны в очереди 92A записи, и она может включать в себя поля, аналогичные очереди 90A считывания. Другое поле при желании может хранить иную информацию для записей по сравнению со считываниями.
[0079] Арбитры 94A-94B QoS могут разрешать конфликты между очередями 90A-90B считывания и очередями 92A-92B записи соответственно. Арбитры QoS могут учитывать как уровни QoS (которые указаны параметрами QoS в очередях), так и параметры совместного использования полосы пропускания из регистров совместного использования полосы пропускания. Выбранная операция считывания и записи (при наличии) передается в MCU 56A.
[0080] Отметим, что в некоторых вариантах осуществления может присутствовать один или несколько обходных путей из блока интерфейса порта в арбитры 94A и/или 94B QoS (не показано на фиг. 5). Например, считывания от блока 58C интерфейса порта CPU могут по обходному пути идти в арбитр 94A QoS, чтобы разрешить считывания с меньшей задержкой к процессорам. В некоторых вариантах осуществления одна или несколько операций в запоминающем устройстве в очередях 90A-90B и/или 92A-92B могут скрываться от арбитров 94A-94B QoS. Например, операции записи, для которых соответствующие данные еще не достигли контроллера 40 запоминающего устройства, могут скрываться от арбитров 92A-92B QoS, чтобы избежать операции блокирующей записи из других портов, для которых соответствующие данные достигли контроллера 40 запоминающего устройства.
[0081] Фиг. 6 - блок-схема операций, иллюстрирующая работу одного варианта осуществления каждого из арбитров 94A-94B QoS. Хотя для упрощения понимания этапы показаны в конкретном порядке, могут использоваться другие порядки. Этапы могут выполняться параллельно в комбинаторной логике в арбитрах 94A-94B QoS. Этапы, сочетания этапов и/или блок-схема операций в целом могут конвейерно обрабатываться за несколько тактов. Арбитры 94A-94B QoS могут конфигурироваться для реализации работы, проиллюстрированной на фиг. 6.
[0082] Если по меньшей мере одна операция в запоминающем устройстве в одной из очередей, с которой соединяется арбитр QoS, имеет уровень QoS RT в виде RTY или RTR, либо бит принудительного задания устанавливается по меньшей мере для одной операции в запоминающем устройстве (этап 100 ветвления, ветвь "да"), то арбитр QoS может разрешать конфликты между очередями, имеющими уровни RTY или RTR QoS и/или установленные биты принудительного задания (этап 102). Поскольку в этом варианте осуществления каждая очередь соответствует порту, арбитр QoS может эффективно разрешать конфликты между портами, имеющими уровни RTY или RTR QoS и/или установленные биты принудительного задания. Таким образом, в этом варианте осуществления AIU 54 может считать равными уровни QoS в виде RTG, BEF и LLT. AIU 54 в этом варианте осуществления может считать уровни RTR и RTY QoS и операции установки бита принудительного задания равными друг другу и имеющими более высокий приоритет, нежели другие уровни. Другие варианты осуществления могут иметь дополнительную крупность разбиения (например, RTR может считаться более высоким приоритетом, чем RTY, RTG и LLT могут считаться более высоким приоритетом, чем BEF, и т.п.). Более того, другие варианты осуществления могут реализовывать иную схему, нежели круговое обслуживание.
[0083] С другой стороны, если отсутствуют операции в запоминающем устройстве, имеющие уровни RTY или RTR QoS, и отсутствуют операции в запоминающем устройстве, имеющие установленные биты принудительного задания (этап 100 ветвления, ветвь "нет"), то арбитр QoS может разрешать конфликты между всеми очередями (всеми портами) (этап 104). Например, арбитр QoS может реализовать схему взвешенного циклического обслуживания с дефицитом между портами, где веса могут основываться на параметрах совместного использования полосы пропускания (или параметры совместного использования полосы пропускания могут быть весами). Другие варианты осуществления могут реализовывать другие арбитражные схемы между всеми портами.
[0084] Обращаясь теперь к фиг. 7, показана блок-схема одного варианта осуществления PSQ 64. В проиллюстрированном варианте осуществления PSQ 64 включает в себя блок 110 управления постановкой в очередь, набор очередей 112 транзакций, планировщик 114 и обходной мультиплексор 116. Блок 110 управления постановкой в очередь соединяется для приема операций считывания и записи от соответствующего MCIU 60A или 60B и соединяется с очередями 112 транзакций. Очереди 112 транзакций дополнительно соединяются с планировщиком 114, выход которого соединяется с обходным мультиплексором 116. Обходной мультиплексор 116 также соединяется для приема операции считывания и конфигурируется для выбора между операцией в запоминающем устройстве, запланированной планировщиком 114, и операцией считывания. Например, операция считывания может обходить очереди 112 транзакций, если отсутствуют считывания в очередях 112 транзакций и количество записей ниже некоторого порогового уровня. Другие варианты осуществления могут не реализовывать обход, и обходной мультиплексор 116 можно исключить.
[0085] Как проиллюстрировано на фиг. 7, очереди 112 транзакций могут включать в себя набор родственных очередей считывания, например очередей 118A-118B, и набор родственных очередей записи, например очередей 120A-120B. Количество родственных очередей считывания и родственных очередей записи может меняться от одного варианта осуществления к другому, и количество родственных очередей считывания не должно быть равным количеству родственных очередей записи. Каждая родственная очередь может хранить одну или несколько операций в запоминающем устройстве, которые определены блоком 110 управления постановкой в очередь как проявляющие родственность друг с другом. Таким образом, когда операция в запоминающем устройстве принимается блоком 110 управления постановкой в очередь, блок 110 управления постановкой в очередь может конфигурироваться для сравнения операции в запоминающем устройстве с родственными очередями 118A-118B (для операции считывания) или с родственными очередями 120A-120B (для операции записи). Если операция в запоминающем устройстве является родственной, то ее можно поставить в соответствующую родственную очередь. Если это не так, то операцию в запоминающем устройстве можно поставить в другую родственную очередь. В варианте осуществления родственную очередь считывания можно зарезервировать для считываний, которые не являются родственными, и аналогичным образом родственную очередь записи можно зарезервировать для записей, которые не являются родственными.
[0086] Планировщик 114 может конфигурироваться для планирования операций в запоминающем устройстве, которые нужно передать в MIF 66. Для операций считывания планировщик 114 может конфигурироваться для учета уровней QoS в родственных очередях 118A-118B считывания и количества родственных операций в запоминающем устройстве в каждой родственной очереди 118A-118B считывания. Один вариант осуществления более подробно описывается ниже. Однако в целом планировщик 114 может конфигурироваться для поддержки операций считывания, которые имеют высокие уровни QoS и большие количества родственных операций в запоминающем устройстве. Для операций записи уровни QoS могут аннулироваться в PSQ 64. То есть уровни QoS у операций записи могут отбрасываться, когда операции записи записываются в очереди 112 транзакций. Как проиллюстрировано в типовых входах в каждую из очередей 118A и 120A, операции считывания могут сохранять QoS, тогда как операции записи не могут. Планировщик 114 может конфигурироваться для планирования между операциями считывания и операцией записи, например, на основе заполненности очередей записи и уровней QoS в очередях считывания. Дополнительные подробности будут предоставлены ниже.
[0087] Отметим, что в некоторых вариантах осуществления родственные очереди 118A-118B считывания и родственные очереди 120A-120B записи можно конкретизировать физически (например, в виде отдельных структур данных или в виде одной или нескольких структур данных, которые разделяются логическими схемами в PSQ 64 и/или отделяются программно). В других вариантах осуществления родственные очереди могут быть виртуальными. То есть может присутствовать, например, очередь считывания и очередь записи, и может использоваться маркировка для идентификации родственных операций.
[0088] Фиг. 8 - блок-схема операций, иллюстрирующая работу одного варианта осуществления блока 110 управления постановкой в очередь в ответ на прием операции в запоминающем устройстве. Хотя для упрощения понимания этапы показаны в конкретном порядке, могут использоваться другие порядки. Этапы могут выполняться параллельно в комбинаторной логике в блоке 110 управления постановкой в очередь. Этапы, сочетания этапов и/или блок-схема операций в целом могут конвейерно обрабатываться за несколько тактов. Блок 110 управления постановкой в очередь может конфигурироваться для реализации работы, проиллюстрированной на фиг. 8. Блок 110 управления постановкой в очередь может конфигурироваться для реализации работы, проиллюстрированной на фиг. 8, параллельно для операции считывания и операции записи, принятых одновременно.
[0089] Блок 110 управления постановкой в очередь может сравнить принятую операцию с соответствующими родственными очередями 118A-118B или 120A-120B, чтобы определить, проявляет ли принятая операция родственность с операциями в очереди (этап 130 ветвления). В ответ на обнаружение родственности (и если для операции имеется место в родственной очереди) блок 110 управления постановкой в очередь может поставить операцию в родственную очередь (этап 132). В ответ на необнаружение родственности блок 110 управления постановкой в очередь может поставить операцию в пустую родственную очередь (этап 134).
[0090] Обнаружение родственности показано в развернутом представлении на фиг. 8 для одного варианта осуществления. Операция может быть родственной, если это попадание на страницу с другими операциями в родственной очереди (этап 136 ветвления, ветвь "да") или промах банка или ранга с другими операциями (этапы 138 и 140 ветвления соответственно, ветви "да"). Если это не так (этапы 136, 138 и 140 ветвления, ветви "нет"), то операция не является родственной с операциями в очереди. Обнаружение, проиллюстрированное этапами 136, 138 и 140 ветвления, может выполняться параллельно для каждой родственной очереди.
[0091] Фиг. 9 - блок-схема операций, иллюстрирующая работу одного варианта осуществления планировщика 114 для планирования между операциями считывания и операциями записи в очередях 112 транзакций. Хотя для упрощения понимания этапы показаны в конкретном порядке, могут использоваться другие порядки. Этапы могут выполняться параллельно в комбинаторной логике в планировщике 114. Этапы, сочетания этапов и/или блок-схема операций в целом могут конвейерно обрабатываться за несколько тактов. Планировщик 114 может конфигурироваться для реализации работы, проиллюстрированной на фиг. 9.
[0092] В варианте осуществления из фиг. 9 имеются три пороговые величины для заполненности очереди записи (то есть для количества операций записи в очередях 112 транзакций): верхняя, средняя и нижняя. Верхний уровень указывает больше операций записи в очередях 112 транзакций, чем указывает средний уровень, а средний уровень указывает больше операций записи в очередях 112 транзакций, чем указывает нижний уровень. Пороговые величины в различных вариантах осуществления могут быть неизменными или программируемыми.
[0093] Планировщик 114 может конфигурироваться для обнаружения блокирующей записи (этап 150 ветвления, ветвь "да") и может конфигурироваться для планирования блокирующей записи (этап 152). Блокирующая запись может быть операцией записи, которая имеет установленный бит принудительного задания (указывающий, что операция в запоминающем устройстве, имеющая более высокий уровень QoS, располагается за этой операцией записи). Операция блокирующей записи также может быть операцией записи, которая блокирует операцию считывания по такому же адресу (или операция записи обновляет по меньшей мере один байт, считанный операцией считывания).
[0094] Если блокирующие записи отсутствуют, то планирование операции считывания в зависимости от операций записи может основываться на кредитной системе. То есть операциям считывания и операциям записи может назначаться некоторое количество кредитов. Запланированная операция в запоминающем устройстве может потреблять один кредит из соответствующего счетчика кредитов. В проиллюстрированном варианте осуществления, как только израсходованы кредиты считывания и планируется операция считывания, кредиты для считываний и записей можно перезагрузить путем добавления начальных значений кредита к текущим счетчикам. Поскольку родственные операции можно планировать в пакете, то счетчики кредитов могут уменьшиться ниже нуля, когда планируется операция считывания или записи. То есть планировщик 114 может не прерывать пакет родственных операций, если счетчик кредитов для операций уменьшается до нуля. Для краткости обсуждение относительно фиг. 9 ниже может ссылаться на операции считывания в очереди считывания и операции записи в очереди записи. Очередь считывания может включать в себя сочетание родственных очередей 118A-118B считывания, а очередь записи может включать в себя сочетание родственных очередей 120A-120B записи.
[0095] В ответ на обнаружение, что очередь записи достигла верхней пороговой величины и имеется по меньшей мере один доступный кредит записи (этап 154 ветвления, ветвь "да"), планировщик 114 может конфигурироваться для планирования из очереди записи (этап 156). Если очередь записи не достигла верхней пороговой величины или нет доступных кредитов записи (этап 154 ветвления, ветвь "нет"), но планировщик 114 определяет, что имеется по меньшей мере одна операция считывания в очереди считывания и имеется доступный кредит считывания (этап 158 ветвления, ветвь "да"), то планировщик 114 может конфигурироваться для планирования из очереди считывания (этап 160). Если в очереди считывания нет операций считывания или отсутствуют доступные кредиты считывания (этап 158 ветвления, ветвь "нет"), но планировщик 114 определяет, что очередь записи достигла средней пороговой величины и имеется доступный кредит записи (этап 162 ветвления, ветвь "да"), то планировщик может конфигурироваться для планирования из очереди записи (этап 156). Если очередь записи не достигла средней пороговой величины или нет доступных кредитов записи (этап 162 ветвления, ветвь "нет"), но планировщик 114 определяет, что имеется по меньшей мере одна операция считывания в очереди считывания и нет доступного кредита считывания (этап 164 ветвления, ветвь "да"), то планировщик 114 может конфигурироваться для планирования из очереди считывания (этап 160). Как упоминалось ранее, планировщик 114 в этом случае также может конфигурироваться для перезагрузки кредитов считывания и записи. Если нет операции считывания в очереди считывания (этап 164 ветвления, ветвь "нет") и планировщик 114 определяет, что очередь записи достигла нижней пороговой величины (этап 166 ветвления, ветвь "да"), то планировщик 114 может конфигурироваться для планирования из очереди записи (этап 156).
[0096] Хотя блок-схема операций из фиг. 9 иллюстрирует отсутствие планирования из очереди записи, пока очередь записи не достигнет нижней пороговой величины, некоторые варианты осуществления могут планировать из очереди записи, если планировщик 114 простаивает в течение некоторого периода времени. Период времени может быть фиксированным или программируемым.
[0097] Фиг. 10 - блок-схема, иллюстрирующая работу одного варианта осуществления планировщика 114 для реализации планирования из очереди записи (этап 156). Как проиллюстрировано на фиг. 10, планировщик 114 может конфигурироваться для планирования родственной очереди 120A-120B записи, имеющей наибольшее количество операций записи (этап 168).
[0098] Фиг. 11 - таблица, иллюстрирующая различные состояния, в которых может находиться планировщик 114 для планирования операций считывания из очереди считывания (этап 160). Состояния иллюстрируются в увеличивающемся порядке приоритета. Таким образом, если бы больше одной записи в таблице из фиг. 11 соответствовало содержимому очереди считывания, то запись с наивысшим приоритетом может быть состоянием планировщика 114. Планировщик 114 может конфигурироваться для планирования операций, как проиллюстрировано в столбце "Планировать" из фиг. 11 для соответствующего состояния.
[0099] Таблица из фиг. 11 может относиться к количеству считываний в очереди считывания выше или ниже зеленой или желтой пороговой величины. Зеленая и желтая пороговые величины могут отличаться от уровней RTG и RTY QoS и могут быть аналогичны рассмотренным выше пороговым величинам очереди записи. Зеленые и желтые пороговые величины могут быть неизменными или программируемыми. Более того, родственная группа может относиться к запланированной. Родственная группа может быть группой операций в одной из родственных очередей 118A-118B считывания.
[0100] Состояние считывания планировщика может быть зеленым, если количество считываний в очереди считывания ниже желтой пороговой величины (и не превышало желтую пороговую величину с момента входа в зеленое состояние), и если в очереди нет считываний RTY или RTR. В зеленом состоянии планировщик 114 может конфигурироваться для планирования операции считывания LLT, при ее наличии. Также могут планироваться операции в родственной очереди считывания с операцией считывания LLT, при их наличии. Если нет операций считывания LLT, то может планироваться родственная группа, имеющая самую старую операцию считывания.
[0101] Состояние считывания планировщика может быть желтым LLT, если количество считываний выше зеленой пороговой величины (или не опускалось ниже зеленой пороговой величины с момента входа в желтое состояние LLT), и в очереди считывания нет операций считывания RTR или RTY. В желтом состоянии LLT планировщик 114 может конфигурироваться для планирования операций считывания LLT, при их наличии. Если нет операций считывания LLT, то планировщик 114 может конфигурироваться для планирования наибольшей родственной группы в очереди считывания. В варианте осуществления планировщик 114 может быть программируемым для планирования родственной группы, содержащей самую старую операцию считывания, если нет операций считывания LLT в желтом состоянии LLT, аналогично зеленому состоянию.
[0102] Состояние считывания планировщика может быть желтым, если имеется по меньшей мере одна операция считывания RTY, но нет операций RTR. В желтом состоянии планировщик 114 может конфигурироваться для планирования родственной группы, которая включает в себя самую старую операцию считывания RTY, или наибольшей родственной группы.
[0103] Состояние считывания планировщика может быть красным родственным, если имеется по меньшей мере одна операция считывания RTR в очереди, и планировщик 114 программируется для ассоциирования родственных операций с операциями RTR. В красном родственном состоянии планировщик 114 может конфигурироваться для планирования родственной группы, которая включает в себя самую старую операцию RTR. В противном случае может планироваться наибольшая родственная группа.
[0104] Состояние считывания планировщика может быть красным, если имеется по меньшей мере одна операция считывания RTR в очереди, и планировщик 114 программируется для планирования операций считывания RTR без их родственных операций. В красном состоянии планировщик 114 может конфигурироваться для планирования самой старой операции считывания RTR, или наибольшей родственной группы.
[0105] Вышеприведенное обсуждение обращалось к считываниям в очереди считывания как к "самым старым". В некоторых вариантах осуществления операции считывания могут рассматриваться как самые старые на основе времени, проведенного в очереди считывания. В других вариантах осуществления срок может измеряться другими способами. Например, самая старая операция считывания может измеряться в виде количества раз, которое операция считывания не запланирована в пользу другой операции считывания.
[0106] Когда планируется родственная группа, количество операций в запоминающем устройстве, запланированных из родственной группы, может быть количеством операций в группе вплоть до неизменного или программируемого размера пакета. В варианте осуществления, если планируемая в настоящее время родственная группа имеет меньше операций, чем размер пакета, то могут планироваться другие операции в запоминающем устройстве. Планировщик 114 может, например, планировать "отставших" (например, операции в запоминающем устройстве, которые были частью родственной группы, которая ранее планировалась, но прекратила из-за размера пакета), которые могут быть родственными с планируемой в настоящее время родственной группой. В качестве альтернативы планировщик 114 может конфигурироваться для выбора следующей наибольшей родственной группы.
[0107] Обращаясь теперь к фиг. 12, показана блок-схема одного варианта осуществления MIF 66. В варианте осуществления из фиг. 12 MIF 66 включает в себя блок 170 управления постановкой в очередь MIF, очереди 172 транзакций MIF, таблицу 174 открытых страниц, планировщик 176 предзаряда, планировщик 178 регистра режима (reg), планировщик 180 регенерации, планировщик 182 активации, планировщик 184 строба адреса столбца (CAS) и конечный планировщик 186. Блок 170 управления постановкой в очередь MIF соединяется для приема операции в запоминающем устройстве от PSQ 64 и соединяется с таблицей 174 открытых страниц и очередями 172 транзакций MIF. Таблица 174 открытых страниц соединяется с планировщиком 176 предзаряда. Очереди 172 транзакций MIF включают в себя очередь 188 активации и очередь 190 CAS, которые соединяются с планировщиком 182 активации и планировщиком 184 CAS соответственно. Планировщики 176, 178, 180, 182 и 184 соединяются с конечным планировщиком 186, который соединяется для передачи команды к одной из PHY 42A или 42B запоминающих устройств в зависимости от того, реализуется MIF 66 в MCU 56A или 56B.
[0108] Блок 170 управления постановкой в очередь MIF может конфигурироваться для сравнения принятой операции в запоминающем устройстве с таблицей 174 открытых страниц и очередями 172 транзакций MIF, и может конфигурироваться для предварительного синтезирования команд для выполнения операций в запоминающем устройстве. В частности, если страница, соответствующая принятой операции в запоминающем устройстве, будет открыта командой активации в очереди, то принятая операция в запоминающем устройстве может быть поставлена в очередь в качестве операции CAS. Если страница, соответствующая принятой операции в запоминающем устройстве, уже открыта и нет конфликтующих активаций страницы в очереди, то принятая операция в запоминающем устройстве может быть поставлена в очередь в качестве операции CAS. Если страница, соответствующая принятой операции в запоминающем устройстве, не открыта, то операция в запоминающем устройстве может быть поставлена в очередь в качестве команды активации и команды CAS. Каждой команде можно назначить счетчик срока (поле срока в очереди 188 активации и очереди 190 CAS). Значение счетчика срока может основываться на параметре QoS у операции считывания запоминающего устройства и может быть короче для более высоких уровней QoS, чем для более низких уровней QoS. Для операций записи в запоминающее устройство счетчик срока может быть таким же, как наименьший уровень QoS для операций считывания запоминающего устройства, или может быть длиннее наименьшего уровня QoS. Срок в различных вариантах осуществления может подсчитываться как количество операций, которые обходят эту операцию, или как количество тактов. Как только счетчик срока уменьшается до нуля, соответствующая операция может планироваться в качестве наивысшего приоритета в MIF 66.
[0109] Планировщик 182 активации и планировщик 184 CAS может конфигурироваться для планирования команд активации и команд CAS из соответствующих очередей 188 и 190. Команда активации может открывать страницу в запоминающем устройстве, а команда CAS может вызывать считывание или запись данных на странице.
[0110] Планировщик 176 предзаряда может конфигурироваться для планирования команды предзаряда для банка, когда истекает таймер простоя для страницы в таблице 174 открытых страниц. Таймер простоя может перезагружаться каждый раз, когда принятая операция в запоминающем устройстве попадает в открытую страницу, и может уменьшаться с каждым тактом или для каждой операции в запоминающем устройстве, которая не попадает в открытую страницу. Если конфликт страницы с вновь принятой операцией в запоминающем устройстве вызывает закрытие страницы, то последняя команда CAS на предыдущей странице может использоваться для предзаряда банка.
[0111] Планировщик 178 регистра режима может конфигурироваться для формирования команд считывания регистра запоминающего устройства (MRR) и записи в регистр запоминающего устройства (MRW) в соответствии с конфигурируемыми таймерами и/или в ответ на запросы таймера запоминающего устройства. Планировщик 180 регенерации может формировать команды регенерации, когда нужна регенерация.
[0112] Конечный планировщик 186 может выбирать между планировщиками 176, 178, 180, 182 и 184 для планирования команды для схемы PHY запоминающего устройства. Этот планировщик 186 также может обеспечивать соблюдение некоторых протоколов, например цикла оборачиваемости между операциями считывания и записи, и т.п.
[0113] Отметим, что очереди 188 и 190 активации и CAS могут быть виртуальными. То есть один и тот же вход в очереди 172 транзакций MIF может использоваться для команды активации и команды CAS для заданной операции в запоминающем устройстве. Если активация нужна для заданной операции в запоминающем устройстве, то вход можно инициализировать в виде команды активации и можно преобразовать в команду CAS, как только выдается активация. Если активация не нужна для заданной операции в запоминающем устройстве, то вход можно инициализировать в виде команды CAS.
[0114] Дополнительно отметим, что в дополнение к схемам, проиллюстрированным на фиг. 7 и 12, может присутствовать информационный канал (не показан) в MCU 56A-56B для переноса данных записи из AIU 54 в запоминающее устройство и переноса считанных данных из запоминающего устройства в AIU 54.
[0115] Фиг. 13 - блок-схема операций, иллюстрирующая работу одного варианта осуществления блока 170 управления постановкой в очередь MIF в ответ на операцию в запоминающем устройстве от PSQ 64. Хотя для упрощения понимания этапы показаны в конкретном порядке, могут использоваться другие порядки. Этапы могут выполняться параллельно в комбинаторной логике в блоке 170 управления постановкой в очередь MIF. Этапы, сочетания этапов и/или блок-схема операций в целом могут конвейерно обрабатываться за несколько тактов. Блок 170 управления постановкой в очередь MIF может конфигурироваться для реализации работы, проиллюстрированной на фиг. 13.
[0116] Блок 170 управления постановкой в очередь MIF может конфигурироваться для определения, нужна ли команда активации для принятой операции в запоминающем устройстве (например, операция в запоминающем устройстве не попадает в открытую страницу или страницу, которая будет открыта командой активации, ранее поставленной в очередь) (этап 196 ветвления). Если это так (этап 196 ветвления, ветвь "да"), то блок 170 управления постановкой в очередь MIF может конфигурироваться для синтезирования команды активации и постановки команды активации в очередь 188 активации (этап 192). Блок 170 управления постановкой в очередь MIF также может конфигурироваться для синтезирования команды CAS и постановки команды CAS в очередь 190 CAS (этап 194). В каждом случае может инициализироваться счетчик срока (на основе параметра QoS для считываний).
[0117] Фиг. 14 - блок-схема операций, иллюстрирующая работу одного варианта осуществления планировщика 182 активации. Планировщик 182 активации может конфигурироваться для сканирования команд активации в очереди 188 активации на предмет команды активации, которая устарела (например, ее счетчик срока равен нулю). Если обнаруживается такая команда активации, то активация может выбрать устаревшую команду активации (этап 200). В противном случае планировщик 182 активации может выбрать команду активации в головном кластере, который находится в банке, имеющем больше всего ожидающих операций. Головной кластер может быть группой активаций одного типа считывания/записи, которые являются самыми старыми командами активации в очереди 188 активации. Если требованиям отвечает более одной команды активации, то может выбираться самая старая команда активации, удовлетворяющая требованиям.
[0118] Фиг. 15 - блок-схема операций, иллюстрирующая работу одного варианта осуществления планировщика 184 CAS. Хотя для упрощения понимания этапы показаны в конкретном порядке, могут использоваться другие порядки. Этапы могут выполняться параллельно в комбинаторной логике в планировщике 184 CAS. Этапы, сочетания этапов и/или блок-схема операций в целом могут конвейерно обрабатываться за несколько тактов. Планировщик 184 CAS может конфигурироваться для реализации работы, проиллюстрированной на фиг. 15.
[0119] Как и планировщик 182 активации, планировщик 184 CAS может конфигурироваться для обнаружения устаревших команд CAS и выбора их первыми для передачи (этап 202 ветвления, ветвь "да" и этап 204). Если нет устаревших команд CAS (этап 202 ветвления, ветвь "нет"), и последняя команда CAS была считыванием (этап 206 ветвления, ветвь "да"), то планировщик 184 CAS может конфигурироваться для выбора следующей команды CAS считывания для того же ранга, что и последняя команда CAS, или выбора команды CAS считывания с самыми конфликтующими операциями, ждущими команду CAS для завершения, чтобы страницу можно было закрыть (этап 208). Аналогичным образом, если последняя команда CAS была записью (этап 206 ветвления, ветвь "нет", и этап 210 ветвления, ветвь "да"), то планировщик 184 CAS может конфигурироваться для выбора следующей команды CAS записи для того же ранга, что и последняя команда CAS, или выбора команды CAS записи с самыми конфликтующими операциями, ждущими команду CAS для завершения, чтобы страницу можно было закрыть (этап 212). Если ничего из вышеупомянутого не применяется, то планировщик 184 CAS может конфигурироваться для выбора самой старой команды CAS в очереди 190 CAS (этап 214). Отметим, что на этапах 204, 208, 212 и 214, если требованиям отвечает более одной команды CAS, то может выбираться самая старая команда CAS.
[0120] Фиг. 16 - таблица, иллюстрирующая работу одного варианта осуществления конечного планировщика 186. Записи в таблице иллюстрируются в уменьшающемся приоритете сверху вниз. Если нужно передать команду остановки пакета (BST) или команду CAS прерывания, то этим командам можно задать наивысший приоритет. Следующей может быть команда от планировщика 178 регистра режима, с последующей командой автоматической регенерации от планировщика 180 регенерации. Команда CAS от планировщика 184 CAS может быть следующей по приоритету для команды автоматической регенерации, чем команда активации от планировщика 182 активации. Команда предзаряда от планировщика 176 предзаряда может идти за командой активации по приоритету, и наименьшей по приоритету на фиг. 16 может быть команда автономной регенерации, используемая для входа в энергосберегающий режим.
[0121] Как вкратце обсуждалось выше, операция в запоминающем устройстве может поступать в контроллер 40 запоминающего устройства от источника с высокой важностью, назначенной уровню QoS у операции в запоминающем устройстве. Когда операция в запоминающем устройстве обрабатывается в контроллере 40 запоминающего устройства и подходит к передаче в запоминающее устройство, важность уровня QoS может уменьшиться, а важность эффективности запоминающего устройства (SDRAM) может увеличиться. Фиг. 17 схематически иллюстрирует эту операцию. MCIU 60 (например, 60A или 60B), PSQ 64 и MIF 66 иллюстрируются вместе с этапами, иллюстрирующими средства управления планированием на каждом уровне. В MCIU 60 уровни QoS у операций считывания и записи вместе с параметрами совместного использования полосы пропускания могут управлять выбором операций считывания и записи для передачи в PSQ 64. Эффективность запоминающего устройства на этом уровне может не рассматриваться (этап 222). В PSQ 64 отбрасывается QoS для записей. Родственность управляет выбором записей, и сочетание QoS и родственности может в первую очередь управлять выбором считываний (этап 224). Соответственно, вопросы QoS и эффективности запоминающего устройства могут лучше уравновешиваться в этой PSQ 64. В MIF 66 QoS отбрасывается для всех операций в запоминающем устройстве (хотя QoS может быть отражено в параметрах старения), и вопросы эффективности SDRAM могут в первую очередь управлять выбором команд (этап 226).
[0122] Также, как вкратце обсуждалось выше, контроллер 40 запоминающего устройства может поддерживать повышение уровня QoS у ожидающих операций в запоминающем устройстве. Различные варианты осуществления могут поддерживать один или несколько механизмов сигнализации повышения уровня QoS: внутриполосное, боковой полосы и старение.
[0123] Фиг. 18 - блок-схема, иллюстрирующая один вариант осуществления механизма внутриполосного повышения QoS. В этом механизме прием операции в запоминающем устройстве в том же потоке, что и предыдущая операция в запоминающем устройстве, и вновь принятая операция в запоминающем устройстве, имеющая более высокий уровень QoS, чем предыдущая операция в запоминающем устройстве, могут побудить контроллер 40 запоминающего устройства повысить уровень QoS у предыдущей операции в запоминающем устройстве. Часть MCIU 60A иллюстрируется вместе с частью PSQ 64 в MCU 56A. MCIU 60B и PSQ 64 в MCU 64B могут быть аналогичными.
[0124] MCIU 60A может принимать операции в запоминающем устройстве из каждого порта, как обсуждалось ранее, и может поставить вновь принятые операции в запоминающем устройстве в одну из очередей 90A-90B или 92A-92B для считываний и записей соответственно. Более того, как проиллюстрировано на фиг. 18, MCIU 60A может сравнить FID и параметры QoS у вновь принятой операции в запоминающем устройстве с соответствующими значениями у поставленных в очередь операций в запоминающем устройстве из того же порта (например, RdQ0 90A может сравнить FID и параметры QoS у вновь принятой операции в запоминающем устройстве в порту 0, или порту 44A G0, а RdQ4 90B может сравнить FID и параметры QoS для вновь принятой операции в запоминающем устройстве в порту 4, или порту 44E RT). В ответ на вновь принятую операцию в запоминающем устройстве, имеющую более высокий уровень QoS, из того же порта и потока, как и операция в запоминающем устройстве в очереди, MCIU 60A может повысить уровень QoS у операции в запоминающем устройстве в очереди до более высокого уровня QoS. В некоторых вариантах осуществления повышение QoS может ограничиваться определенными портами. Например, один вариант осуществления может ограничить повышение QoS портом 44E RT. Другие варианты осуществления могут ограничить повышение QoS портами, в которых может быть принят трафик RT. В таких вариантах осуществления могут сравниваться только вновь принятые операции в запоминающем устройстве из портов, для которых поддерживается повышение.
[0125] Аналогичным образом FID и параметры QoS могут приниматься родственными очередями 118A-118B считывания в PSQ 64. PSQ 64 может повысить уровень QoS у операции считывания в очереди в ответ на вновь принятую операцию в запоминающем устройстве из того же порта и потока, которая имеет более высокий уровень QoS. В некоторых вариантах осуществления FID и параметры QoS, принятые PSQ 64, могут быть теми же вновь принятыми FID и параметрами QoS, что приняты MCIU 60A. То есть PSQ 64 и MCIU 60A могут повышать уровни QoS параллельно для каждой вновь принятой операции в запоминающем устройстве. В других вариантах осуществления MCIU 60A может выполнять повышение QoS в ответ на вновь принятую операцию в запоминающем устройстве, а PSQ 64 может выполнять повышение QoS в ответ на операцию в запоминающем устройстве, передаваемую от MCIU 60A к PSQ 64.
[0126] Хотя фиг. 18 иллюстрирует сравнение FID и параметров QoS с очередями 90A-90B считывания, сравнение также может выполняться с очередями 92A-92B записи для повышения параметров QoS. Однако, как обсуждалось ранее, параметры QoS для операций записи могут отбрасываться в PSQ 66, и соответственно в таких вариантах осуществления может отсутствовать сравнение с родственными очередями 120A-120B записи.
[0127] Фиг. 19 - блок-схема операций, иллюстрирующая работу одного варианта осуществления контроллера 40 запоминающего устройства для повышения уровней QoS для механизма внутриполосного повышения. Хотя для упрощения понимания этапы на фиг. 19 показаны в конкретном порядке, могут использоваться другие порядки. Этапы, сочетания этапов и/или блок-схема операций в целом могут конвейерно обрабатываться за несколько тактов. Контроллер 40 запоминающего устройства может конфигурироваться для реализации работы на фиг. 19. Конкретнее, каждое из PSQ 64 и MCIU 60A-60B могут включать в себя схемы повышения, сконфигурированные для реализации работы, показанной на фиг. 19.
[0128] Если вновь принятая операция в запоминающем устройстве идет из того же порта, что и операция в запоминающем устройстве в очереди (этап 230 ветвления, ветвь "да"), из того же потока, что указан с помощью FID (этап 232 ветвления, ветвь "да"), и операция в запоминающем устройстве в очереди является RT-операцией в запоминающем устройстве (этап 234 ветвления, ветвь "да"), то контроллер 40 запоминающего устройства может повысить уровень QoS у операции в очереди до более высокого уровня QoS у вновь принятой операции в запоминающем устройстве (этап 236). В одном варианте осуществления очереди, в которых поддерживается повышение QoS, могут включать в себя адресуемые запоминающие устройства для выполнения сравнения, и совпадение может разрешить запись вновь принятого параметра QoS в соответствующий вход очереди.
[0129] Если вновь принятая операция в запоминающем устройстве идет из того же порта и потока, что и операция в запоминающем устройстве в очереди (этапы 230 и 232 ветвления, ветви "да"), но операция в запоминающем устройстве в очереди не является RT-операцией в запоминающем устройстве (этап 234 ветвления, ветвь "нет"), то контроллер 40 запоминающего устройства может конфигурироваться для установки бита P для операции в запоминающем устройстве в очереди (этап 238). Аналогичным образом, если вновь принятая операция в запоминающем устройстве идет из того же порта, что и операция в запоминающем устройстве в очереди, но из другого потока (этап 230 ветвления, ветвь "да", и этап 232 ветвления, ветвь "нет"), то контроллер 40 запоминающего устройства может конфигурироваться для установки бита P для операции в запоминающем устройстве в очереди (этап 238).
[0130] Фиг. 20 - блок-схема, иллюстрирующая добавление интерфейса боковой полосы для запроса повышения QoS. В варианте осуществления из фиг. 20 интерфейс боковой полосы включается для порта 44E RT. Другие варианты осуществления могут реализовывать один или несколько дополнительных интерфейсов боковой полосы для других портов. Как видно из названия, интерфейс боковой полосы может идти в дополнение к "обычному" интерфейсу для передачи операций в запоминающем устройстве в контроллер 40 запоминающего устройства. Обычный интерфейс (включающий в себя Cmd, FID и параметр QoS, как показано на фиг. 1) иллюстрируется стрелкой 240. Интерфейс боковой полосы может включать в себя сигнал запроса повышения QoS боковой полосы (SbQoSUpgd), параметр QoS боковой полосы (SbQoS), FID боковой полосы (SbFID), маску боковой полосы (SbMask) и указание считывания боковой полосы (SbRd) от периферийных устройств 22 RT в порт 44E RT, и подтверждение боковой полосы (SbAck) из порта 44E RT к периферийным устройствам 22 RT.
[0131] Периферийные устройства 22 RT могут устанавливать сигнал SbQoSUpgd для запроса повышения боковой полосы и могут передавать параметр QoS, представляющий повышенный уровень QoS, в SbQoS. SbFID может идентифицировать поток, а SbMask может обеспечивать универсальность путем разрешения сокрытия части SbFID и FID в очереди при сравнении. Индикатор SbRd может указывать, нужно ли сравнивать считывания или записи для повышения. Порт 44E RT может подтверждать запрос повышения с использованием SbAck. В одном варианте осуществления аппаратные средства в контроллере 40 запоминающего устройства для выполнения повышения боковой полосы могут быть аналогичны показанным на фиг. 18, и процесс может быть аналогичен показанному на фиг. 19. Вновь принятую операцию в запоминающем устройстве можно заменить принимаемым запросом боковой полосы в вышеприведенном описании.
[0132] Фиг. 21 - блок-схема операций, иллюстрирующая обобщенную работу контроллера 40 запоминающего устройства для реализации повышения QoS на основе старения (данных). Как упоминалось ранее, очереди 172 транзакций MIF могут реализовывать повышение приоритета на основе старения. Другие варианты осуществления аналогичным образом могут реализовывать повышения QoS на основе старения. Хотя для упрощения понимания этапы на фиг. 21 показаны в конкретном порядке, могут использоваться другие порядки. Этапы могут выполняться параллельно в комбинаторной логике в контроллере 40 запоминающего устройства. Этапы, сочетания этапов и/или блок-схема операций в целом могут конвейерно обрабатываться за несколько тактов. Обновление счетчиков срока и повышение соответствующих операций в запоминающем устройстве может выполняться параллельно для каждой операции.
[0133] Контроллер 40 запоминающего устройства может назначить счетчик срока каждой операции в запоминающем устройстве при поступлении операции в очередь (например, очереди 90 или 92 MCIU, очереди 112 транзакций PSQ и/или очереди 172 транзакций MIF) (этап 250). Счетчики старения могут отличаться в каждой очереди и не должны переноситься из очереди в очередь. В качестве альтернативы счетчик старения может назначаться в MCIU и переноситься по другим очередям. Начальное значение счетчика старения может основываться на параметре QoS каждой операции в запоминающем устройстве (например, более короткие значения для более высоких значений QoS). Начальные значения могут быть неизменными или программируемыми.
[0134] Контроллер 40 запоминающего устройства может обнаружить событие обновления, которое обновляет заданный счетчик старения (этап 252 ветвления). Событие обновления может меняться в зависимости от того, как измеряется счетчик старения. Например, некоторые варианты осуществления могут измерять срок в виде количества раз, которое операция в запоминающем устройстве обходится младшей операцией в запоминающем устройстве. В таких вариантах осуществления событие обновления может быть обходом операции в запоминающем устройстве. Другие варианты осуществления могут считать такты как срок, и событие обновления может быть передним фронтом или задним фронтом синхроимпульса. Еще одни варианты осуществления могут задавать срок другими способами, и событие обновления можно обнаружить исходя из этого. В ответ на обнаружение события обновления (этап 252 ветвления, ветвь "да") контроллер 40 запоминающего устройства может уменьшить счетчик срока (этап 254).
[0135] Контроллер 40 запоминающего устройства может конфигурироваться для обнаружения, закончился ли данный счетчик срока (этап 256 ветвления). Если это так (этап 256 ветвления, ветвь "да"), то контроллер 40 запоминающего устройства может конфигурироваться для повышения уровня QoS до следующего более высокого уровня в том же наборе уровней QoS (этап 258). Если повышенный уровень QoS не является наивысшим уровнем (например, RTR, этап 260 ветвления, ветвь "нет"), то контроллер 40 запоминающего устройства может назначить новое значение счетчика срока на основе нового уровня QoS для дальнейшего повышения на основе старения (этап 262). Соответственно, в этом варианте осуществления уровень QoS у операции в запоминающем устройстве можно повышать через каждый промежуточный уровень QoS до наивысшего уровня QoS, когда стареет операция в запоминающем устройстве.
[0136] Обращаясь далее к фиг. 22, показана блок-схема одного варианта осуществления системы 350. В проиллюстрированном варианте осуществления система 350 включает в себя по меньшей мере один экземпляр интегральной схемы 10, соединенной с внешним запоминающим устройством 12 (например, запоминающим устройством 12A-12B на фиг. 1). Интегральная схема 10 соединяется с одним или несколькими периферийными устройствами 354 и внешним запоминающим устройством 12. Также предоставляется источник 356 питания, который подает напряжения питания на интегральную схему 10, а также одно или несколько напряжений питания на запоминающее устройство 12 и/или периферийные устройства 354. В некоторых вариантах осуществления может включаться более одного экземпляра интегральной схемы 10 (и также может включаться более одного внешнего запоминающего устройства 12).
[0137] Периферийные устройства 354 могут включать в себя любые требуемые схемы в зависимости от типа системы 350. Например, в одном варианте осуществления система 350 может быть мобильным устройством (например, персональным цифровым помощником (PDA), смартфоном и т.п.), а периферийные устройства 354 могут включать в себя устройства для различных типов беспроводной связи, например WiFi, Bluetooth, сотовая связь, система глобального позиционирования и т.п. Периферийные устройства 354 также могут включать в себя дополнительное запоминающее устройство, включая RAM, твердотельное запоминающее устройство или дисковое запоминающее устройство. Периферийные устройства 354 могут включать в себя устройства интерфейса пользователя, такие как экран дисплея, включающий в себя сенсорные экраны или мультисенсорные экраны, клавиатура или другие устройства ввода, микрофоны, динамики и т.п. В других вариантах осуществления система 350 может быть любым типом вычислительной системы (например, настольным персональным компьютером, переносным компьютером, рабочей станцией и т.п.).
[0138] Многочисленные изменения и модификации станут очевидными специалистам в данной области техники, если вышеприведенное раскрытие изобретения полностью понято. Подразумевается, что нижеследующая формула изобретения будет интерпретирована как охватывающая все такие изменения и модификации.
Изобретение относится к вычислительной технике. Технический результат заключается в оптимизации пропускной способности запоминающего устройства. Контроллер запоминающего устройства содержит множество портов, в котором каждый порт соединяется для приема операций в запоминающем устройстве из одного или нескольких источников и в котором каждый порт предназначается для трафика операции в запоминающем устройстве конкретного типа, причем контроллер запоминающего устройства содержит блок интерфейса агента, сконфигурированный для переключения трафика операции в запоминающем устройстве с множества портов на множество блоков каналов запоминающего устройства в ответ на относительные параметры качества обслуживания (QoS) для операций в запоминающем устройстве, и причем в ответ на прием первой операции в запоминающем устройстве из первого источника, который передал одну или более предыдущих операций в запоминающем устройстве, и дополнительно в ответ на первый параметр QoS, соответствующий первой операции в запоминающем устройстве, указывающий более высокий уровень обслуживания, чем предыдущие параметры QoS, соответствующие предыдущим операциям в запоминающем устройстве, контроллер запоминающего устройства конфигурируется для повышения предыдущих параметров QoS до уровня обслуживания, указанного первым параметром QoS. 2 н. и 15 з.п. ф-лы, 22 ил.
1. Контроллер запоминающего устройства, содержащий множество портов, в котором каждый порт соединяется для приема операций в запоминающем устройстве из одного или нескольких источников, и в котором каждый порт предназначается для трафика операции в запоминающем устройстве конкретного типа, причем контроллер запоминающего устройства содержит блок интерфейса агента, сконфигурированный для переключения трафика операции в запоминающем устройстве с множества портов на множество блоков каналов запоминающего устройства в ответ на относительные параметры качества обслуживания (QoS) для операций в запоминающем устройстве, и причем в ответ на прием первой операции в запоминающем устройстве из первого источника, который передал одну или более предыдущих операций в запоминающем устройстве, и дополнительно в ответ на первый параметр QoS, соответствующий первой операции в запоминающем устройстве, указывающий более высокий уровень обслуживания, чем предыдущие параметры QoS, соответствующие предыдущим операциям в запоминающем устройстве, контроллер запоминающего устройства конфигурируется для повышения предыдущих параметров QoS до уровня обслуживания, указанного первым параметром QoS.
2. Контроллер запоминающего устройства по п. 1, в котором определение параметров QoS отличается для разных типов трафика и в котором блок интерфейса агента конфигурируется для сравнения параметров QoS с разными определениями для переключения трафика операции в запоминающем устройстве.
3. Контроллер запоминающего устройства по п. 2, в котором по меньшей мере один из портов предназначается для трафика реального масштаба времени, и в котором параметры QoS для трафика реального масштаба времени отражают разные уровни срочности в источнике.
4. Контроллер запоминающего устройства по п. 3, в котором по меньшей мере другой из портов предназначается для трафика от процессора, причем процессорный трафик не относится к реальному масштабу времени, и причем параметры QoS указывают обслуживание либо наилучшее из возможного, либо с малой задержкой.
5. Контроллер запоминающего устройства по п. 4, в котором по меньшей мере другой из портов предназначается для трафика от графического блока, причем графический трафик не относится к реальному масштабу времени.
6. Контроллер запоминающего устройства по п. 1, дополнительно содержащий множество блоков каналов запоминающего устройства, причем множество блоков каналов запоминающего устройства конфигурируется для хранения параметров QoS для операций считывания и аннулирования параметров QoS для операций записи и причем множество блоков каналов запоминающего устройства конфигурируется для повышения параметров QoS для операций считывания из первого источника в ответ на первый параметр QoS, указывающий более высокий уровень обслуживания, чем параметры QoS для операций считывания.
7. Контроллер запоминающего устройства по п. 1, дополнительно содержащий множество блоков каналов запоминающего устройства, соединенных с блоком интерфейса агента, в котором блоки каналов запоминающего устройства каждый содержат очередь предварительной сортировки и блок интерфейса запоминающего устройства для соединения с запоминающим устройством, и в котором блок интерфейса агента конфигурируется для планирования операций в запоминающем устройстве из портов на заданный блок канала запоминающего устройства в ответ на параметры QoS операций в запоминающем устройстве, и в котором блок интерфейса агента конфигурируется для переупорядочения операций в запоминающем устройстве в заданный блок канала запоминающего устройства на основе параметров QoS, и в котором блоки каналов запоминающего устройства конфигурируются для группировки операций в запоминающем устройстве в очереди предварительной сортировки в соответствии с тем, какие операции в запоминающем устройстве предполагается эффективно выполнять вместе для запоминающего устройства, и в котором блоки каналов запоминающего устройства конфигурируются для планирования групп на основе параметра QoS наивысшего уровня в каждой группе, и в котором блоки каналов запоминающего устройства конфигурируются для предварительного синтезирования операций в запоминающем устройстве в команды для запоминающего устройства, и в котором блок интерфейса запоминающего устройства конфигурируется для переупорядочения команд на основе эффективного доступа к запоминающему устройству.
8. Контроллер запоминающего устройства по п. 7, в котором операции в запоминающем устройстве содержат операции считывания и операции записи, и в котором очереди предварительной сортировки конфигурируются для постановки в очередь отдельно операций считывания и операций записи, и в котором очереди предварительной сортировки конфигурируются для аннулирования параметров QoS для операций записи и планирования между операциями считывания и операциями записи в ответ на заполненность очередей записи.
9. Контроллер запоминающего устройства по п. 7, в котором предполагается, что операции в запоминающем устройстве эффективно выполнять вместе, если верно по меньшей мере одно из следующего: (i) операции в запоминающем устройстве относятся к одной и той же странице в запоминающем устройстве; (ii) они относятся к разным рангам запоминающего устройства; или (iii) они относятся к разным банкам запоминающего устройства.
10. Контроллер запоминающего устройства по п. 1, при этом контроллер интегрирован в интегральную схему, причем интегральная схема дополнительно содержит:
одно или более периферийных устройств реального масштаба времени (RT);
по меньшей мере один процессор; и
одно или более периферийных устройств, не относящихся к реальному масштабу времени (NRT); и
причем одно или более периферийных устройств RT соединяются с портом RT из множества портов, упомянутый по меньшей мере один процессор соединяется с первым портом NRT из множества портов, и причем упомянутые одно или более периферийных устройств NRT соединяются со вторым портом NRT из множества портов, и причем контроллер запоминающего устройства конфигурируется для захвата операций в запоминающем устройстве из множества портов и планирования операций в запоминающем устройстве в одном или нескольких каналах запоминающего устройства, причем определения планирования между операциями в запоминающем устройстве, принятыми в разных портах, частично зависят от конкретных портов, в которых принимались операции в запоминающем устройстве.
11. Способ для управления запоминающей системой, содержащий этапы, на которых:
принимают операции в запоминающем устройстве в множестве портов в контроллере запоминающего устройства, в котором каждый порт соединяется для приема операций в запоминающем устройстве из одного или нескольких источников и в котором каждый порт предназначается для трафика операции в запоминающем устройстве конкретного типа;
переключают трафик операции в запоминающем устройстве с множества портов на множество блоков каналов запоминающего устройства в контроллере запоминающего устройства в ответ на относительные параметры качества обслуживания (QoS) для операций в запоминающем устройстве;
принимают первую операцию в запоминающем устройстве из первого источника, который передал одну или более предыдущих операций в запоминающем устройстве; и
в ответ на первый параметр QoS, соответствующий первой операции в запоминающем устройстве, указывающий более высокий уровень обслуживания, чем предыдущие параметры QoS, соответствующие предыдущим операциям в запоминающем устройстве, контроллер запоминающего устройства повышает предыдущие параметры QoS до уровня обслуживания, указанного первым параметром QoS.
12. Способ по п. 11, в котором этап, на котором принимают операции в запоминающем устройстве, содержит этапы, на которых:
принимают первую операцию в запоминающем устройстве в порту реального масштаба времени (RT) из множества портов, причем первая операция в запоминающем устройстве имеет первый параметр качества обслуживания (QoS), заданный в соответствии с набором уровней QoS RT;
принимают вторую операцию в запоминающем устройстве в порту, не относящемуся к реальному масштабу времени (NRT), из множества портов параллельно с первой операцией в запоминающем устройстве, причем вторая операция в запоминающем устройстве имеет второй параметр QoS, заданный в соответствии с набором уровней QoS NRT; и
в котором этап, на котором переключают трафик операции в запоминающем устройстве, содержит этап, на котором:
контроллер запоминающего устройства планирует первую операцию в запоминающем устройстве и вторую операцию в запоминающем устройстве для доступа к запоминающему устройству по меньшей мере частично в ответ на первый параметр QoS и второй параметр QoS.
13. Способ по п. 11, дополнительно содержащий этапы, на которых:
множество блоков каналов запоминающего устройства сохраняет параметры QoS для операций считывания;
множество блоков каналов запоминающего устройства аннулирует параметры QoS для операций записи; и
множество блоков каналов запоминающего устройства повышает параметры QoS для операций считывания из первого источника в ответ на первый параметр QoS, указывающий более высокий уровень обслуживания, чем параметры QoS для операций считывания.
14. Способ по п. 11, в котором блоки каналов запоминающего устройства каждый содержат очередь предварительной сортировки и блок интерфейса запоминающего устройства для соединения с запоминающим устройством и в котором этап, на котором переключают трафик операции в запоминающем устройстве, содержит этапы, на которых:
планируют операции в запоминающем устройстве из портов на заданный блок канала запоминающего устройства в ответ на параметры QoS операций в запоминающем устройстве;
переупорядочивают операции в запоминающем устройстве в заданный блок канала запоминающего устройства на основе параметров QoS.
15. Способ по п. 14, дополнительно содержащий этапы, на которых:
множество блоков каналов запоминающего устройства группирует операции в запоминающем устройстве в очереди предварительной сортировки в соответствии с тем, какие операции в запоминающем устройстве предполагается эффективно выполнять вместе для запоминающего устройства;
множество блоков каналов запоминающего устройства планирует группы на основе параметра QoS наивысшего уровня в каждой группе;
множество блоков каналов запоминающего устройства предварительно синтезирует операции в запоминающем устройстве в виде команд для запоминающего устройства; и
блок интерфейса запоминающего устройства переупорядочивает команды на основе эффективного доступа к запоминающему устройству.
16. Способ по п. 15, в котором операции в запоминающем устройстве содержат операции считывания и операции записи, и способ дополнительно содержит этапы, на которых:
очереди предварительной сортировки ставят в очередь отдельно операции считывания и операции записи;
очереди предварительной сортировки аннулируют параметры QoS для операций записи; и
очереди предварительной сортировки планируют между операциями считывания и операциями записи в ответ на заполненность очередей записи.
17. Способ по п. 15, в котором предполагается, что операции в запоминающем устройстве эффективно выполнять вместе, если верно по меньшей мере одно из следующего: (i) операции в запоминающем устройстве относятся к одной и той же странице в запоминающем устройстве; (ii) они относятся к разным рангам запоминающего устройства; или (iii) они относятся к разным банкам запоминающего устройства.
Способ обработки целлюлозных материалов, с целью тонкого измельчения или переведения в коллоидальный раствор | 1923 |
|
SU2005A1 |
Колосоуборка | 1923 |
|
SU2009A1 |
CN 101419579 A, 29.04.2009 | |||
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок | 1923 |
|
SU2008A1 |
Пломбировальные щипцы | 1923 |
|
SU2006A1 |
RU 2008130859 A, 27.01.2010 |
Авторы
Даты
2015-07-10—Публикация
2011-08-31—Подача