ATM控制器地址压缩与ABR流控机制深度解析
1. ATM控制器与地址压缩机制深度解析
在早期的电信骨干网和高速数据交换设备中,ATM(异步传输模式)技术扮演着至关重要的角色。它通过固定长度的53字节信元(Cell)进行数据传输,实现了高吞吐量和低延迟的承诺。然而,要在硬件层面高效地处理成千上万个并发的虚拟连接(VC)和虚拟路径(VP),一个核心挑战是如何在有限的片上内存或外部存储器中,快速且准确地根据信元头中的VPI(虚拟路径标识符)和VCI(虚拟信道标识符)找到对应的内部连接信息。MPC8272 PowerQUICC II处理器中的ATM控制器,采用了一种精巧的“地址压缩”机制来解决这个问题。这并非传统意义上的数据压缩,而是一种通过位掩码(Mask)进行分层查表的高效地址映射方案,其设计思路非常值得硬件工程师和网络协议开发者借鉴。
简单来说,一个ATM信元到达时,其头部包含VPI和VCI,这共同构成了一个“地址”。如果为每一个可能的(VPI, VCI)组合都在内存中预留一个条目,那将需要巨大的存储空间(例如,12位VPI和16位VCI全组合需要2^28个条目)。地址压缩机制的精髓在于,它允许我们只为我们实际使用的连接分配表项。它通过两级查表(VP级和VC级)来实现,并使用掩码来“选择”VPI和VCI中哪些位用于索引表,哪些位被忽略。这样,表的大小仅由实际使用的、经过掩码筛选后的地址空间决定,从而极大地节约了内存。在MPC8272中,这个过程完全由通信处理器(CP)的微码硬件完成,对软件透明,实现了线速的转发性能。
1.1 地址压缩的核心组件与工作流程
MPC8272的地址压缩机制依赖于几个关键的数据结构和寄存器,理解它们是掌握整个机制的基础。
1. 核心寄存器与表基址:
- VPT_BASE/VPT1_BASE:VP级查找表(VPLT)在内存中的起始地址。在单PHY模式下使用VPT_BASE;在多PHY模式下,由PHY地址的最高位(bit 4)决定使用VPT_BASE(bit4=0)还是VPT1_BASE(bit4=1)。
- VCT_BASE/VCT1_BASE:VC级查找表(VCLT)在内存中的起始地址。选择逻辑与VP表相同。
- VP_MASK:一个位掩码,用于从“PHY地址+VPI”的组合值中筛选出用于索引VP级表的位。掩码中为‘1’的位参与索引计算。
- VC_MASK:存储在VP级表每个条目中的一个16位掩码,用于从接收信元的VCI中筛选出用于索引VC级表的位。
2. 两级查表流程:当一个ATM信元到达时,CP按以下步骤进行地址查找:
- 组合输入:将当前信道的物理地址(PHY Addr,低4位)与信元头中的VPI组合,形成一个临时的查找键值。
- VP级查找:
- 使用
VP_MASK对这个组合键值进行“按位与”操作,得到的结果称为VP指针(VP Pointer)。这个指针指明了在VP级表中要查找的条目偏移。 - VP级表的地址计算公式为:
VPT_BASE + (VP Pointer * 4)。因为每个VP级表条目是4字节(32位)。 - 从该地址读取一个32位的VP级表条目。这个条目包含两个关键信息:
- VC_MASK (16位):用于下一级查找的VCI掩码。
- VCOFFSET (16位):指向该VP对应的VC级表起始地址的偏移量。
- 使用
- VC级查找:
- 使用从VP级表条目中取出的
VC_MASK对信元VCI进行“按位与”操作,得到VC指针(VC Pointer)。 - VC级表的基址由
VCT_BASE和VCOFFSET共同决定:VCT_BASE + (VCOFFSET * 4)。 - 最终,目标条目的地址为:
VCT_BASE + (VCOFFSET * 4) + (VC Pointer * 4)。
- 使用从VP级表条目中取出的
- 获取结果:从最终的VC级表条目中,读取通道代码(Ch Code)。这个通道代码是一个指向内部或外部连接表的指针,包含了处理该信元所需的所有上下文信息,如缓冲区描述符环的地址、AAL类型、流控参数等。
3. 表条目结构:无论是VP级还是VC级表,每个条目都是一个32位字。
- VP级表条目 (32位):高16位是
VC_MASK,低16位是VCOFFSET。 - VC级表条目 (32位):其结构在参数RAM中定义,通常包含:
- Ch Code (16位):核心输出,连接标识符。
- PHY Addr (4位):用于在多PHY模式下验证匹配。
- VCI/VPI (12位):用于验证匹配(当启用未分配位检查时)。
- MS (1位):匹配状态位。硬件查找后,若匹配成功则置0,失败则置1。软件在初始化时应将所有条目的MS位设为1(未匹配),硬件在成功匹配后会将其清零。
实操心得:内存布局规划为了提高缓存命中率和访问效率,建议将频繁访问的VC级表(VCLT)放置在MPC8272的内部双端口RAM(DPRAM)中,因为其访问速度极快。而VP级表(VPLT)由于相对较小且访问频率低一级,可以放在外部存储器中。在初始化时,需要仔细计算每个VPLT条目中的
VCOFFSET,以确保各个VCLT在内存中连续且无重叠地存放,这需要软件根据每个VP的VC_MASK动态计算。
1.2 VP级与VC级表的大小计算与地址推导
这是地址压缩机制中最需要精细计算的部分,直接关系到内存的准确分配和系统的稳定运行。
1. VP级表(VPLT)大小:VP级表的大小完全由VP_MASK中‘1’的数量决定。每个可能的VP指针值对应表中的一个条目。
- 公式:
VPLT条目数 = 2 ^ (VP_MASK中‘1’的个数) - 示例:如果
VP_MASK = 0x03FF(二进制0000 0011 1111 1111),其中‘1’的个数为10,则VP级表有2^10 = 1024个条目。 - 总大小:每个条目4字节,因此该VP级表总大小为
1024 * 4 = 4096字节(4KB)。
2. VC级表(VCLT)大小与VCOFFSET计算:每个VP级表条目指向一个独立的VC级表。该VC级表的大小由该条目中的VC_MASK决定。
- 单个VCLT大小公式:
VCLT条目数 = 2 ^ (VC_MASK中‘1’的个数) - 为了高效管理内存,我们通常希望所有VCLT在内存中连续存放。这时,第n+1个VCLT的起始偏移
VCOFFSET(n+1)需要根据前n个表的大小累加计算。 - 连续存放时的VCOFFSET通用公式:
VCOFFSET(n+1) = VCOFFSET(n) + 2 ^ (VC_MASK(n)中‘1’的个数)- 其中,
VCOFFSET(0)通常为0,指向第一个VCLT。 VC_MASK(n)是第n个VP条目中的VC掩码。
- 其中,
让我们通过一个手册中的例子来具体说明(参见表30-4):
| VP级表条目索引 | VC_MASK (十六进制) | VC_MASK中‘1’的个数 | VC级表大小(条目数) | VCOFFSET (十进制) | 计算说明 |
|---|---|---|---|---|---|
| 0 | 0x0237 | 6 | 2^6 = 64 | 0 | 第一个表,偏移为0 |
| 1 | 0x0230 | 3 | 2^3 = 8 | 64 | 前一个表大小是64,所以偏移=0+64=64 |
| 2 | 0xA007 | 5 | 2^5 = 32 | 64+8=72 | 偏移=上一个偏移(64) + 上一个表大小(8)=72 |
| 3 | (任意) | x | x | 72+32=104 | 偏移=上一个偏移(72) + 上一个表大小(32)=104 |
3. 地址计算示例:假设我们有以下配置:
VPT_BASE = 0x0024_0000VP_MASK = 0x0237- 输入的 PHY+VPI = 0x0011
- 我们要查找VP级表中索引为0x09的条目。
计算过程:
- 计算VP指针:
VP Pointer = (PHY+VPI) & VP_MASK = 0x0011 & 0x0237。需要按位计算,结果假设为0x09。 - 计算VP条目地址:
VP Entry Address = VPT_BASE + (VP Pointer * 4) = 0x00240000 + (0x09 * 4) = 0x00240000 + 0x24 = 0x00240024。
接着,从地址0x00240024读出32位数据,得到VC_MASK和VCOFFSET。假设:
- 读出的
VCOFFSET = 0x0100 VCT_BASE = 0x0084_0000- 该VP条目对应的
VC_MASK = 0x0037 - 接收信元的
VCI = 0x0031
- 计算VC指针:
VC Pointer = VCI & VC_MASK = 0x0031 & 0x0037 = 0x0031(因为0x0037的二进制是0000 0000 0011 0111,与0x0031按位与后仍是0x0031)。 - 计算最终VC条目地址:
- VC级表基址:
VC Table Base = VCT_BASE + (VCOFFSET * 4) = 0x00840000 + (0x100 * 4) = 0x00840000 + 0x400 = 0x00840400。 - 最终地址:
Final Address = VC Table Base + (VC Pointer * 4) = 0x00840400 + (0x31 * 4) = 0x00840400 + 0xC4 = 0x008404C4。
- VC级表基址:
注意事项:未分配位检查(CUAB)MPC8272提供了一个重要的可靠性特性:检查未分配位(Check Unallocated Bits, CUAB)。通过在参数RAM的GMODE寄存器中设置CUAB位,控制器会在地址查找时,自动检查那些被
VP_MASK和VC_MASK屏蔽掉(即未用于索引)的VPI/VCI位是否全部为零。如果不是,则该信元被视为“误插信元”(Misinserted Cell),会被丢弃并更新统计信息。这个功能对于检测配置错误或线路上VPI/VCI格式不匹配的信元非常有用,是保证系统健壮性的关键。
1.3 误插信元与原始信元队列
地址查找机制最终会产生一个明确的结果:匹配成功或失败。这个结果体现在VC级表条目的MS(匹配状态)位上。
- 匹配成功(MS=0):控制器成功找到了对应的通道代码(Ch Code),信元将被送入与该通道代码关联的VC队列,进行后续的AAL协议处理(如AAL5的SAR重组)。
- 匹配失败(MS=1):如果查找未找到匹配项,该信元被判定为误插信元(Misinserted Cell)。控制器会丢弃该信元,并更新ATM层的统计计数器(如误插信元计数)。这对于网络管理和故障诊断至关重要。
除了常规的VC队列,MPC8272还设计了一个特殊的接收原始信元队列(Receive Raw Cell Queue)。这个队列实际上是接收信道表(RCT)中的通道1,必须被配置为工作在AAL0模式。它的作用是将特定的管理或控制信元从常规的数据流中“剥离”出来,直接送给主机处理,而无需经过复杂的AAL协议处理。
以下类型的信元可以被可选地重定向到原始信元队列:
- F5段OAM信元(PTI = 0b100):通过设置RCT[SEGF]启用过滤。
- F5端到端OAM信元(PTI = 0b101):通过设置RCT[ENDF]启用过滤。
- RM信元(PTI = 0b110):当ABR流控启用时,这些信元在内部终止处理;否则,它们被送到原始队列。
- 保留的PTI值(PTI = 0b111):总是被送到原始队列。
- 特定的VCI值(3, 4, 6, 7-15):通过在参数RAM的VCIF条目中设置相应的位来启用过滤。
重要提示即使你打算将某些VCI(如用于OAM的VCI 3,4)的信元过滤到原始队列,这些VCI也必须在CAM或地址压缩表中存在有效的条目。否则,控制器在进行地址查找时,会因为找不到匹配(MS=1)而将其视为误插信元丢弃,根本无法进入原始队列过滤逻辑。这是一个常见的配置陷阱。
2. ABR流控机制原理与实现
在ATM的服务类别中,恒定比特率(CBR)适用于对延迟和抖动有严格要求的实时业务,如语音。而可用比特率(ABR)服务则是为数据应用设计的,这类应用能够适应网络带宽的动态变化,并且可以容忍较大的传输延迟和延迟变化。ABR的核心思想是让数据源根据网络的实时拥塞反馈动态调整发送速率,从而在避免拥塞的同时尽可能高效地利用空闲带宽。MPC8272完整实现了ATM论坛TM 4.0标准中定义的基于速率的流量控制机制。
2.1 ABR的核心反馈机制:EFCI与ER
MPC8272支持两种主要的拥塞反馈机制,它们都通过特殊的资源管理信元(RM Cell)来传递信息。
显式前向拥塞指示(EFCI):这是一种二进制反馈机制。网络中的交换机在发生拥塞时,会将经过的数据信元头部的PTI字段的EFCI位置位。目的端系统在收到EFCI置位的信元后,会在下一个返回给源的后向RM信元(B-RM)中设置拥塞指示(CI)位。源端看到CI=1,就知道路径上发生了拥塞,需要降低发送速率。这种方式简单,但调整是渐进的,容易引起速率振荡。
显式速率(ER)反馈:这是一种更精确的反馈机制。源端在发送的前向RM信元(F-RM)中携带一个它希望使用的“显式速率”(ER)。当这个RM信元经过网络时,路径上任何拥塞的交换机都可以降低ER字段中的值,改为它当前能够支持的最大速率。目的端将F-RM信元“调转方向”变成B-RM信元发回给源。源端最终收到的B-RM信元中的ER值,代表了整条路径上所有交换机同意的、该连接可用的最大带宽。源端直接将发送速率调整到这个ER值。ER反馈避免了EFCI的振荡问题,能更快、更平稳地收敛到公平的速率。
MPC8272的ABR模型同时实现了源端行为和目的端行为。这意味着一个MPC8272设备既可以作为ABR连接的起点(源),也可以作为终点(目的),或者在中继时处理RM信元。
2.2 源端系统行为详解
源端行为是ABR流控中最复杂的部分,它维护一个核心变量:允许信元速率(ACR)。ACR定义了源端当前实际可以发送数据的速率,其值介于最小信元速率(MCR)和峰值信元速率(PCR)之间。MPC8272的微码严格遵循标准实现以下算法:
- 初始化:ACR被初始化为初始信元速率(ICR)。
- RM信元发送规则:
- 每发送Nrm个数据信元后,必须发送一个F-RM信元。
- 如果自上一个F-RM信元发送后,已发送的信元数超过Mrm(固定为2)并且经过的时间超过了Trm,那么即使未满Nrm个数据信元,也必须立即发送一个F-RM信元。这保证了即使在低速率或空闲时段,也能定期发送RM信元进行探测。
- F-RM信元内容:发送F-RM信元时,将当前的ACR值写入RM信元的CCR(当前信元速率)字段。
- 根据B-RM信元调整ACR(核心算法):
- 收到CI=1(拥塞):
ACR = ACR - ACR × RDF。其中RDF是速率下降因子。然后进行限幅:ACR = max( min(ACR, ER), MCR )。即,先取ACR和ER的较小值,再确保不低于MCR。 - 收到CI=0且NI=0(无拥塞,允许增加):
ACR = ACR + RIF × PCR。其中RIF是速率增加因子。然后同样进行限幅:ACR = max( min(ACR, ER), MCR )。 - 收到CI=0且NI=1(无拥塞,但不允许增加):ACR保持不变。
- 收到CI=1(拥塞):
- “不用即废”规则:在准备发送F-RM信元前,如果自上一个F-RM信元发出后经过的时间超过了ADTF,则说明源端未能充分利用之前获得的带宽增量。此时,ACR将被直接重置为ICR。
- 无响应降速规则:在准备发送F-RM信元前(且执行完规则5后),如果已经连续发送了超过Crm个F-RM信元,却仍未收到任何一个BN=0的B-RM信元(BN=0表示该信元由源端生成,而非网络中间节点生成),则ACR将被削减:
ACR = ACR - ACR × CDF,其中CDF是截止下降因子。然后再确保不低于MCR。 - 低速率探测:如果ACR低于标记信元速率(TCR),源端将以TCR的速率发送“超速率”RM信元(此时不发送数据信元)。这是为了让那些被网络将速率压到极低(甚至为零)的源端,能够定期探测网络状态,看是否有可用带宽。
2.3 目的端系统行为与RM信元处理
目的端的行为相对简单,主要是处理F-RM信元并生成B-RM信元:
- 信元转向:将接收到的F-RM信元“调转方向”,作为B-RM信元发回给源端。
- 修改方向位:将RM信元中的DIR(方向)字段从0(前向)改为1(后向)。
- 传递速率信息:CCR和MCR字段直接从F-RM信元中拷贝,不做修改。
- 设置拥塞指示:如果上一个到达的数据信元的EFCI位被置位(表明路径拥塞),则在B-RM信元中设置CI位。
- ER限幅:B-RM信元中的ER字段可能被一个本地配置的阈值(TCTE[ER-BRM])所限制,确保返回的ER值不会超过某个上限。
- 覆盖处理:如果一个新的F-RM信元在旧的信元还未被转向处理完之前到达(针对同一连接),则新的RM信元将覆盖旧的。
2.4 RM信元结构与速率表示
RM信元是一种特殊的ATM信元,其PTI值为6,载荷部分携带流控信息。其关键字段包括:
- DIR/BN/CI/NI:方向、后向通知、拥塞指示、无增加指示位。
- ER (显式速率):网络允许的最大速率。
- CCR (当前信元速率):源端当前的发送速率。
- MCR (最小信元速率):连接协商保证的最低速率。
在MPC8272和ATM标准中,速率(ER, CCR, MCR, PCR, ICR等)在RM信元中使用一种特殊的二进制浮点数格式表示:
- 共16位:1位非零标志(nz) + 5位指数(e) + 9位尾数(m)。
- 速率计算公式:
速率 = nz × (1 + m/512) × 2^e(单位:信元/秒) - nz位:为0表示速率=0;为1则按公式计算。
- 这种表示法可以在很大的动态范围内(从每秒几个信元到线速)以合理的精度表示速率。
配置心得:参数选择ABR的性能高度依赖于一系列时间因子和比例因子的配置:
- Nrm:控制RM信元发送的频率。值太小会增加RM信元开销;值太大会降低反馈速度。通常设置在32到256之间。
- RIF/RDF:增加和减少因子。RIF通常较小(如1/16),使速率平缓增加;RDF通常较大(如1/4),使速率在拥塞时快速下降。
- ADTF:“不用即废”时间。设置过短会导致带宽浪费,过长则影响公平性。通常与RIF配合调整。
- ICR/TCR:ICR是初始速率,不宜过高。TCR是低速率探测速率,通常设为ICR的一半或一个很低的固定值。 这些参数需要根据具体的网络环境(延迟、带宽)和应用需求(突发性、公平性)进行仔细调优。
2.5 ABR流控设置步骤
在MPC8272上启用ABR流控,需要遵循一个清晰的初始化流程:
- 初始化数据结构:在内存中设置并初始化接收信道表(RCT)、发送信道表(TCT),以及它们对应的ABR协议特定区域(RCT-ABR, TCTE-ABR)。
- 配置全局参数:在参数RAM中设置ABR全局参数,如RIF、RDF、Nrm、Mrm、Trm、ADTF、Crm、CDF等。
- 配置信道:将需要使用ABR的信道的AAL类型设置为AAL5(注意:MPC8272的ABR流控仅支持AAL5),并置位该信道TCT中的ABRF标志。
- 启用时间戳定时器:向RTSCR寄存器写入以启用时间戳定时器。这个定时器为ABR源端行为提供时间基准,用于计算Trm和ADTF等超时。
- 配置APC参数:在APC参数表(APCT)中初始化
CPS_ABR和LINE_RATE_ABR参数。注意,当使用ABR时,CPS(每时隙信元数)参数应为2的幂次方,以优化调度器计算。 - 启动发送:最后,向该信道发送ATM TRANSMIT命令,以启动或重启信道传输。
3. OAM支持与性能监控
操作、管理和维护(OAM)功能是ATM网络可靠运行的关键。MPC8272的ATM控制器提供了对ATM层OAM(F4和F5流)的硬件支持,包括告警监控、连续性检查、环回以及强大的性能监控功能。
3.1 OAM信元识别与处理
ATM定义了两种主要的OAM流:
- F4流(虚拟路径级):在VP级别进行管理。通过特定的VCI值来标识:VCI=3用于段OAM,VCI=4用于端到端OAM。
- F5流(虚拟信道级):在VC级别进行管理。通过ATM信元头中的PTI(载荷类型标识)来标识:PTI=4(二进制100)用于段OAM,PTI=5(二进制101)用于端到端OAM。
MPC8272通过接收原始信元队列来处理OAM信元。用户可以通过配置RCT中的SEGF(段过滤)和ENDF(端到端过滤)使能位,选择性地将特定类型的F5 OAM信元从常规数据流中剥离,送入原始队列供主机软件处理。对于F4 OAM信元,则通过其特定的VCI(3或4)来识别,同样可以配置过滤。
发送OAM信元则相对简单:使用一个配置为AAL0模式的发送信道(通常是信道1),将组装好的OAM信元放入AAL0的发送缓冲区描述符(TxBD)中,然后发出ATM TRANSMIT命令即可。如果需要发送CRC-10,则需在TCT中启用CR10模式。
3.2 性能监控(PM)块测试详解
性能监控是OAM中最实用的功能之一,用于测量连接的服务质量,如信元丢失率、误插率等。MPC8272可以同时进行多达64个双向块测试。
1. 核心概念:
- 前向监控信元(FMC):由发送端周期性插入到用户数据流中的特殊OAM信元。它包含一个监控序列号(MCSN)、从测试开始到插入此刻所发送的用户信元总数(TUC0+1)、CLP=0的用户信元数(TUC0)、以及基于之前发送的所有用户信元载荷计算出的块错误检测码(BEDC,一种BIP-16校验)。
- 后向报告信元(BRC):由接收端在收到FMC后生成。它包含接收到的FMC中的MCSN、TUC0+1、TUC0,并添加了接收端本地统计的信息:从测试开始到收到此FMC时所接收到的用户信元总数(TRCC0+1)、CLP=0的接收信元数(TRCC0)、以及通过对比接收到的BEDC和本地计算值得到的块错误结果(BLER)。
- 块大小(BLCKSIZE):定义了两个FMC之间包含的用户信元数量,范围从1到2048。
2. 运行一个双向PM测试的步骤:
- 分配PM表:从64个可用的性能监控表中选择一个,将其索引号写入到该连接的RCT[PMT]和TCT[PMT]字段,并初始化该PM表。
- 配置接收过滤:如果要进行F5段/端到端性能监控,分别设置RCT[SEGF]或RCT[ENDF]。
- 启用PM功能:设置该数据信道的RCT[PM]和TCT[PM]位,同时也设置接收原始信元队列(用于接收BRC)的RCT[PM]位。
- 启动传输:控制器会自动处理FMC的插入和BRC的生成。
3. 发送端(FMC生成):
- 发送器维护着TUC0+1和TUC0两个计数器。
- 每当发送的用户信元数达到
BLCKSIZE时,硬件自动插入一个FMC到数据流中。 - FMC中的BEDC字段是对自上一个FMC以来所有发送的用户信元载荷(48字节)进行BIP-16计算的结果。这是一种比特交织奇偶校验,能有效检测多比特错误。
4. 接收端(BRC生成与计算):
- 接收器维护着TRCC0+1和TRCC0两个计数器。
- 当收到一个FMC时,硬件自动生成BRC:它将FMC中的MCSN、TUC0+1、TUC0、时间戳(TSTP)拷贝过来,并填入自己统计的TRCC0+1、TRCC0,以及计算出的BLER(比较接收到的BEDC和本地计算的BEDC,统计差异位数)。
- 生成的BRC被送入接收原始信元队列,由主机软件读取。
- 主机软件可以连续读取两个BRC,通过计算其内部计数的差值来评估连接质量:
Nt = TUC0+1(后) - TUC0+1(前)(发送端声称发送的信元数)Nr = TRCC0+1(后) - TRCC0+1(前)(接收端实际收到的信元数)- 如果
Nt > Nr,差值即为该块内丢失的信元数。 - 如果
Nt < Nr,差值即为该块内误插的信元数。 - 如果
Nt == Nr,则该块无信元丢失或误插。
注意事项:PM表的管理对于VP(F4)的性能监控,需要将该VP下的所有VC的RCT[PMT]和TCT[PMT]都指向同一个PM表。因为VP级的性能监控本质上是聚合其下所有VC的统计。务必确保PM表中的计数器(TUC, TRCC)宽度足够(16位,模65536),对于高速链路,需要软件定期读取并累积这些计数器,防止溢出导致统计错误。
4. 用户定义信元与高级特性
为了满足特定应用(如ATM交换)的需求,MPC8272支持用户定义信元。UDC允许在标准的53字节ATM信元前添加额外的头部(1-12字节),用于携带交换机内部的选路标签或其他控制信息。HEC字节在UDC模式下是可选的。
- 对于AAL5:额外的头部是从RxBD/TxBD中获取的。发送时,从UDC TxBD中读取额外头部并附加到每个信元;接收时,将最后一个信元的额外头部写入UDC RxBD。
- 对于AAL0:额外头部和ATM信元一起存放在缓冲区中。
一个更高级的特性是UDC扩展地址模式。当使用外部CAM进行地址查找时,可以通过设置GMODE[UEAD]=1来启用此模式。此时,UDC额外头部中的2个字节(由参数RAM中的UEAD_OFFSET指定偏移量)将被用作ATM地址的扩展部分。在CAM匹配周期中,控制器会执行双字访问(64位),将标准VPI/VCI与UDC扩展地址一起作为查找键。这极大地扩展了地址查找的灵活性和容量,适用于复杂的多层标签交换场景。
最后,关于配置与调试的个人经验:MPC8272的ATM控制器功能非常强大,但配置也相对复杂。在启动任何流量之前,务必仔细检查所有表的基址、偏移量和掩码设置,确保计算准确无误。充分利用未分配位检查(CUAB)和误插信元统计功能,它们能在早期帮助发现VPI/VCI配置错误或线缆问题。对于ABR流控,建议先从保守的参数开始(较小的RIF,较大的RDF),在稳定后再逐步调优。性能监控是评估链路质量的利器,在部署关键业务时,应启用PM功能并定期检查BRC结果。由于涉及大量内存中的表和寄存器配置,编写初始化代码时,采用模块化、可验证的方式至关重要,例如先初始化内存表,再逐个配置寄存器,并在每一步后读取回环验证。
