1 基 于 PRET 的 编 程 模 型 李 晓 飞, 陈 香 兰 ( 中 国 科 学 技 术 大 学 计 算 机 学 院, 合 肥 230039) 摘 要 : 时 间 可 预 测 性 在 信 息 物 理 系 统 设 计 领 域 正 变 得 越 来 越 重 要, 目 前 时 间 可 预 测 性 系 统 的 设 计 分 为 编 程 模 型 和 体 系 结 构 两 个 层 次, 编 程 模 型 的 研 究 往 往 是 基 于 传 统 RTOS 而 提 出 新 的 时 间 模 型, 体 系 结 构 层 则 是 现 有 体 系 结 构, 设 计 的 具 有 时 间 属 性 的 指 令 集 流 水 线 等 等. 基 于 时 间 可 预 测 体 系 结 构 PRET 和 可 预 测 时 间 模 型 LET 的 研 究, 提 出 将 PRET 和 LET 模 型 相 结 合 的 编 程 模 型, 并 通 过 分 析 和 实 验 证 明 了 这 种 设 计 的 可 行 性 和 优 势, 进 一 步 证 明 了 时 间 在 系 统 设 计 中 的 重 要 性. 关 键 词 : 时 间 可 预 测 性 ; 精 确 时 间 机 ; 逻 辑 时 间 模 型 ; 系 统 设 计 PRET-Based Programming Model LI Xiao-Fei, CHEN Xiang-Lan (School of Electronic Science and Technology, University of Science and Technology of China, Hefei 230039, China) Abstract: In CPS related embedded system design area, time predictability is becoming increasingly important. The system of time predictability can be divided into two level: the programming level based on the traditional RTOS or platform and the architecture level extended with time behavior. In this paper, based on the research between the predictable architecture and the predictable programming model, and a new programming model based on both PRET(PRecised Timed machine) was proposed. Finally an implementation based on this new model was exhibited, through this exhibition we can find that this new model had advantages to the Giotto model. Key words: time predictability; precised timed machine; logical execution time; system design 1 引 言 时 间 可 预 测 性 目 前 在 学 术 界 还 没 有 统 一 的 定 义. Grund 给 出 了 一 种 比 较 宽 泛 的 定 义 [1], 但 无 法 通 过 穷 举 的 方 法 找 到 定 义 中 的 最 大 值 和 最 小 值, 无 法 给 出 其 确 切 的 时 间 可 预 测 性 值. 不 过 通 过 静 态 分 析 的 方 法 给 出 其 执 行 时 间 的 上 界 和 下 界, 通 过 减 少 两 者 之 间 的 差 值, 肯 定 会 提 高 定 义 中 的 时 间 时 间 可 预 测 性. 因 此 该 定 义 并 不 能 给 出 测 量 时 间 可 预 测 性 的 方 法, 但 是 给 出 了 提 高 时 间 可 预 测 性 的 思 路. 为 了 提 高 系 统 时 间 可 预 测 性, 从 体 系 结 构 层 次 出 发, Lee 提 出 了 精 确 时 间 机 的 概 念 [2], 也 就 是 PRET (Precison Timed Machines), 他 和 S.Edward 设 计 出 一 种 基 于 XilinxSpartan 3 XC3S200 平 台 的 PRET, 不 过 由 于 其 完 全 了 抛 弃 了 处 理 器 的 流 水 线 功 能, 效 率 并 不 高. [3] 之 后 Ip 和 Liu 分 别 提 出 了 基 于 SPARC 指 令 集 和 [4] ARM 指 令 集 的 PRET, Liu 的 PTARM 采 用 了 五 级 细 粒 度 多 线 程 流 水 线, 大 大 提 高 了 效 率, 然 而 由 于 只 是 将 线 程 进 行 简 单 隔 离, 并 不 能 进 行 线 程 的 调 度, 当 线 程 数 量 小 于 4 的 时 候, 就 会 有 大 量 空 闲 的 时 钟 周 期 浪 费. Zimmer 在 PTARM 之 上 提 出 了 FlexPRET 平 台 [5], 该 平 台 解 决 PTARM 的 线 程 调 度 问 题. 编 程 模 型 方 面, 时 间 可 预 测 性 模 型 的 研 究 也 在 快 速 发 展, 最 早 由 G.Berry 提 出 的 同 步 语 言 [6], 通 过 假 设 程 序 的 执 行 时 间 为 瞬 时, 更 加 容 易 确 定 程 序 执 行 的 顺 序, 进 而 提 高 其 确 定 性, 不 过 由 于 使 用 同 步 语 言 设 计 程 序 比 较 复 杂, 需 要 验 证 满 足 定 点 原 理 (fixed-point) [7], 使 用 起 来 并 不 方 便. Kirsch 在 同 步 语 言 基 础 上, 提 出 了 逻 辑 执 行 时 间 (LET) 的 概 念 [8], 通 过 使 用 LET 时 间 模 型 1 基 金 项 目 : 国 家 自 然 科 学 基 金 (61379040,61272131); 江 苏 省 自 然 科 学 基 金 (SBK2012194) 收 稿 时 间 :2015-04-19; 收 到 修 改 稿 时 间 :2015-05-07 Software Technique Algorithm 软 件 技 术 算 法 141
计 算 机 系 统 应 用 http://www.c-s-a.org.cn 2016 年 第 25 卷 第 1 期 的 编 程 语 言 Giotto [9] 编 写 控 制 程 序, 可 以 方 便 的 控 制 程 序 的 逻 辑 执 行 时 间, 从 而 使 得 任 务 时 间 的 依 赖 关 系 不 会 影 响 到 其 执 行 顺 序 而 仅 仅 和 时 间 相 关, 在 执 行 顺 序 确 定 的 情 况 下, 时 间 可 预 测 性 可 以 得 到 保 证, Giotto 语 言 相 比 同 步 语 言 简 洁 很 多, 但 其 描 述 能 力 有 限, 它 只 能 通 过 基 于 状 态 的 方 式 描 述 系 统 的 执 行 过 程, 当 系 统 状 态 很 多 的 时 候, 描 述 起 来 就 会 非 常 的 繁 冗. Henziger 提 出 的 另 外 一 个 编 程 语 言 HTL 很 好 的 解 决 了 描 述 能 力 平 坦 化 的 问 题 [10], 通 过 使 用 Refinement 原 理, 支 持 任 务 的 层 次 化 描 述, 使 得 任 务 描 述 从 线 性 变 成 了 树 型, 此 时 其 可 调 度 性 分 析 的 难 度 加 大. 本 文 通 过 对 体 系 结 构 层 和 编 程 模 型 层 的 研 究, 提 出 在 LET 和 PRET 相 结 合 的 编 程 模 型, 并 通 过 实 例 证 明 了 该 模 型 的 可 行 性 和 相 对 于 LET 时 间 模 型 的 优 势. 2 相 关 工 作 PRET 的 思 想 是 系 统 的 时 序 特 性 需 要 像 其 功 能 特 性 一 样 清 晰. 就 像 能 够 保 证 处 理 器 上 的 算 术 是 移 植 可 预 测 并 且 可 以 文 档 化 的. 我 们 也 希 望 它 的 执 行 速 度 也 是 如 此. 当 然, 将 时 钟 频 率 降 低 是 一 种 方 法. 但 是 这 样 会 明 显 大 幅 降 低 处 理 器 性 能. PRET 的 目 标 是 重 新 思 考 体 系 结 构 的 特 点 并 对 其 进 行 重 新 设 计 使 其 具 有 时 间 可 预 测 性. 在 SPARC-PRET 中, 使 用 DEAD 指 令 进 行 时 间 的 同 步, 在 PTARM 中 则 使 用 DELAY_UNTIL 完 成 时 间 同 步. 它 们 的 实 际 作 用 是 相 同 的, 在 此 并 不 详 细 介 绍 两 种 PRET 的 实 现, 而 是 通 过 实 例 介 绍 基 于 PRET 的 编 程 模 型. 2.1 时 间 指 令 DEAD 指 令 允 许 程 序 员 直 接 在 代 码 中 设 定 精 确 到 时 钟 周 期 的 定 时 器. 该 指 令 设 定 某 段 代 码 的 执 行 下 界. 图 1 中 代 码 两 次 使 用 了 DEAD 指 令, 第 2 行 中 的 DEAD 指 令 将 定 时 器 设 定 为 28, 此 时 可 能 之 前 也 使 用 了 DEAD 指 令, 因 此 首 先 等 待 并 不 会 立 即 执 行 下 面 的 指 令 而 是 首 先 等 待 定 时 器 变 为 0, 之 后 再 将 定 时 器 设 定 为 28, 并 开 始 执 行 下 面 的 指 令. 在 遇 到 第 二 个 DEAD 指 令 的 时 候, 在 此 会 等 待 定 时 器 变 为 0, 并 再 设 定 为 26. 这 样 就 可 以 保 证 在 指 定 时 刻 开 始 执 行 DEAD 后 面 的 指 令 完 成 同 步 操 作. Producer 1:int main() 2: DEAD(28); 3: volatile unsigned in * buf = 4: (unsigned int *)(0x3F800200); 5: unsigned int i = 0; 6: for (i = 0; ; i++) 7: DEAD(26); 8: *buf = I; 9: 10: return 0; 11: 图 1 DEAD 代 码 片 段 2.2 线 程 交 错 流 水 线 PRET 大 多 采 用 流 水 线 线 程 分 离 技 术 来 防 止 出 现 数 据 访 问 冲 突 并 且 提 高 系 统 吞 吐 率. 所 谓 流 水 线 线 程 分 离 指 的 是 在 流 水 线 中 将 不 同 的 线 程 依 次 分 配 在 各 级 流 水 线 中, 当 一 个 线 程 取 值 之 后 下 一 个 时 钟 周 期 的 取 值 的 为 不 相 关 的 线 程, 只 有 在 某 个 线 程 写 回 周 期 执 行 之 后 才 会 继 续 执 行 下 条 指 令, 从 而 不 会 出 现 数 据 冲 突 控 制 冲 突 等 会 导 致 流 水 线 停 留 的 的 情 况 发 生. 另 外, 同 时 执 行 多 条 线 程 增 加 了 处 理 器 的 吞 吐 量, 在 线 程 少 于 流 水 线 级 别 的 情 况 下, 在 某 个 机 器 周 期 可 能 会 出 现 空 闲 状 况, 因 此 合 理 的 划 分 线 程 数 量 也 是 充 分 利 用 PRET 流 水 线 的 思 路 之 一. 2.3 逻 辑 运 行 时 间 Henziger 将 系 统 时 间 模 型 分 为 三 种, 零 执 行 时 间 模 型 (ZET), 边 界 执 行 时 间 模 型 (BET) 及 逻 辑 执 行 时 间 模 型 (LET). 其 中 BET 是 目 前 系 统 设 计 的 最 主 要 的 模 型, 通 过 限 定 任 务 执 行 的 截 止 时 间, 只 要 尽 量 安 排 任 务 在 截 止 时 间 之 前 执 行 完 毕 就 能 够 保 证 模 型 的 正 确 执 行, 基 于 截 止 时 间 的 EDF 算 法 是 BET 的 典 型 应 用. ZET 模 型 指 的 是 将 程 序 的 执 行 时 间 假 设 为 瞬 时, 从 而 只 需 要 关 注 任 务 的 执 行 序 列, 而 不 需 要 考 虑 任 务 在 执 行 过 程 中 发 生 的 竞 态 条 件, 典 型 的 应 用 为 同 步 语 言, 如 Esterel Lustre 等. LET 模 型 和 ZET 模 型 的 区 别 是 ZET 将 执 行 时 间 假 设 为 瞬 时, 而 LET 将 通 信 时 间 假 设 为 瞬 时. 三 者 在 执 行 时 间 的 区 别 可 以 通 过 图 2 准 确 的 看 出. 图 中 横 向 坐 标 代 表 时 间 轴, 横 线 箭 头 代 表 任 务 的 执 行 时 间, 可 以 看 出, ZET 中 没 有 横 线 箭 头, 执 行 时 间 为 0, LET 横 线 箭 头 横 跨 整 个 时 间 段, 而 BET 则 执 行 时 间 处 在 时 间 段 的 任 意 位 置. 也 就 是 说, BET 并 不 能 确 定 任 务 的 真 实 完 成 时 刻, 从 而 增 加 其 不 确 定 性. 142 软 件 技 术 算 法 Software Technique Algorithm
的, 用 户 需 要 编 写 时 间 和 功 能 两 份 代 码, 并 且 需 要 对 任 务 执 行 的 整 个 过 程 进 行 建 模 然 后 才 能 转 化 为 Giotto 代 码. 图 2 ZET LET 和 BET 的 区 别 和 逻 辑 运 行 时 间 相 对 应 的 为 物 理 运 行 时 间, 从 图 2 中 可 以 看 出 两 者 之 间 的 关 系 和 区 别. 在 考 虑 抢 占 调 度 的 情 况 下, 任 务 的 物 理 执 行 时 间 可 能 是 不 连 续 的, 并 且 只 占 用 其 对 应 逻 辑 运 行 时 间 的 部 分 时 间. 逻 辑 运 行 时 间 是 模 型 假 设 的 运 行 时 间, 在 实 际 情 况 下, 为 了 保 证 可 调 度 性 往 往 还 会 比 其 物 理 时 间 大 很 多. 图 3 显 示 了 LET 模 型 中 逻 辑 时 间 和 物 理 时 间 的 区 别. LET 时 间 模 型 和 其 它 两 种 时 间 模 型 相 比 具 有 一 定 的 优 势, LET 比 BET 具 有 更 为 确 定 的 输 入 输 出 时 间, 相 对 于 ZET 则 具 有 更 为 宽 松 的 限 制 条 件. 编 程 模 型 的 时 间 模 型 实 际 上 是 粗 粒 度 的 时 间 同 步 机 制, 通 过 任 务 级 别 的 时 间 同 步 保 证 任 务 能 够 在 指 定 时 间 完 成 同 步, 与 代 码 级 别 的 同 步 相 比, 性 能 损 耗 较 高. 逻 辑 物 理 开 始 执 行 逻 辑 执 行 时 间 激 活 运 行 被 抢 占 恢 复 运 行 图 3 逻 辑 运 行 时 间 和 物 理 运 行 时 间 的 比 较 典 型 LET 编 程 模 型 语 言 为 Giotto. Giotto 拥 有 配 套 编 译 器 和 解 析 器, 其 中 编 译 器 负 责 将 Giotto 代 码 编 译 为 E code, 解 析 器 E machine 则 负 责 E code 的 解 析 执 行. E machine 将 任 务 周 期 划 分 为 若 干 个 Unit 时 间 段, 该 时 间 段 也 就 是 E machine 的 逻 辑 时 钟, 它 记 录 了 逻 辑 时 间 的 变 化, 每 经 过 Unit 的 时 间, 逻 辑 时 钟 加 一, 同 时 E machine 需 要 解 析 E code. 为 了 保 证 LET 中 的 任 务 IO 时 间 瞬 时 的, 需 要 保 证 每 个 Unit 时 间 足 够 执 行 完 所 有 可 能 的 输 入 输 出 操 作. Giotto 的 系 统 设 计 流 程 较 为 繁 琐. 用 户 首 先 需 要 编 写 Giotto 代 码 和 任 务 代 码, 然 后 使 用 Giotto 编 译 器 将 Giotto 代 码 编 译 转 换 为 E code, 再 将 任 务 代 码 和 E code 放 在 具 有 E machine 的 RTOS 平 台 上 运 行, 可 以 看 出, Giotto 的 设 计 模 式 中, 时 序 代 码 和 功 能 代 码 是 分 离 结 束 执 行 3 LET 在 PRET 上 的 设 计 本 文 目 标 平 台 选 用 基 于 ARM 指 令 集 的 PTARM 作 为 硬 件 平 台, PTARM 是 基 于 armv4t 指 令 集 的 平 台 并 配 有 PTARM 仿 真 器. 本 节 首 先 提 出 代 码 级 逻 辑 执 行 时 间 概 念 并 给 出 并 发 模 型 同 时 提 出 基 于 Ptolemy 的 面 向 角 色 建 模 方 法, 最 后 通 过 实 例 设 计 说 明 该 设 计 方 法. 3.1 执 行 时 间 优 化 将 Giotto 模 型 应 用 到 PRET 上 的 最 简 单 实 现 已 经 存 在, 对 于 周 期 为 1000ms 的 task1, 其 实 现 代 码 如 图 4. Task1: task1(); output1(); 图 4 PRET 平 台 上 的 Giotto 实 现 DEAD 指 令 在 指 定 的 定 时 器 的 时 间 为 下 界 的 时 间 内, 指 定 时 间 到 达 之 前, 在 执 行 完 两 个 DEAD 之 间 的 代 码 之 后 不 会 执 行 任 何 指 令. 以 task1 为 例, 在 执 行 完 task1() 的 代 码 之 后, 处 理 器 会 处 于 空 转 状 态, 直 到 定 时 器 的 值 降 为 0, 这 实 际 上 是 处 理 器 资 源 的 浪 费. 这 实 际 上 是 由 于 粗 粒 度 的 时 间 同 步 导 致 的, 如 图 5 中 为 对 其 改 进. Task1: task1(); sleep(8000); output1(); Task2: task2(); sleep(18000); output2(); 图 5 PRET 平 台 上 的 实 现 改 进 task1 和 task2 给 出 执 行 的 上 界 为 1000us, 并 给 出 两 个 output 驱 动 的 执 行 时 间 上 界 也 为 1000us. 给 出 的 时 间 需 要 保 证 大 于 WCET 时 间 同 时 又 不 会 造 成 过 多 延 迟, 如 此 在 使 用 DEAD 指 令 时 就 不 会 出 现 过 多 的 处 理 Software Technique Algorithm 软 件 技 术 算 法 143
计 算 机 系 统 应 用 http://www.c-s-a.org.cn 2016 年 第 25 卷 第 1 期 器 浪 费. 之 后 使 用 睡 眠 原 语 将 处 理 器 安 全 的 交 出, 从 而 将 多 余 的 时 间 让 给 其 它 的 任 务 执 行. 3.2 代 码 级 逻 辑 运 行 时 间 传 统 LET 时 间 模 型 是 任 务 级 的, 它 要 求 任 务 在 执 行 的 过 程 中 不 能 发 生 交 互, 这 一 点 在 很 多 应 用 场 景 并 不 符 合, 例 如 生 产 者 消 费 者 模 型 中, 生 产 者 任 务 和 消 费 者 任 务 在 执 行 过 程 中 一 直 在 进 行 数 据 的 交 互. 为 此 本 文 提 出 了 代 码 级 逻 辑 运 行 时 间 概 念, 本 文 称 这 种 通 过 DEAD 指 令 设 定 的 时 间 为 代 码 级 逻 辑 运 行 时 间, 它 需 要 大 于 指 定 代 码 的 WCET 时 间, 同 时 在 此 期 间 内 CPU 不 能 被 抢 占. 在 消 除 代 码 执 行 时 间 抖 动 的 同 时 确 定 了 代 码 的 输 出 在 指 定 时 间 有 效. 通 过 代 码 级 LET 模 型 将 任 务 分 为 不 可 抢 占 的 若 干 代 码 片 段, 为 提 高 CPU 利 用 率, 使 用 sleep 来 设 置 可 抢 占 区 域 执 行 时 间, 从 而 实 现 了 代 码 级 的 执 行 时 间 控 制. LET 时 间 模 型 限 制 了 任 务 的 交 互 时 间 不 能 发 生 在 任 务 执 行 的 过 程 中, 决 定 了 其 时 间 同 步 粒 度 为 任 务 级 的, 同 时 也 限 制 了 任 务 的 设 计. 与 此 不 同 的 是, PRET 平 台 的 指 令 集 中 的 DEAD 指 令 能 够 从 代 码 级 别 控 制 某 段 代 码 的 执 行 时 间. 定 义 1( 代 码 级 逻 辑 运 行 时 间 ) 代 码 级 逻 辑 运 行 时 间 为 一 段 代 码 的 执 行 时 间 抽 象, 这 段 时 间 记 录 了 该 段 程 序 从 读 取 数 据 到 写 入 数 据 的 时 间 而 并 不 关 心 实 际 执 行 时 间. 代 码 级 逻 辑 运 行 时 间 和 传 统 逻 辑 运 行 时 间 本 质 上 的 区 别 是 同 步 粒 度. 在 传 统 逻 辑 执 行 时 间 模 型 中, 需 要 进 行 同 步 的 数 据 由 单 个 任 务 周 期 性 更 新, 因 此 只 需 要 将 任 务 的 周 期 作 为 mode [10]. 此 时 任 务 划 分 应 当 是 以 数 据 的 更 新 周 期 为 原 则 并 不 灵 活. 而 在 代 码 级 别 上, 使 用 逻 辑 执 行 时 间 来 抽 象 某 段 代 码 的 逻 辑 执 行 时 间, 因 此 在 任 务 设 计 商 更 为 灵 活. 3.3 并 发 模 型 DEAD 指 令 不 能 够 被 抢 占, CPU 利 用 率 不 高. 为 此 本 文 为 PRET 加 入 并 发 模 型. 添 加 PAR 语 言 扩 展 来 指 定 其 多 个 任 务 的 并 发 操 作. 定 义 2 PAR(time, thread1,thread2,thread3,..) 指 定 多 个 thread 可 以 并 发 执 行. 并 且 在 time 时 间 之 后 进 行 同 步. 为 保 证 执 行 的 过 程 不 发 生 等 待, 禁 止 各 个 thread 存 在 资 源 竞 争. time 设 定 通 过 各 个 thread 的 WCET 时 间 相 加 得 到. 3.4 细 粒 度 时 间 精 确 LET 模 型 为 了 保 证 硬 实 时 一 般 采 用 时 间 触 发 的 方 式, Giotto 中 使 用 Unit 来 更 新 逻 辑 时 钟, 并 且 需 要 使 用 时 钟 中 断 来 更 新 物 理 时 钟, 由 于 时 钟 中 断 还 需 要 完 成 触 发 调 度 的 工 作, 其 频 率 是 毫 秒 级 的, 这 使 得 Giotto 的 实 时 性 能 也 是 毫 秒 级 的 [10]. 在 PRET 中, 采 用 cycle 级 别 的 定 时 器, 从 而 使 其 精 确 到 cycle 级 别. 大 幅 提 高 其 精 度. 3.5 面 向 角 色 设 计 方 法 [11] 面 向 角 色 设 计 是 对 于 带 参 行 为 的 封 装, 实 现 的 是 输 入 数 据 到 输 出 数 据 的 过 程. 本 文 采 用 面 向 角 色 的 设 计 方 法 将 任 务 的 执 行 过 程 根 据 其 功 能 划 分 为 各 个 独 立 的 角 色 单 元, 各 个 角 色 具 有 自 身 的 代 码 级 逻 辑 执 行 时 间. 3.5.1 避 障 循 迹 小 车 设 计 流 程 以 避 障 循 迹 小 车 系 统 为 例 来 说 明 整 个 设 计 过 程. 首 先 给 出 设 计 流 程 图 如 图 6, 然 后 对 各 个 步 骤 进 行 解 释. 角 色 时 间 属 性 提 取 生 成 结 束 同 步 代 码 时 间 计 算 功 能 和 时 间 代 码 拼 接 角 色 功 能 代 码 提 取 图 6 基 于 PRET 平 台 设 计 流 程 3.5.2 面 向 角 色 建 模 按 照 面 向 角 色 的 设 计 思 路 首 先 对 任 务 进 行 划 分, 避 障 循 迹 小 车 包 括 有 避 障 和 循 迹 两 个 功 能. 其 中 避 障 主 要 基 于 双 目 超 声 波 传 感 器 实 现, 循 迹 主 要 基 于 两 侧 灰 度 传 感 器 实 现. 按 照 输 入 数 据 输 出 数 据 的 设 计 原 则. 超 声 波 数 据 包 括 信 号 数 据 到 距 离 数 据 的 转 换, 距 离 数 据 到 停 车 动 作 的 转 换. 灰 度 数 据 包 括 由 信 号 数 据 到 偏 离 方 向 的 转 换, 由 偏 离 方 向 到 小 车 转 弯 动 作 的 转 换. 因 此 可 以 得 到 四 个 角 色. 分 别 为 距 离 计 算 停 止 计 算 偏 离 计 算 和 拐 弯 计 算. 由 于 停 止 和 拐 弯 都 属 于 小 车 动 作 而 且 两 者 互 斥, 将 两 者 合 二 为 一 可 以 得 到 如 下 的 面 向 角 色 执 行 流 图 如 图 7. 读 取 超 声 波 传 感 器 读 取 灰 度 传 感 器 距 离 计 算 偏 向 计 算 动 作 计 算 执 行 动 作 图 7 避 障 循 迹 小 车 面 向 角 色 建 模 144 软 件 技 术 算 法 Software Technique Algorithm
很 多 建 模 工 具 如 (Simulink LabVIEW SPW) 中 都 提 供 面 向 角 色 建 模. 本 文 使 用 开 源 的 UC Berkeley 实 现 的 Ptolemy 工 具, Ptolemy 本 身 就 是 基 于 面 向 角 色 设 计 的, 而 且 它 的 模 型 生 成 文 件 为 XML, 方 便 进 行 代 码 生 成. 3.5.3 功 能 代 码 编 写 功 能 代 码 需 要 按 照 数 据 读 入, 数 据 处 理, 数 据 写 出 三 个 部 分 进 行 设 计. 由 于 逻 辑 执 行 时 间 内 是 不 允 许 抢 占 的, 因 此 不 需 要 对 于 上 述 三 个 部 分 进 行 顺 序 的 限 定, 只 需 要 角 色 代 码 能 够 完 成 相 应 功 能 即 可. 3.5.4 测 量 角 色 代 码 WCET 硬 实 时 系 统 设 计 中, WCET 的 测 量 是 至 关 重 要 的. 角 色 代 码 中 不 允 许 存 在 相 互 等 待 的 情 况, WCET 的 测 量 可 以 使 用 如 ait Bound-T 等 测 量 工 具. 角 色 的 WCET 时 间 决 定 了 其 在 相 应 平 台 上 执 行 的 物 理 时 间, 因 此 WCET 测 量 的 是 否 直 接 决 定 系 统 能 否 正 确 运 行. 3.5.5 代 码 生 成 使 用 Ptolemy 进 行 设 计 之 后 可 以 直 接 保 存 为 XML 文 件. XML 的 解 析 可 以 使 用 Python 调 用 XML 解 析 库 完 成. int main() par(20,thread1,thread2); computing(); dead(15); output(); void thread1() get_data1(); compute_distance(); void thread2() get_data2(); compute_direction(); 图 8 避 障 小 车 生 成 代 码 图 8 为 图 7 中 设 计 的 生 成 代 码, 代 码 中 已 经 将 之 前 Giotto 代 码 + 任 务 代 码 的 设 计 方 法 缩 减 为 只 需 要 任 务 代 码, 同 时 不 需 要 生 成 E code 调 用 E machine 解 析, 减 少 了 E machine 层 带 来 的 额 外 负 载. 4 结 语 硬 实 时 系 统 设 计 一 直 对 时 间 要 求 苛 刻, 传 统 设 计 方 式 已 经 不 能 满 足 其 对 于 时 间 的 需 求. 本 文 重 新 给 出 逻 辑 执 行 时 间 的 细 粒 度 定 义, 将 LET 模 型 应 用 到 PRET 平 台 上, 通 过 给 出 并 发 拓 展 原 语 和 代 码 设 计 框 架, 给 出 了 PRET 平 台 的 编 程 模 型, 解 决 了 目 前 PRET 平 台 设 计 困 难 的 问 题. 当 然 不 论 体 系 结 构 平 台 还 是 给 出 的 编 程 模 型, 都 还 具 有 不 足 的 地 方, 下 一 步 的 工 作 应 当 包 括 提 高 PTARM 可 用 性 和 完 善 编 程 模 型 实 现 上. 精 确 时 间 机 作 为 硬 实 时 系 统 的 设 计 的 新 方 法 将 成 为 未 来 研 究 热 点 之 一. 参 考 文 献 1 Grund D, Jan R, Wilhelm R. A Template for Predictability Definitions with Supporting Evidence. PPES. 2011. 2 Edwards SA, Lee EA. The case for the precision timed (PRET) machine. Proc. of the 44th annual Design Automation Conference. ACM. 2007. 3 Ip NJH, Edwards SA. A processor extension for cycle-accurate real-time software. Embedded and Ubiquitous Computing. Springer Berlin Heidelberg, 2006: 449 458. 4 Liu I, et al. A PRET microarchitecture implementation with repeatable timing and competitive performance. 2012 IEEE 30th International Conference on Computer Design (ICCD). IEEE. 2012. 5 Zimmer M, et al. FlexPRET: A processor platform for mixed-criticality systems[techinque Report]. ucb/eecs-2013-172. California Univ Berkeley Dept of Electrical Engineering and Computer Sciences. 2013. 6 Benveniste A, Berry G. The synchronous approach to reactive and real-time systems. Proc. of the IEEE 79.9 (1991): 1270 1282. 7 Edwards SA. The specification and execution of heterogeneous synchronous reactive systems[thesis]. University of California, Berkeley, 1997. 8 Kirsch CM, Sokolova A. The Logical Execution Time Paradigm. Advances in Real-Time Systems. Springer Berlin Heidelberg, 2012. 103 120. 9 Henzinger TA, Horowitz B, Kirsch CM. Giotto: A time-triggered language for embedded programming. Embedded Software. Springer Berlin Heidelberg, 2001. 10 Ghosal A, et al. A hierarchical coordination language for interacting real-time tasks. Proc. of the 6th ACM & IEEE International Conference on Embedded Software. ACM, 2006. 11 Lee EA, Neuendorffer S, Wirthlin MJ. Actor-oriented design of embedded hardware and software systems. Journal of Circuits, Systems, and Computers, 2003, 12(3): 231 260. Software Technique Algorithm 软 件 技 术 算 法 145