国产香山 RISC-V 开源处理器有了自己的编译器

9 月 17 日消息,香山开源社区今日正式宣布,将推出专为香山处理器打造的全新编译器——香山编译器(xiangshan compiler collection,xscc)

这款编译器基于 RISC-V 架构的香山开源处理器设计,构建于 LLVM 框架之上,聚焦于访存优化、分支预测增强、循环展开以及自动矢量化等微架构层面的性能优化技术。当前发布的 XSCC v1.0 版本基于 LLVM 19.1.0 进行开发。

目前,XSCC v1.0 的二进制发行版已上线 GitHub,提供针对 RISC-V 平台的交叉编译支持,可生成 riscv64 目标代码。该版本可在搭载 x86_64 架构的 Ubuntu 22.04 或更高系统上运行,默认集成 glibc 作为 C 标准库

此前,在 7 月 16 至 19 日举行的 2025 RISC-V 中国峰会上,北京开源芯片研究院于大会报告中透露:第三代“香山”处理器核——“昆明湖”IP 已完成首批面向量产客户的产品级交付。

紧接着,在 7 月 26 至 28 日的世界人工智能大会期间,一款集成了第二代“香山”(南湖)IP 核的国产 GPGPU 芯片首次公开亮相。基于该芯片的智能加速卡出货量已突破万台,标志着“香山”(南湖)IP 核成功迈入规模化应用阶段。

火山翻译 火山翻译

火山翻译,字节跳动旗下的机器翻译品牌,支持超过100种语种的免费在线翻译,并支持多种领域翻译

火山翻译 193 查看详情 火山翻译

国产香山 RISC-V 开源处理器有了自己的编译器

XSCC v1.0 下载地址如下:

https://www.php.cn/link/94358038d1af59f0edc1be49d2aef692

以上就是国产香山 RISC-V 开源处理器有了自己的编译器的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/346252.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月5日 20:32:22
下一篇 2025年11月5日 20:33:07

相关推荐

  • Go模板中结构体字段的可见性与导出规则详解

    本文详细阐述了go语言模板引擎中结构体字段的可见性规则。go语言通过标识符首字母的大小写来区分导出(公共)和非导出(私有)成员。当结构体作为数据传递给位于不同包的模板引擎时,只有首字母大写的导出字段才能被模板访问和渲染,这是go语言跨包访问机制的核心体现。 Go语言的标识符可见性机制 Go语言在设计…

    2025年12月16日
    000
  • Golang如何优化缓存使用提高性能_Golang缓存使用性能优化实践详解

    答案:本文介绍Golang缓存优化实践,涵盖策略选择、内存控制、穿透雪崩防护及高性能结构使用。1. 选用LRU、FIFO、LFU等策略提升命中率,推荐hashicorp/golang-lru实现线程安全LRU;2. 限制缓存大小防OOM,设置maxCacheSize并监控命中率与容量;3. 防范缓存…

    2025年12月16日
    000
  • 如何在Golang中实现fan-in fan-out模式_Golang fan-in fan-out模式实践方法汇总

    fan-in fan-out是一种Go并发模式,先将任务分发给多个goroutine并行执行(fan-out),再从多个通道收集结果合并为单一输出(fan-in),提升处理效率。 在Go语言中,fan-in fan-out 是一种常见的并发设计模式,用于提升程序的处理效率。它通过多个goroutin…

    2025年12月16日
    000
  • 如何在Golang中实现统一错误日志格式_Golang错误日志格式化处理详解

    使用 zap 等结构化日志库,定义 AppError 统一错误结构,封装 LogError 函数记录上下文,并通过中间件自动捕获 HTTP 异常,实现标准化、可解析的日志输出,提升问题排查效率。 在 Golang 项目中,统一的错误日志格式有助于快速定位问题、提升排查效率。实现结构化、可读性强的日志…

    2025年12月16日
    000
  • Go语言中处理多态JSON数据的反序列化策略

    本文深入探讨了在go语言中处理包含多态数据结构的json反序列化挑战。当json响应的某个字段(如`data`)可能包含不同但共享基础结构的具体类型时,直接反序列化会遇到困难。文章将介绍如何利用`map[string]interface{}`和`json.rawmessage`进行动态解析,并通过识…

    2025年12月16日
    000
  • Go语言实现multipart/form-data文件及数据上传教程

    本教程详细介绍了如何使用go语言构建和发送`multipart/form-data`类型的http post请求,以实现文件上传和多字段数据提交。文章将深入探讨`mime/multipart`和`net/http`包的使用,提供完整的代码示例,并强调关键步骤如表单字段创建、文件添加、以及正确设置请求…

    2025年12月16日
    000
  • 如何在Golang中快速初始化项目模板

    使用标准结构和自动化工具快速初始化Go项目,通过创建cmd、internal、pkg等目录建立清晰骨架,结合shell脚本或cookiecutter等工具实现一键生成,并预置zap、viper等常用组件,提升开发效率。 在Golang中快速初始化项目模板,关键在于建立标准化结构并借助工具提升效率。下…

    2025年12月16日
    000
  • Go Web应用中CSS文件统一加载与管理指南

    本文详细介绍了如何在go语言web应用中,利用`html/template`包实现css文件的统一加载与管理。通过定义通用页面模板和独立的css引用模板,结合`http.fileserver`,开发者可以高效地将公共css样式自动应用于所有页面,同时保留页面定制化的灵活性,构建结构清晰、易于维护的w…

    2025年12月16日
    000
  • Go语言中从io.Reader读取和写入UTF-8编码字符串的实践指南

    本文深入探讨了go语言中utf-8字符串的编码与处理机制,包括rune、byte与string的区别。详细介绍了如何从io.reader高效读取utf-8编码的字节流并转换为go字符串,以及写入utf-8字符串的方法。强调了内存复制的考量,并提供了标准实践代码示例,旨在帮助开发者在tcp通信等场景下…

    2025年12月16日
    000
  • Go语言高效上传文件:multipart/form-data实战指南

    本文详细介绍了如何使用go语言的`net/http`和`mime/multipart`包来构建并发送`multipart/form-data`请求,实现文件及其他表单数据的上传。教程将通过实际代码示例,指导读者创建包含文件字段和普通字段的http post请求,确保服务器能够正确解析上传内容,解决在…

    2025年12月16日
    000
  • Go语言中定义无返回值函数:简化代码与最佳实践

    本文探讨go语言中如何定义不返回任何值的函数。当函数的主要作用是执行副作用(如打印输出或修改状态)而非计算并返回结果时,go语言允许开发者完全省略函数的返回值声明,从而避免了不必要的`nil`返回或复杂的类型定义,使代码更加简洁和符合语义。 引言:Go语言函数与返回值 在Go语言中,函数是组织代码的…

    2025年12月16日
    000
  • Go语言中获取对象类型的实践指南:深入理解 reflect.TypeOf()

    本教程详细介绍了Go语言中如何使用 `reflect` 包来获取对象的类型信息。我们将重点讲解 `reflect.TypeOf()` 函数的用法,并通过实例演示如何识别基本类型、复合类型(如切片),并探讨 `reflect.Type` 接口提供的更多功能。文章还将提供使用反射时的注意事项,帮助开发者…

    2025年12月16日
    000
  • Go语言中利用reflect包获取对象类型详解

    在go语言中,为了在运行时获取变量的准确类型,我们主要依赖标准库中的`reflect`包。通过使用`reflect.typeof()`函数,开发者可以检查任何变量的动态类型,这对于处理接口、泛型或需要类型判断的场景至关重要。本文将详细介绍`reflect.typeof()`的使用方法、示例代码以及相…

    2025年12月16日
    000
  • 如何在Golang中清理未使用的依赖包

    运行go mod tidy可自动清理未使用依赖,移除冗余项并同步go.mod与go.sum文件,通过git diff确认变更后提交;indirect标记的依赖由工具自动管理,无需手动删除;清理后需执行go build ./…和go test ./…验证构建与功能完整性,定期执…

    2025年12月16日
    000
  • Golang如何搭建基础的投票系统

    答案:使用Golang标准库可快速搭建基于内存的投票系统,支持创建投票、提交选项和查看结果。1. 定义Poll和Option结构体并用map存储;2. 通过net/http实现路由处理:GET/POST /polls用于列表和创建,GET /poll/{id}查看详情,POST /poll/vote…

    2025年12月16日
    000
  • Golang如何模拟文件IO进行测试

    通过接口抽象和依赖注入实现Go文件IO测试,使用io.Reader等接口接收数据源,结合strings.NewReader模拟输入,避免真实文件读写;必要时用os.CreateTemp创建临时文件进行集成测试。 在Go语言中,为了对文件IO操作进行测试,通常需要避免直接读写真实文件。这样做可以让测试…

    2025年12月16日
    000
  • Golang如何使用error接口定义自定义错误_Golang自定义错误类型实现技巧

    自定义错误类型可通过实现error接口携带上下文信息,如错误码、时间戳等,并支持通过类型断言、errors.As和errors.Is进行精确匹配与包装处理,提升错误处理的灵活性与可靠性。 在Go语言中,error 是一个内置接口,定义如下: type error interface {    Err…

    2025年12月16日
    000
  • 如何在Golang中实现微服务故障降级_Golang微服务故障降级方法汇总

    使用熔断器防止雪崩,通过sony/gobreaker库在失败率超阈值时自动阻断请求,返回默认值;2. 设置超时与context控制,避免长时间阻塞;3. 利用本地缓存或默认值降级,保障服务可用性;4. 结合限流与降级,使用rate库限制请求速率,防止系统过载。 微服务架构中,服务之间依赖复杂,一旦某…

    2025年12月16日
    000
  • 深入理解Go语言嵌入:方法与宿主结构体字段的访问机制

    Go语言中,嵌入类型的方法接收者是嵌入类型本身,而非其宿主(embedding)结构体。这意味着嵌入方法无法直接访问宿主结构体的非嵌入字段。若需实现类似功能,可考虑在嵌入类型中引入一个接口字段来引用宿主,但这会增加复杂性。更推荐的设计模式是采用 `db.Save(user)` 形式的函数式API,以…

    2025年12月16日
    000
  • 如何在Golang中处理网络请求并发_Golang网络请求并发处理方法汇总

    Go语言中处理网络请求并发常用方法包括:1. 使用Goroutine+WaitGroup控制并发,确保所有请求完成;2. 通过Channel收集结果并限制并发数,避免资源耗尽;3. 利用errgroup简化错误处理与任务取消;4. 结合context实现超时控制与请求取消。根据不同场景选择合适方式,…

    2025年12月16日
    000

发表回复

登录后才能评论
关注微信