在多请求资源分配的场景中,仲裁器(Arbiter)扮演着至关重要的角色。它决定了多个请求者中谁将获得资源的使用权。今天,我们来聊聊一种非常巧妙且高效的Round Robin(轮询)仲裁器设计——“旋转+优先级+旋转”方案。
1. Round Robin Arbiter的背景
在资源分配中,固定优先级仲裁器(Fixed Priority Arbiter)是一种常见的设计。它为每个请求者分配一个固定的优先级,优先级高的请求者总是先获得资源。然而,这种设计有一个明显的缺点:低优先级的请求者可能会因为高优先级请求者的持续请求而永远得不到服务,这种情况被称为“饥饿”(Starvation)。
为了避免这种不公平的情况,轮询仲裁器(Round Robin Arbiter)应运而生。它通过动态调整请求者的优先级,确保每个请求者都有机会获得资源。简单来说,一旦一个请求者获得服务,它的优先级就会被“轮换”到下一个请求者,从而实现公平的资源分配。
2. “旋转+优先级+旋转”方案的原理
“旋转+优先级+旋转”方案是一种非常巧妙的轮询仲裁器设计。它的核心思想是利用固定优先级仲裁器(Fixed Priority Arbiter)来实现轮询功能。听起来是不是有点矛盾?别急,我们来详细看看它是怎么工作的。
假设我们有一个4位的请求输入(req),每个位代表一个请求者。固定优先级仲裁器会根据输入信号的优先级&