способ и устройство для определения состояния совместно используемого ресурса
Классы МПК: | G06F13/20 для доступа к шине ввода-вывода G06F1/12 синхронизация различных синхросигналов |
Автор(ы): | ЧЕНГ Марко Ю. К. (US) |
Патентообладатель(и): | САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд. (KR) |
Приоритеты: |
подача заявки:
1996-11-13 публикация патента:
27.04.2002 |
Изобретение относится к области цифровых систем и может быть использовано для определения состояния совместно используемого ресурса. Техническим результатом является расширение функциональных возможностей. Устройство содержит записывающую и считывающую подсистемы, два семафора, два синхронизирующих элемента, два проверочных элемента. Другой вариант устройства содержит две подсистемы, средства для формирования первого и второго количественного параметров, средство для их синхронизации, средство для сравнения параметров. Способы описывают варианты работы устройств. 8 с. и 5 з.п. ф-лы, 16 ил.
Рисунок 1, Рисунок 2, Рисунок 3, Рисунок 4, Рисунок 5, Рисунок 6, Рисунок 7, Рисунок 8, Рисунок 9, Рисунок 10, Рисунок 11, Рисунок 12, Рисунок 13, Рисунок 14
Формула изобретения
1. Способ определения состояния ресурса цифровой системы, в которой первая подсистема, работающая синхронно с первыми тактовыми импульсами, записывает данные в указанный ресурс, в которой вторая подсистема, работающая синхронно со вторыми тактовыми импульсами, считывает данные из указанного ресурса, причем указанные вторые тактовые импульсы асинхронны указанным первым тактовым импульсам и указанный ресурс недоступен для записи дополнительных данных из указанной первой подсистемы до тех пор, пока записанные прежде данные не будут считаны из указанного ресурса указанной второй подсистемой, отличающийся тем, что формируют первый количественный параметр, представляющий число доступов записи в указанный ресурс, сделанных указанной первой подсистемой, причем указанный первый количественный параметр формируют синхронно с указанными первыми тактовыми импульсами, формируют второй количественный параметр, представляющий число доступов считывания из указанного ресурса, сделанных указанной второй подсистемой, причем указанный второй количественный параметр формируют синхронно с указанными вторыми тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными вторыми тактовыми импульсами для формирования третьего количественного параметра, синхронизируют указанный второй количественный параметр с указанными первыми тактовыми импульсами для формирования четвертого количественного параметра, сравнивают указанный первый количественный параметр с указанным четвертым количественным параметром для формирования первого сигнала доступности ресурса для указанной первой подсистемы, причем указанный первый сигнал доступности ресурса активен, если указанный первый количественный параметр равен указанному четвертому количественному параметру, при этом указанный первый сигнал доступности ресурса формируют синхронно с указанными первыми тактовыми импульсами, и сравнивают указанный второй количественный параметр и указанный третий количественный параметр для формирования второго сигнала доступности ресурса для указанной второй подсистемы, причем указанный второй сигнал доступности ресурса активен, если указанный второй количественный параметр отличается от указанного третьего количественного параметра, при этом указанный второй сигнал доступности ресурса формируют синхронно с указанными вторыми тактовыми импульсами. 2. Способ по п. 1, отличающийся тем, что указанный первый количественный параметр, указанный второй количественный параметр, указанный третий количественный параметр и указанный четвертый количественный параметр представляют значение нуля или единицы, причем указанное значение изменяется от единицы к нулю или от нуля к единице при наличии приращения, указанный первый сигнал доступности ресурса формируют в результате операции исключающее ИЛИ, которой подвергают указанный первый количественный параметр и указанный четвертый количественный параметр, а указанный второй сигнал доступности ресурса формируют в результате операции исключающее ИЛИ, которой подвергают указанный второй количественный параметр и указанный третий количественный параметр. 3. Способ определения состояния ресурса цифровой системы, в которой первая подсистема, работающая синхронно с первыми тактовыми импульсами, записывает данные в указанный ресурс, вторая подсистема, работающая синхронно со вторыми тактовыми импульсами, считывает данные из указанного ресурса, причем указанные вторые тактовые импульсы асинхронны указанным первым тактовым импульсам и указанный ресурс недоступен для записи дополнительных данных из указанной первой подсистемы до тех пор, пока записанные прежде данные не будут считаны из указанного ресурса указанной второй подсистемой, третья подсистема указанной цифровой системы работает синхронно с третьими тактовыми импульсами, причем указанные третьи тактовые импульсы асинхронны указанным первым тактовым импульсам и указанным вторым тактовым импульсам, указанная третья подсистема записывает данные в указанный ресурс, причем указанный ресурс не доступен для записи дополнительных данных из указанной третьей подсистемы до тех пор, пока записанные прежде данные не будут считаны из указанного ресурса указанной второй подсистемой, отличающийся тем, что формируют первый количественный параметр, представляющий число доступов записи в указанный ресурс, сделанных указанной первой подсистемой, причем указанный первый количественный параметр формируют синхронно с указанными первыми тактовыми импульсами, формируют второй количественный параметр, представляющий число доступов считывания из указанного ресурса, сделанных указанной второй подсистемой, причем указанный второй количественный параметр формируют синхронно с указанными вторыми тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными вторыми тактовыми импульсами для формирования третьего количественного параметра, синхронизируют указанный второй количественный параметр с указанными первыми тактовыми импульсами для формирования четвертого количественного параметра, формируют пятый количественный параметр, представляющий число доступов записи в указанный ресурс, сделанных указанной третьей подсистемой, причем указанный пятый количественный параметр формируют синхронно с указанными третьими тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными третьими тактовыми импульсами для формирования шестого количественного параметра, синхронизируют указанный второй количественный параметр с указанными третьими тактовыми импульсами для формирования седьмого количественного параметра, синхронизируют указанный пятый количественный параметр с указанными первыми тактовыми импульсами для формирования восьмого количественного параметра, синхронизируют указанный пятый количественный параметр с указанными вторыми тактовыми импульсами для формирования девятого количественного параметра, формируют первый сигнал доступности ресурса посредством сравнения суммы указанного первого количественного параметра и указанного восьмого количественного параметра с указанным четвертым количественным параметром, причем указанный первый сигнал доступности ресурса активен, если указанная сумма указанного первого количественного параметра и указанного восьмого количественного параметра равна указанному четвертому количественному параметру, при этом указанный первый сигнал доступности ресурса формируют синхронно с указанными первыми тактовыми импульсами, формируют второй сигнал доступности ресурса посредством сравнения суммы указанного третьего количественного параметра и указанного девятого количественного параметра с указанным вторым количественным параметром, причем указанный второй сигнал доступности ресурса активен, если указанная сумма указанного третьего количественного параметра и указанного девятого количественного параметра отличается от указанного второго количественного параметра, при этом указанный второй сигнал доступности ресурса формируют синхронно с указанными вторыми тактовыми импульсами, и формируют третий сигнал доступности ресурса посредством сравнения суммы указанного пятого количественного параметра и указанного шестого количественного параметра с указанным седьмым количественным параметром, причем указанный третий сигнал доступности ресурса активен, если указанная сумма указанного пятого количественного параметра и указанного шестого количественного параметра равна указанному седьмому количественному параметру, при этом указанный третий сигнал доступности ресурса формируют синхронно с указанными первыми тактовыми импульсами. 4. Способ определения состояния ресурса цифровой системы, в которой первая подсистема, работающая синхронно с первыми тактовыми импульсами, записывает данные в указанный ресурс, вторая подсистема, работающая синхронно со вторыми тактовыми импульсами, считывает данные из указанного ресурса, причем указанные вторые тактовые импульсы асинхронны указанным первым тактовым импульсам, третья подсистема указанной цифровой системы работает синхронно с третьими тактовыми импульсами, а указанные третьи тактовые импульсы асинхронны указанным первым тактовым импульсам и указанным вторым тактовым импульсам, указанная третья подсистема записывает данные в указанный ресурс, четвертая подсистема указанной цифровой системы работает синхронно с указанными четвертыми тактовыми импульсами, при этом указанные четвертые тактовые импульсы асинхронны указанным первым тактовым импульсам, указанным вторым тактовым импульсам и указанным третьим тактовым импульсам, указанная четвертая подсистема считывает данные из указанного ресурса, указанный ресурс недоступен для записи дополнительных данных из указанной первой подсистемы или из указанной третьей подсистемы до тех пор, пока записанные прежде данные не будут считаны из указанного ресурса указанной второй подсистемой или указанной четвертой подсистемой, отличающийся тем, что формируют первый количественный параметр, представляющий число доступов записи в указанный ресурс, сделанных указанной первой подсистемой, причем указанный первый количественный параметр формируют синхронно с указанными первыми тактовыми импульсами, формируют второй количественный параметр, представляющий число доступов считывания из указанного ресурса, сделанных указанной второй подсистемой, причем указанный второй количественный параметр формируют синхронно с указанными вторыми тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными вторыми тактовыми импульсами для формирования третьего количественного параметра, синхронизируют указанный второй количественный параметр с указанными первыми тактовыми импульсами для формирования четвертого количественного параметра, формируют пятый количественный параметр, представляющий число доступов записи в указанный ресурс, сделанных указанной третьей подсистемой, причем указанный пятый количественный параметр формируют синхронно с указанными третьими тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными третьими тактовыми импульсами для формирования шестого количественного параметра, синхронизируют указанный второй количественный параметр с указанными третьими тактовыми импульсами для формирования седьмого количественного параметра, синхронизируют указанный пятый количественный параметр с указанными первыми тактовыми импульсами для формирования восьмого количественного параметра, синхронизируют указанный пятый количественный параметр с указанными вторыми тактовыми импульсами для формирования девятого количественного параметра, формируют десятый количественный параметр, представляющий число доступов считывания из указанного ресурса, сделанных указанной четвертой подсистемой, причем указанный десятый количественный параметр формируют синхронно с указанными четвертыми тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными четвертыми тактовыми импульсами для формирования одиннадцатого количественного параметра, синхронизируют указанный второй количественный параметр с указанными четвертыми тактовыми импульсами для формирования двенадцатого количественного параметра, синхронизируют указанный пятый количественный параметр с указанными четвертыми тактовыми импульсами для формирования тринадцатого количественного параметра, синхронизируют указанный десятый количественный параметр с указанными первыми тактовыми импульсами для формирования четырнадцатого количественного параметра, синхронизируют указанный десятый количественный параметр с указанными вторыми тактовыми импульсами для формирования пятнадцатого количественного параметра, синхронизируют указанный десятый количественный параметр с указанными третьими тактовыми импульсами для формирования шестнадцатого количественного параметра, формируют первый сигнал доступности ресурса посредством сравнения суммы указанного первого количественного параметра и указанного восьмого количественного параметра с суммой указанного четвертого количественного параметра и указанного четырнадцатого количественного параметра, причем указанный первый сигнал доступности ресурса активен, если указанная сумма указанного первого количественного параметра и указанного восьмого количественного параметра равна указанной сумме указанного четвертого количественного параметра и указанного четырнадцатого количественного параметра, при этом указанный первый сигнал доступности ресурса формируют синхронно с указанными первыми тактовыми импульсами, формируют второй сигнал доступности ресурса посредством сравнения суммы указанного третьего количественного параметра и указанного девятого количественного параметра с суммой указанного второго количественного параметра и указанного пятнадцатого количественного параметра, причем указанный второй сигнал доступности ресурса активен, если указанная сумма указанного третьего количественного параметра и указанного девятого количественного параметра отличается от указанной суммы указанного второго количественного параметра и указанного пятнадцатого количественного параметра, при этом указанный второй сигнал доступности ресурса формируют синхронно с указанными вторыми тактовыми импульсами, формируют третий сигнал доступности ресурса посредством сравнения суммы указанного пятого количественного параметра и указанного шестого количественного параметра с суммой указанного седьмого количественного параметра и указанного шестнадцатого количественного параметра, причем указанный третий сигнал доступности ресурса активен, если указанная сумма указанного пятого количественного параметра и указанного шестого количественного параметра равна указанной сумме указанного седьмого количественного параметра и указанного шестнадцатого количественного параметра, при этом указанный третий сигнал доступности ресурса формируют синхронно с указанными третьими тактовыми импульсами, и формируют четвертый сигнал доступности ресурса посредством сравнения суммы указанного одиннадцатого количественного параметра с суммой указанного десятого количественного параметра и указанного двенадцатого количественного параметра, причем указанный четвертый сигнал доступности ресурса активен, если указанная сумма указанного одиннадцатого количественного параметра и указанного тринадцатого количественного параметра равна указанной сумме указанного десятого количественного параметра и указанного двенадцатого количественного параметра, при этом указанный четвертый сигнал доступности ресурса формируют синхронно с указанными четвертыми тактовыми импульсами. 5. Способ определения состояния ресурса цифровой системы, в которой первая подсистема, работающая синхронно с первыми тактовыми импульсами, записывает данные в указанный ресурс, вторая подсистема, работающая синхронно со вторыми тактовыми импульсами, считывает данные из указанного ресурса, причем указанные вторые тактовые импульсы асинхронны указанным первым тактовым импульсам, третья подсистема указанной цифровой системы работает синхронно с третьими тактовыми импульсами, при этом указанные третьи тактовые импульсы асинхронны указанным первым тактовым импульсам и указанным вторым тактовым импульсам, указанная третья подсистема считывает данные из указанного ресурса, указанный ресурс недоступен для записи дополнительных данных из указанной первой подсистемы до тех пор, пока записанные прежде данные не будут считаны из указанного ресурса указанной второй подсистемой или указанной третьей подсистемой, отличающийся тем, что формируют первый количественный параметр, представляющий число доступов записи в указанный ресурс, сделанных указанной первой подсистемой, причем указанный первый количественный параметр формируют синхронно с указанными первыми тактовыми импульсами, формируют второй количественный параметр, представляющий число доступов считывания из указанного ресурса, сделанных указанной второй подсистемой, причем указанный второй количественный параметр формируют синхронно с указанными вторыми тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными вторыми тактовыми импульсами для формирования третьего количественного параметра, синхронизируют указанный второй количественный параметр с указанными первыми тактовыми импульсами для формирования четвертого количественного параметра, формируют пятый количественный параметр, представляющий число доступов считывания из указанного ресурса, сделанных указанной третьей подсистемой, причем указанный пятый количественный параметр формируют синхронно с указанными третьими тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными третьими тактовыми импульсами для формирования шестого количественного параметра, синхронизируют указанный второй количественный параметр с указанными третьими тактовыми импульсами для формирования седьмого количественного параметра, синхронизируют указанный пятый количественный параметр с указанными первыми тактовыми импульсами для формирования восьмого количественного параметра, синхронизируют указанный пятый количественный параметр с указанными вторыми тактовыми импульсами для формирования девятого количественного параметра, формируют первый сигнал доступности ресурса посредством сравнения указанного первого количественного параметра с суммой указанного четвертого количественного параметра и указанного восьмого количественного параметра, причем указанный первый сигнал доступности ресурса активен, если указанный первый количественный параметр равен указанной сумме указанного четвертого количественного параметра и указанного восьмого количественного параметра, при этом указанный первый сигнал доступности ресурса формируют синхронно с указанными первыми тактовыми импульсами, формируют второй сигнал доступности ресурса посредством сравнения указанного третьего количественного параметра с суммой указанного второго количественного параметра и указанного девятого количественного параметра, причем указанный второй сигнал доступности ресурса активен, если указанный третий количественный параметр отличается от указанной суммы указанного второго количественного параметра и указанного девятого количественного параметра, при этом указанный второй сигнал доступности ресурса формируют синхронно с указанными вторыми тактовыми импульсами, и формируют третий сигнал доступности ресурса посредством сравнения указанного пятого количественного параметра с суммой указанного седьмого количественного параметра и указанного шестого количественного параметра, причем указанный третий сигнал доступности ресурса активен, если указанный пятый количественный параметр равен указанной сумме указанного седьмого количественного параметра и указанного шестого количественного параметра, при этом указанный третий сигнал доступности ресурса формируют синхронно с указанными третьими тактовыми импульсами. 6. Способ определения состояния ресурса цифровой системы, в которой, по меньшей мере, одна записывающая подсистема записывает данные в ресурс, а, по меньшей мере, одна считывающая подсистема считывает данные из ресурса, причем указанный ресурс недоступен для записи дополнительных данных из указанных записывающих подсистем до тех пор, пока записанные прежде данные не будут считаны из указанного ресурса одной из указанных считывающих подсистем, причем каждая записывающая подсистема и каждая считывающая подсистема работают синхронно с соответствующими тактовыми импульсами, по меньшей мере, одна записывающая подсистема работает синхронно с первыми тактовыми импульсами, а, по меньшей мере, одна считывающая подсистема работает синхронно со вторыми тактовыми импульсами, вторые тактовые импульсы асинхронны указанным первым тактовым импульсам, отличающийся тем, что формируют один количественный параметр записи для каждой указанной записывающей подсистемы, причем каждый указанный количественный параметр записи представляет число доступов записи в указанный ресурс, сделанных соответствующей указанной записывающей подсистемой, при этом каждый указанный количественный параметр записи для каждой указанной записывающей подсистемы формируют синхронно с указанными соответствующими тактовыми импульсами указанной записывающей подсистемы, формируют один количественный параметр считывания для каждой указанной считывающей подсистемы, причем каждый указанный количественный параметр считывания представляет число доступов считывания из указанного ресурса, сделанных соответствующей указанной считывающей подсистемой, при этом каждый указанный количественный параметр считывания для каждой указанной считывающей подсистемы формируют синхронно с указанными соответствующими тактовыми импульсами указанной считывающей подсистемы, синхронизируют каждый количественный параметр записи с указанными тактовыми импульсами записывающих подсистем и указанными тактовыми импульсами считывающих подсистем, синхронизируют каждый количественный параметр с указанными тактовыми импульсами записывающих подсистем и указанными тактовыми импульсами считывающих подсистем, суммируют указанные количественные параметры записи для формирования общего количественного параметра считывания, причем указанное суммирование осуществляют независимо каждой указанной записывающей подсистемой и каждой указанной считывающей подсистемой, суммируют указанные количественные параметры считывания для формирования общего количественного параметра считывания, причем указанное суммирование осуществляют независимо каждой указанной записывающей подсистемой и каждой указанной считывающей подсистемой, сравнивают указанный общий количественный параметр записи и указанный общий количественный параметр считывания для формирования сигнала доступности ресурса для записи, причем указанный сигнал доступности ресурса для записи активен, если указанный общий количественный параметр записи равен указанному общему количественному параметру считывания, при этом указанное сравнение выполняется независимо каждой указанной записывающей подсистемой для формирования соответствующих сигналов доступности ресурса для записи, и сравнивают указанный общий количественный параметр записи и указанный общий количественный параметр считывания для формирования сигнала доступности ресурса для считывания, причем указанный сигнал доступности ресурса для считывания активен, если указанный общий количественный параметр записи отличается от указанного общего количественного параметра считывания, при этом указанное сравнение выполняется независимо каждой указанной считывающей системой для формирования соответствующих сигналов доступности ресурса для считывания. 7. Способ по п. 6, отличающийся тем, что указанные количественные параметры записи и указанные количественные параметры считывания представляют значение либо нуля, либо единицы, причем указанное значение меняется от единицы к нулю или от нуля к единице при приращении, в котором указанный общий количественный параметр записи формируют посредством операции исключающее ИЛИ, которой подвергают указанные количественные параметры записи, причем указанный общий количественный параметр считывания формируют посредством операции исключающее ИЛИ, которой подвергают указанные количественные параметры считывания, причем указанный сигнал доступности ресурса для записи формируют посредством операции исключающее ИЛИ, которой подвергают указанный общий количественный параметр записи и указанный общий количественный параметр считывания, при этом указанный сигнал доступности ресурса для записи формируют независимо каждой указанной записывающей подсистемой, указанный сигнал доступности ресурса для считывания формируют посредством операции исключающее ИЛИ, которой подвергают указанный общий количественный параметр считывания и указанный общий количественный параметр записи, а указанный сигнал доступности ресурса для считывания формируют независимо каждой указанной считывающей подсистемой. 8. Способ определения состояния ресурса цифровой системы, в которой первая подсистема, работающая синхронно с первыми тактовыми импульсами, делает первичные доступы к ресурсу, вторая подсистема, работающая синхронно со вторыми тактовыми импульсами, делает вторичные доступы к ресурсу, указанные вторые тактовые импульсы асинхронны указанным первым тактовым импульсам, указанный ресурс не доступен для дополнительных указанных первичных доступов до тех пор, пока не будет иметь место указанный вторичный доступ, а указанный ресурс не доступен для указанных вторичных доступов до тех пор, пока не будет иметь места указанный первичный доступ, указанные первичные доступы чередуются по времени с указанными вторичными доступами, отличающийся тем, что формируют первый количественный параметр, представляющий число указанных первичных доступов к указанному ресурсу, сделанных указанной первой подсистемой, причем указанный первый количественный параметр формируют синхронно с указанными первыми тактовыми импульсами, формируют второй количественный параметр, представляющий число указанных вторичных доступов к указанному ресурсу, сделанных указанной второй подсистемой, причем указанный второй количественный параметр формируют синхронно с указанными вторыми тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными вторыми тактовыми импульсами для формирования третьего количественного параметра, синхронизируют указанный второй количественный параметр с указанными первыми тактовыми импульсами для формирования четвертого количественного параметра, сравнивают указанный первый количественный параметр с указанным четвертым количественным параметром для формирования первого сигнала доступности ресурса для указанной первой подсистемы, причем указанный первый сигнал доступности ресурса активен, если указанный первый количественный параметр равен указанному четвертому количественному параметру, при этом указанный первый сигнал доступности ресурса формируют синхронно с указанными первыми тактовыми импульсами, и сравнивают указанный второй количественный параметр с указанным третьим количественным параметром для формирования второго сигнала доступности ресурса для указанной второй подсистемы, причем указанный второй сигнал доступности ресурса активен, если указанный второй количественный параметр отличается от указанного третьего количественного параметра, при этом указанный второй сигнал доступности ресурса генерируется синхронно с указанными вторыми тактовыми импульсами. 9. Устройство для определения состояния ресурса в цифровой системе, в которой записывающая подсистема посылает сигнал записи в указанный ресурс, считывающая подсистема посылает сигнал считывания из указанного ресурса, указанная записывающая подсистема работает синхронно с первыми тактовыми импульсами, указанная считывающая подсистема работает синхронно со вторыми тактовыми импульсами, причем указанные вторые тактовые импульсы асинхронны указанным первым тактовым импульсам, отличающееся тем, что оно содержит первый семафор, который формирует первый сигнал обновления, который может быть в первом логическом состоянии или втором логическом состоянии, причем указанный первый семафор реагирует на указанный сигнал записи, изменяя логическое состояние указанного первого сигнала обновления синхронно с указанными первыми тактовыми импульсами каждый раз, когда указанная записывающая подсистема записывает данные в указанный ресурс, второй семафор, который формирует второй сигнал обновления, который может быть в первом логическом состоянии и во втором логическом состоянии, причем указанный второй семафор реагирует на указанный сигнал считывания, изменяя логическое состояние указанного второго сигнала обновления синхронно с указанными вторыми тактовыми импульсами каждый раз, когда указанная считывающая подсистема считывает данные из указанного ресурса, первый синхронизирующий элемент, который синхронизирует указанный первый сигнал обновления с указанными вторыми тактовыми импульсами для формирования первого синхронизированного сигнала обновления, второй синхронизирующий элемент, который синхронизирует указанный второй сигнал обновления с указанными первыми тактовыми импульсами для формирования второго синхронизированного сигнала обновления, первый проверочный элемент, который формирует первый проверочный выходной сигнал, который может быть в первом логическом состоянии и во втором логическом состоянии, причем указанный первый проверочный элемент формирует указанный первый проверочный выходной сигнал в указанном первом логическом состоянии, если указанный первый сигнал обновления равен указанному второму синхронизированному сигналу обновления, указанный первый проверочный элемент формирует указанный первый проверочный выходной сигнал в указанном втором логическом состоянии, если указанный первый сигнал обновления отличается от указанного второго синхронизированного сигнала обновления, и второй проверочный элемент, который формирует второй проверочный выходной сигнал, который может быть в первом логическом состоянии и во втором логическом состоянии, причем указанный второй проверочный элемент формирует указанный второй проверочный выходной сигнал в указанном первом логическом состоянии, если указанный первый синхронизированный сигнал обновления равен указанному второму сигналу обновления, указанный второй проверочный элемент формирует указанный второй проверочный выходной сигнал в указанном втором логическом состоянии, если указанный первый синхронизированный сигнал обновления отличается от указанного второго сигнала обновления. 10. Устройство по п. 9, отличающееся тем, что указанный первый семафор содержит первый логический элемент исключающее ИЛИ и первый триггер задержки, причем указанный первый логический элемент исключающее ИЛИ имеет первый выход, указанный первый выход соединен со входом указанного триггера задержки, указанный первый триггер задержки имеет второй выход, указанный второй выход соединен со входом указанного первого логического элемента исключающее ИЛИ, и указанный второй семафор содержит второй логический элемент исключающее ИЛИ и второй триггер задержки, причем указанный второй логический элемент исключающее ИЛИ имеет третий выход, соединенный с указанным третьим выходом указанного второго триггера задержки, указанный второй триггер задержки имеет четвертый выход, указанный четвертый выход соединен со входом указанного второго логического элемента исключающее ИЛИ. 11. Устройство по п. 9, отличающееся тем, что указанный первый синхронизирующий элемент содержит два триггера задержки с фиксацией состояния, при этом указанный второй синхронизирующий элемент содержит два триггера задержки с фиксацией состояния. 12. Устройство по п. 9, отличающееся тем, что указанный первый проверочный элемент содержит логический элемент исключающее ИЛИ, при этом указанный второй проверочный элемент содержит логический элемент исключающее ИЛИ. 13. Устройство для определения состояния ресурса цифровой системы, в которой первая подсистема, работающая синхронно с первыми тактовыми импульсами, записывает данные в указанный ресурс, вторая подсистема, работающая синхронно со вторыми тактовыми импульсами, считывает данные из указанного ресурса, причем указанные вторые тактовые импульсы асинхронны указанным первым тактовым импульсам, указанный ресурс не доступен для записи дополнительных данных из указанной первой подсистемы до тех пор, пока записанные прежде данные не будут считаны из указанного ресурса указанной второй подсистемой, отличающееся тем, что оно содержит средство для формирования первого количественного параметра, представляющего число доступов записи в указанный ресурс, сделанных указанной первой подсистемой, причем указанный первый количественный параметр формируют синхронно с указанными первыми тактовыми импульсами, средство для формирования второго количественного параметра, представляющего число доступов считывания из указанного ресурса, сделанных указанной второй подсистемой, причем указанный второй количественный параметр формируют синхронно указанным вторым тактовым импульсам, средство для синхронизации указанного первого количественного параметра с указанными вторыми тактовыми импульсами для формирования третьего количественного параметра, средство для синхронизации указанного второго количественного параметра с указанными первыми тактовыми импульсами для формирования четвертого количественного параметра, средство для сравнения указанного первого количественного параметра с указанным четвертым количественным параметром для формирования первого сигнала доступности ресурса для указанной первой подсистемы, причем указанный первый сигнал доступности ресурса активен, если указанный первый количественный параметр равен указанному четвертому количественному параметру, при этом указанный первый сигнал доступности ресурса формируют синхронно указанным первым тактовым импульсам, и средство для сравнения указанного второго количественного параметра с указанным третьим количественным параметром для формирования второго сигнала доступности ресурса для указанной второй подсистемы, причем указанный второй сигнал доступности ресурса активен, если указанный второй количественный параметр отличается от указанного третьего количественного параметра, при этом указанный второй сигнал доступности ресурса формируют синхронно указанным вторым тактовым импульсам.Описание изобретения к патенту
Изобретение относится к цифровым системам, а более конкретно к способу определения состояния совместно используемого ресурса. Во многих цифровых системах один системный ресурс должен быть совместно использован многими компонентами системы. Например, в цифровом вычислительном комплексе обычным является то, что центральный процессор совместно использует запоминающее устройство с подсистемой видеодисплея или даже с другим центральным процессором. Такая ситуация требует арбитражного алгоритма для того, чтобы решить, которому из потенциально многих запросов ресурса будет дано разрешение доступа к совместно используемому ресурсу. Кроме того, при использовании одного ресурса для передачи информации от одного компонента системы (записывающего "производителя") к другому (считывающему "потребителю") информация, сохраненная в ресурсе производителем, должна быть сохранена до тех пор, пока потребитель ею не воспользуется. Это особенно актуально, если другие производители конкурируют для записи информации в тот же ресурс. В соответствии с этим, как только производитель записал информацию в совместно используемый ресурс, другим производителям не должна быть разрешена запись в этот ресурс до тех пор, пока эта информация не будет считана потребителем. Традиционная схема координации доступа к совместно используемому системному ресурсу включает в себя применение регистра состояния (или "семафора"), связанного с ресурсом, который представляется полным в одном (высоком) логическом состоянии и представляется пустым в другом (низком) логическом состоянии. Такой семафор, как правило, получают при использовании стандартного триггера. Например, семафор может быть использован для регулирования обмена информацией через совместно используемый ресурс, способный хранить данные. Такой семафор будет представлять, что ресурс полон, когда "установлен в состояние "1"" производителем, который только что записал данные в ресурс (показывая, что данные теперь могут быть считаны потребителем), и будет представлять что ресурс пуст, если потребителем, который только что считал данные из ресурса, "занесен "0"" (показывая, что производителем теперь могут быть записаны новые данные). Алгоритм семафора удовлетворителен, пока все изготовители и потребители работают в одной тактовой области, что и семафор. При однородной тактовой области, производители и потребители могут проверять значение семафора, не интересуясь тем, что сигнал обновления данных еще не принят семафором, или тем, что значение семафора обновленных данных еще не передано всем производителям или потребителям. Иными словами, в однородной тактовой области нет трудности в гарантировании того, что значение семафора отражает истинное состояние совместно используемого ресурса. Для синхронизации сигналов между подсистемами, работающими в однородной тактовой области, нет необходимости. Однако если подсистемы работают в разных тактовых областях, то сигналы от одной подсистемы к другой должны быть синхронизированы. В соответствии с этим, если подсистемы совместно используют ресурс, но работают в разных тактовых областях, то возникают проблемы. Традиционные алгоритмы семафора должны преодолевать трудности, связанные с множеством тактовых областей, например, 1) которая тактовая область будет использовать семафор; 2) как сигналы установки в состояние "1" и занесения "0" формируются в различных тактовых областях; 3) отражает ли значение семафора действительное состояние совместно используемого ресурса, так что подсистема может проверить такое состояние; и 4) как соответствующая схемная логика проверяется для исправления на стадии проектирования. В простой системе, содержащей один производитель и один потребитель, которые совместно используют ресурс, но работают в разных тактовых областях, традиционный алгоритм семафора позволяет три возможных выбора тактовой области для семафора. Во-первых, семафор может быть расположен в тактовой области производителя. В такой конфигурации производитель имеет немедленный синхронный доступ к семафору, отражающему состояние совместно используемого ресурса; таким образом, сигнал (производителя) установки в состояние "1" синхронен семафору. Однако сигнал (потребителя) занесения "0" не синхронен семафору. Следовательно, сигнал (потребителя) занесения "0" должен быть синхронизирован с тактовыми импульсами производителя для обновления семафора, а новое значение семафора должно быть обратно синхронизировано с тактовой областью потребителя, чтобы позволить потребителю проверить состояние ресурса. Имеется задержка, связанная с синхронизацией сигнала (потребителя) занесения "0" с тактовой областью семафора (и производителя), и другая задержка, связанная с синхронизацией нового значения семафора обратно в тактовой области потребителя. Эти задержки создают окно времени, если значение семафора, проверенное потребителем, не является действительным (не отражающим действительного состояния ресурса). Если потребитель проверяет семафор в течение этого окна времени, потребитель обнаружит состояние установки в состояние "1", которое не является действительным. Чтобы помешать потребителю преждевременно проверять семафор, потребитель должен быть задержан на достаточно длительное время, чтобы позволить своему собственному сигналу обновления вернуть семафор в состояние "0", а также позволить новому, возвращенному в исходное состояние, значению семафора достичь потребителя. При втором выборе тактовых областей для семафора необходимо использовать тактовую область потребителя. Выбор использования тактовой области потребителя предлагает обратный сценарий проблемы задержки: производитель должен быть задержан на достаточно длительное время, чтобы помешать ему преждевременно проверять семафор для предотвращения возможности обнаружения недействительного состояния занесения "0". При третьем выборе тактовых областей для семафора необходимо использовать третью тактовую область, которая отличается от тактовой области производителя или потребителя. В этом случае производитель и потребитель должны быть задержаны для предотвращения преждевременной проверки семафора. Таким образом, не зависимо от выбора тактовой области для семафора, производитель или потребитель или оба должны быть замедлены задержкой, чтобы позволить синхронизацию. Дополнительные трудности возникают, если для записи данных в совместно используемый ресурс необходимо более одного производителя для записи данных в совместно используемый ресурс или более одного потребителя для считывания данных из совместно используемого ресурса. Должен быть введен арбитр, который бы управлял записями, делаемыми производителями, и считываниями, осуществляемыми потребителями. Роль такого арбитра заключается в координации прав доступа среди производителей и потребителей для предотвращения режима соперничества, аналогичного режиму соперничества, возникающему вследствие того, что два или более производителей одновременно делают запись в один ресурс, или из-за того, что два или более потребителей одновременно осуществляют считывание из одного ресурса. Традиционный арбитр принимает множество запросов на ресурс и разрешает доступ только одному просителю, который затем становится текущим пользователем. Арбитр не удовлетворит другой запрос на ресурс до тех пор, пока его не освободит текущий пользователь. В системе, имеющей множество производителей, арбитр необходим для регулирования доступа производителя для записи в совместно используемый ресурс. В системе, имеющей множество потребителей, арбитр необходим для регулирования доступа потребителя для считывания из совместно используемого ресурса. В системе, имеющей множество производителей и множество потребителей, необходимо два арбитра: один для регулирования доступа производителей, а другой для регулирования доступа потребителей. В случае множества тактовых областей, требующем арбитража, проблема синхронизации становится более сложной. Когда арбитр, в конце концов, удовлетворяет запрос производителя или потребителя на доступ совместно используемого ресурса, производитель или потребитель должны гарантировать, что значение семафора отражает действительное состояние ресурса. Для более подробного рассмотрения этой проблемы допустим, что один производитель заканчивает запись данных в совместно используемый ресурс, посылает сигнал обновления для установки семафора в состояние "1" и дает права доступа к совместно используемому ресурсу. Допустим также, что после этого арбитр обнаруживает освобождение ресурса и удовлетворяет требование второго производителя на доступ. Между тем, сигнал обновления (первого производителя), который должен быть синхронизирован с тактовой областью семафора, установит семафор в состояние "1". Значение семафора должно быть, в конечном счете, синхронизировано с тактовыми импульсами второго производителя, чтобы позволить второму производителю достоверно проверить состояние ресурса. В то время когда арбитр удовлетворил запрос второго производителя на ресурс, значение семафора, проверенное вторым производителем, не может отражать действительного состояния совместно используемого ресурса, если для того, чтобы значение семафора было синхронизировано в тактовой области второго производителя, не прошло достаточно времени. И в этом случае традиционное решение этой проблемы должно вводить задержку. Проблема синхронизации была решена путем введения задержки в арбитражную логику для гарантии того, что время между освобождением доступа одним производителем и обнаружением разрешения, данное арбитром, другим производителем по меньшей мере равно времени между выдачей одним производителем сигнала обновления семафору и конечной синхронизацией вновь обновленного значения семафора в тактовой области другого производителя. В системах, имеющих более двух производителей или более двух потребителей, требуемая арбитражная задержка должна быть сделана, принимая во внимание самую медленную тактовую область, для гарантии того, чтобы самый медленный производитель или потребитель преждевременно не проверял состояние совместно используемого ресурса. Одним недостатком традиционного алгоритма семафора с арбитражной логикой является то, что производительность системы ухудшается требуемой задержкой. При ее увеличении и необходимости быстродействующих вычислительных систем любое ухудшение быстродействия системы является большим недостатком. Были сделаны попытки оптимизировать вводимые задержки, но такие попытки, даже если и были успешными, были необычайно сложными и трудными для осуществления. Таким образом, другим недостатком известных алгоритмов семафора с арбитражной логикой является то, что оптимизация требуемых задержек трудна для исполнения. Еще одним недостатком алгоритма семафора с арбитражной логикой является то, что на стадии проектирования необходим сложный анализ для определения наименьшего времени возможной задержки, необходимого для преодоления наихудшего сценария. Сложность требуемого анализа экспоненциально растет с увеличением числа производителей или потребителей, работающих в разных тактовых областях, и дополнительно усложняется, если дополнительные разные тактовые области содержат семафор или арбитр или семафор и арбитр. Однако важнейшим является недостаток, который заключается в том, что алгоритмы семафора с арбитражной логикой трудны для подтверждения правильности на стадии проектирования. Эта проблема ощутимее всего в тех случаях, где соответствующая логика представляет собой один небольшой элемент большой интегральной схемы. Вследствие большой стоимости, связанной с производством больших интегральных схем, для предотвращения очень дорогих ошибок большое внимание на стадии проектирования уделяется верификации правильности всей логики. Указанные недостатки преодолены в нижеприведенных способах, реализуемых с использованием нижеприведенных устройств. Способ определения состояния ресурса цифровой системы, в которой первая подсистема, работающая синхронно с первыми тактовыми импульсами, записывает данные в указанный ресурс, вторая подсистема, работающая синхронно со вторыми тактовыми импульсами, считывает данные из указанного ресурса, причем указанные вторые тактовые импульсы асинхронны указанным первым тактовым импульсам и указанный ресурс не доступен для записи дополнительных данных из указанной первой подсистемы до тех пор, пока записанные прежде данные не будут считаны из указанного ресурса указанной второй подсистемой, причем формируют первый количественный параметр, представляющий число доступов записи в указанный ресурс, сделанных указанной первой подсистемой, причем указанный первый количественный параметр формируют синхронно с указанными первыми тактовыми импульсами, формируют второй количественный параметр, представляющий число доступов считывания из указанного ресурса, сделанных указанной второй подсистемой, причем указанный второй количественный параметр формируют синхронно с указанными вторыми тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными вторыми тактовыми импульсами для формирования третьего количественного параметра, синхронизируют указанный второй количественный параметр с указанными первыми тактовыми импульсами для формирования четвертого количественного параметра, сравнивают указанный первый количественный параметр с указанным четвертым количественным параметром для формирования первого сигнала доступности ресурса для указанной первой подсистемы, причем указанный первый сигнал доступности ресурса активен, если указанный первый количественный параметр равен указанному четвертому количественному параметру, при этом указанный первый сигнал доступности ресурса формируют синхронно с указанными первыми тактовыми импульсами и сравнивают указанный второй количественный параметр и указанный третий количественный параметр для формирования второго сигнала доступности ресурса для указанной второй подсистемы, причем указанный второй сигнал доступности ресурса активен, если указанный второй количественный параметр отличается от указанного третьего количественного параметра, при этом указанный второй сигнал доступности ресурса формируют синхронно с указанными вторыми тактовыми импульсами. Предпочтительно, указанный первый количественный параметр, указанный второй количественный параметр, указанный третий количественный параметр и указанный четвертый количественный параметр представляют значение нуля или единицы, причем указанное значение изменяется от единицы к нулю или от нуля к единице при наличии приращения, указанный первый сигнал доступности ресурса формируют в результате операции исключающее ИЛИ, которой подвергают указанный первый количественный параметр и указанный четвертый количественный параметр, а указанный второй сигнал доступности ресурса формируют в результате операции исключающее ИЛИ, которой подвергают указанный второй количественный параметр и указанный третий количественный параметр. Способ определения состояния ресурса цифровой системы, в которой первая подсистема, работающая синхронно с первыми тактовыми импульсами, записывает данные в указанный ресурс, вторая подсистема, работающая синхронно со вторыми тактовыми импульсами, считывает данные из указанного ресурса, причем указанные вторые тактовые импульсы асинхронны указанным первым тактовым импульсам и указанный ресурс не доступен для записи дополнительных данных из указанной первой подсистемы до тех пор, пока записанные прежде данные не будут считаны из указанного ресурса указанной второй подсистемой, в которой третья подсистема указанной цифровой системы работает синхронно с третьими тактовыми импульсами, причем указанные третьи тактовые импульсы асинхронны указанным первым тактовым импульсам и указанным вторым тактовым импульсам, указанная третья подсистема записывает данные в указанный ресурс, причем указанный ресурс не доступен для записи дополнительных данных из указанной третьей подсистемы до тех пор, пока записанные прежде данные не будут считаны из указанного ресурса указанной второй подсистемой, при этом формируют первый количественный параметр, представляющий число доступов записи в указанный ресурс, сделанных указанной первой подсистемой, причем указанный первый количественный параметр формируют синхронно с указанными первыми тактовыми импульсами, формируют второй количественный параметр, представляющий число доступов считывания из указанного ресурса, сделанных указанной второй подсистемой, причем указанный второй количественный параметр формируют синхронно с указанными вторыми тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными вторыми тактовыми импульсами для формирования третьего количественного параметра, синхронизируют указанный второй количественный параметр с указанными первыми тактовыми импульсами для формирования четвертого количественного параметра, формируют пятый количественный параметр, представляющий число доступов записи в указанный ресурс, сделанных указанной третьей подсистемой, причем указанный пятый количественный параметр формируют синхронно с указанными третьими тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными третьими тактовыми импульсами для формирования шестого количественного параметра, синхронизируют указанный второй количественный параметр с указанными третьими тактовыми импульсами для формирования седьмого количественного параметра, синхронизируют указанный пятый количественный параметр с указанными первыми тактовыми импульсами для формирования восьмого количественного параметра, синхронизируют указанный пятый количественный параметр с указанными вторыми тактовыми импульсами для формирования девятого количественного параметра, формируют первый сигнал доступности ресурса посредством сравнения суммы указанного первого количественного параметра и указанного восьмого количественного параметра с указанным четвертым количественным параметром, причем указанный первый сигнал доступности ресурса активен, если указанная сумма указанного первого количественного параметра и указанного восьмого количественного параметра равна указанному четвертому количественному параметру, при этом указанный первый сигнал доступности ресурса формируют синхронно с указанными первыми тактовыми импульсами, формируют второй сигнал доступности ресурса посредством сравнения суммы указанного третьего количественного параметра и указанного девятого количественного параметра с указанным вторым количественным параметром, причем указанный второй сигнал доступности ресурса активен, если указанная сумма указанного третьего количественного параметра и указанного девятого количественного параметра отличается от указанного второго количественного параметра, при этом указанный второй сигнал доступности ресурса формируют синхронно с указанными вторыми тактовыми импульсами и формируют третий сигнал доступности ресурса посредством сравнения суммы указанного пятого количественного параметра и указанного шестого количественного параметра с указанным седьмым количественным параметром, причем указанный третий сигнал доступности ресурса активен, если указанная сумма указанного пятого количественного параметра и указанного шестого количественного параметра равна указанному седьмому количественному параметру, при этом указанный третий сигнал доступности ресурса формируют синхронно с указанными первыми тактовыми импульсами. Способ определения состояния ресурса цифровой системы, в которой первая подсистема, работающая синхронно с первыми тактовыми импульсами, записывает данные в указанный ресурс, вторая подсистема, работающая синхронно со вторыми тактовыми импульсами, считывает данные из указанного ресурса, причем указанные вторые тактовые импульсы асинхронны указанным первым тактовым импульсам, третья подсистема указанной цифровой системы работает синхронно с третьими тактовыми импульсами, а указанные третьи тактовые импульсы асинхронны указанным первым тактовым импульсам и указанным вторым тактовым импульсам, указанная третья подсистема записывает данные в указанный ресурс, четвертая подсистема указанной цифровой системы работает синхронно с указанными четвертыми тактовыми импульсами, при этом указанные четвертые тактовые импульсы асинхронны указанным первым тактовым импульсам, указанным вторым тактовым импульсам и указанным третьим тактовым импульсам, указанная четвертая подсистема считывает данные из указанного ресурса, указанный ресурс не доступен для записи дополнительных данных из указанной первой подсистемы или из указанной третьей подсистемы до тех пор, пока записанные прежде данные не будут считаны из указанного ресурса указанной второй подсистемой или указанной четвертой подсистемой, при этом формируют первый количественный параметр, представляющий число доступов записи в указанный ресурс, сделанных указанной первой подсистемой, причем указанный первый количественный параметр формируют синхронно с указанными первыми тактовыми импульсами, формируют второй количественный параметр, представляющий число доступов считывания из указанного ресурса, сделанных указанной второй подсистемой, причем указанный второй количественный параметр формируют синхронно с указанными вторыми тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными вторыми тактовыми импульсами для формирования третьего количественного параметра, синхронизируют указанный второй количественный параметр с указанными первыми тактовыми импульсами для формирования четвертого количественного параметра, формируют пятый количественный параметр, представляющий число доступов записи в указанный ресурс, сделанных указанной третьей подсистемой, причем указанный пятый количественный параметр формируют синхронно с указанными третьими тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными третьими тактовыми импульсами для формирования шестого количественного параметра, синхронизируют указанный второй количественный параметр с указанными третьими тактовыми импульсами для формирования седьмого количественного параметра, синхронизируют указанный пятый количественный параметр с указанными первыми тактовыми импульсами для формирования восьмого количественного параметра, синхронизируют указанный пятый количественный параметр с указанными вторыми тактовыми импульсами для формирования девятого количественного параметра, формируют десятый количественный параметр, представляющий число доступов считывания из указанного ресурса, сделанных указанной четвертой подсистемой, причем указанный десятый количественный параметр формируют синхронно с указанными четвертыми тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными четвертыми тактовыми импульсами для формирования одиннадцатого количественного параметра, синхронизируют указанный второй количественный параметр с указанными четвертыми тактовыми импульсами для формирования двенадцатого количественного параметра, синхронизируют указанный пятый количественный параметр с указанными четвертыми тактовыми импульсами для формирования тринадцатого количественного параметра, синхронизируют указанный десятый количественный параметр с указанными первыми тактовыми импульсами для формирования четырнадцатого количественного параметра, синхронизируют указанный десятый количественный параметр с указанными вторыми тактовыми импульсами для формирования пятнадцатого количественного параметра, синхронизируют указанный десятый количественный параметр с указанными третьими тактовыми импульсами для формирования шестнадцатого количественного параметра, формируют первый сигнал доступности ресурса посредством сравнения суммы указанного первого количественного параметра и указанного восьмого количественного параметра с суммой указанного четвертого количественного параметра и указанного четырнадцатого количественного параметра, причем указанный первый сигнал доступности ресурса активен, если указанная сумма указанного первого количественного параметра и указанного восьмого количественного параметра равна указанной сумме указанного четвертого количественного параметра и указанного четырнадцатого количественного параметра, при этом указанный первый сигнал доступности ресурса формируют синхронно с указанными первыми тактовыми импульсами, формируют второй сигнал доступности ресурса посредством сравнения суммы указанного третьего количественного параметра и указанного девятого количественного параметра с суммой указанного второго количественного параметра и указанного пятнадцатого количественного параметра, причем указанный второй сигнал доступности ресурса активен, если указанная сумма указанного третьего количественного параметра и указанного девятого количественного параметра отличается от указанной суммы указанного второго количественного параметра и указанного пятнадцатого количественного параметра, при этом указанный второй сигнал доступности ресурса формируют синхронно с указанными вторыми тактовыми импульсами, формируют третий сигнал доступности ресурса посредством сравнения суммы указанного пятого количественного параметра и указанного шестого количественного параметра с суммой указанного седьмого количественного параметра и указанного шестнадцатого количественного параметра, причем указанный третий сигнал доступности ресурса активен, если указанная сумма указанного пятого количественного параметра и указанного шестого количественного параметра равна указанной сумме указанного седьмого количественного параметра и указанного шестнадцатого количественного параметра, при этом указанный третий сигнал доступности ресурса формируют синхронно с указанными третьими тактовыми импульсами и формируют четвертый сигнал доступности ресурса посредством сравнения суммы указанного одиннадцатого количественного параметра и указанного тринадцатого количественного параметра с суммой указанного десятого количественного параметра и указанного двенадцатого количественного параметра, причем указанный четвертый сигнал доступности ресурса активен, если указанная сумма указанного одиннадцатого количественного параметра и указанного тринадцатого количественного параметра равна указанной сумме указанного десятого количественного параметра и указанного двенадцатого количественного параметра, при этом указанный четвертый сигнал доступности ресурса формируют синхронно с указанными четвертыми тактовыми импульсами. Способ определения состояния ресурса цифровой системы, в которой первая подсистема, работающая синхронно с первыми тактовыми импульсами, записывает данные в указанный ресурс, вторая подсистема, работающая синхронно со вторыми тактовыми импульсами, считывает данные из указанного ресурса, причем указанные вторые тактовые импульсы асинхронны указанным первым тактовым импульсам, третья подсистема указанной цифровой системы работает синхронно с третьими тактовыми импульсами, при этом указанные третьи тактовые импульсы асинхронны указанным первым тактовым импульсам и указанным вторым тактовым импульсам, указанная третья подсистема считывает данные из указанного ресурса, указанный ресурс не доступен для записи дополнительных данных из указанной первой подсистемы до тех пор, пока записанные прежде данные не будут считаны из указанного ресурса указанной второй подсистемой или указанной третьей подсистемой, при этом формируют первый количественный параметр, представляющий число доступов записи в указанный ресурс, сделанных указанной первой подсистемой, причем указанный первый количественный параметр формируют синхронно с указанными первыми тактовыми импульсами, формируют второй количественный параметр, представляющий число доступов считывания из указанного ресурса, сделанных указанной второй подсистемой, причем указанный второй количественный параметр формируют синхронно с указанными вторыми тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными вторыми тактовыми импульсами для формирования третьего количественного параметра, синхронизируют указанный второй количественный параметр с указанными первыми тактовыми импульсами для формирования четвертого количественного параметра, формируют пятый количественный параметр, представляющий число доступов считывания из указанного ресурса, сделанных указанной третьей подсистемой, причем указанный пятый количественный параметр формируют синхронно с указанными третьими тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными третьими тактовыми импульсами для формирования шестого количественного параметра, синхронизируют указанный второй количественный параметр с указанными третьими тактовыми импульсами для формирования седьмого количественного параметра, синхронизируют указанный пятый количественный параметр с указанными первыми тактовыми импульсами для формирования восьмого количественного параметра, синхронизируют указанный пятый количественный параметр с указанными вторыми тактовыми импульсами для формирования девятого количественного параметра, формируют первый сигнал доступности ресурса посредством сравнения указанного первого количественного параметра с суммой указанного четвертого количественного параметра и указанного восьмого количественного параметра, причем указанный первый сигнал доступности ресурса активен, если указанный первый количественный параметр равен указанной сумме указанного четвертого количественного параметра и указанного восьмого количественного параметра, при этом указанный первый сигнал доступности ресурса формируют синхронно с указанными первыми тактовыми импульсами, формируют второй сигнал доступности ресурса посредством сравнения указанного третьего количественного параметра с суммой указанного второго количественного параметра и указанного девятого количественного параметра, причем указанный второй сигнал доступности ресурса активен, если указанный третий количественный параметр отличается от указанной суммы указанного второго количественного параметра и указанного девятого количественного параметра, при этом указанный второй сигнал доступности ресурса формируют синхронно с указанными вторыми тактовыми импульсами и формируют третий сигнал доступности ресурса посредством сравнения указанного пятого количественного параметра с суммой указанного седьмого количественного параметра и указанного шестого количественного параметра, причем указанный третий сигнал доступности ресурса активен, если указанный пятый количественный параметр равен указанной сумме указанного седьмого количественного параметра и указанного шестого количественного параметра, при этом указанный третий сигнал доступности ресурса формируют синхронно с указанными третьими тактовыми импульсами. Способ определения состояния ресурса цифровой системы, в которой по меньшей мере одна записывающая подсистема записывает данные в ресурс, а по меньшей мере одна считывающая подсистема считывает данные из ресурса, причем указанный ресурс не доступен для записи дополнительных данных из указанных записывающих подсистем до тех пор, пока записанные прежде данные не будут считаны из указанного ресурса одной из указанных считывающих подсистем, причем каждая записывающая подсистема и каждая считывающая подсистема работают синхронно с соответствующими тактовыми импульсами, по меньшей мере одна записывающая подсистема работает синхронно с первыми тактовыми импульсами, а по меньшей мере одна считывающая подсистема работает синхронно со вторыми тактовыми импульсами, вторые тактовые импульсы асинхронны указанным первым тактовым импульсам, при этом формируют один количественный параметр записи для каждой указанной записывающей подсистемы, причем каждый указанный количественный параметр записи представляет число доступов записи в указанный ресурс, сделанных соответствующей указанной записывающей подсистемой, при этом каждый указанный количественный параметр записи для каждой указанной записывающей подсистемы формируют синхронно с указанными соответствующими тактовыми импульсами указанной записывающей подсистемы, формируют один количественный параметр считывания для каждой указанной считывающей подсистемы, причем каждый указанный количественный параметр считывания представляет число доступов считывания из указанного ресурса, сделанных соответствующей указанной считывающей подсистемой, при этом каждый указанный количественный параметр считывания для каждой указанной считывающей подсистемы формируют синхронно с указанными соответствующими тактовыми импульсами указанной считывающей подсистемы, синхронизируют каждый количественный параметр записи с указанными тактовыми импульсами записывающих подсистем и указанными тактовыми импульсами считывающих подсистем, синхронизируют каждый количественный параметр с указанными тактовыми импульсами записывающих подсистем и указанными тактовыми импульсами считывающих подсистем, суммируют указанные количественные параметры записи для формирования общего количественного параметра считывания, причем указанное суммирование осуществляют независимо каждой указанной записывающей подсистемой и каждой указанной считывающей подсистемой, суммируют указанные количественные параметры считывания для формирования общего количественного параметра считывания, причем указанное суммирование осуществляют независимо каждой указанной записывающей подсистемой и каждой указанной считывающей подсистемой, сравнивают указанный общий количественный параметр записи и указанный общий количественный параметр считывания для формирования сигнала доступности ресурса для записи, причем указанный сигнал доступности ресурса для записи активен, если указанный общий количественный параметр записи равен указанному общему количественному параметру считывания, при этом указанное сравнение выполняется независимо каждой указанной записывающей подсистемой для формирования соответствующих сигналов доступности ресурса для записи, и сравнивают указанный общий количественный параметр записи и указанного общего количественного параметра считывания для формирования сигнала доступности ресурса для считывания, причем указанный сигнал доступности ресурса для считывания активен, если указанный общий количественный параметр записи отличается от указанного общего количественного параметра считывания, при этом указанное сравнение выполняется независимо каждой указанной считывающей системой для формирования соответствующих сигналов доступности ресурса для считывания. Предпочтительно указанные количественные параметры записи и указанные количественные параметры считывания представляют значение либо нуля, либо единицы, причем указанное значение меняется от единицы к нулю или от нуля к единице при приращении, в котором указанный общий количественный параметр записи формируют посредством операции исключающее ИЛИ, которой подвергают указанные количественные параметры записи, причем указанный общий количественный параметр считывания формируют посредством операции исключающее ИЛИ, которой подвергают указанные количественные параметры считывания, причем указанный сигнал доступности ресурса для записи формируют посредством операции исключающее ИЛИ, которой подвергают указанный общий количественный параметр записи и указанный общий количественный параметр считывания, при этом указанный сигнал доступности ресурса для записи формируют независимо каждой указанной записывающей подсистемой, указанный сигнал доступности ресурса для считывания формируют посредством операции исключающее ИЛИ, которой подвергают указанный общий количественный параметр считывания и указанный общий количественный параметр записи, а указанный сигнал доступности ресурса для считывания формируют независимо каждой указанной считывающей подсистемой. Способ определения состояния ресурса цифровой системы, в которой первая подсистема, работающая синхронно с первыми тактовыми импульсами, делает первичные доступы к ресурсу, вторая подсистема, работающая синхронно со вторыми тактовыми импульсами, делает вторичные доступы к ресурсу, указанные вторые тактовые импульсы асинхронны указанным первым тактовым импульсам, указанный ресурс не доступен для дополнительных указанных первичных доступов до тех пор, пока не будет иметь место указанный вторичный доступ, а указанный ресурс не доступен для указанных вторичных доступов до тех пор, пока не будет иметь места указанный первичный доступ, указанные первичные доступы чередуются по времени с указанными вторичными доступами, при этом формируют первый количественный параметр, представляющий число указанных первичных доступов к указанному ресурсу, сделанных указанной первой подсистемой, причем указанный первый количественный параметр формируют синхронно с указанными первыми тактовыми импульсами, формируют второй количественный параметр, представляющий число указанных вторичных доступов к указанному ресурсу, сделанных указанной второй подсистемой, причем указанный второй количественный параметр формируют синхронно с указанными вторыми тактовыми импульсами, синхронизируют указанный первый количественный параметр с указанными вторыми тактовыми импульсами для формирования третьего количественного параметра, синхронизируют указанный второй количественный параметр с указанными первыми тактовыми импульсами для формирования четвертого количественного параметра, сравнивают указанный первый количественный параметр с указанным четвертым количественным параметром для формирования первого сигнала доступности ресурса для указанной первой подсистемы, причем указанный первый сигнал доступности ресурса активен, если указанный первый количественный параметр равен указанному четвертому количественному параметру, при этом указанный первый сигнал доступности ресурса формируют синхронно с указанными первыми тактовыми импульсами, и сравнивают указанный второй количественный параметр с указанным третьим количественным параметром для формирования второго сигнала доступности ресурса для указанной второй подсистемы, причем указанный второй сигнал доступности ресурса активен, если указанный второй количественный параметр отличается от указанного третьего количественного параметра, при этом указанный второй сигнал доступности ресурса генерируется синхронно с указанными вторыми тактовыми импульсами. Устройство для определения состояния ресурса в цифровой системе, в которой записывающая подсистема посылает сигнал записи в указанный ресурс, считывающая подсистема посылает сигнал считывания из указанного ресурса, указанная записывающая подсистема работает синхронно с первыми тактовыми импульсами, указанная считывающая подсистема работает синхронно со вторыми тактовыми импульсами, причем указанные вторые тактовые импульсы асинхронны указанным первым тактовым импульсам, причем оно содержит первый семафор, который формирует первый сигнал обновления, который может быть в первом логическом состоянии или втором логическом состоянии, причем указанный первый семафор реагирует на указанный сигнал записи, изменяя логическое состояние указанного первого сигнала обновления синхронно с указанными первыми тактовыми импульсами каждый раз, когда указанная записывающая подсистема записывает данные в указанный ресурс, второй семафор, который формирует второй сигнал обновления, который может быть в первом логическом состоянии и во втором логическом состоянии, причем указанный второй семафор реагирует на указанный сигнал считывания, изменяя логическое состояние указанного второго сигнала обновления синхронно с указанными вторыми тактовыми импульсами каждый раз, когда указанная считывающая подсистема считывает данные из указанного ресурса, первый синхронизирующий элемент, который синхронизирует указанный первый сигнал обновления с указанными вторыми тактовыми импульсами для формирования первого синхронизированного сигнала обновления, второй синхронизирующий элемент, который синхронизирует указанный второй сигнал обновления с указанными первыми тактовыми импульсами для формирования второго синхронизированного сигнала обновления, первый проверочный элемент, который формирует первый проверочный выходной сигнал, который может быть в первом логическом состоянии и во втором логическом состоянии, причем указанный первый проверочный элемент формирует указанный первый проверочный выходной сигнал в указанном первом логическом состоянии, если указанный первый сигнал обновления равен указанному второму синхронизированному сигналу обновления, указанный первый проверочный элемент формирует указанный первый проверочный выходной сигнал в указанном втором логическом состоянии, если указанный первый сигнал обновления отличается от указанного второго синхронизированного сигнала обновления, и второй проверочный элемент, который формирует второй проверочный выходной сигнал, который может быть в первом логическом состоянии и во втором логическом состоянии, причем указанный второй проверочный элемент формирует указанный второй проверочный выходной сигнал в указанном первом логическом состоянии, если указанный первый синхронизированный сигнал обновления равен указанному второму сигналу обновления, указанный второй проверочный элемент формирует указанный второй проверочный выходной сигнал в указанном втором логическом состоянии, если указанный первый синхронизированный сигнал обновления отличается от указанного второго сигнала обновления. Обычно указанный первый семафор содержит первый логический элемент исключающее ИЛИ и первый триггер задержки, причем указанный первый логический элемент исключающее ИЛИ имеет первый выход, указанный первый выход соединен со входом указанного триггера задержки, указанный первый триггер задержки имеет второй выход, указанный второй выход соединен со входом указанного первого логического элемента исключающее ИЛИ, и указанный второй семафор содержит второй логический элемент исключающее ИЛИ и второй триггер задержки, причем указанный второй логический элемент исключающее ИЛИ имеет третий выход, соединенный с указанным третьим выходом указанного второго триггера задержки, указанный второй триггер задержки имеет четвертый выход, указанный четвертый выход соединен со входом указанного второго логического элемента исключающее ИЛИ. Преимущественно указанный первый синхронизирующий элемент содержит два триггера задержки с фиксацией состояния, при этом указанный второй синхронизирующий элемент содержит два триггера задержки с фиксацией состояния. Предпочтительно указанный первый проверочный элемент содержит логический элемент исключающее ИЛИ, при этом указанный второй проверочный элемент содержит логический элемент исключающее ИЛИ. Устройство для определения состояния ресурса цифровой системы, в которой первая подсистема, работающая синхронно с первыми тактовыми импульсами, записывает данные в указанный ресурс, вторая подсистема, работающая синхронно со вторыми тактовыми импульсами, считывает данные из указанного ресурса, причем указанные вторые тактовые импульсы асинхронны указанным первым тактовым импульсам, указанный ресурс не доступен для записи дополнительных данных из указанной первой подсистемы до тех пор, пока записанные прежде данные не будут считаны из указанного ресурса указанной второй подсистемой, причем оно содержит средство для формирования первого количественного параметра, представляющего число доступов записи в указанный ресурс, сделанных указанной первой подсистемой, причем указанный первый количественный параметр формируют синхронно с указанными первыми тактовыми импульсами, средство для формирования второго количественного параметра, представляющего число доступов считывания из указанного ресурса, сделанных указанной второй подсистемой, причем указанный второй количественный параметр формируют синхронно указанным вторым тактовым импульсам, средство для синхронизации указанного первого количественного параметра с указанными вторыми тактовыми импульсами для формирования третьего количественного параметра, средство для синхронизации указанного второго количественного параметра с указанными первыми тактовыми импульсами для формирования четвертого количественного параметра, средство для сравнения указанного первого количественного параметра с указанным четвертым количественным параметром для формирования первого сигнала доступности ресурса для указанной первой подсистемы, причем указанный первый сигнал доступности ресурса активен, если указанный первый количественный параметр равен указанному четвертому количественному параметру, при этом указанный первый сигнал доступности ресурса формируют синхронно указанным первым тактовым импульсам, и средство для сравнения указанного второго количественного параметра с указанным третьим количественным параметром для формирования второго сигнала доступности ресурса для указанной второй подсистемы, причем указанный второй сигнал доступности ресурса активен, если указанный второй количественный параметр отличается от указанного третьего количественного параметра, при этом указанный второй сигнал доступности ресурса формируют синхронно указанным вторым тактовым импульсам. Краткое описание чертежей. Фиг. 1 - блок-схема, иллюстрирующая часть цифровой системы, имеющей множество подсистем-производителей и множество подсистем-потребителей, причем все подсистемы работают в разных тактовых областях, совместно используя общий ресурс. Фиг. 2 - блок-схема, иллюстрирующая две подсистемы, являющиеся производителями, и две подсистемы, являющиеся потребителями, причем каждый производитель и потребитель содержит счетчик и совместно использует один ресурс в вычислительной среде, в которой каждый производитель и потребитель работает в одной тактовой области. Фиг. 3 - блок-схема, иллюстрирующая две подсистемы, являющиеся производителями, и две подсистемы, являющиеся потребителями, причем каждая подсистема содержит счетчик, каждая подсистема совместно использует ресурс, каждый производитель и потребитель работает в другой тактовой области. Фиг. 4 - блок-схема части цифровой системы, содержащей одного производителя и одного потребителя, совместно использующих один ресурс, каждый содержит битовый регистр и каждый работает в другой тактовой области. Фиг. 5а - логическая блок-схема, иллюстрирующая соответствующие компоненты битового регистра и компоненты проверки ресурса для одной подсистемы-производителя и одной подсистемы-потребителя, причем каждая подсистема работает в другой тактовой области. Фиг.5b - логическая блок-схема, иллюстрирующая синхронизирующий элемент, содержащий два триггера задержки, тактируемых посредством общих тактовых импульсовФиг.6 - блок-схема, представляющая часть цифровой системы содержащей две тактовые области, причем первая тактовая область содержит одну подсистему-производитель, вторая тактовая область содержит одну подсистему-производитель и одну подсистему-потребитель, каждая подсистема содержит битовый регистр и каждая подсистема совместно использует ресурс. Фиг.7а - логическая блок-схема, иллюстрирующая соответствующие компоненты битового регистра и компоненты проверки ресурса для одной подсистемы-производителя, работающей в одной тактовой области, и для одной подсистемы-производителя и одной подсистемы-потребителя, работающих в другой тактовой области. Фиг. 7b - логическая блок-схема, иллюстрирующая компонент битового регистра и компонент проверки ресурса для одной подсистемы-производителя, работающей в одной тактовой области, причем компонент битового регистра и компонент проверки ресурса совместно используются одной системой-производителем и одной подсистемой-потребителем, работающих в другой тактовой области. Фиг. 8 - блок-схема, иллюстрирующая часть цифровой системы, содержащей две подсистемы, являющиеся производителями, и две подсистемы, являющиеся потребителями, причем каждая подсистема содержит битовый регистр, каждая совместно использует общий ресурс, каждая работает в другой тактовой области. Фиг. 9 - логическая блок-схема, представляющая часть цифровой системы, содержащей соответствующие компоненты битового регистра и компоненты проверки ресурса для двух подсистем-производителей и для двух подсистем-потребителей, причем все подсистемы работают в автономных тактовых областях
Фиг. 10а - блок-схема, представляющая двух производителей, причем каждый работает в другой тактовой области и регулируется арбитром, работающим в тактовой области второго производителя. Фиг. 10b - блок-схема, представляющая двух производителей, причем каждый работает в другой тактовой области и регулируется арбитром, работающим в тактовой области первого производителя. Фиг. 10b - блок-схема, представляющая двух производителей, причем каждый работает в другой тактовой области и регулируется арбитром, работающим в еще одной тактовой области. Фиг. 11 - блок-схема, представляющая двух производителей, работающих в разных тактовых областях, регулируемых арбитром, работающим в третьей тактовой области, где сигналы от каждого производителя к арбитру и от арбитра к каждому производителю синхронизируются в тактовой области другого производителя. Фиг. 12 - диаграмма согласования формы сигнала, представляющая соответствующие запросы доступа и разрешения доступа ресурса для первого производителя, второго производителя и потребителя. Ниже приведено подробное описание предпочтительного варианта осуществления настоящего изобретения. На фиг. 1 показана упрощенная блок-схема, представляющая множество подсистем вычислительного комплекса, в котором все подсистемы могут иметь допуск к одному совместно используемому ресурсу 102. Подсистемы являются "производителями" и "потребителями", причем каждый такой производитель способен записывать данные в ресурс 102, а каждый такой потребитель способен считывать данные из этого ресурса. Как следует из фиг.1, подсистемы-производители могут обеспечивать информацию для подсистем-потребителей посредством записи данных в совместно используемый ресурс 102, которые затем могут быть считаны потребителем. Совместно используемый ресурс 102 способен удерживать один элемент данных. Каждая подсистема-производитель и подсистема-потребитель, иллюстрируемая на фиг.1, работает в другой тактовой области. Очевидно, что тактовая область содержит один или более тактовых генераторов, работающих с одной частотой и в одной фазе. Очевидно также, что каждая из систем, описываемых в этой заявке, сначала возвращается к известной установке состояний. Возврат в исходное состояние не показан на каждой блок-схеме, однако квалифицированному в этой области техники специалисту будет очевидно, что механизм возврата в исходное состояние обеспечен для каждой системы. Настоящее изобретение направлено на определение доступности совместно используемого ресурса. При использовании настоящего изобретения любое число подсистем-производителей или подсистем-потребителей, причем все подсистемы работают в одной тактовой области, в разных тактовых областях или в любой комбинации, могут определить доступность для них совместно используемого ресурса. На фиг. 2 показана упрощенная блок-схема части цифровой системы, содержащей две подсистемы, названные производителями ("Р1" и "Р2"), и две подсистемы, названные потребителями ("С1" и "С2"), совместно использующие ресурс 202, который способен удерживать один элемент данных. Каждый производитель и потребитель имеет соответствующий счетный элемент ("P1_Count", "P2_ Count". "C1_Count", "C2_Count"). Каждый счетный элемент способен удерживать целые значения, начиная от нуля, причем такие значения способны приращиваться на единицу. Первый производитель 204 содержит счетчик 206 и проверочный логический элемент 208. Первый производитель 204 дает приращение счетчика 206 каждый раз на единицу, когда первый производитель 204 записывает данные в совместно используемый ресурс 202. Второй производитель 210 аналогичным образом содержит счетчик 212 и проверочный логический элемент 214. Второй производитель 210 дает приращения счетчика 212 каждый раз на единицу, когда второй производитель 210 записывает данные в совместно используемый ресурс 202. Первый потребитель 216 содержит счетчик 218 и проверочный логический элемент 220. Первый потребитель 216 дает приращение счетчика 218 каждый раз на единицу, когда первый потребитель 216 считывает данные из совместно используемого ресурса 202. Аналогичным образом второй потребитель 222 содержит счетчик 224 и проверочный логический элемент 226. Второй потребитель 222 дает приращение счетчика 224 каждый раз на единицу, когда второй потребитель считывает данные из совместно используемого ресурса 202. Оба производителя и оба потребителя могут читать значение четырех счетчиков. Таким образом, например, значение счетчика 206 первого производителя 204 не может быть только прочитано первым производителем 204, но может быть также прочитано вторым производителем 210, а также первым потребителем 216 и вторым потребителем 222. Для предотвращения записи данных в совместно используемый ресурс 202 прежде, чем предварительно записанные данные были прочитаны, производитель должен быть способным выяснить, позволено ли ему записывать данные в совместно используемый ресурс. Для выяснения, позволено ли ему записать данные в совместно используемый ресурс, производитель должен проверить состояние ресурса, если ресурс содержит данные, которые еще не были прочитаны потребителем (то есть "свежие" данные), производитель не может записать новые данные в ресурс, не разрушив предполагаемой выше связи. Потребитель должен также проверить состояние ресурса для определения, являются ли данные в ресурсе старыми данными, которые уже были прочитаны потребителем (то есть "устаревшими" данными), или являются новыми данными, готовыми для считывания. Потребитель должен избегать считывания устаревших данных и должен быть уверен, что любые считываемые данные являются свежими. При однородном тактировании, иллюстрируемом на фиг.2, первый производитель 204 может выяснить, когда он может безопасно записать данные в совместно используемый ресурс 202 (то есть, когда ресурс содержит устаревшие данные), путем считывания значений всех счетчиков всех производителей и потребителей в системе. Проверочный логический элемент 208 первого производителя 204 суммирует значение своего собственного счетчика 206 и значение счетчика 212 второго производителя для получения всего числа записей в совместно используемый ресурс 202. Проверочный логический элемент 208 первого производителя 204 суммирует также значение счетчика 218 первого потребителя и значение счетчика 224 второго потребителя для получения общего числа считываний из совместно используемого ресурса 202. После этого проверочный логический элемент 208 вычитает общее число считываний из общего числа записей. Нулевой результат показывает первому производителю 204, что он может безопасно записать данные в совместно используемый ресурс 202. Нулевой результат показывает, что каждое требование производителя записать данные в совместно используемый ресурс сопровождается согласующимся требованием потребителя считывать данные из ресурса. Аналогичным образом, если результат такого вычитание не равен нулю, то первый производитель 204 способен различить, что записывать данные в совместно используемый ресурс 202 не безопасно (то есть, что в ресурсе находятся свежие данные, которые еще не были прочитаны). Логика проверки, требуемая для первого изготовителя 204 для проверки состояния совместно используемого ресурса 202, может быть представлена в виде уравнения
P1_Test=(P1_Count+P2_Count)-(C1_Count+C2_Count). Если результат уравнения P1_Test равен нулю, то в совместно используемом ресурсе 202 находятся устаревшие данные и первый производитель 204 может безопасно записать в совместно используемый ресурс 202 новые данные. Если результат уравнения P1_Test не равен нулю, то в совместно используемом ресурсе 202 находятся свежие данные и первый производитель 204 не может записать в совместно используемый ресурс 202 новые данные. Аналогичная логика проверки позволяет потребителю выяснить, когда совместно используемый ресурс доступен для считывания. Проверочный логический элемент 220 первого потребителя 216 будет независимо осуществлять аналогичные вычисления, что и проверочный логический элемент 208 первого производителя 204, описанные выше. Если результат вычислений не равен нулю, то в ресурсе 202 находятся свежие данные и первый потребитель 216 может считывать данные из совместно используемого ресурса 202. Если результат равен нулю, то в ресурсе 202 находятся устаревшие данные и первый потребитель 216 не может считывать данные. Логика проверки, требуемая для потребителя 216 для проверки состояния совместно используемого ресурса 202, аналогична логике проверки, требуемой для производителя 204 и может быть представлена в виде уравнения
С1_Test=(Р1_Count+P2_Count)-(С1_Count+C2_Count). Если результат уравнения C1_Test не равен нулю, то в совместно используемом ресурсе 202 находятся свежие данные и первый потребитель 216 может безопасно считывать данные из совместно используемого ресурса 202. Если результат уравнения C1_ Test равен нулю, то в совместно используемом ресурсе 202 находятся устаревшие данные и первый потребитель 216 не может считывать данные. Очевидно, что блок-схема, приведенная на фиг.2, предлагается только для теоретических целей. На практике нет счетчика целых чисел, который был бы способен обеспечивать бесконечный счет. Как правило, такие счетчики обнуляются, когда переполняются сверх допустимого диапазона чисел. Уравнения логики проверки, описанные выше со ссылкой на фиг.2, не станут справедливыми, как только один из счетчиков внезапно от очень высокого числа перейдет к нулевому значению. Однако блок-схема, показанная на фиг.2, полезна для пояснения теоретических принципов настоящего изобретения, заключающихся в том, что состояние совместно используемого ресурса может быть определено, заставляя каждую подсистему представлять свою собственную историю доступа ресурса и, путем последующего исследования всех таких историй, доступа всех подсистем. На фиг. 3 приведена упрощенная блок-схема, представляющая двух производителей ("P1" и "Р2") и двух потребителей ("С1" и "С2"). Все эти четыре подсистемы имеют доступ к совместно используемому ресурсу 302, способному удерживать один элемент данных. Кроме того, каждый производитель и каждый потребитель в системе, иллюстрируемой на фиг.3, работает в другой тактовой области. Другими словами, на фиг.3 иллюстрируются четыре разные тактовые области, по одной для каждой подсистемы. На фиг. 3 показан первый производитель 304 содержащий счетчик 306 и проверочный логический элемент 308, работающий синхронно с первыми тактовыми импульсами (P1_ Clk). Первый производитель 304 дает приращение счетчика 306 каждый раз на единицу, когда производитель 304 записывает данные в совместно используемый ресурс 302. Второй производитель 310 аналогичным образом содержит счетчик 312 и проверочный логический элемент 314 и работает синхронно со вторыми тактовыми импульсами (Р2_Сlk). Второй производитель 310 дает приращение счетчика 312 каждый раз на единицу, когда второй производитель 310 записывает данные в совместно используемый ресурс 302. Первый потребитель 316 содержит счетчик 318 и проверочный логический элемент 320 и работает синхронно с третьими тактовыми импульсами (C1__Clk). Первый потребитель 316 дает приращение счетчика 318 каждый раз на единицу, когда первый потребитель 316 считывает данные из совместно используемого ресурса 302. Аналогичным образом второй потребитель 322 содержит счетчик 324 и проверочный логический элемент 326 и работает синхронно с четвертыми тактовыми импульсами (C2_Clk). Второй потребитель 322 дает приращение счетчика 324 каждый раз на единицу, когда второй потребитель считывает данные из совместно используемого ресурса 302. Как было справедливо для системы, описанной со ссылкой на фиг.2, проверочный логический элемент дает возможность каждому производителю определить, может ли он безопасно записать данные в совместно используемый ресурс (установить, являются ли данные "устаревшими") и дает возможность каждому потребителю определить, может ли он безопасно считывать данные из совместно используемого ресурса (установить, являются ли данные "свежими"). Однако подсистемы, показанные на фиг.3, работают в разных тактовых областях; таким образом, прежде, чем проверочный логический элемент производителя или потребителя может использовать значения счетчиков, связанных с другими подсистемами, квалифицированному специалисту в этой области техники будет очевидно, что такие значения должны быть синхронизированы с тактовыми импульсами проверочного логического элемента. В соответствии с этим, поскольку счетчик 306 работает в такой же тактовой области, что и первый производитель 304, первый производитель 304 имеет немедленный синхронный доступ к значению счетчика 306. Однако первый производитель 304 не имеет синхронного доступа к значению счетчика 312 второго производителя 310, к значению счетчика 318 первого потребителя 316 или к счетчику 324 второго потребителя 322. Будет очевидно, что для разрешения первому производителю 304 считывать значения счетчиков 312, 318 и 324 значение каждого счетчика должно быть синхронизировано с тактовыми импульсами P1_Clk первого производителя. На фиг.3 иллюстрируется синхронизация значений счетчиков 312, 318 и 324 с тактовыми импульсами P1_Clk. Таким образом, значение счетчика 312 второго производителя 310 является входом в синхронизирующий элемент, тактируемый посредством тактовых импульсов P1__Clk. Синхронизированное значение счетчика 312 затем передается к проверочному логическому элементу 308 первого производителя 304. Аналогичным образом значение счетчика 318 первого потребителя 316 является также входом в синхронизирующий элемент, тактируемый посредством тактовых импульсов P1_Clk. После этого синхронизированное значение счетчика 318 передается к проверочному логическому элементу 308 первого производителя 304. Значение счетчика 324 второго потребителя 322 также является входом в синхронизирующий элемент, тактируемый посредством тактовых импульсов P1_Clk. Синхронизированное значение счетчика 324 затем передается к проверочному логическому элементу 308 первого производителя 304. Как только значения счетчика синхронизированы с тактовой областью производителя или потребителя, производитель или потребитель может проверить состояние совместно используемого ресурса 302. Как описано со ссылкой на фиг. 2, первый производитель 304 может проверять состояние совместно используемого ресурса 302 путем вычитания суммы значений счетчиков 310, 312 потребителей из суммы значений счетчиков 304, 308 производителей. Логика проверки, используемая первым производителем 304 для проверки состояния совместно используемого ресурса 302, может быть представлена следующим уравнением
Следует отметить, что синхронизация P2_ Count, C1_Count и C2_Count с тактовыми импульсами P1_ Clk производителя 304 показана в уравнении посредством операционного суффикса Как описано со ссылкой на фиг.2, нулевой результат уравнения P1_Test указывает на то, что в ресурсе 302 находятся устаревшие данные и первый производитель 304 может записать новые данные в ресурс 302. С другой стороны, ненулевое значение указывает на то, что в ресурсе 302 находятся свежие данные и производитель 304 не может записать новые данные в ресурс 302. Логика проверки, используемая первым потребителем 316, совершенно аналогична и может быть представлена аналогичным уравнением. Например, уравнение логики проверки для первого потребителя имеет вид
Следует отметить, что P1_Count, P2_Count и C2_Count все синхронизированы с тактовыми импульсами C1_ Clk первого потребителя 316. Если результат уравнения C1_ Test не равен нулю, то это указывает на то, что первый потребитель 316 может безопасно считывать данные из совместно используемого ресурса 302. Если результат уравнения C1_Test равен нулю, то первый потребитель 316 не может безопасно считывать данные из совместно используемого ресурса 302. Как было показано со ссылкой на фиг.2, данные, приведенные со ссылкой на фиг. 3, полезны только для теории. Поскольку счетчики на практике не могут считать бесконечно большие значения, логика проверки, описанная со ссылкой на фиг.3, не может иметь практического значения. На фиг.4 приведена упрощенная блок-схема, представляющая часть цифровой системы, содержащей одну подсистему-производитель ("Р1") и одну подсистему-потребитель ("С1"), работающие в разных тактовых областях. Производитель и потребитель совместно используют ресурс 402, способный удерживать один элемент данных. Как показано на фиг. 4, подсистема-производитель 404 содержит битовый регистр 406 и проверочный логический элемент 408 и работает синхронно с первыми тактовыми импульсами P1_Clk. Подсистема-потребитель 410 содержит битовый регистр 412 и проверочный логический элемент 414 и работает синхронно со вторыми тактовыми импульсами C1_Clk. Каждый битовый регистр 406, 412 способен представлять значение нуля или единицы. Производитель 404 может считывать значение битового регистра 412 потребителя 410, а потребитель 410 может считывать значение битового регистра 406 производителя 404. Однако производитель 404 и потребитель 410 работают в асинхронных тактовых областях. По этой причине значение битового регистра 412 должно быть синхронизировано с тактовыми импульсами P1_Clk производителя 404, а значение битового регистра 406 должно быть синхронизировано с тактовыми импульсами C1_ Clk потребителя 410. В соответствии с этим на фиг.4 показано, что значение битового регистра 412 подается как вход в синхронизирующий элемент, тактируемый посредством тактовых импульсов C1_Clk. Синхронизированное значение битового регистра 406 затем подается к проверочному логическому элементу 414 потребителя 410. Настоящее изобретение обеспечивает сравнение числа раз, когда производитель записал данные в совместно используемый ресурс (числа "записей"), с числом раз, когда потребитель считал данные из совместно используемого ресурса (с числом "считываний"). Для целей настоящего изобретения состояние совместно используемого ресурса может быть проверено путем выяснения равно ли число записей числу считываний или отличается ли число записей от числа считываний, то есть для проверки состояния совместно используемого ресурса не требуется вычисления действительного числа записей или считываний. По этой причине может быть упрощена логика проверки, описанная выше в связи с фиг.2 и фиг.3. Поскольку совместно используемый ресурс 402 способен удерживать только один элемент данных и поскольку для представления состояния совместно используемого ресурса требуется только нулевой или ненулевой результат, квалифицированному в этой области техники специалисту будет очевидно, что описанные выше со ссылкой на фиг.2 и фиг.3 счетчики могут быть заменены битовыми регистрами. Кроме того, квалифицированному в этой области техники специалисту также будет очевидно, что по некоторым причинам операция исключающее ИЛИ алгебры логики может заменить сложение и вычитание, описанные выше со ссылкой на фиг.2 и фиг.3. Операция исключающее ИЛИ хорошо известна в этой области техники. Оператор исключающее ИЛИ, используемый с двумя двоичными операндами, даст в результате выход высокого состояния, если один двоичный операнд находится в высоком состоянии, а другой - в низком состоянии. Операция исключающее ИЛИ даст в результате выход низкого состояния, если оба двоичных операнда находятся в высоком состоянии или если оба двоичных операнда находятся в низком состоянии. Вполне очевидно, что операция исключающее ИЛИ идеально пригодна для сравнения числа записей с числом считываний (при этом каждая запись или каждое считывание указывается производителем или потребителем, изменяющим значение своего соответствующего битового регистра) для определения, согласуется или не согласуется число записей с числом считываний. Настоящее изобретение относится к строго осуществляемой стратегии доступа запись-считывание-запись-считывание и абсолютно препятствует двум или более записям без промежуточного считывания, а также двум или более считываниям без промежуточной записи. В контексте системы, использующей такую стратегию доступа, операция исключающее ИЛИ, использованная для каждого битового регистра как двоичный операнд, даст ноль, если число записей согласуется с числом считываний, и даст единицу, если эти числа отличаются. Таким образом, производитель 404 и потребитель 410 содержат битовые регистры 406, 412 вместо целочисленных счетчиков, описанных со ссылкой на фиг.2 и фиг. 3. Производитель 404 может определить, находятся ли в совместно используемом ресурсе 402 устаревшие данные, в результате операции исключающее ИЛИ, которой подвергается значение своего собственного битового регистра 406 и значение битового регистра 412 потребителя 410. Такую операцию исключающее ИЛИ осуществляют в проверочном логическом элементе 408 производителя 404. Если полученный результат операции исключающее ИЛИ со значением обоих битовых регистров 406, 412 равен нулю, то данные, находящиеся в совместно используемом ресурсе 402, являются устаревшими и производитель 404 может записать данные в совместно используемый ресурс 402. Однако если полученным результатом является единица, то в совместно используемом ресурсе 402 находятся свежие данные и производитель 404 не может записать новые данные в совместно используемый ресурс 402. Для иллюстрации требуемой логики проверки производитель 404 может определить состояние совместно используемого ресурса 402 в соответствии со следующим уравнением:
Следует отметить, что операция исключающее ИЛИ указана в приведенном выше уравнении посредством оператора "". Если результатом уравнения P1_Test является ноль, то данные в совместно используемом ресурсе 402 уже были считаны потребителем 410 (данные являются устаревшими) и производитель 404 может записать новые данные в совместно используемый ресурс 402. Однако если результатом уравнения P1_Test является единица, то в совместно используемом ресурсе 402 находятся свежие данные и производитель 404 не может записать в совместно используемый ресурс 402 новые данные. Аналогичная логика проверки используется потребителем 410. Например, потребитель 410 может определить состояние совместно используемого ресурса 402 в соответствии со следующим уравнением:
Если результатом уравнения C1_ Test является единица, то в совместно используемом ресурсе 402 находятся свежие данные и эти данные могут быть немедленно считаны потребителем 410. С другой стороны, если результатом уравнения C1_ Test является ноль, то в совместно используемом ресурсе 402 находятся устаревшие данные и потребитель 410 не может считывать эти данные. На фиг.5 приведена логическая блок-схема, представляющая логику, которая позволяет одному производителю и одному потребителю независимо проверять состояние совместно используемого ресурса. Совместно используемый ресурс на фиг. 5 не показан. На фиг.5 полностью не показаны также подсистемы производителя и потребителя, а показаны только компоненты, которые облегчают работу битового регистра, и проверочные логические элементы, описанные в общем со ссылкой на фиг.4. Функция битового регистра позволяет производителю показывать, что он записал данные в совместно используемый ресурс, и позволяет потребителю показывать, что он считал данные из совместно используемого ресурса. Проверочный логический элемент позволяет потребителю или производителю проверять состояние совместно используемого ресурса. Как показано на фиг.5а, первый триггер 502 сдвига имеет D-вход 504, Q-выход 504 и R-вход (вход занесения "0") 508. Q-выход 506 соединен линией 510 связи с первым входом логического элемента 512 исключающее ИЛИ. Логический элемент 512 исключающее ИЛИ имеет выход, соединенный посредством линии 514 с D-входом 504. Второй вход в логический элемент 512 исключающее ИЛИ соединен посредством линии 516 связи с сигналом P1_Add, формируемым подсистемой-производителем 404 (фиг.4). Q-выход 506 соединен посредством линии 510 связи с первым входом второго логического элемента 520 логическое ИЛИ. Второй вход в логический элемент 520 исключающее ИЛИ соединен посредством линии 522 связи с выходом элемента 524 синхронизации. Выход логического элемента 520 исключающее ИЛИ соединен посредством линии 526 связи как вход P1_Test к производителю 404. Элемент 524 синхронизации соединен посредством линии 528 связи с первыми тактовыми импульсами (P1_Clk). Тактовые импульсы P1_Clk соединены также посредством линии 528 связи с тактируемым входом 530 триггера 502 задержки. Вход в синхронизирующий элемент 524 соединен посредством линии 532 связи с Q-выходом 534 второго триггера 536 задержки. Триггер 536 задержки имеет R-вход (вход занесения "0") 537 и D-вход 538. D-вход 538 триггера 536 задержки соединен посредством линии 540 связи с выходом третьего логического элемента 542 исключающее ИЛИ. Q-выход 534 триггера 536 задержки соединен посредством линии 532 связи как первый вход в логический элемент 542 исключающее ИЛИ. Второй вход логического элемента 542 исключающее ИЛИ соединен посредством линии 546 связи для приема сигнала C1_Sub от подсистемы-потребителя 406 (фиг. 4). Q-выход 534 триггера 536 задержки соединен посредством линии 532 связи как первый вход в четвертый логический элемент 550 исключающее ИЛИ. Выход логического элемента 550 исключающее ИЛИ соединен посредством линии 552 связи как сигнал C1_Test к подсистеме-потребителю 406. Второй вход в логический элемент 550 исключающее ИЛИ соединен посредством линии 554 связи с выходом элемента 556 синхронизации. Элемент 556 синхронизации соединен посредством линии 558 связи со вторыми тактовыми импульсами (C1_Clk). Тактовые импульсы C1_Clk соединены также посредством линии 558 связи с тактируемым входом 559 триггера 536 задержки. Вход элемента 556 синхронизации соединен посредством линии 510 связи с Q-выходом 506 триггера 502 задержки. R-входы (входы занесения "0") 508, 537 соединены с линией возврата системы в исходное состояние. Работа триггеров задержки хорошо известна квалифицированным специалистам в этой области техники и по этой причине не будет подробно описываться в этой заявке. Триггер задержки по существу имеет только один двоичный входной сигнал и один двоичный выходной сигнал. Работа триггера задержки синхронизирована с входным тактовым сигналом. Двоичный выходной сигнал триггера задержки будет допускать состояние (высокое или низкое) двоичного входного сигнала при наличии характерной передачи тактового импульса. Как описано со ссылкой на фиг.4, производитель может показать запись данных в совместно используемый ресурс путем изменения значения соответствующего, связанного с ним, битового регистра. Аналогичным образом потребитель может показать считывание из совместно используемого ресурса путем изменения значения соответствующего, связанного с ним, битового регистра. Такой битовый регистр непрерывно представляет высокое или низкое состояние и изменяет представляемое им состояние (то есть от низкого к высокому или от высокого к низкому) каждый раз, когда обнаруживает определенный сигнал. Один такой битовый регистр иллюстрируется на фиг.5 как содержащий логический элемент 512 исключающее ИЛИ и триггер 502 задержки. Логическое состояние Q-выхода 506 триггера 502 задержки сначала является низким, как и сигнал на линии 516, формируемый производителем; таким образом, логическое состояние выхода логического элемента 512 исключающее ИЛИ сначала является низким. Когда производитель записывает новые данные в совместно используемый ресурс, производитель инициирует операцию записи посредством формирования импульсного сигнала (P1_Add) высокого состояния, передаваемого по линии 716 связи. Выход логического элемента 512 исключающее ИЛИ принимает высокое логическое состояние в течение длительности сигнала P1_Add и высокое логическое состояние передается по линии 514 связи к D-входу 504 триггера 502 задержки. При поступлении следующего граничного перехода, формируемого тактовыми импульсами P1_Clk подсистемы-производителя, Q-выход 506 триггера 502 задержки принимает высокое логическое состояние. Квалифицированному в этой области техники специалисту будет очевидно, что длительность сигнала P1_Add равна приблизительно одному периоду тактовых импульсов Р1_Сlк производителя, обеспечивая достаточное время вхождения в режим и промежуточного хранения для формирования правильного сигнала на D-входе 504 триггера 502 задержки. После этого логическое состояние Q-выхода 506 триггера 502 задержки передается по линии 510 как вход в логический элемент 512 исключающее ИЛИ. Если сигнал P1_Add еще имеет высокое состояние, когда сигнал Q-выхода 506 поступает в логический элемент 512 исключающее ИЛИ, то выход логического элемента 512 исключающее ИЛИ принимает низкое логическое состояние. Однако очевидно, что за время поступления следующего позитивного граничного перехода, формируемого посредством тактовых импульсов Р1_С1к, сигнал P1_Add уменьшится до низкого уровня и выход логического элемента 512 исключающее ИЛИ таким образом примет высокое логическое состояние. Таким образом, поскольку высокое логическое состояние обеспечено на D-входе 504 посредством линии 514 связи, логическое состояние Q-выхода 506 триггера 502 задержки, следовательно, остается высоким. Когда подсистема-производитель затем записывает данные в совместно используемый ресурс, производитель формирует другой активный сигнал P1_Add на линии 516 связи как вход в логический элемент 512 исключающее ИЛИ. Однако линия 510 связи еще имеет высокое логическое состояние, которое представляет второй вход в логический элемент 512 исключающее ИЛИ. Таким образом, поскольку оба его входа имеют высокое логическое состояние, выход логического элемента 512 исключающее ИЛИ принимает низкое логическое состояние. Следовательно, линия 514 связи воспроизводит низкое логическое состояние на D-входе 504 триггера 502 задержки. Очевидно, что при поступлении следующего позитивного перехода, формируемого тактовыми импульсами P1_Clk, Q-выход 506 принимает низкое логическое состояние D-входа 504. Как описано выше, линия 510 связи передает низкое логическое состояние Q-выхода 506 как вход в логический элемент 512 исключающее ИЛИ. Когда сигнал P1_Add падает до низкого логического состояния во время или перед следующим тактом, оба входа в логический элемент 512 исключающее ИЛИ представляют низкое логическое состояние, вынуждая выход логического элемента 512 исключающее ИЛИ иметь низкое логическое состояние. Таким образом, линия 514 связи воспроизводит низкое логическое состояние на D-входе 504 триггера 502 задержки. При поступлении следующего позитивного перехода, формируемого тактовыми импульсами производителя, Q-выход 506 триггера 502 задержки принимает логическое состояние D-входа 504 и по этой причине остается имеющим низкое логическое состояние. В описанном выше случае логический элемент 512 исключающее ИЛИ и триггер 502 задержки работают вместе как битовый регистр (или одноразрядный счетчик), который изменяет логические состояния от высокого к низкому или от низкого к высокому (то есть переключает) каждый раз, когда производитель формирует активный сигнал P1_Add на линии 516 связи. Битовый регистр поддерживает непрерывное логическое состояние (P1_Bitreg) на линии 510 связи между такими импульсами. Битовый регистр для подсистемы-потребителя содержит аналогическую логику, как описано выше. Каждый раз, когда подсистема-потребитель считывает данные из совместно используемого ресурса, потребитель формирует активный импульс C1_Sub высокого логического состояния на линии 546 связи. Сигнал C1_ Sub передается посредством линии 546 связи как вход в логический элемент 542 исключающее ИЛИ. Очевидно, что поскольку Q-выход 534 триггера 536 задержки передается по линии 532 связи как второй вход в логический элемент 542 исключающее ИЛИ, активный сигнал C1_Sub вынуждает логический элемент 542 исключающее ИЛИ формировать выходной сигнал логического состояния, противоположный логическому состоянию Q-выхода 534. Противоположное логическое состояние посредством линии 540 связи воспроизводится на D-входе 538. Затем после следующего тактового перехода, генерируемого тактовыми импульсами C1_ Clk потребителя, Q-выход 534 принимает логическое состояние D-входа 538. Таким образом, логический элемент 542 исключающее ИЛИ и триггер 536 образуют битовый регистр (или одноразрядный счетчик), который изменяет свое логическое состояние (то есть переключается) каждый раз, когда подсистема-потребитель формирует активный сигнал C1_Sub высокого логического состояния на линии 546 связи. Логическое состояние битового регистра (C1_Bitreg) потребителя поддерживается на линии 532 связи как сигнал C1_Test. Как в общем описано со ссылкой на фиг.4, производитель может проверить доступность совместно используемого ресурса путем сравнения значения битового регистра потребителя со значением своего собственного битового регистра. Как было описано, такое сравнение предпочтительно осуществляется посредством операции исключающее ИЛИ. Аналогичная логика проверки позволяет потребителю определить доступность совместно используемого ресурса. В соответствии с этим производитель 404 может проверить доступность совместно используемого ресурса посредством сравнения значения своего битового регистра со значением битового регистра 406 потребителя с помощью операции исключающее ИЛИ. Значение битового регистра производителя представляется посредством логического состояния сигнала P1_ Bitreg на линии 510 связи. Сигнал P1_ Bitreg на линии 510 связи является входным сигналом в логический элемент 520 исключающее ИЛИ. Очевидно, что поскольку сигнал P1_Bitreg синхронен с тактовыми импульсами P1_ Clk производителя, любое изменение сигнала P1_ Bitreg, вызванное формированием производителем сигнала P1_Add, проходит в логический элемент 520 исключающее ИЛИ в течение одного такта тактовых импульсов производителя и будет устойчивым до начала следующего такта, генерируемого тактовыми импульсами производителя. Однако значение битового регистра потребителя, представленное логическим состоянием C1_Bitreg, асинхронно тактовым импульсам производителя и по этой причине должно быть синхронизировано. Таким образом, сигнал C1_Bitreg передается по линии 532 связи как входной сигнал в синхронизирующий элемент 524, который тактируется тактовыми импульсами P1_Clk. На фиг. 5b показана логическая блок-схема, представляющая синхронизирующий элемент. Первый триггер 580 задержки имеет D-вход 582, Q-выход 584 и тактовый вход 585. Входной сигнал (вход) соединен посредством линии 586 связи с D-входом 582. Q-выход 584 соединен посредством линии 588 связи со вторым триггером 590 задержки, имеющим D-вход 592, Q-выход 594 и тактовый вход 595. Q-выход 594 представлен выходным сигналом (выходом) и передается по линии 596 связи. Целевые тактовые импульсы (Target_Clk) соединены посредством линии 598 связи с тактовым входом 585 первого триггера 580 задержки. Линия 598 связи также соединяет целевые тактовые импульсы с тактовым входом 595 второго триггера 590 задержки. Входной сигнал передается по линии 586 связи к D-входу 582. В следующем позитивном переходе, генерируемом посредством Target_Clk, триггер 580 задержки вынуждает Q-выход 584 принимать логическое состояние входа. Q-выход 584 передается по линии 588 к D-входу 592 триггера 590 задержки. Следующий позитивный граничный переход, генерируемый посредством Target_Clk вынуждает Q-выход 594 принять логическое состояние, передаваемое по линии 588 связи. Линия 596 связи передает Q-выход 594 как выходной сигнал, который является логическим состоянием входного сигнала, синхронизируемого посредством Target_Clk. Синхронизирующий элемент, представленный на фиг.5Ь, является только одним примером логики, которая примет сигнал, формируемый синхронно с первыми тактовыми импульсами, и синхронизирует такой сигнал со вторыми тактовыми импульсами, которые асинхронны первым тактовым импульсам. Что касается фиг.5а, то синхронизирующий элемент 524, тактируемый тактовыми импульсами P1_Clk производителя, синхронизирует сигнал C1_Bitreg с тактовыми импульсами производителя. Синхронизированный сигнал C1_Bitreg передается по линии 522 связи на вход логического элемента 520 исключающее ИЛИ. Выход логического элемента 520 исключающее ИЛИ на линии 526 связи содержит проверочный сигнал P1_Test. Если логическое состояние P1_Bitreg равно логическому состоянию C1_Bitreg (то есть, если число записей в совместно используемый ресурс равно числу считываний из совместно используемого ресурса), то логическое состояние P1_Test является низким. Соответственно, если логическое состояние P1_ Test является низким, то совместно используемый ресурс 402 (фиг. 4) доступен производителю 404 для записи новых данных. С другой стороны, если логическое состояние P1_Test является высоким (то есть, если число записей в совместно используемый ресурс не равно числу считываний из совместно используемого ресурса), то совместно используемый ресурс не доступен производителю для записи. Значительное преимущество настоящего изобретения достигается в результате того, что формируется значение битового регистра P1_Bitreg производителя, которое синхронно тактовым импульсам P1_Clk производителя. Если это так, то после того, как производитель покажет, что он записал данные в совместно используемый ресурс посредством формирования сигнала P1_Add на линии 516 связи, то производитель немедленно уведомляет посредством проверочного сигнала P1_ Test, что совместно используемый ресурс более не доступен. Очевидно, что настоящее изобретение гарантирует то, что производитель преждевременно не будет инициировать операцию записи в совместно используемый ресурс и выгодно избегает необходимости вводить задержку. Эта гарантия основана на том, что после того, как производитель посылает первый синхронный импульс P1_Add, показывающий, что он начал операцию записи в совместно используемый ресурс, сигнал P1_Bitreg немедленно обновляет сигнал P1_Test, чтобы показать недоступность совместно используемого ресурса в следующем такте. Аналогичная логика, представленная на фиг. 5а, позволяет потребителю проверить состояние совместно используемого ресурса. Значение битового регистра, C1_ Bitreg, потребителя синхронно доступно потребителю по линии 532 связи. Линия 532 связи передает логическое состояние C1_Bitreg как входной сигнал в логический элемент 550 исключающее ИЛИ. Значение битового регистра, P1_ Bitreg, потребителя асинхронно тактовым импульсам потребителя и, следовательно, является входом в синхронизирующий элемент 556. Синхронизирующий элемент 556 синхронизирует P1_Bitreg с тактовыми импульсами C1_Clk потребителя и синхронизированное значение P1_Bitreg передается по линии 554 связи на второй вход логического элемента 550 исключающее ИЛИ. Выход логического элемента 550 исключающее ИЛИ на линии 552 связи является проверочным сигналом C1_ Test Если логическое состояние сигнала C1_Test является высоким (то есть, если число записей в совместно используемый ресурс 402 отличается от числа считываний из совместно используемого ресурса 402), то потребитель может считывать данные из совместно используемого ресурса 402. С другой стороны, если логическое состояние сигнала C1_Test является низким (то есть, если число записей в совместно используемый ресурс 402 равно числу считываний из этого совместно используемого ресурса), то потребитель не может считывать данные из совместно используемого ресурса 402. Описанные выше преимущества относятся также к подсистеме-потребителю. Если потребитель формирует сигнал C1_Sub, показывающий, что он инициировал операцию считывания, то потребитель немедленно уведомляется (в одном такте), что совместно используемый ресурс 402 больше не доступен для считывания. Благодаря этому потребитель предохранен от преждевременного считывания данных из совместно используемого ресурса 402 и в этом случае также отпадает необходимость задержки. Сигнал возврата в исходное состояние (не показан), соединенный с R-входами (входами занесения "0") 508, 537, позволяет значению битового регистра, P1_ Bitreg, производителя и значению битового регистра, C1_Bitreg, потребителя устанавливаться в низкое логическое состояние. Такая способность возврата в исходное состояние полезна, например, тогда, когда систему, содержащую подсистемы-производители и подсистемы-потребители останавливают и перезапускают. Очевидно, что такой возврат в исходное состояние в контексте подсистем-производителей и подсистем-потребителей, восстанавливает исходное состояние совместно используемого ресурса, являющегося доступным для записи. На фиг. 6 показана упрощенная блок-схема, представляющая часть цифровой системы, содержащей первую подсистему-производитель 602, работающую синхронно с первыми тактовыми импульсами P1_Clk, вторую подсистему-производитель 604, работающую синхронно со вторыми тактовыми импульсами P2C1_Clk, и подсистему-потребитель 606, работающую синхронно со вторыми тактовыми импульсами P2C1_Clk. Тактовые импульсы P1_Clk асинхронны тактовым импульсам P2C1_ Clk. Первый производитель 602 содержит проверочный логический элемент 610 и битовый регистр 612. Второй производитель 604 содержит проверочный логический элемент 614 и битовый регистр 616. Потребитель 606 содержит проверочный логический элемент 618 и битовый регистр 620. Три подсистемы 602, 604 и 606 совместно используют ресурс 608. Проверочные логические элементы 610, 614 и 618 позволяют соответствующим подсистемам 602, 604 и 606 независимо определять состояние совместно используемого ресурса 608. Каждый из битовых регистров 612, 616 и 620 может представлять ноль или единицу. Каждая из подсистем 602, 604 и 606 может считывать значение каждого из битовых регистров 612, 616 и 620. Значение битового регистра 612 первого производителя 602 асинхронно тактовым импульсам P2C1_Clk и по этой причине должно быть синхронизировано с тактовыми импульсами P2C1_Clk прежде, чем второй производитель 604 и потребитель 606 могут осуществить сравнения, используя значение битового регистра 612. Таким образом, на фиг.6 представлено значение битового регистра 612, которое передается в синхронизирующие элементы, тактируемые тактовыми импульсами P2C1_ Clk перед передачей в конце концов в проверочные логические элементы 614 и 618 второго производителя 604 и потребителя 620 соответственно. Аналогичным образом, значение битового регистра 616 второго производителя 604 и значение битового регистра 620 потребителя 606 асинхронны тактовым импульсам P1_Clk и должны быть синхронизированы с тактовыми импульсами P1_ Clk прежде, чем первый производитель 602 может использовать эти значения для сравнений. Фиг.6 представляет, соответственно, значения битовых регистров 616 и 620, которые передаются в синхронизирующие элементы, тактируемые тактовыми импульсами P1_Clk прежде, чем в конце концов передаваться в проверочный логический элемент 610 первого производителя 602. Первый производитель 602 может удостовериться, находятся ли в совместно используемом ресурсе 608 устаревшие данные посредством сравнения с помощью операции исключающее ИЛИ значения битового регистра 616 второго производителя 604, значения битового регистра 620 потребителя 606 со значением своего собственного битового регистра 612. Такая операция исключающее ИЛИ выполняется в проверочном логическом элементе 610 первого производителя 602. Если результатом, полученным при выполнении операции исключающее ИЛИ, является ноль, то в совместно используемом ресурсе 608 находятся устаревшие данные и первый производитель 602 может записать данные в совместно используемый ресурс 608. С другой стороны, если результатом операции исключающее ИЛИ является единица, то в совместно используемом ресурсе 608 находятся свежие данные и первый производитель не может записать новые данные в совместно используемый ресурс 608. Аналогичным образом второй производитель 604 может также определить, доступен ли совместно используемый ресурс 608 для записи данных, посредством сравнения с помощью операции исключающее ИЛИ значений трех битовых регистров 616, 620 и 612. И в этом случае нулевой результат указывает на то, что производитель 604 может записать данные в совместно используемый ресурс 608, тогда как результат единица показывает, что производитель 604 не может записать данные в совместно используемый ресурс 608. Доступность совместно используемого ресурса 608 определяется потребителем 606 во многом аналогичным образом. Проверочный логический элемент 618 потребителя 606 выполняет операцию исключающее ИЛИ со значениями трех битовых регистров 616, 620 и 612. Если результат операции исключающее ИЛИ единица, то в совместно используемом ресурсе 608 находятся свежие данные и потребитель 606 может считывать их из совместно используемого ресурса. С другой стороны, если результат операции исключающее ИЛИ ноль, то в совместно используемом ресурсе 608 находятся устаревшие данные и потребитель 606 не может считывать данные из совместно используемого ресурса 608. Для иллюстрации используемой логики проверки первый производитель может удостовериться в состоянии совместно используемого ресурса 608 в соответствии со следующим уравнением:
Если результатом уравнения P1_Test является ноль, то данные в совместно используемом ресурсе 608 уже были считаны потребителем 606 и первый производитель 602 может записать новые данные в совместно используемый ресурс 608. Однако если результатом уравнения P1_Test является единица, то в совместно используемом ресурсе 608 находятся свежие данные и первый производитель 602 не может записать в совместно используемый ресурс 608 новые данные. Аналогичная логика проверки используется потребителем 606. Потребитель 606 может определить состояние совместно используемого ресурса 608 в соответствии со следующим уравнением:
Если результатом уравнения C1_ Test является единица, то в совместно используемом ресурсе 608 находятся свежие данные и эти данные могут быть немедленно считаны потребителем 606. С другой стороны, если результатом уравнения C1_Test является ноль, то в совместно используемом ресурсе 608 находятся устаревшие данные и потребитель 606 не может считывать эти данные. На фиг.7а приведена логическая блок-схема, представляющая логику, которая позволяет двум подсистемам-производителям и одной подсистеме-потребителю независимо проверять состояние совместно используемого ресурса. Совместно используемый ресурс на фиг.7а не показан. На фиг.7а полностью не показаны также две подсистемы-производители и подсистема-потребитель. На фиг.7а показаны только компоненты, которые облегчают работу битового регистра, и проверочные логические элементы, описанные в общем со ссылкой на фиг.6. На фиг. 7а показан первый триггер 702 задержки, имеющий D-вход 704, Q-выход 706 и R-вход (вход занесения "0") 708. Q-выход 706 соединен посредством линии 710 связи с первым входом логического элемента 712 исключающее ИЛИ. Логический элемент 712 исключающее ИЛИ имеет выход, соединенный посредством линии 714 связи с D-входом 704. Второй вход в логический элемент 712 исключающее ИЛИ соединен посредством линии 716 с сигналом P1_Add, формируемым подсистемой-производителем 602 (фиг.6). Q-выход 706 соединен посредством линии 710 связи как первый вход во второй логический элемент 720 исключающее ИЛИ. Второй вход логического элемента 720 исключающее ИЛИ соединен посредством линии 722 связи с выходом логического элемента 724 исключающее ИЛИ. Выход логического элемента 720 исключающее ИЛИ соединен посредством линии 726 как вход P1_Test к подсистеме-производителю 602. Триггер 702 задержки имеет тактовый вход 719, который соединен посредством линии 728 связи с первыми тактовыми импульсами P1_Clk. Тактовые импульсы P1_Clk также соединены посредством линии 728 связи с синхронизирующим элементом 730 и с другим синхронизирующим элементом 732. Выход синхронизирующего элемента 730 соединен посредством линии 734 связи как один вход в логический элемент 724 исключающее ИЛИ. Выход синхронизирующего элемента 732 соединен посредством линии 736 связи как второй вход в логический элемент 724 исключающее ИЛИ. Вход синхронизирующего элемента 730 соединен посредством линии 738 связи с Q-выходом 740 триггера 742 задержки. Триггер 742 задержки имеет D-вход 744 и R-вход (вход занесения "0") 746. Триггер 742 задержки имеет тактовый вход 745, который соединен со вторыми тактовыми импульсами P2C1_Clk посредством линии 749 связи. D-вход 744 соединен посредством линии 748 связи с выходом логического элемента 750 исключающее ИЛИ. Q-выход 740 триггера 742 задержки соединен посредством линии 738 связи как один вход в логический элемент 750 исключающее ИЛИ. Второй вход в логический элемент исключающее ИЛИ соединен посредством линии 752 с сигналом C1_Sub, формируемым потребителем 606 (фиг. 6). Q-выход 740 триггера 742 задержки соединен посредством линии 738 связи как вход в логический элемент 754 исключающее ИЛИ. Выход логического элемента 754 исключающее ИЛИ соединен посредством линии 756 связи с потребителем 606. Второй вход логического элемента 754 исключающее ИЛИ соединен посредством линии 758 связи с выходом логического элемента 760 исключающее ИЛИ. Вход в логический элемент 760 исключающее ИЛИ соединен посредством линии 762 связи с Q-выходом 764 триггера 766 задержки. Триггер 766 задержки имеет D-вход 768 и R-вход (вход занесения "0") 771. Вход синхронизирующего элемента 732 соединен посредством линии 762 связи с Q-выходом 764. D-вход 768 соединен посредством линии 770 связи с выходом логического элемента 772 исключающее ИЛИ. Q-выход 764 соединен посредством линии 762 связи как вход в логический элемент 772 исключающее ИЛИ. Другой вход логического элемента 772 исключающее ИЛИ соединен посредством линии 774 связи с сигналом P2_Add, формируемым вторым производителем 604 (фиг.6). Триггер 766 задержки имеет тактовый вход 775, который соединен со вторыми тактовыми импульсами P2C1_Clk посредством линии 776 связи. Синхронизирующий элемент 778 также соединен посредством линии 776 связи со вторыми тактовыми импульсами P2C1_Clk. Вход в синхронизирующий элемент 778 соединен посредством линии 710 связи с Q-выходом 706 триггера 702 задержки. Выход синхронизирующего элемента 778 соединен посредством линии 780 связи с входом логического элемента 760 исключающее ИЛИ. Выход синхронизирующего элемента 778 также соединен посредством линии 780 связи с другим логическим элементом 782 исключающее ИЛИ. Q-выход 740 триггера 742 задержки соединен посредством линии 738 связи как второй вход в логический элемент 782 исключающее ИЛИ. Выход логического элемента 782 исключающее ИЛИ соединен посредством линии 784 связи с входом логического элемента 786 исключающее ИЛИ. Q-выход 764 триггера 766 задержки соединен посредством линии 762 связи со вторым входом логического элемента 786 исключающее ИЛИ. Выход логического элемента 786 исключающее ИЛИ соединен посредством линии 788 связи как вход P2_Test к производителю 604. Логический элемент 712 исключающее ИЛИ и триггер 702 задержки соединены вместе, как описано в связи с фиг.5а, для функционирования в качестве битового регистра. Таким образом, если производитель 602 формирует высокоимпульсный сигнал P1_Add на линии 716 связи, то Q-выход 706 триггера 702 задержки изменяет логические состояния (то есть переключается) от высокого к низкому или от низкого к высокому. Q-выход 706 сохраняет свое логическое состояние постоянно до тех пор, пока не изменится посредством сигнала P1_Add, формируемым производителем 602. Аналогичный битовый регистр для потребителя 606 содержит логический элемент 750 исключающее ИЛИ и триггер 742 задержки. Соответственно, Q-выход 740 триггера 742 задержки представляет устойчивое логическое состояние и переключает свое логическое состояние каждый раз, когда потребитель 606 формирует высокоимпульсный сигнал C1_Sub на линии 752 связи. Фиг. 7а представляет третий такой битовый регистр для производителя 604. Третий битовый регистр содержит логический элемент 772 исключающее ИЛИ и триггер 766 задержки. Логическое состояние Q-выхода 764 триггера задержки переключается каждый раз, когда производитель 604 формирует высокоимпульсный сигнал P2_Add на линии 774 связи и Q-выход 764 триггера 766 задержки представляет устойчивое логическое состояние между переключениями. Линии 710, 738, и 762 связи передают сигналы, соответствующие логическим состояниям Q-выходов 706, 740 и 764, соответственно. Эти сигналы, передаваемые по линиям 710, 738 и 762 связи, представляют, таким образом, значения соответствующих битовых регистров производителя 602, потребителя 606 и производителя 604. Как описано со ссылкой на фиг.5а, независимое сравнение значений битовых регистров, выполненное каждым производителем и потребителем, позволяет каждому производителю и потребителю определить доступность совместно используемого ресурса. Как также описано со ссылкой на фиг.5а, такое сравнение значений битовых регистров может быть сделано посредством операции исключающее ИЛИ, которой подвергаются значения битовых регистров. Соответственно, производитель 602 может проверить состояние совместно используемого ресурса 608 посредством операции исключающее ИЛИ, которой подвергаются сигналы, передаваемые по линиям 710 (то есть значение своего собственного битового регистра), 738 (то есть значение битового регистра потребителя 606) и 762 (то есть значение битового регистра производителя 604). Очевидно, что значение битового регистра производителя, передаваемое по линии 710 связи синхронно с тактовыми импульсами P1_Clk производителя 602. Таким образом, значение битового регистра производителя 602 синхронно доступно производителю 602. Сигналы, передаваемые по линиям 738 и 762 связи (то есть соответствующие значения битовых регистров потребителя 606 и производителя 604), являются, однако, асинхронными тактовым импульсам P1_Clk. Сигналы, передаваемые по линиям 738 и 762 связи, должны быть по этой причине синхронизированы с тактовыми импульсами P1_Clk перед операцией исключающее ИЛИ, выполняемой производителем 602. Как показано на фиг.7а, сигналы, передаваемые по линиям 738 и 762 связи, являются входом в соответствующие синхронизирующие элементы 730 и 732. Линии 734 и 736 связи соответственно передают логические состояния линий 738 и 762, синхронизированные с тактовыми импульсами P1_Clk. Синхронизированные логические состояния, передаваемые по линиям 734 и 736, подвергаются операции исключающее ИЛИ, выполняемой посредством логического элемента 724 исключающее ИЛИ (то есть значения битовых регистров производителя 604 и потребителя 606 вводятся в тактовую область производителя 602 и сравниваются). Выход логического элемента 724 исключающее ИЛИ передается по линии 722 связи как вход в логический элемент 720 исключающее ИЛИ. Сигнал, передаваемый по линии 710 связи, также является входом в логический элемент 720 исключающее ИЛИ. Таким образом, логический элемент 720 исключающее ИЛИ сравнивает значение битового регистра производителя 602 с результатом сравнения значений битовых регистров производителя 604 и потребителя 606. Выход логического элемента 720 исключающее ИЛИ передается по линии 726 связи как сигнал P1_Test. Логическое состояние, представленное сигналом P1_ Test, определяет, доступен ли совместно используемый ресурс 608 для производителя 602. Если сигнал P1_Test имеет низкое логическое состояние (то есть, если число записей в совместно используемый ресурс 608 равно числу считываний из совместно используемого ресурса 608), то производитель 602 может записывать данные в совместно используемый ресурс 608. Однако если сигнал P1_Test имеет высокое логическое состояние (то есть если число записей в совместно используемый ресурс 608 отличается от числа считываний из совместно используемого ресурса 608), то производитель 602 не может записывать данные в совместно используемый ресурс 608. Как описано со ссылкой на фиг.5а, синхронизация сигнала P1_Add и сигнала P1_ Test является существенным преимуществом настоящего изобретения. Сигнал P1_ Add, формируемый производителем 602, вынудит обновление логического состояния сигнала P1_Test в одном такте тактовых импульсов P1_Clk. Немедленное обновление сигнала P1_Test исключает какое-либо окно времени, в течение которого производитель 602 не способен обнаруживать недоступность совместно используемого ресурса 608, вызванного его собственной самой последней операцией записи данных. Как описано выше, по этой причине существует необходимость введения задержки для предотвращения возможности преждевременного доступа производителя 602 к совместно используемому ресурсу 608. Производитель 604 и потребитель 606 также выполняют независимые сравнения сигналов, передаваемых по линиям 710, 738 и 762 связи. Производитель 604 и потребитель 606 работают синхронно с теми же тактовыми импульсами P2C1_ Clk. Сигналы, передаваемые по линиям 738 и 762 связи, синхронны тактовым импульсам P2C1_Clk и по этой причине не нуждаются в синхронизации перед осуществлением сравнения производителем 604 и потребителем 606. Однако сигнал, передаваемый по линии 710 связи (то есть значение битового регистра производителя 602), является асинхронным тактовым импульсам P2C1_Clk и по этой причине должен быть синхронизирован. Таким образом, сигнал, передаваемый по линии 710 связи является входным сигналом в синхронизирующий элемент 778. Выход синхронизирующего элемента 778, представляющий логическое состояние, передаваемое по линии 710 связи, синхронизированное с тактовыми импульсами P2C1_ Clk, передается по линии 780 связи как вход в логический элемент 760 исключающее ИЛИ. Значение битового регистра производителя 604 передается по линии 762 связи как другой вход в логический элемент 760 исключающее ИЛИ. Таким образом, логический элемент 760 исключающее ИЛИ сравнивает значения битовых регистров производителя 602 и производителя 604. Выход логического элемента 760 исключающее ИЛИ является входом логического элемента 754 исключающее ИЛИ. Значение битового регистра потребителя 606 передается по линии 738 связи как другой вход логического элемента 754 исключающее ИЛИ. Выход логического элемента 754 исключающее ИЛИ является сигнал C1_Test, передаваемый по линии 756 связи. Логическое состояние, представляемое сигналом C1_Test, определяет доступность совместно используемого ресурса 608 для потребителя 606. Если сигнал C1_Test имеет высокое логическое состояние (то есть, если число записей в совместно используемый ресурс 608 отличается от числа считываний из совместно используемого ресурса 608), то потребитель 606 может считывать данные из совместно используемого ресурса 608. Если сигнал C1_Test имеет низкое логическое состояние, то потребитель 606 не может считывать данные из совместно используемого ресурса 608. Взаимозависимость между сигналом P1_Add и сигналом P1_Test, описанным выше, также представлена между сигналом C1_Sub и сигналом C1_Test. Поскольку каждый сигнал C1_Sub заставит обновиться сигнал C1_Test в одном цикле тактовых импульсов P2C1_Clk производителя 606, потребитель 606 не будет преждевременно считывать данные из совместно используемого ресурса 608. Выход синхронизирующего элемента 778, представляющий значение битового регистра производителя 604, синхронизированного с тактовыми импульсами P2C1_ Clk, также передается по линии 780 связи как вход логического элемента 782 исключающее ИЛИ. Значение битового регистра потребителя 606 передается по линии 738 как другой вход логического элемента 782 исключающее ИЛИ. Таким образом, логический элемент 782 исключающее ИЛИ сравнивает значения битовых регистров производителя 602 и потребителя 606. Выход логического элемента 782 исключающее ИЛИ передается по линии 784 связи как вход логического элемента 786 исключающее ИЛИ. Значение битового регистра производителя передается по линии 762 связи как другой вход логического элемента 786 исключающее ИЛИ. Выход логического элемента 786 исключающее ИЛИ является сигналом P2_Test, передаваемым по линии 788 связи. Логическое состояние, представляемое сигналом P2_Test, определяет, доступен ли совместно используемый ресурс 608 для производителя 604. Если сигнал P2_ Test мал, то производитель 604 может записывать данные в совместно используемый ресурс 608. Однако если сигнал P2_Test велик, то производитель 604 не может записывать данные в совместно используемый ресурс. Предпочтительное соотношение между сигналом P1_Add и сигналом P1_Test, описанным выше, представлено также между сигналом P2_Add и сигналом P2_Test. To есть поскольку сигнал P2_ Test обновляется в одном такте каждого сигнала P2_Add, производитель 604 не будет преждевременно записывать данные в совместно используемый ресурс 608. Как описано выше со ссылкой на фиг.5а, активный большой импульс, передаваемый по линии занесения "0" (на фиг.7а эта линия не показана), соединенной с R-входами (входами занесения "0") 708, 746 и 771, заставляет производитель 602, производитель 604 и потребитель 606 устанавливаться в исходное состояние, в котором совместно используемый ресурс 608 доступен для записи данных. На фиг. 7b иллюстрируется логическая блок-схема, которая так же, как и логическая блок-схема на фиг.7а, представляет логику, позволяющую двум подсистемам-производителям и одной подсистеме-потребителю независимо проверять состояние совместно используемого ресурса. Логическая блок-схема, показанная на фиг. 7b. имеет преимущество общего тактирования, совместно используемого вторым производителем и потребителем для уменьшения логики, требуемой для системы. На фиг.7b не показан совместно используемый ресурс. Во всей полноте не показаны два производителя и потребитель. На фиг.7b представлены только компоненты, содержащие битовые регистры и проверочные логические элементы двух производителей и потребителя. Компоненты, показанные на фиг.7b, указаны ссылочными номерами 702-720, которые идентичны компонентам, указанным такими же ссылочными номерами, как на фиг.7а, и по этой причине описание этих компонентов не будет повторено. Линия 722 связи соединяет выход синхронизирующего элемента 724 со входом логического элемента 720 исключающее ИЛИ. Выходом логического элемента 720 исключающее ИЛИ является сигнал P1_Test, передаваемый по линии 726 связи как вход производителя 602 (фиг.6). Линия 728 связи соединяет первые тактовые импульсы P1_Clk с тактовым входом 719 триггера 702 задержки. Линия 728 связи также соединяет тактовые импульсы P1_Clk с синхронизирующим элементом 724. Линия 730 связи соединяет Q-выход 732 триггера 734 задержки со входом синхронизирующего элемента 724. Триггер 734 задержки имеет D-вход 736, R-вход (вход занесения "0"") 738 и тактовый вход 739. Линия 730 связи соединяет Q-выход 732 как вход логического элемента исключающее ИЛИ. Линия 742 связи соединяет второй вход логического элемента 740 исключающее ИЛИ с выходом логического элемента 744 исключающее ИЛИ. Первым входом логического элемента 744 исключающее ИЛИ является сигнал C1_Sub, формируемый потребителем 606 (фиг.6) и передаваемый по линии 746 связи. Вторым входом логического элемента 744 исключающее ИЛИ является сигнал P2_Add, формируемый производителем 604 (фиг. 6) и передаваемый по линии 748 связи. Выход логического элемента 740 исключающее ИЛИ передается по линии 750 связи к D-входу 736 триггера 734 задержки. Вторые тактовые импульсы P2C1_Clk передают посредством линии 752 связи к тактовому входу 739 триггера 734 задержки. Линия 752 связи также подает тактовые импульсы P1_Clk в синхронизирующий элемент 754. Вход синхронизирующего элемента 754 соединен посредством линии 710 связи с Q-выходом 706 триггера 702 задержки. Выход синхронизирующего элемента 754 соединен посредством линии 756 связи с входом логического элемента 758 исключающее ИЛИ. Второй вход логического элемента исключающее ИЛИ соединен посредством линии 730 связи с Q-выходом 732 триггера 734 задержки. Выходом логического элемента 758 исключающее ИЛИ является сигнал P2C1_Test, передаваемый по линии 760 связи. Первый битовый регистр, показанный на фиг.7b, используемый производителем 602, содержит логический элемент 712 исключающее ИЛИ и триггер 702 задержки. Однако логический элемент 712 исключающее ИЛИ и триггер 702 задержки функционально идентичны компонентам на фиг.7а, указанным аналогичными ссылочными номерами и по этой причине не будут повторно описаны в этой заявке. Соотношение между сигналом P1_Add и сигналом P1_Test на фиг.7b идентично соотношению между аналогичными сигналами, описанными со ссылкой на фиг.7а и по этой причине их работа также не будет описана повторно. Поскольку производитель 604 и потребитель 606 работают синхронно с тактовыми импульсами P2C1_Clk, логика, содержащая функции соответствующего битового регистра, может быть упрощена так же, как логика, требуемая для проверки состояния совместно используемого ресурса 608. В соответствии с этим второй битовый регистр, показанный на фиг.7b, совместно используется производителем 604 и потребителем 606. Второй битовый регистр содержит логический элемент 740 исключающее ИЛИ и триггер 734 задержки. Как описано выше, поскольку Q-выход 732 триггера 734 задержки подается посредством линии 730 связи на вход логического элемента 740 исключающее ИЛИ и поскольку выход логического элемента 740 исключающее ИЛИ передается по линии 750 связи на D-вход 736 триггера 734 задержки, логический элемент 740 исключающее ИЛИ и триггер 734 задержки функционируют как битовый регистр. То есть необходимо указать, что импульсный сигнал, передаваемый по линии 742 связи как второй вход в логический элемент 740 исключающее ИЛИ, заставляет триггер 734 задержки переключать логическое состояние Q-выхода 732 и передавать такое логическое состояние по линии 730 связи до тех пор, пока другой такой импульсный сигнал не будет передаваться по линии 742 связи. Сигнал P2_Add и сигнал C1_Sub передаются как входы логического элемента 744 исключающее ИЛИ по соответствующим линиям 748 и 746 связи. Очевидно, что выход логического элемента 744 исключающее ИЛИ, передаваемый по линии 742 связи, представляет сигнал P2_ Add, формируемый производителем 604, или сигнал C1_Sub, формируемый потребителем. При формировании сигнала P2_Add или сигнала C1_ Sub логический элемент 744 исключающее ИЛИ обеспечивает выход такого сигнала. Однако очевидно, что при одновременном формировании сигналов P2_ Add и C1_Sub (то есть сигналов, достигающих логический элемент 744 исключающее ИЛИ в одном такте), выход логического состояния, обеспечиваемый логическим элементом 744 исключающее ИЛИ, не изменится. Поскольку производитель 604 и потребитель 606 работают в одной тактовой области и поскольку второй битовый регистр может обновляться производителем 604 или потребителем 606, но никогда обоими в одно какое-либо особое время, производитель 604 и потребитель 606 могут, как описано, совместно использовать битовый регистр. Производитель 604 и потребитель 606 также совместно используют сигнал P2C1_ Test, который определяет доступность совместно используемого ресурса 608 для записи или считывания. Сигнал P2C1 Test, передаваемый по линии 760 связи, представляет логическое состояние, полученное в результате сравнения логического состояния первого битового регистра и логического состояния второго битового регистра. Логическое состояние первого битового регистра представляет число записей в совместно используемый ресурс 608, инициированных первым производителем 602. Логическое состояние второго битового регистра представляет число записей в совместно используемый ресурс 608, инициированных вторым производителем 604, уменьшенное на число считываний из совместно используемого ресурса, инициированных потребителем 606. Поскольку второй битовый регистр обновляется производителем 604 каждый раз, когда производитель 604 инициирует запись в совместно используемый ресурс 608, а также обновляется потребителем каждый раз, когда потребитель 606 инициирует считывание из совместно используемого ресурса 608, исключается необходимость последующего сравнения операций записи производителя 604 с операциями считывания потребителя 606. Сигнал, передаваемый по линии 730 связи на вход логического элемента 758 исключающее ИЛИ, представляет логическое состояние второго битового регистра, совместно используемого производителем 604 и потребителем 606. Сигнал, передаваемый по линии 756 связи на вход логического элемента 758 исключающее ИЛИ, представляет логическое состояние первого битового регистра, синхронизированное с тактовыми импульсами P2C1_Clk. Выходом логического элемента 758 исключающее ИЛИ является сигнал P2C1_Test, который передается по линии 760 связи ко второму производителю 604 и потребителю 606. Таким образом, логическое состояние, представляемое сигналом P2C1_Test, определяет, доступен ли совместно используемый ресурс 608 второму производителю 604 для записи данных и определяет, доступен ли совместно используемый ресурс 608 потребителю 606 для считывания данных. Если сигнал P2C1_Test имеет низкое логическое состояние, то совместно используемый ресурс 608 доступен второму производителю 604 для записи данных, но не доступен потребителю 606 для считывания. Если сигнал P2C1_Test имеет высокое логическое состояние, то совместно используемый ресурс 608 не доступен второму производителю 604 для записи данных, но доступен потребителю 606 для считывания. На фиг.8 иллюстрируется упрощенная блок-схема, представляющая часть цифровой системы, содержащей первую подсистему-производитель 802, работающую синхронно с первыми тактовыми импульсами P1_Clk, вторую подсистему-производитель 804, работающую синхронно со вторыми тактовыми импульсами P2_Clk, первую подсистему-потребитель 806, работающую синхронно с третьими тактовыми импульсами C1_Clk, и вторую подсистему-потребитель 808, работающую синхронно с четвертыми тактовыми импульсами C2_Clk. Все тактовые импульсы P1_Clk, P2_ Clk, C1_Clk и C2_Clk асинхронны друг другу. Первый производитель 802 содержит проверочный логический элемент 812 и битовый регистр 814. Второй производитель 804 содержит проверочный логический элемент 816 и битовый регистр 816. Первый потребитель 806 содержит проверочный логический элемент 820 и битовый регистр 822. Второй потребитель 808 содержит проверочный логический элемент 824 и битовый регистр 826. Четыре подсистемы 802, 804, 806 и 808 совместно используют ресурс 810. Проверочные логические элементы 812, 816, 820 и 824 позволяют соответствующим подсистемам 802, 804 806 и 808 независимо определять состояние совместно используемого ресурса 810. Битовые регистры 814, 818, 822 и 826 могут представлять значение нуля или единицы. Каждая из подсистем 802, 804, 806 и 808 может считывать значение каждого из битовых регистров 814, 818, 822 и 826. Поскольку эти четыре подсистемы 802, 804, 806 и 808 работают во взаимно асинхронных тактовых областях, очевидно, что значение каждого из битовых регистров 814, 818, 822 и 826 должно быть синхронизировано с соответствующими асинхронными тактовыми импульсами. Соответственно, на фиг.8 показана, например, передача значения битового регистра 822 первого потребителя 806, значения битового регистра 826 второго потребителя 808 и значения битового регистра 818 второго производителя 804 в набор из трех синхронизирующих элементов 830, тактируемых посредством тактовых импульсов P1_Clk. Синхронизированные значения битовых регистров 822, 826 и 818 передаются в проверочный логический элемент 812 первого производителя 802. Таким образом, значения битовых регистров 814, 818, 822 и 826 доступны первому производителю 802. Аналогичным образом набор из трех синхронизирующих элементов 832, тактируемых тактовыми импульсами P2_ Clk, синхронизирует значение битовых регистров 814, 822 и 826, делая таким образом эти значения доступными для второго производителя 804. Также набор из трех синхронизирующих элементов 834, тактируемых тактовыми импульсами С1_ Сlk, синхронизирует значение битовых регистров 814, 818 и 826, делая благодаря этому эти значения доступными для первого потребителя. Аналогичным образом набор из трех синхронизирующих элементов 836, тактируемых тактовыми импульсами C2_Clk, синхронизирует значение битовых регистров 814, 818 и 822, делая благодаря этому эти значения доступными для второго потребителя. Как описано выше, производитель и потребитель могут определить состояние совместно используемого ресурса посредством операции исключающее ИЛИ, которой подвергают значения соответствующих битовых регистров каждой из подсистем. Таким образом, первый производитель 802 подвергает операции исключающее ИЛИ значения каждого из битовых регистров 814, 818, 822 и 826. Если результатом такой операции исключающее ИЛИ является ноль, то в совместно используемом ресурсе 810 находятся устаревшие данные и первый производитель 802 может записать данные в совместно используемый ресурс 810. С другой стороны, если результатом такой операции исключающее ИЛИ является единица, то в совместно используемом ресурсе 810 находятся свежие данные и первый производитель не может записать данные в совместно используемый ресурс 810. Логика, требуемая для проверки доступности совместно используемого ресурса 810, поясняется посредством уравнения
Если результатом уравнения P1_Test является ноль, то данные в совместно используемом ресурсе 810 уже были считаны потребителем (данные являются устаревшими) и первый производитель 802 может записать новые данные в совместно используемый ресурс 810. Однако если результатом уравнения P1_Test является единица, то в совместно используемом ресурсе 810 находятся свежие данные и первый производитель 802 не может записать в совместно используемый ресурс 810 новые данные. Аналогичная логика проверки используется потребителем, как показано на фиг.8. Например, первый потребитель 806 может определить состояние совместно используемого ресурса 810 в соответствии со следующим уравнением:
Если результатом уравнения C1_ Test является единица, то в совместно используемом ресурсе 810 находятся свежие данные и эти данные могут быть немедленно считаны первым потребителем 806. С другой стороны, если результатом уравнения C1_Test является ноль, то в совместно используемом ресурсе 810 находятся устаревшие данные и первый потребитель 806 не может считывать эти данные. Аналогичная логика проверки предусмотрена для второго производителя 804 и для второго потребителя 808. На фиг.9 приведена логическая блок-схема, представляющая логику, которая позволяет двум подсистемам-производителям и двум подсистемам-потребителям, работающим в асинхронных тактовых областях, независимо проверять состояние совместно используемого ресурса. Совместно используемый ресурс на фиг.9 не показан. Кроме того, на фиг.5 полностью не показаны две подсистемы-производители и две подсистемы-потребители, а показана только логика, которая облегчает работу компонентов битового регистра, и проверочные логические элементы, описанные в общем со ссылкой на фиг.8. Первый битовый регистр содержит логический элемент 902 исключающее ИЛИ, триггер 904 задержки, тактируемый тактовыми импульсами P1_Clk, и вход сигнала P1_ Add, формируемого первым производителем 802, к первому регистру. Подробные описания компонентов такого битового регистра, а также работа такого битового регистра были изложены выше и, следовательно, не будут повторены. Сигнал P1_Bitreg представляет логическое состояние первого битового регистра. Таким образом, посредством сигнала P1_Bitreg представлено значение битового регистра первого производителя 802, показанного на фиг.8. Второй, третий и четвертый битовые регистры, соответственно, содержат логический элемент 906 исключающее ИЛИ и триггер 908 задержки, тактируемый тактовыми импульсами P2_Clk, логический элемент 910 исключающее ИЛИ и триггер 912 задержки, тактируемый тактовыми импульсами C1_Clk и логический элемент 914 исключающее ИЛИ и триггер 916 задержки, тактируемый тактовыми импульсами C2_Clk. Второй битовый регистр дополнительно содержит вход сигнала P2_ Add, формируемого вторым производителем 804, во второй битовый регистр. Третий битовый регистр дополнительно содержит вход сигнала C1_Sub, формируемого первым потребителем 806, в третий битовый регистр. Четвертый битовый регистр дополнительно содержит вход сигнала C2_Sub, формируемого вторым потребителем 808, в четвертый битовый регистр. Логические состояния второго, третьего и четвертого битовых регистров соответственно представлены сигналом P2_ Bitreg, сигналом C1_Bitreg и сигналом C2_Bitreg. Таким образом, значения соответствующих битовых регистров второго производителя 804, первого потребителя 806 и второго потребителя 808 соответственно представлены сигналом P2_Bitreg, сигналом C1_Bitreg и сигналом C2_Bitreg. Первый, второй, третий и четвертый битовые регистры работают во взаимно исключающих тактовых областях. По этой причине значения битовых регистров P1_ Bitreg, P2_Bitreg, C1_Bitreg и C2_Bitreg должны быть синхронизированы с каждыми соответствующими асинхронными тактовыми импульсами, чтобы сделать такие значения доступными для каждой из подсистем-производителей и подсистем-потребителей. Соответственно, фиг. 9 представляет линию 918 связи, передающую сигнал P1_ Bitreg как вход синхронизирующего элемента 920, тактируемого тактовыми импульсами P2_ Clk, как вход синхронизирующего элемента 922, тактируемого тактовыми импульсами C1_Clk, и как вход синхронизирующего элемента 924, тактируемого тактовыми импульсами C2_Clk. Линия 926 связи аналогичным образом передает сигнал P2_ Bitreg как вход синхронизирующего элемента 928, тактируемого тактовыми импульсами P1_ Clk, как вход синхронизирующего элемента 930, тактируемого тактовыми импульсами C1_Clk, и как вход синхронизирующего элемента 932, тактируемого тактовыми импульсами C2_Clk. Линия 934 связи аналогичным образом передает сигнал C1_Bitreg как вход синхронизирующего элемента 936, тактируемого тактовыми импульсами P1_Clk, как вход синхронизирующего элемента 938, тактируемого тактовыми импульсами P2_Clk, и как вход синхронизирующего элемента 940, тактируемого тактовыми импульсами C2_Clk. Линия 942 связи аналогичным образом передает сигнал C2_Bitreg как вход синхронизирующего элемента 944, тактируемого тактовыми импульсами P1_Clk, как вход синхронизирующего элемента 946, тактируемого тактовыми импульсами P2_ Clk, и как вход синхронизирующего элемента 948, тактируемого тактовыми импульсами C1_Clk. Как описано выше со ссылкой на фиг.8, состояние совместно используемого ресурса может быть определено посредством операции исключающее ИЛИ, которой подвергают значения битовых регистров каждого производителя и потребителя. Таким образом, фиг.9 представляет, например, сигнал P1_Bitreg, передаваемый по линии 918 как вход логического элемента 950 исключающее ИЛИ. Линия 952 связи передает сигнал C1_Bitreg, синхронный тактовым импульсам P1_Clk, как второй вход логического элемента 950 исключающее ИЛИ. Линия 954 связи передает сигнал C2_Bitreg, синхронный тактовым импульсам P1_Clk, как первый вход логического элемента 956 исключающее ИЛИ. Линия 958 связи передает сигнал P2_Bitreg, синхронный тактовым импульсам P1_Clk, как второй вход логического элемента 956 исключающее ИЛИ. Выход логического элемента 950 исключающее ИЛИ передается по линии 960 связи как вход в логический элемент 964 исключающее ИЛИ. Выход логического элемента 956 исключающее ИЛИ передается по линии 962 связи как второй вход в логический элемент 964 исключающее ИЛИ. Выход логического элемента 964 исключающее ИЛИ передается по линии 966 связи как вход к первому производителю 802. Таким образом, посредством логических элементов 950, 956 и 964 исключающее ИЛИ значения битовых регистров P1_Bitreg, P2_Bitreg, C1_Bitreg и C2_Bitreg подвергаются операции исключающее ИЛИ. Результатом такой операции исключающее ИЛИ является сигнал P1_Test, передаваемый по линии 966 связи. Величина сигнала P1_Test определяет, доступен ли совместно используемый ресурс 810 первому производителю 802 для записи данных. Если сигнал P1_Test имеет низкое логическое состояние, то первый производитель 802 может записать в совместно используемый ресурс 810 новые данные. Однако если сигнал P1_Test имеет высокое логическое состояние, то первый производитель 802 не может записать в совместно используемый ресурс 810 новые данные. Очевидно, что взаимосвязь между сигналом P1_Add и сигналом P1_Test, описанным выше, такова, как представлено на фиг.9. То есть каждый сигнал P1_ Add, формируемый первым производителем 802, обновляет сигнал P1_Test в одном такте тактовых импульсов P1_Clk первого производителя. Первый производитель, немедленно уведомленный сигналом P1_Test, что совместно используемый ресурс 810 стал недоступен, будет предохранен от преждевременного доступа к совместно используемому ресурсу 810. Аналогичная взаимосвязь имеется относительно сигналов P2_Add и P2_Test, относительно сигналов C1_Sub и C1_Test и относительно сигналов C2_Sub и C2_Test. Структуры и работа цепи P2_Test, C1_Test и C2_Test, показанные на фиг.9, аналогичны структуре и работе цепи P1_Test и по этой причине не будут подробно описываться в этой заявке. Настоящее изобретение предназначено для применения в цифровых системах, имеющих любое число подсистем-производителей или подсистем-потребителей. Очевидно, что если ресурс является совместно используемым двумя или более подсистемами-производителями или двумя или более подсистемами-потребителями, то для предохранения двух или более подсистем-производителей от одновременной записи в совместно используемый ресурс или для предохранения двух или более подсистем-потребителей от одновременного считывания из одного совместно используемого ресурса, необходим арбитражный элемент. Такие неконтролируемые одновременные доступы совместно используемых ресурсов известны как режим соперничества. Основными функциями арбитра являются 1) прием запросов на ресурс; 2) прием данных об освобождении ресурса; 3) арбитраж всех запросов ресурса; и 4) выдача разрешения ресурса одному из просителей. Используя эти функции для регулирования доступа к ресурсу, арбитр может предотвратить возникновение режима соперничества. Известно много таких арбитров и настоящее изобретение не направлено на разработку специального арбитра. Однако другое преимущество настоящего изобретения становится очевидным, когда вариант осуществления настоящего изобретения предусматривает использование двух или более подсистем-производителей или двух или более подсистем-потребителей и таким образом требует арбитра. Традиционные способы определения состояния совместно используемого ресурса предусматривают применение семафора для представления доступного или недоступного состояния. В традиционном способе каждая подсистема, требующая доступ к совместно используемому ресурсу, сначала проверяет значение семафора. В системах, имеющих множество тактовых областей, очевидно, что доступ значения семафора, а также обновление значения семафора требуют задержек синхронизации для всех подсистем, работающих асинхронно семафору. Такие задержки усложняют конструкцию арбитра. После того, как арбитр обнаруживает, что ресурс освободился, арбитр разрешит доступ к ресурсу другому просителю. Однако если вследствие задержек синхронизации новый получивший разрешение проситель еще не может обнаружить обновление семафора, показывающее недоступность ресурса, то новый получивший разрешение проситель будет иметь доступ к ресурсу (как разрешено арбитром), но будет иметь доступ ресурса преждевременно (например, производитель запишет в ресурс, который уже содержит свежие данные, или потребитель считает данные, которые уже были считаны). Для коррекции таких преждевременных допусков арбитры традиционно конструируют с встроенными задержками, равными или более длительными, чем задержка, требуемая в наихудшем случае синхронизации, чтобы дать возможность подсистеме с наименьшей скоростью тактирования обнаруживать обновления семафора. Если настоящее изобретение применяют для определения состояния совместно используемого ресурса, то исключается традиционная необходимость общего семафора для представления состояния совместно используемого ресурса. В соответствии с настоящим изобретением каждый производитель или потребитель посылает сигнал обновления непосредственно каждому другому производителю и потребителю. Таким образом, чтобы позволить любому производителю или потребителю определить обновление состояния совместно используемого ресурса, требуется только одна операция синхронизации. Как показано ниже на фиг.10а, 10b и 10с, то, что максимальная задержка обновления к любому производителю или потребителю эквивалентна одной операции синхронизации, исключает необходимость введения встроенных задержек в конструкцию арбитра. Таким образом, минимизируется уменьшение быстродействия, вызванное совместным использованием ресурса и арбитража доступа ресурса. На фиг.10а показана упрощенная блок-схема, иллюстрирующая часть цифровой системы, содержащей первый производитель 1002, работающий синхронно с первыми тактовыми импульсами P1_Clk, второй производитель 1004, работающий синхронно со вторыми тактовыми импульсами P2_Clk, и арбитр 1006, работающий синхронно со вторыми тактовыми импульсами P2_Clk. Линия 1008 связи передает сигнал BUS_Releas, формируемый первым производителем 1002 как вход в синхронизирующий элемент 1010, тактируемый тактовыми импульсами P2_Clk. Выход синхронизирующего элемента 1010 передается как вход к арбитру 1006. Линия 1012 связи передает сигнал BUS_Grant, формируемый арбитром 1006 как вход второго производителя 1004. Линия 1014 связи передает сигнал Pl_Bitreg, формируемый первым производителем 1002 как вход синхронизирующего элемента 1016, тактируемого тактовыми импульсами P2_Clk. Выход синхронизирующего элемента 1016 передается по линии 1018 связи как вход второго производителя 1004. По линии 1020 связи вторые тактовые импульсы P2_ Clk передаются в синхронизирующий элемент 1010, в синхронизирующий элемент 1016, к арбитру 1006 и ко второму производителю 1004. Первый производитель 1002 обновляет сигнал P1_Bitreg при инициировании операции записи данных в совместно используемый ресурс (не показан). Сигнал P1_ Bitreg синхронен тактовым импульсам P1_Clk первого производителя. Как описано выше, для определения в соответствии с настоящим изобретением состояния совместно используемого ресурса второй производитель 1004 должен быть способен считывать логическое состояние сигнала P1_Bitreg для сравнения его с логическим состоянием своего собственного битового регистра. Таким образом, логическое состояние сигнала P1_Bitreg синхронизируется с тактовыми импульсами P1_ Clk посредством синхронизирующего элемента 1016 и синхронизированный сигнал P1_Bitreg передается по линии 1018 связи ко второму производителю 1004. Когда первый производитель 1002 инициирует запись данных в совместно используемый ресурс, первый производитель также генерирует сигнал BUS_Releas, передаваемый по линии 1008 связи как вход в синхронизирующий элемент 1010. Поскольку арбитр работает синхронно со вторыми тактовыми импульсами P2_Clk, сигнал BUS_Releas должен быть синхронизирован с тактовыми импульсами P2_Clk прежде, чем арбитр 1006 может принять сигнал BUS_Releas. Выход синхронизирующего элемента 1010 представляет сигнал BUS_Releas, синхронизированный с тактовыми импульсами P2_Clk. Синхронизированный сигнал BUS_Releas передается как вход к арбитру 1006. Приняв сигнал BUS_Releas, арбитр 1006 отвечает тем, что формирует сигнал BUS_Grant, разрешающий доступ совместно используемого ресурса второму производителю 1004. Поскольку сигнал BUS_Grant является синхронным тактовым импульсам Р2_С1к, он передается непосредственно как вход второго производителя 1004. На фиг. 10а показано, что если арбитр 1006 работает синхронно с одной подсистемой-производителем и если настоящее изобретение применяют для определения состояния совместно используемого ресурса, то для гарантии должной синхронизации арбитра в арбитр 1006 не требуется введения встроенной задержки. Второй производитель 1004 уведомляется о любом изменении состояния совместно используемого ресурса, вызванном первым производителем 1002, как только сигнал P1_ Bitreg синхронизируется с тактовыми импульсами P2_Clk посредством синхронизирующего элемента 1016. По меньшей мере некоторое количество времени требуется для синхронизации сигнала BUS_Releas с тактовыми импульсами P2_ Clk и для передачи к арбитру 1006, а также арбитру 1006 для ответного формирования сигнала BUS_Grant, передаваемого ко второму производителю 1004. Таким образом очевидно, что арбитр 1006 не может обнаружить сигнал BUS_ Releas первого производителя, а также разрешения информационной шины второму производителю 1004 посредством сигнала BUS_Grant прежде, чем второй производитель 1004 может обнаружить обновленный сигнал P1_Bitreg первого производителя 1002. По этой причине нет возможности режима соперничества, несмотря на то, что для замедления работы арбитра 1006 не введена встроенная задержка. На фиг.10b приведена упрощенная блок-схема, представляющая те же компоненты, что и на фиг.10а. Однако на фиг.10b арбитр 1006 работает синхронно с первым производителем 1002. По этой причине арбитр 1006 может принимать сигнал BUS_ Releas непосредственно от первого производителя 1002 без синхронизации. Однако поскольку второй производитель 1004 асинхронен арбитру 1006, сигнал BUS_ Grant, формируемый арбитром 1006 должен быть синхронизирован с тактовыми импульсами P1_Clk прежде, чем второй производитель 1004 обнаружит сигнал BUS_Grant. Так же как и в случае, показанном на фиг.10а, арбитр 1006 не может обнаружить сигнал BUS_Releas первого производителя 1002, а также разрешить информационную шину второму производителю 1004 сигналом BUS_Grant прежде, чем второй производитель 1004 может обнаружить обновленный сигнал P1_Bitreg первого производителя 1002. На фиг.10с представлены те же компоненты, что и на фиг.10a и фиг.10b, за исключением того, что арбитр 1006 работает синхронно с тактовыми импульсами A_ Clk, которые асинхронны как тактовым импульсам P1_Clk, так и тактовым импульсам P2_Clk. В этом случае сигнал BUS_Releas, формируемый первым производителем 1002, должен быть синхронизирован с тактовыми импульсами A_Clk прежде, чем арбитр 1006 может обнаружить сигнал BUS_Releas. Кроме того, поскольку арбитр 1006 асинхронен второму производителю 1004, сигнал BUS_Grant, формируемый арбитром 1006, должен быть синхронизирован с тактовыми импульсами P2_Clk прежде, чем второй производитель 1004 может обнаружить сигнал BUS_ Grant. Таким образом, поскольку как сигнал BUS_Releas, передаваемый арбитру 1006, так и сигнал BUS_Grant, формируемый арбитром 1006, должны быть синхронизированы, арбитр 1006 не может обнаружить сигнал BUS_Releas первого производителя 1002, а также разрешить информационную шину второму производителю 1004 сигналом BUS_Grant прежде, чем второй производитель 1004 может обнаружить обновленный сигнал P1_Bitreg первого производителя 1002. На фиг.10а, 10b и 10с показано, что независимо от тактовой области, выбранной для арбитра, настоящее изобретение для предотвращения режима соперничества позволяет избежать необходимости введения дополнительной задержки в арбитр или вне его. На фиг.11 приведена упрощенная блок-схема, представляющая первый производитель 1102, работающий синхронно с первыми тактовыми импульсами P1_Clk, второй производитель 1104, работающий синхронно со вторыми тактовыми импульсами P2_Clk, первый арбитр 1106, работающий синхронно с тактовыми импульсами Р1_ С1к, потребитель 1108, работающий синхронно с четвертыми тактовыми импульсами С1_ Сlk и второй арбитр 1109, работающий синхронно с тактовыми импульсами C1_ Clk. Все три вида тактовых импульсов (P1_Clk, P2_Clk, C1_CLK) являются взаимно асинхронными. Линия 1110 связи передает сигнал P1_Request, формируемый первым производителем 1102 как вход в первый арбитр 1106. Линия 1112 связи передает сигнал P1_ Grant, формируемый первым арбитром 1106 как вход в первый производитель 1102. Линия 1114 связи передает сигнал P1_Add, формируемый первым производителем 1102 как вход в первый битовый регистр 1116. Линия 1118 связи передает сигнал P1_ Bitreg, формируемый первым битовым регистром 1118 как вход в первый проверочный логический элемент 1120. Выходом первого проверочного логического элемента 1120 является сигнал P1_Test, передаваемый по линии 1122 связи как вход в первый производитель 1102. Линия 1118 связи также передает сигнал P1_Bitreg как вход в синхронизирующий элемент 1124, тактируемый тактовыми импульсами Р2_Сlk. Выход синхронизирующего элемента 1124 передается как вход второго проверочного логического элемента 1126. Линия 1118 связи дополнительно передает сигнал P1_Bitreg как вход в синхронизирующий элемент 1128, тактируемый тактовыми импульсами C1_ Clk. Выход синхронизирующего элемента 1128 передается как вход в третий проверочный логический элемент 1130. Линия 1134 связи передает сигнал P2_Request, формируемый вторым производителем 1104 как вход в синхронизирующий элемент 1136, тактируемый тактовыми импульсами P1_Clk. Выход синхронизирующего элемента 1136 передается как вход в первый арбитр 1106. Сигнал P2_Grant, формируемый первым арбитром 1106, передается по линии 1138 связи как вход в синхронизирующий элемент 1140, тактируемый тактовыми импульсами P2_Clk. Сигнал P2_Add, формируемый вторым производителем 1104, передается по линии 1142 связи ко второму битовому регистру 1144. Сигнал P2_Bitreg формируется вторым битовым регистром 1144 и передается по линии 1146 связи ко второму проверочному логическому элементу 1126. Второй проверочный логический элемент 1126 формирует сигнал P2_ Test, передаваемый по линии 1148 связи как вход во второй производитель 1104. Линия 1146 связи передает сигнал P2_Bitreg как вход в синхронизирующий элемент 1150, тактируемый тактовыми импульсами P1_Clk. Выход синхронизирующего элемента 1150 передается как вход в первый проверочный логический элемент 1120. Линия 1146 связи также передает сигнал P2_Bitreg как вход в синхронизирующий элемент 1152, тактируемый тактовыми импульсами C1_Clk. Выход синхронизирующего элемента 1152 передается как вход в третий проверочный логический элемент 1130. Линия 1154 связи передает сигнал C1_Request, формируемый потребителем 1108 как вход во второй арбитр 1109. Второй арбитр 1109 формирует сигнал C1_ Grant, передаваемый по линии 1156 связи как вход в потребитель 1108. Потребитель формирует сигнал C1_Sub, передаваемый по линии 1158 связи как вход в третий битовый регистр 1160. Третий битовый регистр формирует сигнал C1_Sitreg, передаваемый по линии 1162 связи как вход в третий проверочный логический элемент 1130. Третий проверочный логический элемент формирует сигнал C1_Test, передаваемый по линии 1164 связи как вход в потребитель 1108. Линия 1162 связи также передает сигнал C1_Bitreg как вход в синхронизирующий элемент 1166, тактируемый тактовыми импульсами P1_Clk. Выход синхронизирующего элемента 1166 передается как вход в первый проверочный логический элемент 1120. Линия 1162 связи дополнительно передает сигнал C1_Bitreg как вход в синхронизирующий элемент 1168, тактируемый тактовыми импульсами P2_Clk. Выход синхронизирующего элемента 1168 передается как вход во второй проверочный логический элемент 1126. Линия 1170 связи передает тактовые импульсы P1_Clk к первому производителю 1102, к первому арбитру 1106 и к синхронизирующим элементам 1136, 1150 и 1166. Линия 1172 связи передает тактовые импульсы P2_Clk ко второму производителю 1104 и к синхронизирующим элементам 1140, 1124 и 1168. Линия 1174 связи передает тактовые импульсы C1_Clk к потребителю 1108, ко второму арбитру 1109 и к синхронизирующим элементам 1128 и 1152. На фиг. 12 показана диаграмма согласования по времени, представляющая взаимосвязи согласования по времени между некоторыми сигналами, формируемыми компонентами, описанными со ссылкой на фиг.11. На фиг.12 показаны сигналы, формируемые синхронно с тремя видами тактовых импульсов (P1_Clk, P2_Clk, C1_ Clk) в течение временного интервала t. Сигнал 1202 тактовых импульсов P1_Clk представляет переходы логического состояния, генерируемые тактовыми импульсами P1_ Clk в течение временного интервала t. Сигнал 1204 тактовых импульсов P2_Clk представляет переходы логического состояния, генерируемые тактовыми импульсами P2_Clk в течение временного интервала t. Сигнал 1206 тактовых импульсов C1_Clk представляет переходы логического состояния, генерируемые тактовыми импульсами C1_Clk в течение временного интервала t. Очевидно, что тактовые импульсы P2_Clk генерируют меньше переходов в течение временного интервала t, чем сигнал тактовых импульсов P1_Clk (то есть тактовые импульсы P2_ Clk чаще тактовых импульсов P1_Clk). Аналогичным образом сигнал тактовых импульсов C1_Clk генерирует больше переходов в течение временного интервала t, чем сигнал тактовых импульсов P1_Clk (то есть тактовые импульсы С1_Сlk чаще тактовых импульсов P1_Clk). Переход сигнала 1208 (P1_Request) и сигнала 1210 (P2_Request) из низкого логического состояния в высокое осуществляется в соответствующей синхронизации с сигналом 1202 тактовых импульсов P1_Clk и с сигналом 1204 тактовых импульсов P2_Clk. Сигналы 1208 и 1210 (P1_Request и P2_Request) формируются соответственно первым производителем 1102 (фиг.11) и вторым производителем 1104 (фиг.11) почти одновременно. Сигналы P1_Request и P2_Request передаются соответственно по линиям 1110 и 1134 связи (фиг.11) к первому арбитру 1106. Очевидно, что первый производитель 1102 и второй производитель 1104 в соответствии с этим запрашивают доступ к совместно используемому ресурсу (не показан). Сигнал 1224 (C1_Request), формируемый потребителем 1108 (фиг.11) переходит из низкого логического состояния в высокое синхронно с сигналом 1206 тактовых импульсов C1_ Clk. Переход сигнала 1224 (C1_Request), передаваемого как вход во второй арбитр 1109, показывает, что потребитель 1108 ищет доступ к совместно используемому ресурсу. После перехода сигнала 1224 (C1_Request) сигнал 1226 (C1_Grant), формируемый вторым арбитром 1109, переходит из низкого логического состояния в высокое, показывая, что второй арбитр 1109 разрешил доступ к совместно используемому ресурсу потребителю 1108. Другие потребители, запрашивающие доступ к совместно используемому ресурсу, не показаны. После переходов (из низкого логического состояния в высокое) сигнала 1208 (P1__Request) и сигнала 1210 (P2__Request), из низкого логического состояния в высокое переходит сигнал 1212 (P1_Grant). Сигнал P1_Grant формируется первым арбитром 1106, показывающим, что первый производитель получил право доступа к совместно используемому ресурсу. Сигнал 1210 (P2_Request) остается в высоком логическом состоянии, показывая, что второй производитель продолжает искать доступ к совместно используемому ресурсу. Получив доступ к совместно используемому ресурсу, первый производитель 1102 инициирует доступ записи в совместно используемый ресурс, а также формирует сигнал P1_Add, показывающий, что такой доступ записи был инициирован. Следовательно, при следующем полном переходе, генерируемом тактовыми импульсами P1_Clk, сигнал 1214 (P1_Add), следующий после перехода сигнала P1_Grant, переходит из низкого логического состояния в высокое. Сигнал 1214 (P1_ Add) является входом в первый битовый регистр 1116. При следующем полном переходе сигнала 1202 (P1_Clk) первый битовый регистр 1116 (фиг.11) изменяет логическое состояние сигнала 1216 (P1_Bitreg) от низкого к высокому. Кроме того, поскольку первый производитель 1102 инициировал доступ записи к совместно используемому ресурсу, первый производитель забирает свой запрос на ресурс путем изменения логического состояния сигнала P1_Request от высокого к низкому. Поскольку сигнал 1214 (P1_Add) является импульсным сигналом, он переходит в низкое логическое состояние в то же самое время, когда изменяется логическое состояние сигнала 1216 (P1_Bitreg). Сигнал 1216 (P1_Bitreg) передается немедленно как вход в первый проверочный логический элемент 1120 (фиг. 11), который (также немедленно) изменяет логическое состояние сигнала 1218 (P1_Test) от низкого к высокому. Важно, что, поскольку сигнал 1218 (P1_ Test) обновляется в одном полном переходе сигнала 1202 тактовых импульсов P1_Clk после инициирования доступа записи первым производителем 1102, первый производитель 1102 уведомляется об изменении состояния совместно используемого ресурса своим собственным доступом записи и не может генерировать другого доступа записи прежде, чем будет уведомлен таким образом. Сигнал P1_ Bitreg передается по линии 1118 связи в синхронизирующий элемент 1124, тактируемый тактовыми импульсами P2_Clk. Выход синхронизирующего элемента 1124, представляющий сигнал P1_Bitreg, синхронизированный с тактовыми импульсами P2_Clk, передается после этого ко второму проверочному логическому элементу 1126. Поскольку синхронизирующий элемент 1124 тактируется тактовыми импульсами P2_Clk, второй проверочный логический элемент не обновляет сигнал 1220 (P2_Test) до тех пор, пока не будет иметь места одного полного перехода сигнала 1204 тактовых импульсов P2_Clk. Таким образом, сигнал 1220 (P2_Test), являющийся асинхронным сигналу 1216 (P1_Bitreg), переходит из низкого логического состояния в высокое при наличии одного полного перехода сигнала 1204 тактовых импульсов P2_Clk после перехода сигнала 1216 Р1_Bitreg. Аналогичная синхронизация сигнала P1_ Bitreg имеет место относительно третьего проверочного логического элемента 1130. Следовательно, третий проверочный логический элемент 1130 не обновляет логическое состояние сигнала 1222 (C1_ Test) до тех пор, пока не произойдет один полный переход сигнала тактовых импульсов C1_ Clk после перехода сигнала 1216 (P1_Bitreg). Сигнал 1222 (C1_ Test) асинхронен сигналу 1216 (P1_Bitreg) и по этой причине переходит из низкого логического состояния в высокое при наличии одного полного перехода сигнала 1206 тактовых импульсов C1_Clk после перехода сигнала 1216 (P1_Bitreg). При переходе сигнала 1220 (P2_Test) и сигнала 1222 (C1_Test), второй производитель 1104 и потребитель 1108, соответственно, способны обнаруживать изменение состояния совместно используемого ресурса в результате доступа записи, инициированного первым производителем 1102. Поскольку сигнал 1206 тактовых импульсов C1_Clk генерирует переходы чаще, чем сигнал 1204 тактовых импульсов P2_Clk, потребитель 1108 способен обнаружить такое изменение состояния совместно используемого ресурса раньше, чем второй производитель 1104. Потребитель 1108, уже получивший разрешение доступа к совместно используемому ресурсу от второго арбитра 1109, инициирует доступ считывания из совместно используемого ресурса в одном полном переходе сигнала 1206 тактовых импульсов C1_Clk после перехода сигнала 1222 (C1_Test). Потребитель 1108 показывает инициированный доступ считывания посредством генерирования сигнала 1228 (C1_Sub). Подобно сигналу 1214 (P1_Add), сигнал 1228 (C1_Sub) является импульсным и, следовательно, переходит из низкого логического состояния в высокое, а затем из высокого логического состояния в низкое в течение одного цикла сигнала 1206 тактовых импульсов C1_Clk. Сигнал 1228 (C1_Sub) передается к третьему битовому регистру 1160. Третий битовый регистр 1160 заставляет сигнал 1230 (C1_Bitreg) изменять свое низкое логическое состояние на высокое при следующем полном переходе сигнала 1206 тактовых импульсов C1_Clk. Сигнал 1230 (C1_ Bitreg) немедленно передается к третьему проверочному логическому элементу 1160 (фиг.11), который немедленно изменяет логическое состояние сигнала 1222 (C1_ Test) от высокого к низкому. Сигнал 1230 (C1_ Bitreg) передается к синхронизирующим элементам 1166 и 1168, синхронизируя в соответствии с этим сигнал 1230 (C1_Bitreg) соответственно с сигналом 1202 тактовых импульсов P1_Clk и с сигналом 1204 тактовых импульсов P2_Clk. После такой синхронизации сигнал 1218 (P1_Test) переходит из высокого логического состояния в низкое при одном полном переходе сигнала 1202 тактовых импульсов P1_ Clk после перехода сигнала 1222 (C1_Test). Аналогичным образом сигнал 1220 (P2_ Test) переходит из высокого логического состояния в низкое при одном полном переходе сигнала 1204 тактовых импульсов P2_Clk после перехода сигнала 1222 (C1_Test). Такие переходы сигнала 1218 (P1_Test) и сигнала 1220 (P2_ Test) показывают, что первый производитель 1102 и второй производитель 1104 могут обнаружить изменение состояния совместно используемого ресурса, вызванное потребителем 1108, инициирующим доступ считывания из совместно используемого ресурса. Поскольку первый производитель 1102 изменил логическое состояние сигнала 1208 (P1_ Request) из высокого в низкое и поскольку второй производитель поддерживается при высоком логическом состоянии сигнала 1210 (P2_Request), первый арбитр 1106 заставляет сигнал 1232 (P2_Grant) перейти из низкого логического состояния в высокое и в соответствии с этим разрешает второму производителю 1104 доступ к совместно используемому ресурсу. Второй производитель, имеющий доступ к совместно используемому ресурсу и уведомленный низким логическим состоянием сигнала 1220 (P2_Test), что совместно используемый ресурс доступен, инициирует доступ записи в совместно используемый ресурс. Чтобы показать, что такой доступ записи был инициирован, второй производитель 1104 заставляет сигнал 1234 (P2_Add) перейти из низкого логического состояния в высокое. Поскольку сигнал 1234 (P2__Add) является импульсным, он переходит из низкого логического состояния в высокое и из высокого логического состояния в низкое в течение одного полного перехода сигнала 1204 тактовых импульсов P2_Clk. Сигнал 1234 (P2_Add) передается ко второму битовому регистру 1144, который заставляет сигнал 1236 (P2_Bitreg) перейти из низкого логического состояния в высокое при одном полном переходе сигнала 1204 тактовых импульсов P2_ Clk после перехода сигнала 1234 (P2_Add). Сигнал 1236 (P2_Bitreg) немедленно передается ко второму проверочному логическому элементу 1126, который также немедленно заставляет сигнал 1220 (P2_Test) перейти из низкого логического состояния в высокое. Сигнал 1236 (P2_Bitreg) передается к синхронизирующим элементам 1150 и 1152, которые соответственно синхронизируют сигнал 1236 (P2_Bitreg) с сигналом 1202 тактовых импульсов P1_Clk и с сигналом 1206 тактовых импульсов C1_Clk. После такой синхронизации синхронизированный сигнал 1236 (P2_Bitreg) передается соответственно к первому проверочному логическому элементу 1120 и к третьему проверочному логическому элементу 1130. Первый проверочный логический элемент заставляет сигнал 1218 (P1_Test) перейти из низкого логического состояния в высокое. Однако поскольку сигнал 1236 (P2_Bitreg) асинхронен сигналу 1218 (P1_Test), сигнал 1218 (P1_Test) не осуществляет перехода до тех пор, пока не произойдет один полный переход сигнала тактовых импульсов P1_Clk после перехода сигнала 1236 (P2_Bitreg). Аналогичным образом третий проверочный логический элемент заставляет сигнал 1222 (C1_ Test) перейти из низкого логического состояния в высокое, причем такой переход имеет место при одном полном переходе сигнала 1206 тактовых импульсов C1_Clk после перехода сигнала 1236 (P2_Bitreg). Сигнал 1226 (C1_Grant) имеет поддерживаемое высокое логическое состояние и, таким образом, потребитель 1108 еще имеет доступ к совместно используемому ресурсу. Поскольку сигнал 1222 (C1_Test) представляет высокое логическое состояние, совместно используемый ресурс доступен для потребителя 1108. Таким образом, потребитель 1108 инициирует доступ считывания из совместно используемого ресурса и формирует импульсный сигнал 1228 (C1_Sub), чтобы показать, что такой доступ считывания был инициирован. Как описано выше, сигнал 1228 (C1_Sub), будучи импульсным, резко принимает низкое логическое состояние в течение одного полного перехода сигнала 1206 тактовых импульсов C1_ Clk. Сигнал 1228 (C1_ Sub) передается к третьему битовому регистру 1160, который заставляет сигнал 1230 (C1_Bitreg) переходить из высокого логического состояния в низкое. Сигнал 120 (C1_Bitreg) передается к третьему проверочному логическому элементу 1130, который немедленно заставляет сигнал 1222 (C1_Test) перейти из высокого логического состояния в низкое. Как также описано выше, сигнал 1230 (C1_Bitreg) синхронизируется с сигналом 1202 тактовых импульсов P1_Clk и с сигналом 1204 тактовых импульсов P2_Clk, соответственно заставляющих сигнал 1218 (P1_Test) и сигнал 1220 (P2_Test) перейти из высокого логического состояния в низкое. Очевидно, что настоящее изобретение не направлено на функцию арбитра, а также не зависит от способа осуществления арбитража подсистем. Варианты осуществления настоящего изобретения могут приобретать другие характерные формы без отклонения от основных характеристик, описанных в этой заявке. Описанные выше варианты осуществления настоящего изобретения должны рассматриваться во всех отношениях только как иллюстративные, но не ограничивающие каким-либо образом. Объем настоящего изобретения отражен в приведенной ниже формуле изобретения, а не в приведенном выше описании. Какие-либо и все изменения, которые могут быть сделаны, должны лежать в пределах объема и сущности настоящего изобретения, отраженных в формуле изобретения.
Класс G06F13/20 для доступа к шине ввода-вывода
способ передачи по компьютерной сети данных от устройства, оснащенного интерфейсом usb - патент 2243589 (27.12.2004) | |
устройство сопряжения эвм с внешними устройствами - патент 2024052 (30.11.1994) |
Класс G06F1/12 синхронизация различных синхросигналов