RU2220444C2 - Компьютерная система и способ передачи данных в компьютерной системе - Google Patents

Компьютерная система и способ передачи данных в компьютерной системе Download PDF

Info

Publication number
RU2220444C2
RU2220444C2 RU2001119159/09A RU2001119159A RU2220444C2 RU 2220444 C2 RU2220444 C2 RU 2220444C2 RU 2001119159/09 A RU2001119159/09 A RU 2001119159/09A RU 2001119159 A RU2001119159 A RU 2001119159A RU 2220444 C2 RU2220444 C2 RU 2220444C2
Authority
RU
Russia
Prior art keywords
processor node
request
local
node
response
Prior art date
Application number
RU2001119159/09A
Other languages
English (en)
Other versions
RU2001119159A (ru
Inventor
Иоанна БАУМГАРТНЕР
Марк Эдуард ДИН
Анна ЭЛМАН
Original Assignee
Интернэшнл Бизнес Машинз Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Интернэшнл Бизнес Машинз Корпорейшн filed Critical Интернэшнл Бизнес Машинз Корпорейшн
Publication of RU2001119159A publication Critical patent/RU2001119159A/ru
Application granted granted Critical
Publication of RU2220444C2 publication Critical patent/RU2220444C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

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

Description

Изобретение относится к компьютерной системе и способу передачи данных в такой компьютерной системе. Изобретение относится прежде всего к обработке данных в системе с доступом к неоднородной памяти (NUMA, от англ. "Non-uniform Memory Access") и, в частности, к системе обработки данных с NUMA и способу передачи данных в такой системе обработки данных с NUMA, в которой запросы на считывание спекулятивно направляются в удаленную память.
В вычислительной технике хорошо известно, что повысить производительность вычислительной, соответственно компьютерной системы можно за счет использования совместной вычислительной мощности нескольких отдельных процессоров при их тандемном соединении. Многопроцессорные компьютерные системы могут быть реализованы на базе самых различных топологий, одни из которых могут быть в большей степени пригодны для решения одних прикладных задач и в меньшей - для решения иных прикладных задач, и наоборот, что определяется требованиями к производительности и программными средствами, используемыми для решения той или иной прикладной задачи. Одной из наиболее распространенных топологий многопроцессорных компьютерных систем является симметричная многопроцессорная (СМП) конфигурация, в которой несколькими процессорами совместно используются общие ресурсы, например системная память и подсистема ввода-вывода, которые обычно связаны с общей системной схемой (шиной) межсоединения. Подобные компьютерные системы называют симметричными, поскольку в компьютерной СМП-системе время задержки при обращении к данным, хранящимся в общей системной памяти, является в оптимальном случае одинаковым для всех процессоров.
Хотя компьютерные СМП-системы и допускают применение в них сравнительно простых методов межпроцессорной связи и совместного использования данных, тем не менее они обладают ограниченной масштабируемостью. Иными словами, производительность типичной компьютерной СМП-системы невозможно повысить только, как это резонно можно было бы предположить, за счет ее масштабирования (т. е. за счет увеличения в ней количества процессоров), поскольку присущие шине, памяти и средствам ввода-вывода ограничения касательно их пропускной способности не позволяют достичь значительных преимуществ и значительного выигрыша в производительности при масштабировании компьютерной СМП-системы сверх зависящих от конкретной реализации пределов, для которых оптимизировано использование таких общих ресурсов. Таким образом, с увеличением масштаба компьютерной системы ее быстродействие из-за присущих самой СМП-топологии ограничений касательно пропускной способности несколько снижается, что проявляется прежде всего при обращении к системной памяти. Помимо этого масштабирование компьютерных СМП-систем связано с дополнительными производственными затратами и тем самым со снижением рентабельности их изготовления. Так, например, несмотря на возможность оптимизировать некоторые компоненты для их использования в однопроцессорных компьютерных системах и небольших компьютерных СМП-системах, такие компоненты обычно оказываются неэффективными при их использовании в больших компьютерных СМП-системах. И наоборот, компоненты, предназначенные для использования в больших компьютерных СМП-системах, оказывается экономически невыгодным применять в небольших системах.
Поэтому для устранения большинства ограничений, присущих компьютерным СМП-системам, за счет некоторого их усложнения была разработана альтернативная топология многопроцессорных компьютерных систем, которая известна как архитектура доступа к неоднородной памяти (NUMA). Типичная компьютерная система с NUMA имеет несколько соединенных между собой узлов, в состав каждого из которых входит один или несколько процессоров и локальная "системная" память. Подобные компьютерные системы называют системами с доступом к неоднородной памяти по той причине, что задержка в доступе к данным, хранящимся в системной памяти локального узла, оказывается для каждого относящегося к такому локальному узлу процессора меньше задержки в доступе к данным, хранящимся в системной памяти удаленного узла. Системы с NUMA могут также подразделяться на некогерентные и кэш-когерентные системы в зависимости от того, поддерживается ли когерентность данных между кэшами различных узлов. Сложность систем с NUMA и с поддержкой когерентности кэшей (CC-NUMA) в значительной степени определяется наличием дополнительных средств передачи данных, которыми требуется оснащать аппаратные средства для поддержания когерентности данных не только между различными уровнями кэш-памяти и системной памятью в каждом отдельном узле, но и между кэшами и модулями системной памяти различных узлов. Однако компьютерные системы с NUMA лишены недостатков, связанных с ограничениями, накладываемыми на масштабируемость традиционных компьютерных СМП-систем, поскольку каждый узел в компьютерной системе с NUMA может быть реализован в виде СМП-системы меньших размеров. Благодаря этому появляется возможность оптимизировать совместно используемые компоненты, входящие в состав каждого узла, для использования лишь несколькими процессорами, тогда как в отношении всей системы в целом удается достичь значительных преимуществ, проявляющихся в увеличении ее производительности за счет параллельной работы процессоров при большем их числе, при одновременном поддержании задержки в доступе к памяти на сравнительно низком уровне.
Основная проблема, влияющая на производительность компьютерных систем с CC-NUMA, связана с задержкой в выполнении операций по передаче данных (т.е. непосредственно самих данных, сообщений, команд, запросов и т.д.) через схему межузлового соединения. Так, в частности, задержка в выполнении операций по считыванию данных, находящихся в удаленной системной памяти, каковые операции являются наиболее распространенным типом операций, выполняемых в компьютерной системе, может в два раза превышать задержку в выполнении операций по считыванию данных, находящихся в локальной системной памяти. Так, например, в заявке ЕР-А-0817072 описана многопроцессорная система с подузлом-контроллером, который управляет взаимодействием между процессорным узлом и остальной частью системы. При инициировании запроса на выполнение той или иной операции в процессорном узле сначала проверяется возможность выполнения этой операции на локальном уровне, и, если такая возможность отсутствует, то требуется использовать удаленный доступ. При этом никакие действия не предпринимаются до тех пор, пока не будет установлено, возможно ли обслужить данный запрос на локальном уровне или нет. Из-за сравнительно большой задержки в выполнении операций считывания через схемы межузлового соединения по сравнению с выполнением операций считывания через схемы локального межсоединения представляется целесообразным сократить задержку в выполнении операций считывания через схемы межузлового соединения. Описанный в заявке ЕР-А-0379771 подход позволяет частично решить эту проблему и сократить время задержки в выполнении соответствующих операций за счет хранения модифицированной копии запрашиваемых данных в кэш-памяти.
В основу настоящего изобретения была положена задача разработать методику, которая позволила бы по меньшей мере частично устранить описанные выше недостатки, присущие известным из уровня техники решениям.
Указанная задача решается согласно изобретению с помощью предлагаемой в нем компьютерной системы, прежде всего компьютерной системы с NUMA, имеющей схему межузлового соединения, а также по меньшей мере локальный процессорный узел и удаленный процессорный узел, каждый из которых связан со схемой межузлового соединения, причем локальный процессорный узел имеет схему локального межсоединения, процессор и системную память, соединенные с этой схемой локального межсоединения, а также контроллер, расположенный между схемой локального межсоединения и схемой межузлового соединения и предназначенный для спекулятивной передачи запроса, полученного от схемы локального межсоединения, в удаленный процессорный узел через схему межузлового соединения, и для обработки ответа на запрос, полученного от удаленного процессорного узла, в соответствии с разрешением запроса в локальном процессорном узле, при этом контроллер локального процессорного узла отбрасывает данные, полученные от удаленного процессорного узла в ответ на запрос, если ответом на этот запрос, получаемым в локальном процессорном узле, является ответ когерентности с указанием на модифицированное или совместное вмешательство.
В такой компьютерной системе удаленный процессорный узел предпочтительно имеет также схему локального межсоединения и контроллер, расположенный между указанными схемой межузлового соединения и схемой локального межсоединения, при этом в ответ на получение спекулятивного запроса этот контроллер удаленного процессорного узла направляет такой спекулятивный запрос в схему локального межсоединения этого удаленного процессорного узла.
Согласно еще одному предпочтительному варианту осуществления изобретения в предлагаемой в нем компьютерной системе имеется также третий процессорный узел, при этом указанный запрос содержит адрес, а контроллер первого процессорного узла по меньшей мере частично на основании содержащегося в запросе адреса выбирает целевой процессорный узел, являющийся получателем спекулятивно переданного запроса.
В соответствии со следующим предпочтительным вариантом выполнения компьютерной системы в удаленном процессорном узле имеется системная память, при этом контроллер локального процессорного узла спекулятивно пересылает запрос в этот удаленный процессорный узел при установлении, что в этом запросе указан адрес, относящийся к указанной системной памяти удаленного процессорного узла.
Помимо этого в предлагаемой в изобретении компьютерной системе контроллер локального процессорного узла предпочтительно направляет полученные от удаленного процессорного узла данные в схему локального межсоединения локального процессорного узла, если ответом на запрос, получаемым в локальном процессорном узле, является ответ когерентности, указывающий на невозможность локального обслуживания этого запроса.
В изобретении предлагается также способ передачи данных в компьютерной системе, прежде всего в компьютерной системе с NUMA, имеющей схему межузлового соединения, связывающую между собой по меньшей мере локальный процессорный узел и удаленный процессорный узел, причем локальный процессорный узел имеет схему локального межсоединения, процессор и системную память, соединенные с этой схемой локального межсоединения, а также контроллер, расположенный между схемой локального межсоединения и схемой межузлового соединения, заключающийся в том, что в удаленный процессорный узел через схему межузлового соединения спекулятивно передают запрос, полученный от схемы локального межсоединения, и при поступлении в локальный процессорный узел от удаленного процессорного узла ответа на указанный запрос этот ответ на запрос обрабатывают в соответствии с разрешением запроса в локальном процессорном узле, причем при такой обработке указанного ответа на запрос отбрасывает данные, полученные от удаленного процессорного узла, если ответом на этот запрос, получаемым в локальном процессорном узле, является ответ когерентности с указанием на модифицированное или совместное вмешательство.
Согласно одному из предпочтительных вариантов осуществления предлагаемого в изобретении способа при получении в удаленном процессорном узле спекулятивного запроса этот спекулятивный запрос направляют в схему локального межсоединения удаленного процессорного узла.
В другом предпочтительном варианте осуществления предлагаемого в изобретении способа компьютерная система имеет также третий процессорный узел, а запрос содержит адрес, при этом по меньшей мере частично на основании содержащегося в запросе адреса выбирают целевой процессорный узел, являющийся получателем спекулятивно переданного запроса.
В соответствии еще с одним предпочтительным вариантом осуществления предлагаемого в изобретении способа в удаленном процессорном узле имеется системная память, при этом при спекулятивной передаче запроса его спекулятивно передают в удаленный процессорный узел при установлении, что в этом запросе указан адрес, относящийся к указанной системной памяти удаленного процессорного узла.
Согласно одному из предпочтительных вариантов осуществления предлагаемого в изобретении способа при обработке ответа полученные от удаленного процессорного узла данные направляют в схему локального межсоединения локального процессорного узла, если ответом на запрос, получаемым в локальном процессорном узле, является ответ когерентности, указывающий на невозможность локального обслуживания этого запроса.
Другие отличительные особенности и преимущества изобретения более подробно рассмотрены ниже на примере одного из вариантов его осуществления со ссылкой на прилагаемые чертежи, на которых показано:
на фиг.1 - схема предлагаемой в изобретении компьютерной системы с NUMA, выполненной по одному из вариантов,
на фиг.2 - подробная структурная схема показанного на фиг.1 узла контроллера,
на фиг.3А и 3Б - логические блок-схемы высокого уровня, совместно иллюстрирующие один из возможных примеров осуществления способа обработки запросов, когда запросы на считывание спекулятивно направляются инициирующим их процессорным узлом в удаленный процессорный узел, и
на фиг.4А-4Г - схемы, иллюстрирующие в качестве примера обработку данных в соответствии со способом, проиллюстрированным на фиг.3А и 3Б.
Общая структура системы
Ниже со ссылкой на прилагаемые чертежи и прежде всего со ссылкой на фиг. 1 рассмотрен один из возможных вариантов выполнения предлагаемой в изобретении компьютерной системы с NUMA. Такая показанная на чертеже система может быть реализована в виде рабочей станции, сервера или универсальной вычислительной машины (мэйнфрейма). Как показано на чертеже, в состав компьютерной системы 6 с NUMA входит несколько (Nm2) процессорных узлов 8а-8n, которые соединены между собой схемой 22 межузлового соединения. В состав каждого из таких процессорных узлов 8а-8n может входить М (М≥0) процессоров 10, схема 16 локального межсоединения и системная память 18, доступ к которой осуществляется через контроллер 17 памяти. Процессоры 10а-10m предпочтительно (но необязательно) являются идентичными процессорами, в качестве которых могут использоваться процессоры серии PowerPCТМ, выпускаемые корпорацией International Business Machines (IBM), Армонк, шт. Нью-Йорк. Помимо таких элементов, как регистры, командная логика и операционные или исполнительные блоки, используемые для выполнения программных команд, которые (элементы) совместно составляют так называемое ядро 12 процессора, каждый из процессоров 10а-10m имеет также реализованную в виде встроенного кэша иерархическую структуру (иерархическую кэш-память), используемую для направления данных в ядро 12 процессора из модулей системной памяти 18. Каждая такая иерархическая кэш-память 14 может включать, например, кэш 1-го уровня (L1) и кэш 2-го уровня (L2), емкость которых составляет 8-32 килобайта (кбайт) и 1-16 мегабайт (Мбайт) соответственно.
Каждый из процессорных узлов 8а-8n имеет также соответствующий контроллер 20 узла, включенный между схемой 16 локального межсоединения и схемой 22 межузлового соединения. Каждый такой контроллер 20 узла служит своего рода локальным агентом для удаленного процессорного узла 8 и выполняет с этой целью по меньшей мере две функции. Во-первых, каждый контроллер 20 узла отслеживает состояние относящейся к нему схемы 16 локального межсоединения и обеспечивает передачу данных от нее в удаленные процессорные узлы 8. Во-вторых, каждый контроллер 20 узла отслеживает наличие передаваемых в схеме 22 межузлового соединения данных и управляет направлением соответствующих данных в схему 16 локального межсоединения. Передачей данных в каждой схеме 16 локального межсоединения управляет арбитр 24. Арбитры 24 регулируют доступ к схеме 16 локального межсоединения на основе сигналов запроса шины, формируемых процессорами 10, а также компилируют ответы когерентности для отслеживаемых операций по передаче данных в схеме 16 локального межсоединения, как это более подробно описано ниже.
Схема 16 локального межсоединения через мост 26 связана с шиной 30 второго уровня, которая может быть реализована, например, в виде локальной шины PCI (от англ. "Peripheral Component Interconnect", "взаимное соединение периферийных компонентов"). Подобный мост 26 с шиной второго уровня позволяет создать тракт передачи данных с малым временем задержки или ожидания, через который процессоры 10 могут непосредственно получать доступ к устройствам 32 ввода-вывода и запоминающим устройствам 34, отображаемым на шинную память и/или пространство адресов ввода-вывода, а также создать высокоскоростной тракт передачи данных, по которому устройства 32 ввода-вывода и запоминающие устройства 34 могут получать доступ к системной памяти 18. Устройства 32 ввода-вывода могут представлять собой, например, дисплей, клавиатуру, графический указатель, а также последовательные и параллельные порты, предназначенные для подсоединения к внешним сетям или отдельно подсоединяемым устройствам. Запоминающие устройства 34 могут представлять собой запоминающие устройства на оптических или магнитных дисках, обеспечивающие энергонезависимое хранение операционной системы и прикладного программного обеспечения.
Организация памяти
В компьютерной системе 6 с NUMA всеми процессорами 10 совместно используется единое пространство адресов физической памяти, т.е. каждый физический адрес относится только к одной ячейке в одном из модулей системной памяти 18. В соответствии с этим все содержимое системной памяти, к которому обычно может получить доступ любой процессор 10 компьютерной системы 6 с NUMA, может рассматриваться как содержимое, распределенное между модулями системной памяти 18. Так, например, согласно одному из возможных вариантов осуществления настоящего изобретения с четырьмя процессорными узлами 8 в компьютерной системе NUMA может использоваться физическое адресное пространство объемом 16 гигабайт (Гбайт), состоящее из области, образующей универсальную память (память общего назначения), и зарезервированной области. Образующая универсальную память область разделена на сегменты по 500 Мбайт, при этом каждому из четырех процессорных узлов 8 выделяется каждый четвертый сегмент. В зарезервированной области, объем которой может составлять приблизительно 2 Гбайта, находятся память хранения данных для управления системой и периферийная память, а также области ввода-вывода, которые по одной распределены между процессорными узлами 8.
В последующем описании процессорный узел 8, в системной памяти 18 которого хранится определенный элемент данных, называется базовым узлом для этого элемента данных, и наоборот, другие процессорные узлы 8а-8n называются удаленными узлами по отношению к такому элементу данных.
Когерентность памяти
Поскольку любой из процессоров 10 компьютерной системы 6 с NUMA может запрашивать, выбирать и модифицировать данные, хранящиеся в каждой системной памяти 18, в такой компьютерной системе 6 с NUMA используется протокол обеспечения когерентности кэшей, позволяющий поддерживать когерентность между кэшами одного и того же процессорного узла и между кэшами различных процессорных узлов. В соответствии с этим компьютерную систему 6 с NUMA следует классифицировать как компьютерную систему с доступом к неоднородной памяти и с поддержкой когерентности кэшей (CC-NUMA). Используемый при этом протокол обеспечения когерентности кэшей зависит от конкретной реализации системы и может представлять собой хорошо известный протокол MESI (от англ. "Modified, Exclusive, Shared, Invalid", "модифицированный (М), монопольный (Е), совместный (S), недействительный (I)") или его разновидность. В последующем предполагается, что для иерархических кэшей 14 и арбитров 24 используется обычный протокол MESI, состояния М, S и I которого распознаются контроллерами 20 узлов, а состояние Е для соблюдения корректности рассматривается ими как объединенное с состоянием М. Иными словами, в контроллерах 20 узлов предполагается, что данные, монопольно хранящиеся в удаленном кэше, были модифицированы вне зависимости от того, действительно ли такие данные были модифицированы или нет.
Архитектура межсоединений
Схемы 16 локального межсоединения и схема 22 межузлового соединения в каждом случае могут быть реализованы на базе любой шинной широковещательной архитектуры, коммутационной широковещательной архитектуры или коммутационной нешироковещательной архитектуры. Однако в предпочтительном варианте предлагается реализовать по меньшей мере схему 22 межузлового соединения в виде схемы коммутационного нешироковещательного межсоединения, для управления которой используется протокол связи 6хх, разработанный корпорацией IBM. Схемы 16 локального межсоединения и схема 22 межузлового соединения позволяют выполнять различные операции раздельно, т.е. это означает, что между адресами и данными, совместно составляющими передаваемую информацию, не существует фиксированной временной зависимости и что упорядочение пакетов данных может происходить отдельно от соответствующих им адресных пакетов. В предпочтительном варианте эффективность работы схем 16 локального межсоединения и схемы 22 межузлового соединения можно также повысить за счет выполнения операций по передаче данных в конвейерном режиме, что позволяет начинать следующую операцию передачи данных еще до поступления в устройство, инициировавшее выполнение предыдущей операции передачи данных, ответов когерентности от каждого получателя данных.
Вне зависимости от типа или типов используемой архитектуры межсоединений для передачи информации между процессорными узлами 8 через схему 22 межузлового соединения и между модулями отслеживания через схемы 16 локального межсоединения используется по меньшей мере три типа "пакетов" (термин "пакет" используется в данном случае для обозначения дискретной единицы информации), а именно адресные пакеты, пакеты данных и пакеты ответов когерентности. В таблицах I и II в обобщенном виде представлена информация о соответствующих полях и приведено их описание для адресных пакетов и пакетов данных соответственно.
Как следует из таблиц I и II, каждый пакет в передаваемой информации маркируется соответствующим тегом, чтобы узел-получатель данных или модуль отслеживания мог определить, к каким передаваемым данным, соответственно к какой операции передачи данных относится каждый пакет. Для специалистов в данной области очевидно, что для регулирования загруженности средств передачи данных, обладающих ограниченными возможностями, можно использовать дополнительную управляющую потоком данных или последовательностью выполнения команд логику и соответствующие управляющие потоком данных или последовательностью выполнения команд сигналы.
В каждом процессорном узле 8 ответы состояния и когерентности передаются между каждым модулем отслеживания и локальным арбитром 24. Сигнальные линии, используемые в схемах 16 локального межсоединения для передачи информации о состоянии и когерентности, представлены ниже в таблице III.
Между ответами состояния и когерентности, передаваемыми по линиям передачи сигналов AResp и AStat в схемах 16 локального межсоединения, и соответствующими пакетами адресов предпочтительно существует фиксированная, но программируемая временная зависимость. Так, например, во втором цикле после приема адресного пакета может потребоваться голосование по сигналам AStatOut, которое позволяет получить предварительную информацию о том, удалось ли каждому модулю отслеживания успешно принять адресный пакет, передаваемый по схеме 16 локального межсоединения. Арбитр 24 компилирует результаты голосования по сигналам AStatOut и затем по истечении фиксированного, но программируемого числа циклов (например, через 1 цикл) выдает результат голосования AStatIn. Возможные результаты голосования AStat приведены ниже в таблице IV.
По завершении периода AStatIn может потребоваться провести через фиксированное, но программируемое число циклов (например, через 2 цикла) голосование по сигналам ARespOut. Арбитр 24 также компилирует результаты голосования по ARespOut для каждого модуля отслеживания и выдает результат голосования ARespIn, предпочтительно во время следующего цикла. Возможные результаты голосования AResp предпочтительно содержат ответы когерентности, указанные ниже в таблице V.
Результат голосования ReRun, который обычно выдается контроллером 20 узла в качестве результата голосования AResp, указывает, что для отслеживаемого запроса выявлено длительное время ожидания и что инициатору запроса будет направлена команда повторить операцию в более поздний момент времени. Таким образом, в отличие от результата голосования Retry, который также может выдаваться в качестве результата голосования AResp, результат голосования ReRun делает ответственным за повторение операции по передаче данных в более поздний момент времени получателя (а не на отправителя) данных, проголосовавшего за ReRun.
Контроллер узла
На фиг. 2 более подробно показана функциональная схема контроллера 20 узла, используемого в компьютерной системе 6 с NUMA, показанной на фиг.1. Как показано на фиг.2, каждый контроллер 20 узла, который включен между схемой 16 локального межсоединения и схемой 22 межузлового соединения, имеет блок 40 приема запросов (БПЗ), блок 42 отправки запросов (БОЗ), блок 44 приема данных (БПД) и блок 46 отправки данных (БОД). БПЗ 40, БОЗ 42, БПД 44 и БОД 46 могут быть реализованы, например, на базе программируемых пользователем вентильных матриц (ППВМ) либо специализированных интегральных схем (СИС). Как указано выше, адресный тракт и тракт передачи данных через контроллер 20 узла являются разветвляющимися, при этом адресные пакеты (и пакеты когерентности) обрабатываются БПЗ 40 и БОЗ 42, а пакеты данных обрабатываются БПД 44 и БОД 46.
БПЗ 40, из названия которого следует, что он предназначен для приема потока запросов, поступающего от схемы 22 межузлового соединения, отвечает за прием адресных пакетов и пакетов когерентности от схемы 22 межузлового соединения, выдачу запросов в схему 16 локального межсоединения и пересылку ответов в БОЗ 42. В состав БПЗ 40 входит мультиплексор 52 ответов, который принимает пакеты от схемы 22 межузлового соединения и передает выбранные пакеты в устройство 54 управления передачей данных по шине (УУПДШ) и в логику 56 обработки ответов когерентности в БОЗ 42. В ответ на получение адресного пакета от мультиплексора 52 ответов главное устройство 54 управления передачей данных по шине может инициировать операцию по передаче данных по его схеме 16 локального межсоединения, тип которой (операции) может совпадать с типом операции по передаче данных, который указан в принятом адресном пакете, или может отличаться от него.
БОЗ 42, который, как следует из его названия, образует канал для передачи потока запросов в схему 22 межузлового соединения, имеет рассчитанный на хранение большого количества записей буфер 60 ожидания, в котором временно хранятся атрибуты еще не завершенных операций по передаче данных, которые передаются в схему 22 межузлового соединения. Подобные атрибуты операций по передаче данных, хранящиеся в виде записи в буфере 60 ожидания, предпочтительно содержат по меньшей мере адрес операции по передаче данных (включая метку), ее тип и число ожидаемых ответов когерентности. Для каждой записи в буфере ожидания предусмотрено соответствующее состояние, которое либо может принимать значение Null, указывающее на возможность удаления соответствующей записи из буфера ожидания, либо может принимать значение ReRun, указывающее, что операция все еще не завершена. Помимо направления адресных пакетов в схему 22 межузлового соединения БОЗ 42 взаимодействует также с БПЗ 40 для обработки запросов на доступ к памяти и выдает команды в БПД 44 и БОД 46 для управления передачей данных между схемой 16 локального межсоединения и схемой 22 межузлового соединения. БОЗ 42 реализует также выбранный протокол когерентности (например, протокол MSI) для схемы 22 межузлового соединения совместно с логикой 56 обработки ответов когерентности и ведет директорию 50 когерентности с использованием логики 58 управления директорией.
В директории 50 когерентности хранятся указатели адресов данных в системной памяти (например, строки кэша), сверенные с кэшами удаленных узлов, для которых локальный процессорный узел является базовым узлом. Указатели адресов для каждой строки кэша хранятся вместе с идентификаторами каждого удаленного процессорного узла, в котором имеется копия строки кэша, и с состоянием когерентности строки кэша в каждом таком удаленном процессорном узле. Возможные состояния когерентности для записей в директории 50 когерентности приведены в таблице VI.
Как указано в таблице VI, информация о состоянии когерентности строк кэша, содержащихся в удаленных процессорных узлах, является неточной. Подобная неточность обусловлена тем фактом, что строка кэша, содержащаяся в удаленном узле, может перейти из состояния S в I, из Е в I или из Е в М без извещения об этом контроллера 20 базового узла.
Обработка запросов на считывание
На фиг.3А и 3Б приведены две логические блок-схемы высокого уровня, совместно иллюстрирующие один из возможных примеров осуществления способа обработки запросов на считывание в соответствии с настоящим изобретением. Процедура, блок-схема которой показана на фиг.3А, начинается на шаге 70 и затем переходит к шагу 72, на котором процессор 10, например процессор 10а процессорного узла 8а, выдает запрос на считывание в его схему 16 локального межсоединения. Этот запрос на считывание поступает в контроллер 20 узла и в остальные модули отслеживания, связанные со схемой 16 локального межсоединения процессорного узла 8а. В ответ на поступление запроса на считывание модули отслеживания выдают результаты голосования по AStatOut, которые компилируются арбитром 24 для формирования результата голосования AStatIn (шаг 74). Если в запросе на считывание указан адрес в удаленной системной памяти 18, то перед выдачей контроллером 20 узла результата голосования Ack в качестве результата голосования по AStatOut, разрешающего дальнейшую обработку запроса на считывание, контроллер 20 узла выделит в буфере 60 ожидания элемент считывания и элемент записи с очисткой. За счет выделения обоих этих элементов контроллер 20 узла может спекулятивно направить запрос на считывание в базовый узел запрошенной строки кэша и правильно обработать ответ на запрос на считывание независимо от результата последующего голосования AResp в процессорном узле 8а.
Если результатом голосования AStatIn, полученным на шаге 74, является Retry, то на следующем шаге 76 запрос на считывание аннулируется, возможно, выделенные в буфере 60 ожидания элементы освобождаются, и осуществляется возврат к шагу 72, который рассмотрен выше. В этом случае процессор 10а должен повторно выдать запрос на считывание в более поздний момент времени. Если же на шаге 74 результатом голосования AStatIn не является Retry, то осуществляется переход от шага 76 к шагу 78, на котором контроллер 20 узла путем обращения к карте памяти определяет, является ли его процессорный узел 8 базовым узлом для физического адреса, указанного в запросе на считывание. При положительном ответе осуществляется переход к шагу 80, а в противном случае, т.е. если процессорный узел 8 не является базовым узлом для запроса на считывание, происходит переход к шагу 100.
На шаге 80 модули отслеживания процессорного узла 8а проводят голосование по ARespOut, результаты которого компилируются арбитром 24 с получением результата голосования ARespIn. Если директория 50 когерентности указывает на то, что строка кэша, адрес которой указан в запросе на считывание, связана по меньшей мере с одним удаленным процессорным узлом 8, то контроллер 20 узла выдаст в качестве результата голосования результат ReRun, если для обслуживания запроса на считывание требуется связь с удаленным процессорным узлом 8. Так, например, если директория 50 когерентности указывает, что состояние запрошенной строки кэша в удаленном процессорном узле 8 установлено на "модифицированное" ("Modified") 8, то для обслуживания запроса на считывание его потребуется направить в удаленный процессорный узел 8. Аналогичным образом, если директория 50 когерентности указывает, что состояние запрошенной строки кэша в удаленном процессорном узле 8 установлено на "совместное использование" ("Shared"), то для обслуживания запроса на считывание с целью модификации в удаленный процессорный узел 8 потребуется направить команду аннулирования, чтобы сделать недействительной находящуюся в этом удаленном процессорном узле копию или копии запрошенной строки кэша. Если полученным на шаге 82 результатом голосования ARespIn не является ReRun, то осуществляется переход к шагу 90, который описан ниже, а если результатом голосования ARespIn является ReRun, то осуществляется переход к шагу 84.
На шаге 84 контроллер 20 узла через схему 22 межузлового соединения передает соответствующее сообщение в один или несколько удаленных процессорных узлов 8, которые проверили запрошенную строку кэша. Как указано выше, подобное сообщение может представлять собой команду для кэша (например, команду аннулирования) или запрос на считывание. После этого осуществляется переход к шагу 86, выполнение которого циклически продолжается до тех пор, пока в контроллер 20 узла не поступят ответы от каждого из удаленных процессорных узлов 8, в которые на шаге 84 было передано сообщение. После получения соответствующего числа ответов, среди которых может присутствовать копия запрошенной строки кэша, контроллер 20 узла передает в схему 16 локального межсоединения запрос ReRun, который является командой инициировавшему посылку запроса на считывание процессору 10а повторно выдать запрос на считывание. После этого на шаге 88 инициировавший посылку запроса на считывание процессор 10а в ответ на указанный запрос ReRun повторно выдает запрос на считывание в схему 16 локального межсоединения. По истечении периодов AStat и AResp на следующем шаге 90 запрос на считывание обслуживается либо в контроллере 20 локального процессорного узла, направляющем копию запрошенной строки кэша, полученной от удаленного процессорного узла 8, либо другим локальным модулем отслеживания в процессорном узле 8а (например, контроллером 17 памяти или иерархическим кэшем 14), направляющим запрошенную строку кэша. После этого осуществляется переход к шагу 150, на котором выполнение всей процедуры завершается.
Если же на шаге 100 контроллер 20 процессорного узла 8а определит, что процессорный узел 8а не является базовым узлом для запрошенной строки кэша, то этот контроллер 20 узла спекулятивно направляет запрос на считывание в удаленный процессорный узел 8, который является базовым узлом для запрошенной строки кэша. Как показано на фиг.3А, запрос на считывание пересылается контроллером 20 узла по меньшей мере одновременно с периодом ARespIn, предпочтительно сразу же по получении результата голосования AStatIn от арбитра 24 и до начала периода ARespOut. При направлении запроса на считывание состояние элемента считывания в буфере 60 ожидания изменяется на ReRun. Затем на шаге 102 модули отслеживания выдают результаты их голосования по ARespOut, которые компилируются арбитром 24 с получением результата голосования ARespIn. После этого на шаге 110 и на последующих шагах базовый узел выдает ответ на запрос на считывание, который (ответ) обрабатывается контроллером 20 узла в соответствии с результатом голосования ARespIn для запроса на считывание в процессорном узле 8а.
Если результатом голосования ARespIn является Retry, то запрос на считывание по существу аннулируется в процессорном узле 8а. Таким образом, в ответ на получение в качестве результата голосования ARespIn результата Retry состояние элементов считывания и записи, выделенных в буфере 60 ожидания, изменяется на Null. После этого осуществляется переход к шагу 110, от которого далее происходит переход к шагам 112 и 114, на первом из которых контроллер 20 узла ожидает получения запрошенной строки кэша от базового узла, а на втором отбрасывает строку кэша, если состояние элемента считывания в буфере 60 ожидания соответствует состоянию Null. После этого осуществляется переход к шагу 150, на котором выполнение всей процедуры завершается.
Если результатом голосования ARespIn является Modified Intervention ("модифицированное вмешательство"), то запрос на считывание может быть обслужен на локальном уровне в процессорном узле 8а без использования (устаревших) данных от базового узла. Таким образом, в ответ на получение в качестве результата голосования ARespIn результата Modified Intervention ("модифицированное вмешательство") состояние элемента считывания в буфере 60 ожидания изменяется на состояние Null, после чего осуществляется переход к шагу 102, а от него - через шаги 110 и 120 к шагу 122. На этом шаге 122 модуль отслеживания, который во время периода ARespOut выдал результат голосования Modified Intervention ("модифицированное вмешательство"), направляет запрошенную строку кэша в схему 16 локального межсоединения процессорного узла 8а. После этого состояние когерентности запрошенной строки кэша в модуле отслеживания, направившем запрошенную строку кэша, изменяется с Modified ("модифицированное") на Shared ("совместное использование"). В ответ на получение запрошенной строки кэша инициировавший посылку запроса процессор 10а на шаге 124 загружает эту строку кэша в свой иерархический кэш 14. Помимо этого контроллер 20 узла перехватывает запрошенную строку кэша в схеме 16 локального межсоединения и на шаге 126 выдает в базовый узел содержащую строку кэша команду на запись с очисткой с целью обновления системной памяти 18 этого базового узла путем записи в нее модифицированной строки кэша. После этого осуществляется переход к шагу 112, который уже был рассмотрен выше.
Протокол когерентности, используемый в компьютерной системе 6, может дополнительно поддерживать режим совместного вмешательства, т.е. обслуживание запроса на считывание локальным иерархическим кэшем 14, в котором запрошенная строка кэша хранится в состоянии Shared ("совместное использование"). Если режим совместного вмешательства поддерживается протоколом когерентности кэша, используемым в компьютерной системы 6, а результатом голосования ARespIn для выданного запроса является Shared (т.е. "совместное вмешательство", или "Shared Intervention"), то модуль отслеживания, который в качестве результата голосования выдал результат Shared ("совместное использование"), на шаге 132 направляет запрошенную строку кэша в схему 16 локального межсоединения. В ответ на получение запрошенной строки кэша инициировавший посылку запроса процессор 10а на следующем шаге 134 загружает эту запрошенную строку кэша в свой иерархический кэш 14. Поскольку при этом не требуется вносить никаких изменений в системную память 18, состояние элементов считывания и записи, выделенных в буфере 60 ожидания, изменяется на состояние Null, после чего осуществляется переход к шагу 150, на котором выполнение всей процедуры завершается.
Если же результатом голосования ARespIn для запроса в процессорном узле 8а является результат ReRun, то состояние элемента записи в буфере 60 ожидания изменяется на Null, а состояние элемента считывания изменяется на ReRun. После этого от шага 102 последовательно осуществляется переход к выполнению шагов 110, 120 и 130 и после них к шагу 142, на котором контроллер 20 процессорного узла 8а ожидает получения запрошенной строки кэша от базового узла и который выполняется циклически до получения запрошенной строки кэша от базового узла. После получения запрошенной строки кэша от базового узла через схему 22 межузлового соединения контроллер 20 узла на следующем шаге 144 передает эту строку кэша запросившему ее процессору 10а через схему 16 локального межсоединения. После этого на следующем шаге 146 по получении запрошенной строки кэша инициировавший посылку запроса процессор 10а загружает эту запрошенную строку кэша в свой иерархический кэш 14. После этого осуществляется переход к шагу 150, на котором выполнение всей процедуры завершается.
На фиг.3Б показана логическая блок-схема высокого уровня, иллюстрирующая обработку в базовом узле сообщения, полученного от другого процессорного узла. Как показано на чертеже, эта процедура начинается на шаге 160 и затем переходит к шагу 162, на котором проверяется, получил ли базовый узел сообщение от другого процессорного узла через схему 22 межузлового соединения. Если такое сообщение получено не было, то выполнение шага 162 циклически повторяется до тех пор, пока от другого процессорного узла 8 не будет получено какое-либо сообщение. При получении контроллером 20 базового узла сообщения от удаленного процессорного узла 8 осуществляется переход к шагу 164, на котором контроллер 20 базового узла передает принятое на шаге 162 сообщение в схему 16 локального межсоединения этого базового узла. После этого на шаге 170 определяется, является ли полученное сообщение, направленное в схему 16 локального межсоединения, запросом на считывание, и при положительном ответе осуществляется переход к шагу 172, на котором этот запрос на считывание обслуживается модулем отслеживания, который направляет копию запрошенной строки кэша в контроллер 20 базового узла. При получении этой запрошенной строки кэша контроллер 20 узла на следующем шаге 174 передает ее в инициировавший запрос процессорный узел 8 через схему 22 межузлового соединения. После этого осуществляется переход к шагу 190, на котором выполнение всей процедуры завершается.
Если же полученное на шаге 164 сообщение, переданное в схему 16 локального межсоединения базового узла, является запросом на запись (например, запись с очисткой), то после проверки на шаге 170 осуществляется переход к шагу 180, а от него - к шагу 184, на котором контроллером 17 памяти обновляется системная память 18 путем записи в нее строки кэша, содержащейся в сообщении с запросом на запись. После этого осуществляется переход к шагу 190, на котором выполнение всей процедуры завершается. Если же сообщение, переданное в схему 16 локального межсоединения базового узла, не является ни запросом на считывание, ни запросом на запись, то осуществляется переход к шагу 182, на котором базовый узел выполняет определенную(ые) операцию(и), указанную(ые) в сообщении, после чего осуществляется переход к шагу 190, на котором выполнение всей процедуры завершается. В качестве примера таких операций, которые могут выполняться при получении соответствующего сообщения и которые не являются операциями считывания или записи, можно назвать изменение состояний когерентности строк кэша, находящихся в иерархическом кэше 14 базового узла.
На фиг. 4А-4Г в качестве примера показан один из вариантов выполнения процесса обработки данных в соответствии с настоящим изобретением. В этом варианте процесс обработки данных рассматривается ниже на примере упрощенной модели компьютерной системы 6 с двумя процессорными узлами 8а и 8b, каждый из которых имеет по два процессора 10а и 10b. Состояние когерентности запрошенной строки кэша указывается в иерархическом кэше 14 каждого процессора 10, а также в директории 50 когерентности, относящейся к базовому узлу 8а.
Как показано на фиг.4А, сначала процессор 10b процессорного узла 8b выдает запрос на считывание для строки кэша, состояние которой в иерархическом кэше 14 этого процессора соответствует состоянию Invalid ("недействительное") (т. е. эта строка кэша отсутствует в нем). В ответ на получение этого запроса на считывание контроллер 20 процессорного узла 8b спекулятивно передает запрос на считывание в процессорный узел 8а, который является базовым узлом для строки кэша, указанной в запросе на считывание. После спекулятивного направления запроса на считывание в процессорный узел 8а процессор 10а в течение периода ARespOut голосует за Modified Intervention ("модифицированное вмешательство"), поскольку в его иерархическом кэше 14 запрошенная строка кэша находится в состоянии Modified ("модифицированное"). Арбитр процессорного узла 8b компилирует результаты голосования по ARespOut и в качестве результата голосования ARespIn направляет в каждый модуль отслеживания в процессорном узле 8b результат Modified Intervention ("модифицированное вмешательство").
После этого контроллер 20 процессорного узла 8а, как показано на фиг.4Б, принимает спекулятивно направленный запрос на считывание и выдает этот запрос на считывание в его схему 16 локального межсоединения. Как показано на фиг.4Б, контроллер 20 узла в ответ на указание директорией 50 когерентности, что состояние указанной в запросе на считывание строки кэша установлено в процессорном узле 8b на состояние Modified ("модифицированное"), выдает в течение периода ARespOut результат голосования Null. Контроллер 20 узла, распознающий такое особое условие, разрешает дальнейшую обработку запроса на считывание, как это более подробно описано ниже со ссылкой на фиг.4Г.
Как показано на фиг.4В, процессор 10а процессорного узла 8b вне зависимости от спекулятивного направления запроса на считывание в процессорный узел 8а (и, возможно, до направления, одновременно с направлением или после направления такого запроса на считывание) направляет в ответ на этот запрос на считывание запрошенную строку кэша в схему 16 локального межсоединения и изменяет состояние когерентности запрошенной строки кэша в своем иерархическом кэше 14 на состояние Shared ("совместное использование"). При обнаружении отслеживаемой запрошенной строки кэша инициировавший посылку запроса процессор 10b загружает эту запрошенную строку кэша в свой иерархический кэш 14 и устанавливает соответствующее состояние когерентности на Shared ("совместное использование"). Помимо этого контроллер 20 процессорного узла 8b перехватывает строку кэша и выдает в процессорный узел 8а сообщение с запросом на запись с очисткой, содержащее модифицированную строку кэша. При получении этого сообщения с запросом на запись с очисткой контроллер 20 процессорного узла 8а направляет это сообщение в системную память 18 через свою схему 16 локального межсоединения 16. После этого соответствующая строка системной памяти 18 базового узла 8а обновляется путем записи в нее модифицированных данных.
Как показано на фиг.4Г, системная память 18 процессорного узла 8а вне зависимости от рассмотренного выше со ссылкой на фиг.4А ее обновления (и, возможно, до такого обновления, одновременно с этим обновлением или после него) направляет в ответ на запрос на считывание, возможно, устаревшую копию запрошенной строки кэша в контроллер 20 процессорного узла 8а через схему 16 локального межсоединения 16. После этого контроллер 20 процессорного узла 8а направляет эту копию запрошенной строки кэша в контроллер 20 процессорного узла 8b, который отбрасывает строку кэша, поскольку в его буфере 60 ожидания запрос на считывание помечен как Null.
Таким образом, в настоящем изобретении предлагается усовершенствованная компьютерная система с NUMA и усовершенствованный способ передачи данных в такой компьютерной системе с NUMA. Согласно изобретению запрос на считывание спекулятивно направляется в удаленный (т.е. базовый) процессорный узел через схему межузлового соединения еще до определения возможности обслуживания запроса на считывание на локальном уровне без вмешательства удаленного процессорного узла. Ответ, выдаваемый удаленным процессорным узлом на спекулятивно направленный запрос на считывание, обрабатывается инициировавшим посылку запроса процессорным узлом в соответствии с локальным ответом когерентности для запроса на считывание. Подобный подход позволяет значительно сократить задержку в выполнении операций по передаче данных или по обмену данных.
В соответствии с приведенным выше описанием в изобретении предлагается компьютерная система с доступом к неоднородной памяти (NUMA), имеющая по меньшей мере локальный процессорный узел и удаленный процессорный узел, каждый из которых связан со схемой межузлового соединения. Локальный процессорный узел имеет схему локального межсоединения, процессор и системную память, соединенные с этой схемой локального межсоединения, а также контроллер, расположенный между схемой локального межсоединения и схемой межузлового соединения. Такой контроллер узла в ответ на запрос на считывание, полученный от схемы локального межсоединения, спекулятивно передает этот запрос на считывание в удаленный процессорный узел через схему межузлового соединения. После этого при получении ответа на запрос на считывание от удаленного процессорного узла указанный контроллер узла обрабатывает этот ответ в соответствии с разрешением запроса на считывание в локальном процессорном узле. Так, например, согласно одному из вариантов процесса обработки данные, содержащиеся в ответе, полученном от удаленного процессорного узла, отбрасываются контроллером узла, если ответом на запрос на считывание, полученным в локальном процессорном узле, является ответ когерентности с указанием на модифицированное вмешательство (Modified Intervention).

Claims (10)

1. Компьютерная система, имеющая схему межузлового соединения, а также по меньшей мере локальный процессорный узел и удаленный процессорный узел, каждый из которых связан со схемой межузлового соединения, причем локальный процессорный узел имеет схему локального межсоединения, процессор и системную память, соединенные с этой схемой локального межсоединения, а также контроллер, расположенный между схемой локального межсоединения и схемой межузлового соединения и предназначенный для спекулятивной передачи запроса, полученного от схемы локального межсоединения, в удаленный процессорный узел через схему межузлового соединения и для обработки ответа на запрос, полученного от удаленного процессорного узла, в соответствии с разрешением запроса в локальном процессорном узле, при этом контроллер локального процессорного узла отбрасывает данные, полученные от удаленного процессорного узла в ответ на запрос, если ответом на этот запрос, получаемым в локальном процессорном узле, является ответ когерентности с указанием на модифицированное или совместное вмешательство.
2. Компьютерная система по п.1, в которой удаленный процессорный узел имеет также схему локального межсоединения и контроллер, расположенный между указанными схемой межузлового соединения и схемой локального межсоединения, при этом в ответ на получение спекулятивного запроса этот контроллер удаленного процессорного узла направляет такой спекулятивный запрос в схему локального межсоединения этого удаленного процессорного узла.
3. Компьютерная система по п.1, в которой имеется также третий процессорный узел, при этом указанный запрос содержит адрес, а контроллер первого процессорного узла по меньшей мере частично на основании содержащегося в запросе адреса выбирает целевой процессорный узел, являющийся получателем спекулятивно переданного запроса.
4. Компьютерная система по п.1, в которой в удаленном процессорном узле имеется системная память, при этом контроллер локального процессорного узла спекулятивно пересылает запрос в этот удаленный процессорный узел при установлении, что в этом запросе указан адрес, относящийся к указанной системной памяти удаленного процессорного узла.
5. Компьютерная система по п.1, в которой контроллер локального процессорного узла направляет полученные от удаленного процессорного узла данные в схему локального межсоединения локального процессорного узла, если ответом на запрос, получаемым в локальном процессорном узле, является ответ когерентности, указывающий на невозможность локального обслуживания этого запроса.
6. Способ передачи данных в компьютерной системе, имеющей схему межузлового соединения, связывающую между собой по меньшей мере локальный процессорный узел и удаленный процессорный узел, причем локальный процессорный узел имеет схему локального межсоединения, процессор и системную память, соединенные с этой схемой локального межсоединения, а также контроллер, расположенный между схемой локального межсоединения и схемой межузлового соединения, заключающийся в том, что в удаленный процессорный узел через схему межузлового соединения спекулятивно передают запрос, полученный от схемы локального межсоединения, и при поступлении в локальный процессорный узел от удаленного процессорного узла ответа на указанный запрос этот ответ на запрос обрабатывают в соответствии с разрешением запроса в локальном процессорном узле, причем при такой обработке указанного ответа на запрос отбрасывают данные, полученные от удаленного процессорного узла, если ответом на этот запрос, получаемым в локальном процессорном узле, является ответ когерентности с указанием на модифицированное или совместное вмешательство.
7. Способ по п.6, в котором при получении в удаленном процессорном узле спекулятивного запроса этот спекулятивный запрос направляют в схему локального межсоединения удаленного процессорного узла.
8. Способ по п.6, в котором компьютерная система имеет также третий процессорный узел, а запрос содержит адрес, при этом по меньшей мере частично на основании содержащегося в запросе адреса выбирают целевой процессорный узел, являющийся получателем спекулятивно переданного запроса.
9. Способ по п.6, в котором в удаленном процессорном узле имеется системная память, при этом при спекулятивной передаче запроса его спекулятивно передают в удаленный процессорный узел при установлении, что в этом запросе указан адрес, относящийся к указанной системной памяти удаленного процессорного узла.
10. Способ по п.6, в котором при обработке ответа полученные от удаленного процессорного узла данные направляют в схему локального межсоединения локального процессорного узла, если ответом на запрос, получаемым в локальном процессорном узле, является ответ когерентности, указывающий на невозможность локального обслуживания этого запроса.
RU2001119159/09A 1998-12-15 1999-12-10 Компьютерная система и способ передачи данных в компьютерной системе RU2220444C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/211,351 US6338122B1 (en) 1998-12-15 1998-12-15 Non-uniform memory access (NUMA) data processing system that speculatively forwards a read request to a remote processing node
US09/211,351 1998-12-15

Publications (2)

Publication Number Publication Date
RU2001119159A RU2001119159A (ru) 2003-08-20
RU2220444C2 true RU2220444C2 (ru) 2003-12-27

Family

ID=22786571

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2001119159/09A RU2220444C2 (ru) 1998-12-15 1999-12-10 Компьютерная система и способ передачи данных в компьютерной системе

Country Status (16)

Country Link
US (1) US6338122B1 (ru)
EP (1) EP1153349B1 (ru)
KR (1) KR100465583B1 (ru)
CN (1) CN1157659C (ru)
AT (1) ATE236431T1 (ru)
AU (1) AU1672500A (ru)
CA (1) CA2349569C (ru)
CZ (1) CZ20012153A3 (ru)
DE (1) DE69906585T2 (ru)
ES (1) ES2196893T3 (ru)
HU (1) HUP0104577A3 (ru)
IL (2) IL142265A0 (ru)
PL (1) PL348859A1 (ru)
RU (1) RU2220444C2 (ru)
TW (1) TW446883B (ru)
WO (1) WO2000036514A1 (ru)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2817624C1 (ru) * 2019-09-03 2024-04-17 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Отсрочка обновлений состояний кэша в неспекулятивной кэш-памяти в процессорной системе в ответ на спекулятивный запрос данных до тех пор, пока спекулятивный запрос данных не станет неспекулятивным

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DK1042435T3 (da) * 1997-12-19 2002-11-04 Unilever Nv Olivenolieholdig fødevaresammensætning
US6546429B1 (en) * 1998-09-21 2003-04-08 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that holds and reissues requests at a target processing node in response to a retry
US6591307B1 (en) * 1999-11-09 2003-07-08 International Business Machines Corporation Multi-node data processing system and method of queue management in which a queued operation is speculatively cancelled in response to a partial combined response
JP2001167077A (ja) * 1999-12-09 2001-06-22 Nec Kofu Ltd ネットワークシステムにおけるデータアクセス方法、ネットワークシステムおよび記録媒体
US6678798B1 (en) * 2000-07-20 2004-01-13 Silicon Graphics, Inc. System and method for reducing memory latency during read requests
US8635410B1 (en) 2000-07-20 2014-01-21 Silicon Graphics International, Corp. System and method for removing data from processor caches in a distributed multi-processor computer system
US6938128B1 (en) 2000-07-20 2005-08-30 Silicon Graphics, Inc. System and method for reducing memory latency during read requests
US6915387B1 (en) 2000-07-20 2005-07-05 Silicon Graphics, Inc. System and method for handling updates to memory in a distributed shared memory system
US6810467B1 (en) * 2000-08-21 2004-10-26 Intel Corporation Method and apparatus for centralized snoop filtering
US20020078118A1 (en) * 2000-12-19 2002-06-20 Cone Robert W. Network interface application specific integrated circuit to allow direct attachment for an appliance,such as a printer device
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US6799217B2 (en) * 2001-06-04 2004-09-28 Fujitsu Limited Shared memory multiprocessor expansion port for multi-node systems
US7394823B2 (en) * 2001-11-20 2008-07-01 Broadcom Corporation System having configurable interfaces for flexible system configurations
US6748479B2 (en) * 2001-11-20 2004-06-08 Broadcom Corporation System having interfaces and switch that separates coherent and packet traffic
US7206879B2 (en) * 2001-11-20 2007-04-17 Broadcom Corporation Systems using mix of packet, coherent, and noncoherent traffic to optimize transmission between systems
EP1316891B1 (de) * 2001-12-03 2007-10-10 Infineon Technologies AG Datenübertragungseinrichtung
US6959372B1 (en) * 2002-02-19 2005-10-25 Cogent Chipware Inc. Processor cluster architecture and associated parallel processing methods
US7085866B1 (en) * 2002-02-19 2006-08-01 Hobson Richard F Hierarchical bus structure and memory access protocol for multiprocessor systems
US7107409B2 (en) * 2002-03-22 2006-09-12 Newisys, Inc. Methods and apparatus for speculative probing at a request cluster
US7103725B2 (en) * 2002-03-22 2006-09-05 Newisys, Inc. Methods and apparatus for speculative probing with early completion and delayed request
US7107408B2 (en) * 2002-03-22 2006-09-12 Newisys, Inc. Methods and apparatus for speculative probing with early completion and early request
US7653790B2 (en) * 2002-05-13 2010-01-26 Glasco David B Methods and apparatus for responding to a request cluster
US7395379B2 (en) * 2002-05-13 2008-07-01 Newisys, Inc. Methods and apparatus for responding to a request cluster
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US6965973B2 (en) * 2002-05-15 2005-11-15 Broadcom Corporation Remote line directory which covers subset of shareable CC-NUMA memory space
US6993631B2 (en) * 2002-05-15 2006-01-31 Broadcom Corporation L2 cache maintaining local ownership of remote coherency blocks
US7003631B2 (en) * 2002-05-15 2006-02-21 Broadcom Corporation System having address-based intranode coherency and data-based internode coherency
US7251698B2 (en) * 2002-05-28 2007-07-31 Newisys, Inc. Address space management in systems having multiple multi-processor clusters
US7103636B2 (en) * 2002-05-28 2006-09-05 Newisys, Inc. Methods and apparatus for speculative probing of a remote cluster
US7155525B2 (en) * 2002-05-28 2006-12-26 Newisys, Inc. Transaction management in systems having multiple multi-processor clusters
US6865595B2 (en) * 2002-05-28 2005-03-08 Newisys, Inc. Methods and apparatus for speculative probing of a remote cluster
US7281055B2 (en) * 2002-05-28 2007-10-09 Newisys, Inc. Routing mechanisms in systems having multiple multi-processor clusters
US6959364B2 (en) * 2002-06-28 2005-10-25 Intel Corporation Partially inclusive snoop filter
US7296121B2 (en) * 2002-11-04 2007-11-13 Newisys, Inc. Reducing probe traffic in multiprocessor systems
US7346744B1 (en) 2002-11-04 2008-03-18 Newisys, Inc. Methods and apparatus for maintaining remote cluster state information
US7003633B2 (en) * 2002-11-04 2006-02-21 Newisys, Inc. Methods and apparatus for managing probe requests
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7577755B2 (en) * 2002-11-19 2009-08-18 Newisys, Inc. Methods and apparatus for distributing system management signals
EP1426866A1 (en) * 2002-12-06 2004-06-09 Sun Microsystems, Inc. A method to reduce memory latencies by performing two levels of speculation
US7917646B2 (en) * 2002-12-19 2011-03-29 Intel Corporation Speculative distributed conflict resolution for a cache coherency protocol
US7111128B2 (en) 2002-12-19 2006-09-19 Intel Corporation Hierarchical virtual model of a cache hierarchy in a multiprocessor system
US7334089B2 (en) * 2003-05-20 2008-02-19 Newisys, Inc. Methods and apparatus for providing cache state information
US7386626B2 (en) * 2003-06-23 2008-06-10 Newisys, Inc. Bandwidth, framing and error detection in communications between multi-processor clusters of multi-cluster computer systems
US7337279B2 (en) * 2003-06-27 2008-02-26 Newisys, Inc. Methods and apparatus for sending targeted probes
US7577727B2 (en) * 2003-06-27 2009-08-18 Newisys, Inc. Dynamic multiple cluster system reconfiguration
US7159137B2 (en) * 2003-08-05 2007-01-02 Newisys, Inc. Synchronized communication between multi-processor clusters of multi-cluster computer systems
US7117419B2 (en) * 2003-08-05 2006-10-03 Newisys, Inc. Reliable communication between multi-processor clusters of multi-cluster computer systems
US7103823B2 (en) 2003-08-05 2006-09-05 Newisys, Inc. Communication between multi-processor clusters of multi-cluster computer systems
US7395347B2 (en) * 2003-08-05 2008-07-01 Newisys, Inc, Communication between and within multi-processor clusters of multi-cluster computer systems
US20050240734A1 (en) * 2004-04-27 2005-10-27 Batson Brannon J Cache coherence protocol
US7822929B2 (en) * 2004-04-27 2010-10-26 Intel Corporation Two-hop cache coherency protocol
US20050262250A1 (en) * 2004-04-27 2005-11-24 Batson Brannon J Messaging protocol
US7395381B2 (en) * 2005-03-18 2008-07-01 Intel Corporation Method and an apparatus to reduce network utilization in a multiprocessor system
US8037465B2 (en) * 2005-09-30 2011-10-11 Intel Corporation Thread-data affinity optimization using compiler
US20110004732A1 (en) * 2007-06-06 2011-01-06 3Leaf Networks, Inc. DMA in Distributed Shared Memory System
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
WO2012029163A1 (ja) * 2010-09-02 2012-03-08 富士通株式会社 ノードコントローラ、ノードコントローラの制御方法及びコンピュータシステム
US8635412B1 (en) 2010-09-09 2014-01-21 Western Digital Technologies, Inc. Inter-processor communication
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US9158670B1 (en) 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
CN102439571B (zh) * 2011-10-27 2013-08-28 华为技术有限公司 一种防止节点控制器死锁的方法及装置
WO2013154549A1 (en) 2012-04-11 2013-10-17 Hewlett-Packard Development Company, L.P. Prioritized conflict handling in a system
US9465740B2 (en) 2013-04-11 2016-10-11 Apple Inc. Coherence processing with pre-kill mechanism to avoid duplicated transaction identifiers
US9925492B2 (en) * 2014-03-24 2018-03-27 Mellanox Technologies, Ltd. Remote transactional memory
FR3021773B1 (fr) * 2014-05-27 2017-10-06 Bull Sas Interrogation speculative en memoire centrale d'un systeme multiprocesseur
US9658963B2 (en) * 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
US10642780B2 (en) 2016-03-07 2020-05-05 Mellanox Technologies, Ltd. Atomic access to object pool over RDMA transport network
US10552367B2 (en) 2017-07-26 2020-02-04 Mellanox Technologies, Ltd. Network data transactions using posted and non-posted operations
US10613980B2 (en) * 2017-12-19 2020-04-07 International Business Machines Corporation Coherence protocol providing speculative coherence response to directory probe
US10579527B2 (en) 2018-01-17 2020-03-03 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10713169B2 (en) 2018-01-17 2020-07-14 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10387310B2 (en) 2018-01-17 2019-08-20 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
GR20180100189A (el) * 2018-05-03 2020-01-22 Arm Limited Δικτυο επεξεργασιας δεδομενων με συμπυκνωση ροης για μεταφορα δεδομενων μεσω streaming
US11068407B2 (en) 2018-10-26 2021-07-20 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction
US10884740B2 (en) 2018-11-08 2021-01-05 International Business Machines Corporation Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads
US11119781B2 (en) 2018-12-11 2021-09-14 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
US11106608B1 (en) 2020-06-22 2021-08-31 International Business Machines Corporation Synchronizing access to shared memory by extending protection for a target address of a store-conditional request
US11693776B2 (en) 2021-06-18 2023-07-04 International Business Machines Corporation Variable protection window extension for a target address of a store-conditional request

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02205963A (ja) 1989-01-27 1990-08-15 Digital Equip Corp <Dec> 読取中断処理
JPH06282528A (ja) 1993-01-29 1994-10-07 Internatl Business Mach Corp <Ibm> データ転送方法及びそのシステム
US5878268A (en) 1996-07-01 1999-03-02 Sun Microsystems, Inc. Multiprocessing system configured to store coherency state within multiple subnodes of a processing node
US5958019A (en) * 1996-07-01 1999-09-28 Sun Microsystems, Inc. Multiprocessing system configured to perform synchronization operations
US5950226A (en) * 1996-07-01 1999-09-07 Sun Microsystems, Inc. Multiprocessing system employing a three-hop communication protocol
US5892970A (en) * 1996-07-01 1999-04-06 Sun Microsystems, Inc. Multiprocessing system configured to perform efficient block copy operations
US5754877A (en) * 1996-07-02 1998-05-19 Sun Microsystems, Inc. Extended symmetrical multiprocessor architecture

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ЯКУБАЙТИС Э.А. Информационно-вычислительные сети. - М: Финансы и статистика, 1984, с. 16-18, 32-35, 49, 50, 78-80, 119-121, 195-197. *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2817624C1 (ru) * 2019-09-03 2024-04-17 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Отсрочка обновлений состояний кэша в неспекулятивной кэш-памяти в процессорной системе в ответ на спекулятивный запрос данных до тех пор, пока спекулятивный запрос данных не станет неспекулятивным

Also Published As

Publication number Publication date
EP1153349A1 (en) 2001-11-14
PL348859A1 (en) 2002-06-17
ATE236431T1 (de) 2003-04-15
CZ20012153A3 (cs) 2001-09-12
CA2349569A1 (en) 2000-06-22
IL142265A0 (en) 2002-03-10
DE69906585T2 (de) 2004-02-12
CN1330783A (zh) 2002-01-09
CN1157659C (zh) 2004-07-14
ES2196893T3 (es) 2003-12-16
DE69906585D1 (de) 2003-05-08
CA2349569C (en) 2005-04-05
US6338122B1 (en) 2002-01-08
KR20010101193A (ko) 2001-11-14
EP1153349B1 (en) 2003-04-02
HUP0104577A3 (en) 2003-11-28
TW446883B (en) 2001-07-21
AU1672500A (en) 2000-07-03
IL142265A (en) 2007-06-03
WO2000036514A1 (en) 2000-06-22
KR100465583B1 (ko) 2005-01-13
HUP0104577A2 (hu) 2002-03-28

Similar Documents

Publication Publication Date Title
RU2220444C2 (ru) Компьютерная система и способ передачи данных в компьютерной системе
US7469321B2 (en) Software process migration between coherency regions without cache purges
US6067611A (en) Non-uniform memory access (NUMA) data processing system that buffers potential third node transactions to decrease communication latency
JP3849951B2 (ja) 主記憶共有型マルチプロセッサ
US6081874A (en) Non-uniform memory access (NUMA) data processing system that speculatively issues requests on a node interconnect
JP3661761B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)データ処理システム
JP3644587B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム
US6779036B1 (en) Method and apparatus for achieving correct order among bus memory transactions in a physically distributed SMP system
US7143246B2 (en) Method for supporting improved burst transfers on a coherent bus
US6467012B1 (en) Method and apparatus using a distributed system structure to support bus-based cache-coherence protocols for symmetric multiprocessors
US6546429B1 (en) Non-uniform memory access (NUMA) data processing system that holds and reissues requests at a target processing node in response to a retry
US7529799B2 (en) Method and apparatus for transaction tag assignment and maintenance in a distributed symmetric multiprocessor system
US20080147988A1 (en) Multiprocessor System With Dynamic Cache Coherency Regions
JPH1097513A (ja) マルチプロセッサ・コンピュータ・システム中のノード、及びマルチプロセッサ・コンピュータ・システム
JPH10187645A (ja) プロセス・ノードの多数のサブノード内にコヒーレンス状態で格納するように構成されたマルチプロセス・システム
US6266743B1 (en) Method and system for providing an eviction protocol within a non-uniform memory access system
US6591348B1 (en) Method and system for resolution of transaction collisions to achieve global coherence in a distributed symmetric multiprocessor system
JPH10149342A (ja) プリフェッチ動作を実行するマルチプロセス・システム
US6950913B2 (en) Methods and apparatus for multiple cluster locking
US6442597B1 (en) Providing global coherence in SMP systems using response combination block coupled to address switch connecting node controllers to memory
US6085293A (en) Non-uniform memory access (NUMA) data processing system that decreases latency by expediting rerun requests
US5701422A (en) Method for ensuring cycle ordering requirements within a hierarchical bus system including split-transaction buses
JP2003150573A (ja) マルチプロセッサシステム
MXPA99006144A (en) Data processing system for non-uniform memory access data introducing potential intermediate memories third-node transactions to decrease communicate waiting time

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20071211